diff options
author | Sean Finney <seanius@debian.org> | 2010-05-13 20:23:37 +0200 |
---|---|---|
committer | Sean Finney <seanius@debian.org> | 2010-05-13 20:23:37 +0200 |
commit | cd9c47eabb00f528f801ff3f1a73a3f22ce24d88 (patch) | |
tree | 60cb0c397bb093e735d6883cab9d50a4acd5da63 /patchtracker | |
parent | 4a87687ce6598d89c9368d45f8f570d86c6c665e (diff) | |
download | patch-tracker-cd9c47eabb00f528f801ff3f1a73a3f22ce24d88.tar.gz |
Add maintainer search in django implementation, commonize w/index search.
Diffstat (limited to 'patchtracker')
-rw-r--r-- | patchtracker/ComplexQueries.py | 18 | ||||
-rw-r--r-- | patchtracker/urls.py | 2 | ||||
-rw-r--r-- | patchtracker/views.py | 15 |
3 files changed, 26 insertions, 9 deletions
diff --git a/patchtracker/ComplexQueries.py b/patchtracker/ComplexQueries.py index 706301e..be7e30f 100644 --- a/patchtracker/ComplexQueries.py +++ b/patchtracker/ComplexQueries.py @@ -1,16 +1,13 @@ import models -class PackageIndex: - def __init__( self, index ): +class PackageIndexQuery: + def __init__( self, queryobj ): self.dists = [d.name for d in models.RepositorySuite.objects.all()] self.index = {} self.packages = [] + self.queryobj = queryobj - packageMappings = models.SourcePackageMapping.objects.order_by('package__name').filter( package__name=index ) - if not packageMappings: - packageMappings = models.SourcePackageMapping.objects.order_by('package__name').filter( package__name__startswith=index ) - - for mapping in packageMappings: + for mapping in queryobj: self._addPackageMapping(mapping.package, mapping.suite) def _addPackageMapping( self, package, suite ): @@ -23,3 +20,10 @@ class PackageIndex: for pkg in self.packages: yield { 'package':pkg, 'entries':self.index[pkg.name] } +class PackageIndex (PackageIndexQuery): + def __init__( self, index ): + mappings = models.SourcePackageMapping.objects.order_by('package__name').filter( package__name=index ) + if not mappings: + mappings = models.SourcePackageMapping.objects.order_by('package__name').filter( package__name__startswith=index ) + + PackageIndexQuery.__init__(self, mappings) diff --git a/patchtracker/urls.py b/patchtracker/urls.py index b7a916f..4108086 100644 --- a/patchtracker/urls.py +++ b/patchtracker/urls.py @@ -6,6 +6,8 @@ urlpatterns = patterns('', views.package_vers), url(r'^package/(?P<index>\w+)$', views.display_toc), + url(r'^email/(?P<maintainer>.*)$', + views.maintainer_search), url(r'^patch/(?P<patchType>(debianonly|misc|nondebian|series))/view/(?P<package>\w+)/(?P<version>[^/]+)/(?P<patchName>.*)$', views.display_patch), url(r'^patch/(?P<patchType>(debianonly|misc|nondebian|series))/dl/(?P<package>\w+)/(?P<version>[^/]+)/(?P<patchName>.*)$', diff --git a/patchtracker/views.py b/patchtracker/views.py index e790f3a..b125681 100644 --- a/patchtracker/views.py +++ b/patchtracker/views.py @@ -1,5 +1,6 @@ import os +import django.db.models import django.http import django.shortcuts import django.template @@ -17,10 +18,20 @@ def package_vers(request, package, version): def display_toc(request, index): packageIndex = ComplexQueries.PackageIndex(index) - tmpl = 'letter_toc.html' - extra = { 'index':index, 'packageIndex':packageIndex, 'conf':Conf } + tmpl = 'searchresults.html' + searchDescription = "Packages by index" + extra = { 'index':index, 'packageIndex':packageIndex, 'conf':Conf, + 'searchDescription':searchDescription, 'searchKey':index } return django.shortcuts.render_to_response(tmpl, extra) +def maintainer_search(request, maintainer): + mappings = models.SourcePackageMapping.objects.order_by('package__name').filter( django.db.models.Q(package__maintainer__contains=maintainer) | django.db.models.Q(package__uploaders__contains=maintainer ) ) + packageIndex = ComplexQueries.PackageIndexQuery( mappings ) + tmpl = 'searchresults.html' + searchDescription = "Maintainer email" + extra = { 'index':maintainer, 'packageIndex':packageIndex, 'conf':Conf, + 'searchDescription':searchDescription, 'searchKey':maintainer } + return django.shortcuts.render_to_response(tmpl, extra) def display_patch(request, patchType, package, version, patchName): pkg = models.SourcePackage.objects.get( name=package, version=version ) |