Admin basket: update/fix file import, download, delete
remove useless AdminBasketFile model definition cleanups, typings
This commit is contained in:
parent
6139f49aae
commit
c613fd35d9
5 changed files with 123 additions and 136 deletions
|
@ -1,7 +1,8 @@
|
|||
from pathlib import Path
|
||||
import re
|
||||
from datetime import datetime, date
|
||||
|
||||
from pydantic import BaseModel
|
||||
from pydantic import BaseModel, computed_field
|
||||
from sqlmodel import Field, Relationship
|
||||
import pandas as pd
|
||||
|
||||
|
@ -47,33 +48,27 @@ class FileImport(Model, table=True):
|
|||
__table_args__ = gisaf_admin.table_args
|
||||
|
||||
id: int | None = Field(default=None, primary_key=True)
|
||||
url: str
|
||||
url: str | None = None
|
||||
## TODO: Deprecate FileImport.path, in favour of dir + name
|
||||
path: str
|
||||
#path: str
|
||||
dir: str
|
||||
name: str
|
||||
md5: str
|
||||
time: datetime
|
||||
comment: str
|
||||
status: str
|
||||
store: str
|
||||
time: datetime | None = None
|
||||
comment: str | None = None
|
||||
status: str | None = None
|
||||
store: str | None = None
|
||||
basket: str
|
||||
project_id: int = Field(foreign_key=gisaf_admin.table('project.id'))
|
||||
project_id: int | None = Field(foreign_key=gisaf_admin.table('project.id'))
|
||||
project: Project = Relationship()
|
||||
# ALTER TABLE gisaf_admin.file_import add column project_id INT REFERENCES gisaf_admin.project;
|
||||
surveyor_id: int = Field(foreign_key=gisaf_survey.table('surveyor.id'))
|
||||
surveyor_id: int | None = Field(foreign_key=gisaf_survey.table('surveyor.id'))
|
||||
surveyor: Surveyor = Relationship()
|
||||
# ALTER TABLE gisaf_admin.file_import add column surveyor_id INT REFERENCES gisaf_survey.surveyor;
|
||||
equipment_id: int = Field(foreign_key=gisaf_survey.table('equipment.id'))
|
||||
equipment_id: int | None = Field(foreign_key=gisaf_survey.table('equipment.id'))
|
||||
equipment: Equipment = Relationship()
|
||||
# ALTER TABLE gisaf_admin.file_import add column equipment_id INT REFERENCES gisaf_survey.equipment;
|
||||
|
||||
def __str__(self):
|
||||
return f'{self.path:s} for project id {self.project_id}'
|
||||
|
||||
def __repr__(self):
|
||||
return f'<gisaf.misc.FileImport (gisaf_admin.file_import) {self.path}>'
|
||||
|
||||
@classmethod
|
||||
def selectinload(cls):
|
||||
return [cls.project, cls.surveyor, cls.equipment]
|
||||
|
@ -93,6 +88,10 @@ class FileImport(Model, table=True):
|
|||
df['date'] = pd.to_datetime(dates[0], format='%Y-%m-%d')
|
||||
return df
|
||||
|
||||
@computed_field
|
||||
@property
|
||||
def path(self) -> Path:
|
||||
return Path(self.dir) / self.name
|
||||
|
||||
#def get_parent_dir(self):
|
||||
# split_path = self.path.split(os_path.sep)
|
||||
|
@ -158,23 +157,9 @@ class Basket(BasketNameOnly):
|
|||
|
||||
class BasketImportResult(BaseModel):
|
||||
time: datetime = Field(default_factory=datetime.now)
|
||||
message: str
|
||||
message: str | None = None
|
||||
details: dict[str, str | int | float | bool] | None = None
|
||||
|
||||
class AdminBasketFile(BaseModel):
|
||||
id: int
|
||||
dir: str
|
||||
name: str
|
||||
url: str
|
||||
md5: str
|
||||
time: datetime
|
||||
comment: str
|
||||
status: str
|
||||
store: str
|
||||
project: str
|
||||
surveyor: str
|
||||
equipment: str
|
||||
import_result: str
|
||||
fileImport: FileImport | None = None
|
||||
|
||||
|
||||
class AdminBasket(BaseModel):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue