Add missing model info, fix collision with tags
This commit is contained in:
parent
69924709d2
commit
9bf78dd421
5 changed files with 26 additions and 21 deletions
|
@ -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):
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -1,6 +1,10 @@
|
|||
from pydantic import BaseModel
|
||||
|
||||
|
||||
class InfoItem(BaseModel):
|
||||
key: str
|
||||
value: str | float | int
|
||||
|
||||
|
||||
class Tag(BaseModel):
|
||||
key: str
|
||||
value: str
|
|
@ -42,9 +42,4 @@ class TagKey(SQLModel, table=True):
|
|||
return self.key
|
||||
|
||||
def __repr__(self):
|
||||
return '<models.TagKey {self.key}>'.format(self=self)
|
||||
|
||||
|
||||
class Tag(BaseModel):
|
||||
key: str
|
||||
value: str
|
||||
return '<models.TagKey {self.key}>'.format(self=self)
|
|
@ -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,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue