Loader: Hide inactive versions in UI (#5100)

* Function 'get_last_versions' have active filter

* filter in active versions in loader
This commit is contained in:
Jakub Trllo 2023-06-08 11:54:41 +02:00 committed by GitHub
parent 2719b6364a
commit b24b4a9d5f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 24 additions and 9 deletions

View file

@ -855,12 +855,13 @@ def get_output_link_versions(project_name, version_id, fields=None):
return conn.find(query_filter, _prepare_fields(fields))
def get_last_versions(project_name, subset_ids, fields=None):
def get_last_versions(project_name, subset_ids, active=None, fields=None):
"""Latest versions for entered subset_ids.
Args:
project_name (str): Name of project where to look for queried entities.
subset_ids (Iterable[Union[str, ObjectId]]): List of subset ids.
active (Optional[bool]): If True only active versions are returned.
fields (Optional[Iterable[str]]): Fields that should be returned. All
fields are returned if 'None' is passed.
@ -899,12 +900,21 @@ def get_last_versions(project_name, subset_ids, fields=None):
if name_needed:
group_item["name"] = {"$last": "$name"}
aggregate_filter = {
"type": "version",
"parent": {"$in": subset_ids}
}
if active is False:
aggregate_filter["data.active"] = active
elif active is True:
aggregate_filter["$or"] = [
{"data.active": {"$exists": 0}},
{"data.active": active},
]
aggregation_pipeline = [
# Find all versions of those subsets
{"$match": {
"type": "version",
"parent": {"$in": subset_ids}
}},
{"$match": aggregate_filter},
# Sorting versions all together
{"$sort": {"name": 1}},
# Group them by "parent", but only take the last

View file

@ -446,6 +446,7 @@ class SubsetsModel(BaseRepresentationModel, TreeModel):
last_versions_by_subset_id = get_last_versions(
project_name,
subset_ids,
active=True,
fields=["_id", "parent", "name", "type", "data", "schema"]
)

View file

@ -123,10 +123,14 @@ class VersionDelegate(QtWidgets.QStyledItemDelegate):
project_name = self.dbcon.active_project()
# Add all available versions to the editor
parent_id = item["version_document"]["parent"]
version_docs = list(sorted(
get_versions(project_name, subset_ids=[parent_id]),
key=lambda item: item["name"]
))
version_docs = [
version_doc
for version_doc in sorted(
get_versions(project_name, subset_ids=[parent_id]),
key=lambda item: item["name"]
)
if version_doc["data"].get("active", True)
]
hero_versions = list(
get_hero_versions(