From 91b3ddd47f15851cd1686adbf9181fc46b9730a3 Mon Sep 17 00:00:00 2001 From: Dusty Phillips Date: Sat, 5 Jul 2008 20:28:29 -0400 Subject: #10213 make package urls be pretty cool, if not awesome --- main/models.py | 3 ++- packages/views.py | 18 ++++++++++++------ templates/packages/details.html | 4 ++-- urls.py | 5 ++++- 4 files changed, 20 insertions(+), 10 deletions(-) diff --git a/main/models.py b/main/models.py index 12821f77..d4dee971 100644 --- a/main/models.py +++ b/main/models.py @@ -223,7 +223,8 @@ class Package(models.Model): _maintainername.short_description = 'Maintainer' def get_absolute_url(self): - return '/packages/%i/' % self.id + return '/packages/%s/%s/%s/' % (self.repo.name.lower(), + self.arch.name, self.pkgname) def get_requiredby(self): """ diff --git a/packages/views.py b/packages/views.py index 0fa781c4..d971d7c3 100644 --- a/packages/views.py +++ b/packages/views.py @@ -35,19 +35,25 @@ def update(request): pkg.save() return render_response(request, 'status_page.html', {'message':message}) -def details(request, pkgid=0, name='', repo=''): - if pkgid == 0: +def details(request, pkgid=0, name='', repo='', arch=''): + if pkgid != 0: + pkg = get_object_or_404(Package, id=pkgid) + elif all([name, repo, arch]): + pkg= get_object_or_404(Package, + pkgname=name, repo__name__iexact=repo, arch__name=arch) + else: p = Package.objects.filter(pkgname=name) if repo: p = p.filter(repo__name__iexact=repo) + lenp = p.count() # if more then one result, send to the search view - if len(p) > 1: return search(request, name) - if len(p) < 1: return render_response(request, 'error_page.html', + if lenp > 1: return search(request, name) + if lenp < 1: return render_response(request, 'error_page.html', {'errmsg': 'No matching packages.'}) - pkgid = p[0].id + pkg = p[0] - pkg = get_object_or_404(Package, id=pkgid) return render_response(request, 'packages/details.html', {'pkg': pkg}) + # @TODO: replace search form with a newform def search(request, query=''): if request.GET.has_key('q'): diff --git a/templates/packages/details.html b/templates/packages/details.html index c3b214e0..b115de87 100644 --- a/templates/packages/details.html +++ b/templates/packages/details.html @@ -57,7 +57,7 @@ {% ifequal depend.pkg None %}
  • {{ depend.dep.depname }} (virtual)
  • {% else %} -
  • {{ depend.dep.depname }}{{ depend.dep.depvcmp }}
  • +
  • {{ depend.dep.depname }}{{ depend.dep.depvcmp }}
  • {% endifequal %} {% endfor %} @@ -68,7 +68,7 @@

    Required By:

    diff --git a/urls.py b/urls.py index 0094d856..689af44c 100644 --- a/urls.py +++ b/urls.py @@ -14,7 +14,10 @@ urlpatterns = patterns('', (r'^packages/update/$', 'archweb_dev.packages.views.update'), (r'^packages/(?P\d+)/$', 'archweb_dev.packages.views.details'), (r'^packages/(?P[A-z0-9]+)/$', 'archweb_dev.packages.views.details'), - (r'^packages/(?P[A-z0-9]+)/(?P[A-z0-9]+)/$', 'archweb_dev.packages.views.details'), + (r'^packages/(?P[A-z0-9]+)/(?P[A-z0-9]+)/$', + 'archweb_dev.packages.views.details'), + (r'^packages/(?P[A-z0-9]+)/(?P[A-z0-9]+)/(?P[A-z0-9-]+)/$', + 'archweb_dev.packages.views.details'), (r'^packages/$', 'archweb_dev.packages.views.search'), (r'^todo/(\d+)/$', 'archweb_dev.todolists.views.view'), -- cgit v1.1-4-g5e80