summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--patchtracker/ComplexQueries.py18
-rw-r--r--patchtracker/urls.py2
-rw-r--r--patchtracker/views.py15
-rw-r--r--templates/searchresults.html (renamed from templates/letter_toc.html)2
-rw-r--r--templates/searchresults.tmpl34
5 files changed, 27 insertions, 44 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 )
diff --git a/templates/letter_toc.html b/templates/searchresults.html
index bff8a34..6f5abe5 100644
--- a/templates/letter_toc.html
+++ b/templates/searchresults.html
@@ -4,7 +4,7 @@ Debian Project patch tracking system
{% endblock %}
{% block content %}
<h1>Debian Project patch tracking system</h1>
-<h2>Packaging patches by index - {{ index }}</h2>
+<h2>Search Results: {{ searchDescription }} - {{ searchKey }}</h2>
<table class="packagelisting">
<tr>
<th>package</th>
diff --git a/templates/searchresults.tmpl b/templates/searchresults.tmpl
deleted file mode 100644
index 76bf5ff..0000000
--- a/templates/searchresults.tmpl
+++ /dev/null
@@ -1,34 +0,0 @@
-#import templates
-#extends templates.skeleton
-#def title
-Debian Project patch tracking system - Search Results
-#end def
-#def body
-<h1>Debian Project patch tracking system</h1>
-<h2>Search Results - $searchtype: $idx</h2>
-<table class="packagelisting">
-<tr>
-<th>package</th>
-#for $d in $dists
- <th>$d</th>
-#end for
-</tr>
-#for $p in $sorted($pkgs.iterkeys)
-<tr>
- <td>
- <a name="$p" />
- <a href="http://packages.debian.org/$p">$p</a>
- </td>
- #for $d in $dists
- <td>
- #if $pkgs[$p].has_key($d)
- <a href="$conf.root_url/package/$p/$pkgs[$p][$d].version">$pkgs[$p][$d].version</a>
- #else
- <i>n/a</i>
- #end if
- </td>
- #end for
-</tr>
-#end for
-</table>
-#end def