gisaf-backend/src/gisaf/models/survey.py
phil 049b8c9927 Misc:
Basic registry, with survey stores
Move to standard src/ dir
versions: sqlmodel official, pydantic v2
etc...
2023-12-13 01:25:00 +05:30

84 lines
1.9 KiB
Python

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'<models.Accuracy {self.name}>'
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'<models.Surveyor {self.name}>'
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'<models.Equipment {self.name}>'
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,
}