gisaf-backend/src/gisaf/models/map_bases.py

66 lines
1.5 KiB
Python
Raw Normal View History

from typing import Any
from sqlmodel import Field, String, JSON, Column
from .models_base import Model
from .metadata import gisaf_map
class BaseStyle(Model):
metadata = gisaf_map
__tablename__ = 'map_base_style'
class Admin:
menu = 'Other'
flask_admin_model_view = 'MapBaseStyleModelView'
id: int = Field(primary_key=True)
name: str
style: dict[str, Any] | None = Field(sa_type=JSON(none_as_null=True))
mbtiles: str = Field(sa_type=String(50))
static_tiles_url: str
enabled: bool = True
def __repr__(self):
return '<models.BaseStyle {self.name:s}>'.format(self=self)
class BaseMap(Model):
metadata = gisaf_map
__tablename__ = 'base_map'
class Admin:
menu = 'Other'
id: int = Field(primary_key=True)
name: str
def __repr__(self):
return '<models.BaseMap {self.name:s}>'.format(self=self)
def __str__(self):
return self.name
class BaseMapLayer(Model):
metadata = gisaf_map
__tablename__ = 'base_map_layer'
class Admin:
menu = 'Other'
id: int = Field(primary_key=True)
base_map_id: int = Field(foreign_key='base_map.id', index=True)
store: str = Field(sa_type=String(100))
@classmethod
def dyn_join_with(cls):
return {
'base_map': BaseMap,
}
def __repr__(self):
return f"<models.BaseMapLayer {self.store or '':s}>"
def __str__(self):
return f"{self.store or '':s}"