Spaces:
Running
Running
File size: 5,667 Bytes
d25db6b 09ecaf7 1686de5 09ecaf7 d25db6b 82ff6c1 09ecaf7 82ff6c1 d25db6b 82ff6c1 09ecaf7 394963a 1686de5 394963a f503159 82ff6c1 394963a f503159 351d460 f503159 d25db6b 09ecaf7 0f31229 82ff6c1 1686de5 d25db6b d9e6017 f503159 65933cd 1686de5 82ff6c1 84aedaf 82ff6c1 351d460 09ecaf7 1686de5 09ecaf7 fe5d98f d25db6b fe5d98f f503159 fe5d98f 4f6cbcc fe5d98f d25db6b 4f6cbcc 872dec2 4f6cbcc 872dec2 d25db6b 1686de5 d25db6b 1686de5 d25db6b 1686de5 d25db6b 1686de5 d25db6b 1686de5 d25db6b 394963a 1686de5 394963a d7291ef d25db6b |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 |
from pydantic import BaseModel
from typing import List, Optional
from uuid import UUID
from datetime import datetime
class ImageCreate(BaseModel):
source: Optional[str] = None
event_type: str = "OTHER"
countries: List[str] = []
epsg: str = "OTHER"
image_type: str
# Drone-specific fields (optional)
center_lon: Optional[float] = None
center_lat: Optional[float] = None
amsl_m: Optional[float] = None
agl_m: Optional[float] = None
heading_deg: Optional[float] = None
yaw_deg: Optional[float] = None
pitch_deg: Optional[float] = None
roll_deg: Optional[float] = None
rtk_fix: Optional[bool] = None
std_h_m: Optional[float] = None
std_v_m: Optional[float] = None
class ImageMetadataUpdate(BaseModel):
source: Optional[str] = None
event_type: Optional[str] = None
countries: Optional[List[str]] = None
epsg: Optional[str] = None
image_type: Optional[str] = None
starred: Optional[bool] = None # Backward compatibility - updates first caption
# Drone-specific fields (optional)
center_lon: Optional[float] = None
center_lat: Optional[float] = None
amsl_m: Optional[float] = None
agl_m: Optional[float] = None
heading_deg: Optional[float] = None
yaw_deg: Optional[float] = None
pitch_deg: Optional[float] = None
roll_deg: Optional[float] = None
rtk_fix: Optional[bool] = None
std_h_m: Optional[float] = None
std_v_m: Optional[float] = None
class CaptionOut(BaseModel):
caption_id: UUID
title: Optional[str] = None
prompt: Optional[str] = None
model: Optional[str] = None
schema_id: Optional[str] = None
raw_json: Optional[dict] = None
generated: Optional[str] = None
edited: Optional[str] = None
accuracy: Optional[int] = None
context: Optional[int] = None
usability: Optional[int] = None
starred: bool = False
image_count: Optional[int] = None
created_at: Optional[datetime] = None
updated_at: Optional[datetime] = None
class Config:
from_attributes = True
class ImageOut(BaseModel):
image_id: UUID
file_key: str
sha256: str
thumbnail_key: Optional[str] = None
thumbnail_sha256: Optional[str] = None
thumbnail_url: Optional[str] = None # Generated URL for frontend
detail_key: Optional[str] = None
detail_sha256: Optional[str] = None
detail_url: Optional[str] = None # Generated URL for frontend
source: Optional[str] = None
event_type: str
epsg: Optional[str] = None
image_type: str
image_url: str
countries: List["CountryOut"] = []
captions: List[CaptionOut] = []
starred: bool = False # Backward compatibility - from first caption
captured_at: Optional[datetime] = None
# Backward compatibility fields for legacy frontend
title: Optional[str] = None
prompt: Optional[str] = None
model: Optional[str] = None
schema_id: Optional[str] = None
raw_json: Optional[dict] = None
generated: Optional[str] = None
edited: Optional[str] = None
accuracy: Optional[int] = None
context: Optional[int] = None
usability: Optional[int] = None
created_at: Optional[datetime] = None
updated_at: Optional[datetime] = None
# Preprocessing information
preprocessing_info: Optional[dict] = None
# Drone-specific fields
center_lon: Optional[float] = None
center_lat: Optional[float] = None
amsl_m: Optional[float] = None
agl_m: Optional[float] = None
heading_deg: Optional[float] = None
yaw_deg: Optional[float] = None
pitch_deg: Optional[float] = None
roll_deg: Optional[float] = None
rtk_fix: Optional[bool] = None
std_h_m: Optional[float] = None
std_v_m: Optional[float] = None
# Multi-upload fields
all_image_ids: Optional[List[str]] = None
image_count: Optional[int] = None
class Config:
from_attributes = True
class CaptionUpdate(BaseModel):
title: str
edited: str
accuracy: Optional[int] = None
context: Optional[int] = None
usability: Optional[int] = None
class CaptionCreate(BaseModel):
title: str
prompt: str
model: str
raw_json: dict
generated: str
edited: str
accuracy: Optional[int] = None
context: Optional[int] = None
usability: Optional[int] = None
starred: bool = False
class PromptOut(BaseModel):
p_code: str
label: str
metadata_instructions: str | None = None
image_type: str
is_active: bool
class Config:
from_attributes = True
class PromptCreate(BaseModel):
p_code: str
label: str
metadata_instructions: str | None = None
image_type: str
is_active: bool
class PromptUpdate(BaseModel):
label: str
metadata_instructions: str | None = None
image_type: str
is_active: bool
class SourceOut(BaseModel):
s_code: str
label: str
class Config:
from_attributes = True
class RegionOut(BaseModel):
r_code: str
label: str
class Config:
from_attributes = True
class TypeOut(BaseModel):
t_code: str
label: str
class Config:
from_attributes = True
class SpatialReferenceOut(BaseModel):
epsg: str
srid: str
proj4: str
wkt: str
class Config:
from_attributes = True
class ImageTypeOut(BaseModel):
image_type: str
label: str
class Config:
from_attributes = True
class CountryOut(BaseModel):
c_code: str
label: str
r_code: str
class Config:
from_attributes = True
class ModelToggleRequest(BaseModel):
is_available: bool
ImageOut.update_forward_refs()
|