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.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):
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
|
@ -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
|
|
|
@ -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,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue