Skip to content

Commit

Permalink
Merge pull request #59 from opengisch/shortdesc
Browse files Browse the repository at this point in the history
ilidata ShortDescription and Title improvment and provide it in iliCache
  • Loading branch information
signedav authored May 5, 2023
2 parents 1604eea + 23fecbe commit 167cc6b
Show file tree
Hide file tree
Showing 2 changed files with 70 additions and 6 deletions.
14 changes: 13 additions & 1 deletion modelbaker/ilitoppingmaker/ilidata.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,9 @@ def __init__(
self.owner = owner
self.project_name = project_name

self.title = f"QGIS {self.file_type} file for {self.project_name} - {os.path.splitext(os.path.basename(self.file_path))}"
# the title is mostly what is displayed in a specific context
self.title = self.project_name
self.short_description = f"QGIS {self.file_type} file for {self.project_name} - {os.path.splitext(os.path.basename(self.file_path))}"
self.file_mimetype = self._file_mime_type(self.file_path)

def _file_mime_type(self, file_path: str = None) -> str:
Expand Down Expand Up @@ -81,6 +83,16 @@ def make_xml_element(self, element):
)
ET.SubElement(datasetidx16_localisedtext, "Text").text = self.title

short_description = ET.SubElement(element, "shortDescription")
datsetidx16_multilingualtext = ET.SubElement(
short_description, "DatasetIdx16.MultilingualMText"
)
localisedtext = ET.SubElement(datsetidx16_multilingualtext, "LocalisedText")
datasetidx16_localisedtext = ET.SubElement(
localisedtext, "DatasetIdx16.LocalisedMText"
)
ET.SubElement(datasetidx16_localisedtext, "Text").text = self.short_description

categories = ET.SubElement(element, "categories")
type_datasetidx16_code = ET.SubElement(categories, "DatasetIdx16.Code_")
ET.SubElement(
Expand Down
62 changes: 57 additions & 5 deletions modelbaker/iliwrapper/ilicache.py
Original file line number Diff line number Diff line change
Expand Up @@ -535,6 +535,42 @@ def _process_informationfile(self, file, netloc, url):
}
title.append(title_information)

short_description = list()

for short_description_element in metaconfig_metadata.findall(
"ili23:shortDescription", self.ns
):
for (
multilingual_text_element
) in short_description_element.findall(
"ili23:DatasetIdx16.MultilingualMText", self.ns
):
for (
localised_text_element
) in multilingual_text_element.findall(
"ili23:LocalisedText", self.ns
):
for (
localised_text_element
) in localised_text_element.findall(
"ili23:DatasetIdx16.LocalisedMText", self.ns
):
short_description_information = {
"language": self.get_element_text(
localised_text_element.find(
"ili23:Language", self.ns
)
),
"text": self.get_element_text(
localised_text_element.find(
"ili23:Text", self.ns
)
),
}
short_description.append(
short_description_information
)

model_link_names = []
for basket_element in metaconfig_metadata.findall(
"ili23:baskets", self.ns
Expand Down Expand Up @@ -592,6 +628,12 @@ def _process_informationfile(self, file, netloc, url):
metaconfig["title"] = title
else:
metaconfig["title"] = None
if short_description is not None:
metaconfig[
"short_description"
] = short_description
else:
metaconfig["short_description"] = None

metaconfig["model_link_names"] = model_link_names
repo_metaconfigs.append(metaconfig)
Expand Down Expand Up @@ -654,6 +696,7 @@ class Roles(Enum):
ID = Qt.UserRole + 7
URL = Qt.UserRole + 8
MODEL_LINKS = Qt.UserRole + 9
SHORT_DESCRIPTION = Qt.UserRole + 10

def __int__(self):
return self.value
Expand All @@ -679,8 +722,16 @@ def set_repositories(self, repositories):
# since there is no multilanguage handling we take the first entry
display_value = dataitem["title"][0]["text"]

short_description = None
if (
dataitem["short_description"]
and "text" in dataitem["short_description"][0]
):
short_description = dataitem["short_description"][0]["text"]

item.setData(display_value, int(Qt.DisplayRole))
item.setData(display_value, int(Qt.EditRole))
item.setData(short_description, int(Qt.ToolTipRole))
item.setData(dataitem["id"], int(IliDataItemModel.Roles.ID))
item.setData(
dataitem["repository"], int(IliDataItemModel.Roles.ILIREPO)
Expand All @@ -694,6 +745,9 @@ def set_repositories(self, repositories):
item.setData(dataitem["owner"], int(IliDataItemModel.Roles.OWNER))
item.setData(dataitem["title"], int(IliDataItemModel.Roles.TITLE))
item.setData(dataitem["url"], int(IliDataItemModel.Roles.URL))
item.setData(
short_description, int(IliDataItemModel.Roles.SHORT_DESCRIPTION)
)

item.setData(
dataitem["model_link_names"],
Expand Down Expand Up @@ -722,21 +776,19 @@ def __init__(self):
self.repository_label = QLabel()
self.repository_label.setAlignment(Qt.AlignRight)
self.widget.layout().addWidget(self.metaconfig_label, 0, 0)
self.widget.layout().addWidget(self.repository_label, 0, 2)
self.widget.layout().addWidget(self.repository_label, 0, 1)

def paint(self, painter, option, index):
option.index = index
super().paint(painter, option, index)

def drawDisplay(self, painter, option, rect, text):
repository = option.index.data(int(IliDataItemModel.Roles.ILIREPO))
models = option.index.data(int(IliDataItemModel.Roles.MODELS))
owner = option.index.data(int(IliDataItemModel.Roles.OWNER))
display_text = option.index.data(int(Qt.DisplayRole))

self.repository_label.setText(
'<font color="#666666"><i>of {owner} with {models} at {repository}</i></font>'.format(
owner=owner, models="/".join(models), repository=repository
'<font color="#666666"><i>{repository}</i></font>'.format(
repository=repository
)
)
self.metaconfig_label.setText(
Expand Down

0 comments on commit 167cc6b

Please sign in to comment.