diff options
-rw-r--r-- | patchtracker/models.py | 13 | ||||
-rw-r--r-- | patchtracker/views.py | 41 | ||||
-rw-r--r-- | templates/package_vers.html | 10 |
3 files changed, 27 insertions, 37 deletions
diff --git a/patchtracker/models.py b/patchtracker/models.py index 95a59df..3d4f582 100644 --- a/patchtracker/models.py +++ b/patchtracker/models.py @@ -1,5 +1,9 @@ +import os import re +import Conf +import DiffGzHandler, DebTarHandler + from django.db import models from django.contrib import admin @@ -24,6 +28,15 @@ class SourcePackage (models.Model): else: return "Native" + def diffhandler( self ): + """ Return a diffhandler object too the caller """ + if self.diffgz_name: + dgz = os.sep.join([Conf.archive_root, self.loc, self.diffgz_name]) + return DiffGzHandler.DiffGzHandler(dgz) + elif self.debtar_name: + dtar = os.sep.join([Conf.archive_root, self.loc, self.debtar_name]) + return DebTarHandler.DebTarHandler(dtar) + def anchor_name(self): """ output a version of the package name suitable for use as an anchor name (i.e. <a name="foo">) """ diff --git a/patchtracker/views.py b/patchtracker/views.py index 4db3666..e790f3a 100644 --- a/patchtracker/views.py +++ b/patchtracker/views.py @@ -5,8 +5,6 @@ import django.shortcuts import django.template import ComplexQueries -import DebTarHandler -import DiffGzHandler import Conf import models @@ -14,14 +12,7 @@ def package_vers(request, package, version): pkg = models.SourcePackage.objects.get( name=package, version=version ) ctx = django.template.RequestContext(request) tmpl = 'package_vers.html' - diffhandler = None - if pkg.diffgz_name: - dgz = os.sep.join([Conf.archive_root, pkg.loc, pkg.diffgz_name]) - diffhandler = DiffGzHandler.DiffGzHandler(dgz) - elif pkg.debtar_name: - dtar = os.sep.join([Conf.archive_root, pkg.loc, pkg.debtar_name]) - diffhandler = DebTarHandler.DebTarHandler(dtar) - extra = { 'pkg':pkg, 'ctx':ctx, 'conf':Conf, 'diffhandler':diffhandler } + extra = { 'pkg':pkg, 'ctx':ctx, 'conf':Conf } return django.shortcuts.render_to_response(tmpl, extra, context_instance=ctx) def display_toc(request, index): @@ -35,25 +26,18 @@ def display_patch(request, patchType, package, version, patchName): pkg = models.SourcePackage.objects.get( name=package, version=version ) ctx = django.template.RequestContext(request) tmpl = 'patch_view.html' - diffhandler = None - if pkg.diffgz_name: - dgz = os.sep.join([Conf.archive_root, pkg.loc, pkg.diffgz_name]) - diffhandler = DiffGzHandler.DiffGzHandler(dgz) - elif pkg.debtar_name: - dtar = os.sep.join([Conf.archive_root, pkg.loc, pkg.debtar_name]) - diffhandler = DebTarHandler.DebTarHandler(dtar) if patchType == "debianonly": - patch = diffhandler.debiandir() + patch = pkg.diffhandler().debiandir() patchTitle = "debian-dir only changes" elif patchType == "misc": - patch = diffhandler.filterdiff(include=patchName) + patch = pkg.diffhandler().filterdiff(include=patchName) patchTitle = patchName elif patchType == "nondebian": - patch = diffhandler.nondebiandir() + patch = pkg.diffhandler().nondebiandir() patchTitle = "direct (non-packaging) changes" elif patchType == "series": - patch = diffhandler.series().fetch(patchName) + patch = pkg.diffhandler().series().fetch(patchName) patchTitle = patchName extra = { 'pkg':pkg, 'patch':patch, 'patchType':patchType, 'conf':Conf, @@ -62,19 +46,12 @@ def display_patch(request, patchType, package, version, patchName): def download_patch(request, patchType, package, version, patchName): pkg = models.SourcePackage.objects.get( name=package, version=version ) - diffhandler = None - if pkg.diffgz_name: - dgz = os.sep.join([Conf.archive_root, pkg.loc, pkg.diffgz_name]) - diffhandler = DiffGzHandler.DiffGzHandler(dgz) - elif pkg.debtar_name: - dtar = os.sep.join([Conf.archive_root, pkg.loc, pkg.debtar_name]) - diffhandler = DebTarHandler.DebTarHandler(dtar) if patchType == "debianonly": - patch = diffhandler.debiandir() + patch = pkg.diffhandler().debiandir() elif patchType == "misc": - patch = diffhandler.filterdiff(include=patchName) + patch = pkg.diffhandler().filterdiff(include=patchName) elif patchType == "nondebian": - patch = diffhandler.nondebiandir() + patch = pkg.diffhandler().nondebiandir() elif patchType == "series": - patch = diffhandler.series().fetch(patchName) + patch = pkg.diffhandler().series().fetch(patchName) return django.http.HttpResponse(patch, mimetype="text/plain") diff --git a/templates/package_vers.html b/templates/package_vers.html index 81f03b2..7e4c1cb 100644 --- a/templates/package_vers.html +++ b/templates/package_vers.html @@ -73,7 +73,7 @@ debian specific patch information for {{ pkg.name }} / {{ pkg.version }} <a href="{{ conf.root_url }}/patch/debianonly/dl/{{ pkg.name }}/{{ pkg.version }}">download</a> </td> </tr> - {% if pkg.diffgz_name and diffhandler.nondebiandir.lines %} + {% if pkg.diffgz_name and pkg.diffhandler.nondebiandir.lines %} <tr> <th>non packaging (i.e. not ./debian) changes</th> <td> @@ -89,7 +89,7 @@ debian specific patch information for {{ pkg.name }} / {{ pkg.version }} {% endif %} {% if pkg.diffgz_name or pkg.debtar_name %} - {% if diffhandler.series %} + {% if pkg.diffhandler.series %} <div class="debseries"> <a name="series-patches"></a> <h2> "series" style patches </h2> @@ -100,7 +100,7 @@ debian specific patch information for {{ pkg.name }} / {{ pkg.version }} <th>view</th> <th>raw</th> </tr> - {% for name,patch in diffhandler.series.iterpatches %} + {% for name,patch in pkg.diffhandler.series.iterpatches %} <tr> <td>{{ name }}</td> <td class="diffstat"><pre>{{ patch.diffstat }}</pre></td> @@ -117,7 +117,7 @@ debian specific patch information for {{ pkg.name }} / {{ pkg.version }} {% endif %} {% endif %} -{% if pkg.diffgz_name and diffhandler.nondebiandir.lines %} +{% if pkg.diffgz_name and pkg.diffhandler.nondebiandir.lines %} <div class="nondebdiff"> <a name="direct-patches"></a> <h2> Misc. Non-packaging "direct" style patches </h2> @@ -130,7 +130,7 @@ debian specific patch information for {{ pkg.name }} / {{ pkg.version }} <th>view</th> <th>download</th> </tr> - {% for insd,deld,modd,f in diffhandler.nondebiandir.diffstat.stats %} + {% for insd,deld,modd,f in pkg.diffhandler.nondebiandir.diffstat.stats %} <tr> <td>{{ f }}</td><td>{{ insd }}</td><td>{{ deld }}</td><td>{{ modd }}</td> <td> |