From 7ac7af477403f67e75018d77901ddf45a9457805 Mon Sep 17 00:00:00 2001 From: rubenwardy Date: Tue, 21 Jan 2020 22:59:44 +0000 Subject: Sort dependencies in package page --- app/models.py | 23 +++++++++++++++++++++++ app/templates/packages/view.html | 33 +++++++++++++++++++++++---------- 2 files changed, 46 insertions(+), 10 deletions(-) diff --git a/app/models.py b/app/models.py index 96ef655..714c5a0 100644 --- a/app/models.py +++ b/app/models.py @@ -338,6 +338,14 @@ class Dependency(db.Model): else: raise Exception("Either meta or package must be given, but not both!") + def getName(self): + if self.meta_package: + return self.meta_package.name + elif self.package: + return self.package.name + else: + assert False + def __str__(self): if self.package is not None: return self.package.author.username + "/" + self.package.name @@ -450,6 +458,21 @@ class Package(db.Model): def getIsFOSS(self): return self.license.is_foss and self.media_license.is_foss + def getSortedDependencies(self, is_hard=None): + query = self.dependencies + if is_hard is not None: + query = query.filter_by(optional=not is_hard) + + deps = query.all() + deps.sort(key = lambda x: x.getName()) + return deps + + def getSortedHardDependencies(self): + return self.getSortedDependencies(True) + + def getSortedOptionalDependencies(self): + return self.getSortedDependencies(False) + def getState(self): if self.approved: return "approved" diff --git a/app/templates/packages/view.html b/app/templates/packages/view.html index 362f4f4..7bed662 100644 --- a/app/templates/packages/view.html +++ b/app/templates/packages/view.html @@ -261,27 +261,40 @@
Dependencies
- {% for dep in package.dependencies %} - {% if dep.optional %} - {% set color="secondary" %} - {% else %} - {% set color="primary" %} - {% endif %} - +
{{ _("Required") }}
+ {% for dep in package.getSortedHardDependencies() %} {%- if dep.package %} - {{ dep.package.title }} by {{ dep.package.author.display_name }} {% elif dep.meta_package %} - {{ dep.meta_package.name }} {% else %} {{ "Excepted package or meta_package in dep!" | throw }} {% endif %} {% else %} - No dependencies + No required dependencies {% endfor %} + + {% set optional_deps=package.getSortedOptionalDependencies() %} + {% if optional_deps %} +
{{ _("Optional") }}
+ {% for dep in optional_deps %} + {%- if dep.package %} + + {{ dep.package.title }} by {{ dep.package.author.display_name }} + {% elif dep.meta_package %} + + {{ dep.meta_package.name }} + {% else %} + {{ "Excepted package or meta_package in dep!" | throw }} + {% endif %} + {% endfor %} + {% endif %}
{% endif %} -- cgit v1.2.3