diff options
-rw-r--r-- | patchtracker/ComplexQueries.py | 18 | ||||
-rw-r--r-- | patchtracker/urls.py | 2 | ||||
-rw-r--r-- | patchtracker/views.py | 15 | ||||
-rw-r--r-- | templates/searchresults.html (renamed from templates/letter_toc.html) | 2 | ||||
-rw-r--r-- | templates/searchresults.tmpl | 34 |
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 |