diff --git a/services/webapp/code/rosetta/core_app/views.py b/services/webapp/code/rosetta/core_app/views.py index ddcb7fca692e98b4444a6f6d483aa0d79b5d037d..ee0cc2126a58b028a7d031308ea2599545d428d2 100644 --- a/services/webapp/code/rosetta/core_app/views.py +++ b/services/webapp/code/rosetta/core_app/views.py @@ -814,7 +814,7 @@ def software(request): return render(request, 'error.html', {'data': data}) else: - # Ddo we have to operate on a container family? + # Do we have to operate on a container family? if container_family_id: # Get back name, registry and image from contsainer url @@ -836,7 +836,7 @@ def software(request): platform_containers = Container.objects.filter(user=None) - # Ok, nilter by owner + # Ok, filter by owner if search_owner != 'All': if search_owner == 'User': platform_containers =[] @@ -875,10 +875,25 @@ def software(request): self.container_by_tags_by_arch[container.image_arch]={} self.container_by_tags_by_arch[container.image_arch][container.image_tag] = container - # Lastly, add the container to the "all tags" - #if None not in self.container_by_tags_by_arch: - # self.container_by_tags_by_arch[None]={} - #self.container_by_tags_by_arch[None][container.image_tag] = container + + def finalize(self, desc=True): + + # Order versions + for arch in self.container_by_tags_by_arch: + latest = self.container_by_tags_by_arch[arch].pop('latest', None) + container_by_tags_ordered = dict(sorted(self.container_by_tags_by_arch[arch].items(), reverse=desc)) + if latest: + if desc: + self.container_by_tags_by_arch[arch] = {'latest': latest} + self.container_by_tags_by_arch[arch].update(container_by_tags_ordered) + else: + self.container_by_tags_by_arch[arch] = container_by_tags_ordered + self.container_by_tags_by_arch[arch].update({'latest': latest}) + else: + self.container_by_tags_by_arch[arch] = container_by_tags_ordered + + # Order archs + self.container_by_tags_by_arch = dict(sorted(self.container_by_tags_by_arch.items(), reverse=False)) @ property @@ -893,11 +908,11 @@ def software(request): if container.family_id not in data['container_families']: data['container_families'][container.family_id] = ContainerFamily(container.family_id, container.name, container.registry, container.image_name) data['container_families'][container.family_id].add(container) + # Finalize the families - #for container.family_id in data['container_families']: - # if len(data['container_families'][container.family_id].all_archs) == 1: - # if data['container_families'][container.family_id].all_archs[0] != None: - # data['container_families'][container.family_id].container_by_tags_by_arch.pop(None) + for container_family_id in data['container_families']: + data['container_families'][container_family_id].finalize() + return render(request, 'software.html', {'data': data})