summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan McGee <dan@archlinux.org>2012-08-07 01:16:51 -0500
committerDan McGee <dan@archlinux.org>2012-08-07 01:16:53 -0500
commit7d9ed0b881bd05878e7a54f785c2551bc6e336d6 (patch)
tree790658dc0f8e253b15be626ab9d121c4f306e7c7
parent8ca64af397718f7dda0080467d202c6a70a33c8c (diff)
downloadarchweb-7d9ed0b881bd05878e7a54f785c2551bc6e336d6.tar.gz
archweb-7d9ed0b881bd05878e7a54f785c2551bc6e336d6.zip
Add reverse conflicts to package details
This is a place where calling vercmp could come in really handy. Signed-off-by: Dan McGee <dan@archlinux.org>
-rw-r--r--main/models.py10
-rw-r--r--templates/packages/details.html13
2 files changed, 20 insertions, 3 deletions
diff --git a/main/models.py b/main/models.py
index 7d8ea755..b49edde3 100644
--- a/main/models.py
+++ b/main/models.py
@@ -258,6 +258,16 @@ class Package(models.Model):
return (sort_order.get(dep.deptype, 1000), dep.name)
return sorted(deps, key=sort_key)
+ @cache_function(123)
+ def reverse_conflicts(self):
+ """
+ Returns a list of packages with conflicts against this package.
+ """
+ # TODO: fix this; right now we cheat since we can't do proper version
+ # number checking without using alpm or vercmp directly.
+ return Package.objects.filter(conflicts__name=self.pkgname,
+ conflicts__comparison='').distinct()
+
@cache_function(125)
def base_package(self):
"""
diff --git a/templates/packages/details.html b/templates/packages/details.html
index 201e3074..9e898b7f 100644
--- a/templates/packages/details.html
+++ b/templates/packages/details.html
@@ -126,16 +126,23 @@
<td class="wrap">{% include "packages/details_relatedto.html" %}</td>
</tr>
{% endif %}{% endwith %}
+ {% with pkg.replaces.all as all_related %}{% if all_related %}
+ <tr>
+ <th>Replaces:</th>
+ <td class="wrap">{% include "packages/details_relatedto.html" %}</td>
+ </tr>
+ {% endif %}{% endwith %}
{% with pkg.conflicts.all as all_related %}{% if all_related %}
<tr>
<th>Conflicts:</th>
<td class="wrap">{% include "packages/details_relatedto.html" %}</td>
</tr>
{% endif %}{% endwith %}
- {% with pkg.replaces.all as all_related %}{% if all_related %}
+ {% with pkg.reverse_conflicts as rev_conflicts %}{% if rev_conflicts %}
<tr>
- <th>Replaces:</th>
- <td class="wrap">{% include "packages/details_relatedto.html" %}</td>
+ <th>Reverse Conflicts:</th>
+ <td class="wrap">{% for conflict in rev_conflicts %}
+ {% pkg_details_link conflict %}{% if not forloop.last %}, {% endif %}{% endfor %}</td>
</tr>
{% endif %}{% endwith %}
<tr>