Spaces:
Running
Running
from enum import Enum | |
from typing import Optional | |
from fastapi import Query, HTTPException | |
class UploadImageThumbnailMode(str, Enum): | |
IF_NECESSARY = "if_necessary" | |
ALWAYS = "always" | |
NEVER = "never" | |
class UploadImageModel: | |
def __init__(self, | |
url: Optional[str] = Query(None, | |
description="The image's url. If the image is local, this field will be " | |
"ignored. Otherwise it is required."), | |
thumbnail_url: Optional[str] = Query(None, | |
description="The image's thumbnail url. If the image is local " | |
"or local_thumbnail's value is always, " | |
"this field will be ignored. Currently setting a " | |
"external thumbnail for a local image is " | |
"unsupported due to compatibility issues."), | |
categories: Optional[str] = Query(None, | |
description="The categories of the image. The entries should be " | |
"seperated by comma."), | |
starred: bool = Query(False, description="If the image is starred."), | |
local: bool = Query(False, | |
description="When set to true, the image will be uploaded to local storage. " | |
"Otherwise, it will only be indexed in the database."), | |
local_thumbnail: UploadImageThumbnailMode = | |
Query(default=None, | |
description="Whether to generate thumbnail locally. Possible values:\n" | |
"- `if_necessary`: Only generate thumbnail if the image is larger than 500KB. " | |
"This is the default value if `local=True`\n" | |
" - `always`: Always generate thumbnail.\n" | |
" - `never`: Never generate thumbnail. This is the default value if `local=False`."), | |
skip_ocr: bool = Query(False, description="Whether to skip the OCR process.")): | |
self.url = url | |
self.thumbnail_url = thumbnail_url | |
self.categories = [t.strip() for t in categories.split(',') if t.strip()] if categories else None | |
self.starred = starred | |
self.local = local | |
self.skip_ocr = skip_ocr | |
self.local_thumbnail = local_thumbnail if (local_thumbnail is not None) else ( | |
UploadImageThumbnailMode.IF_NECESSARY if local else UploadImageThumbnailMode.NEVER) | |
if not self.url and not self.local: | |
raise HTTPException(422, "A correspond url must be provided for a non-local image.") | |