Add missing model info, fix collision with tags

This commit is contained in:
phil 2024-03-09 00:32:58 +05:30
parent 69924709d2
commit 9bf78dd421
5 changed files with 26 additions and 21 deletions

View file

@ -40,7 +40,7 @@ from gisaf.models.models_base import Model
from gisaf.models.metadata import gisaf_survey, gisaf_admin, survey, raw_survey from gisaf.models.metadata import gisaf_survey, gisaf_admin, survey, raw_survey
from gisaf.models.misc import Qml from gisaf.models.misc import Qml
from gisaf.models.category import Category from gisaf.models.category import Category
from gisaf.models.info_item import InfoItem from gisaf.models.info_item import Tag, InfoItem
# from gisaf.models.survey import Equipment, Surveyor, Accuracy # from gisaf.models.survey import Equipment, Surveyor, Accuracy
# from gisaf.models.project import Project # from gisaf.models.project import Project
@ -383,11 +383,11 @@ class GeoModelNoStatus(Model):
""" """
return [] return []
async def get_info(self) -> dict[str, str]: async def get_info(self) -> list[InfoItem]:
""" """
Model specific info Model specific info
""" """
return {} return []
# @classmethod # @classmethod
# def get_join_with(cls): # def get_join_with(cls):
@ -433,18 +433,18 @@ class GeoModelNoStatus(Model):
async def get_properties(cls, df): async def get_properties(cls, df):
return {} return {}
async def get_tags(self) -> list[InfoItem]: async def get_tags(self) -> list[Tag]:
from gisaf.models.tags import Tags from gisaf.models.tags import Tags
async with db_session() as session: async with db_session() as session:
query = select(Tags.tags).where(Tags.store == self.get_store_name(), query = select(Tags.tags).where(Tags.store == self.get_store_name(),
Tags.ref_id == self.id) Tags.ref_id == self.id)
data = await session.exec(query) data = await session.exec(query)
tags = data.one_or_none() tags = data.one_or_none()
if tags is not None: if tags is not None:
return [InfoItem(key=key, value=value) return [Tag(key=key, value=value)
for key, value in tags.items()] for key, value in tags.items()]
else: else:
return [] return []
@cached_property @cached_property
def shapely_geom(self): def shapely_geom(self):

View file

@ -2,8 +2,7 @@ from typing import Any
from pydantic import BaseModel from pydantic import BaseModel
from gisaf.models.info_item import InfoItem from gisaf.models.info_item import Tag, InfoItem
from gisaf.models.tags import Tag
class ActionResult(BaseModel): class ActionResult(BaseModel):
message: str message: str

View file

@ -1,6 +1,10 @@
from pydantic import BaseModel from pydantic import BaseModel
class InfoItem(BaseModel): class InfoItem(BaseModel):
key: str key: str
value: str | float | int value: str | float | int
class Tag(BaseModel):
key: str
value: str

View file

@ -42,9 +42,4 @@ class TagKey(SQLModel, table=True):
return self.key return self.key
def __repr__(self): def __repr__(self):
return '<models.TagKey {self.key}>'.format(self=self) return '<models.TagKey {self.key}>'.format(self=self)
class Tag(BaseModel):
key: str
value: str

View file

@ -36,7 +36,7 @@ from gisaf.models.survey import Equipment, Surveyor, Accuracy
from gisaf.models.project import Project from gisaf.models.project import Project
from gisaf.models.category import Category, CategoryGroup from gisaf.models.category import Category, CategoryGroup
from gisaf.models.metadata import raw_survey, survey from gisaf.models.metadata import raw_survey, survey
from gisaf.models.info import FeatureInfo from gisaf.models.info import FeatureInfo, InfoCategory
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@ -354,11 +354,15 @@ class ModelRegistry:
if not item: if not item:
raise NotInRegistry raise NotInRegistry
files, images = [], [] files, images = [], []
externalRecordUrl, graph, categorizedInfoItems = (None, ) * 3 categorizedInfoItems: list[InfoCategory] | None
if hasattr(item, 'get_categorized_info'): if hasattr(item, 'get_categorized_info'):
categorizedInfoItems = await item.get_categorized_info() categorizedInfoItems = await item.get_categorized_info()
else:
categorizedInfoItems = None
if hasattr(item, 'get_graph'): if hasattr(item, 'get_graph'):
graph = item.get_graph() graph = item.get_graph()
else:
graph = None
if hasattr(item, 'Attachments'): if hasattr(item, 'Attachments'):
if hasattr(item.Attachments, 'files'): if hasattr(item.Attachments, 'files'):
files = await item.Attachments.files(item) files = await item.Attachments.files(item)
@ -366,11 +370,14 @@ class ModelRegistry:
images = await item.Attachments.images(item) images = await item.Attachments.images(item)
if hasattr(item, 'get_external_record_url'): if hasattr(item, 'get_external_record_url'):
externalRecordUrl = item.get_external_record_url() externalRecordUrl = item.get_external_record_url()
else:
externalRecordUrl = None
return FeatureInfo( return FeatureInfo(
id=str(item.id), id=str(item.id),
itemName=item.caption, itemName=item.caption,
geoInfoItems=await item.get_geo_info(), geoInfoItems=await item.get_geo_info(),
infoItems=await item.get_survey_info(), infoItems=await item.get_info(),
surveyInfoItems=await item.get_survey_info(),
tags=await item.get_tags(), tags=await item.get_tags(),
categorizedInfoItems=categorizedInfoItems, categorizedInfoItems=categorizedInfoItems,
graph=graph, graph=graph,