from enum import Enum from sqlmodel import Field, SQLModel from .models_base import Model from .metadata import gisaf_survey class Accuracy(Model): metadata = gisaf_survey class Admin: menu = 'Other' flask_admin_model_view = 'MyModelViewWithPrimaryKey' id: int = Field(default=None, primary_key=True) name: str accuracy: float def __str__(self): return f'{self.name} {self.accuracy}' def __repr__(self): return f'' class Surveyor(Model): metadata = gisaf_survey class Admin: menu = 'Other' flask_admin_model_view = 'MyModelViewWithPrimaryKey' id: int = Field(default=None, primary_key=True) name: str def __str__(self): return self.name def __repr__(self): return f'' class Equipment(Model): metadata = gisaf_survey class Admin: menu = 'Other' flask_admin_model_view = 'MyModelViewWithPrimaryKey' id: int = Field(default=None, primary_key=True) name: str def __str__(self): return self.name def __repr__(self): return f'' class GeometryType(str, Enum): point = 'Point' line_work = 'Line_work' class AccuracyEquimentSurveyorMapping(Model): metadata = gisaf_survey __tablename__ = 'accuracy_equiment_surveyor_mapping' class Admin: menu = 'Other' id: int = Field(default=None, primary_key=True) surveyor_id: int = Field(foreign_key='surveyor.id', index=True) equipment_id: int = Field(foreign_key='equipment.id', index=True) geometry_type: GeometryType = Field(default='Point', index=True) accuracy_id: int = Field(foreign_key='accuracy.id') @classmethod def dyn_join_with(cls): return { 'surveyor': Surveyor, 'equipment': Equipment, 'accuracy': Accuracy, }