summaryrefslogtreecommitdiff
path: root/patchtracker
diff options
context:
space:
mode:
authorSean Finney <seanius@debian.org>2010-05-13 20:23:37 +0200
committerSean Finney <seanius@debian.org>2010-05-13 20:23:37 +0200
commitcd9c47eabb00f528f801ff3f1a73a3f22ce24d88 (patch)
tree60cb0c397bb093e735d6883cab9d50a4acd5da63 /patchtracker
parent4a87687ce6598d89c9368d45f8f570d86c6c665e (diff)
downloadpatch-tracker-cd9c47eabb00f528f801ff3f1a73a3f22ce24d88.tar.gz
Add maintainer search in django implementation, commonize w/index search.
Diffstat (limited to 'patchtracker')
-rw-r--r--patchtracker/ComplexQueries.py18
-rw-r--r--patchtracker/urls.py2
-rw-r--r--patchtracker/views.py15
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 )