2023-11-19 12:13:39 +05:30
|
|
|
from typing import Any
|
|
|
|
|
2024-01-03 17:07:11 +05:30
|
|
|
from sqlmodel import Field, String, JSON, Relationship
|
2023-11-19 12:13:39 +05:30
|
|
|
|
2023-12-25 15:50:45 +05:30
|
|
|
from gisaf.models.models_base import Model
|
2024-01-05 01:50:32 +05:30
|
|
|
from gisaf.models.metadata import gisaf_map
|
2023-11-19 12:13:39 +05:30
|
|
|
|
|
|
|
|
|
|
|
class BaseStyle(Model):
|
2024-01-05 01:50:32 +05:30
|
|
|
__table_args__ = gisaf_map.table_args
|
2023-11-19 12:13:39 +05:30
|
|
|
__tablename__ = 'map_base_style'
|
|
|
|
|
|
|
|
class Admin:
|
|
|
|
menu = 'Other'
|
|
|
|
flask_admin_model_view = 'MapBaseStyleModelView'
|
|
|
|
|
2023-12-25 15:50:45 +05:30
|
|
|
id: int | None = Field(primary_key=True, default=None)
|
2023-11-19 12:13:39 +05:30
|
|
|
name: str
|
2023-12-13 01:25:00 +05:30
|
|
|
style: dict[str, Any] | None = Field(sa_type=JSON(none_as_null=True))
|
|
|
|
mbtiles: str = Field(sa_type=String(50))
|
2023-11-19 12:13:39 +05:30
|
|
|
static_tiles_url: str
|
|
|
|
enabled: bool = True
|
|
|
|
|
|
|
|
def __repr__(self):
|
|
|
|
return '<models.BaseStyle {self.name:s}>'.format(self=self)
|
|
|
|
|
|
|
|
|
|
|
|
class BaseMap(Model):
|
2024-01-05 01:50:32 +05:30
|
|
|
__table_args__ = gisaf_map.table_args
|
2023-11-19 12:13:39 +05:30
|
|
|
__tablename__ = 'base_map'
|
|
|
|
|
|
|
|
class Admin:
|
|
|
|
menu = 'Other'
|
|
|
|
|
2023-12-25 15:50:45 +05:30
|
|
|
id: int | None = Field(primary_key=True, default=None)
|
2023-11-19 12:13:39 +05:30
|
|
|
name: str
|
|
|
|
|
|
|
|
def __repr__(self):
|
|
|
|
return '<models.BaseMap {self.name:s}>'.format(self=self)
|
|
|
|
|
|
|
|
def __str__(self):
|
|
|
|
return self.name
|
|
|
|
|
|
|
|
|
|
|
|
class BaseMapLayer(Model):
|
2024-01-05 01:50:32 +05:30
|
|
|
__table_args__ = gisaf_map.table_args
|
2023-11-19 12:13:39 +05:30
|
|
|
__tablename__ = 'base_map_layer'
|
|
|
|
|
|
|
|
class Admin:
|
|
|
|
menu = 'Other'
|
|
|
|
|
2023-12-25 15:50:45 +05:30
|
|
|
id: int | None = Field(primary_key=True, default=None)
|
2023-11-19 12:13:39 +05:30
|
|
|
base_map_id: int = Field(foreign_key='base_map.id', index=True)
|
2024-01-03 17:07:11 +05:30
|
|
|
## Subclasses must include:
|
|
|
|
# base_map: BaseMap = Relationship()
|
2023-12-13 01:25:00 +05:30
|
|
|
store: str = Field(sa_type=String(100))
|
2023-11-19 12:13:39 +05:30
|
|
|
|
|
|
|
@classmethod
|
2024-01-03 17:07:11 +05:30
|
|
|
def selectinload(cls):
|
|
|
|
return [
|
|
|
|
cls.base_map
|
|
|
|
]
|
|
|
|
|
|
|
|
# @classmethod
|
|
|
|
# def dyn_join_with(cls):
|
|
|
|
# return {
|
|
|
|
# 'base_map': BaseMap,
|
|
|
|
# }
|
2023-11-19 12:13:39 +05:30
|
|
|
|
|
|
|
def __repr__(self):
|
|
|
|
return f"<models.BaseMapLayer {self.store or '':s}>"
|
|
|
|
|
|
|
|
def __str__(self):
|
|
|
|
return f"{self.store or '':s}"
|