diff --git a/src/gisaf/models/geo_models_base.py b/src/gisaf/models/geo_models_base.py index bc2f4b8..a05a5ec 100644 --- a/src/gisaf/models/geo_models_base.py +++ b/src/gisaf/models/geo_models_base.py @@ -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.misc import Qml 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.project import Project @@ -383,11 +383,11 @@ class GeoModelNoStatus(Model): """ return [] - async def get_info(self) -> dict[str, str]: + async def get_info(self) -> list[InfoItem]: """ Model specific info """ - return {} + return [] # @classmethod # def get_join_with(cls): @@ -433,18 +433,18 @@ class GeoModelNoStatus(Model): async def get_properties(cls, df): return {} - async def get_tags(self) -> list[InfoItem]: + async def get_tags(self) -> list[Tag]: from gisaf.models.tags import Tags async with db_session() as session: query = select(Tags.tags).where(Tags.store == self.get_store_name(), Tags.ref_id == self.id) data = await session.exec(query) tags = data.one_or_none() - if tags is not None: - return [InfoItem(key=key, value=value) - for key, value in tags.items()] - else: - return [] + if tags is not None: + return [Tag(key=key, value=value) + for key, value in tags.items()] + else: + return [] @cached_property def shapely_geom(self): diff --git a/src/gisaf/models/info.py b/src/gisaf/models/info.py index 038d0d1..18a173a 100644 --- a/src/gisaf/models/info.py +++ b/src/gisaf/models/info.py @@ -2,8 +2,7 @@ from typing import Any from pydantic import BaseModel -from gisaf.models.info_item import InfoItem -from gisaf.models.tags import Tag +from gisaf.models.info_item import Tag, InfoItem class ActionResult(BaseModel): message: str diff --git a/src/gisaf/models/info_item.py b/src/gisaf/models/info_item.py index b49df28..c9faf8d 100644 --- a/src/gisaf/models/info_item.py +++ b/src/gisaf/models/info_item.py @@ -1,6 +1,10 @@ from pydantic import BaseModel - class InfoItem(BaseModel): key: str value: str | float | int + + +class Tag(BaseModel): + key: str + value: str \ No newline at end of file diff --git a/src/gisaf/models/tags.py b/src/gisaf/models/tags.py index 20b1085..a9f689c 100644 --- a/src/gisaf/models/tags.py +++ b/src/gisaf/models/tags.py @@ -42,9 +42,4 @@ class TagKey(SQLModel, table=True): return self.key def __repr__(self): - return ''.format(self=self) - - -class Tag(BaseModel): - key: str - value: str \ No newline at end of file + return ''.format(self=self) \ No newline at end of file diff --git a/src/gisaf/registry.py b/src/gisaf/registry.py index 7beeae4..eb7c5fc 100644 --- a/src/gisaf/registry.py +++ b/src/gisaf/registry.py @@ -36,7 +36,7 @@ from gisaf.models.survey import Equipment, Surveyor, Accuracy from gisaf.models.project import Project from gisaf.models.category import Category, CategoryGroup 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__) @@ -354,11 +354,15 @@ class ModelRegistry: if not item: raise NotInRegistry files, images = [], [] - externalRecordUrl, graph, categorizedInfoItems = (None, ) * 3 + categorizedInfoItems: list[InfoCategory] | None if hasattr(item, 'get_categorized_info'): categorizedInfoItems = await item.get_categorized_info() + else: + categorizedInfoItems = None if hasattr(item, 'get_graph'): graph = item.get_graph() + else: + graph = None if hasattr(item, 'Attachments'): if hasattr(item.Attachments, 'files'): files = await item.Attachments.files(item) @@ -366,11 +370,14 @@ class ModelRegistry: images = await item.Attachments.images(item) if hasattr(item, 'get_external_record_url'): externalRecordUrl = item.get_external_record_url() + else: + externalRecordUrl = None return FeatureInfo( id=str(item.id), itemName=item.caption, 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(), categorizedInfoItems=categorizedInfoItems, graph=graph,