summaryrefslogtreecommitdiff
path: root/patchtracker
diff options
context:
space:
mode:
authorSean Finney <seanius@debian.org>2010-05-13 12:17:57 +0200
committerSean Finney <seanius@debian.org>2010-05-13 12:17:57 +0200
commit9649bd16ef6cadc96c2c6e96f3449aa62646df66 (patch)
treea79f67398b8b36bdc4a46a5cf1a3aae9398b2ece /patchtracker
parente2a079386b6f95deeadcea4cd3e2a04fafbf467a (diff)
downloadpatch-tracker-9649bd16ef6cadc96c2c6e96f3449aa62646df66.tar.gz
Implement series patch download and view in django
Diffstat (limited to 'patchtracker')
-rw-r--r--patchtracker/Patch.py11
-rw-r--r--patchtracker/urls.py7
-rw-r--r--patchtracker/views.py33
3 files changed, 47 insertions, 4 deletions
diff --git a/patchtracker/Patch.py b/patchtracker/Patch.py
index 6533910..09f4911 100644
--- a/patchtracker/Patch.py
+++ b/patchtracker/Patch.py
@@ -2,6 +2,9 @@ import sys
import os
import errno
from glob import glob
+import pygments
+import pygments.lexers
+import pygments.formatters
import tarfile
class Diffstat:
@@ -39,6 +42,14 @@ class Patch:
def diffstat(self):
return Diffstat(self)
+ def highlight(self):
+ for enc in ['utf-8', 'latin-1']:
+ try:
+ return pygments.highlight(str(self).decode(enc), pygments.lexers.DiffLexer(),
+ pygments.formatters.HtmlFormatter(style='colorful', noclasses=True, encoding=enc, nobackground=True))
+ except UnicodeDecodeError:
+ pass
+
class GenericPatchSeries (list):
def blank(self):
self.names = []
diff --git a/patchtracker/urls.py b/patchtracker/urls.py
index 422a2a1..23992f4 100644
--- a/patchtracker/urls.py
+++ b/patchtracker/urls.py
@@ -3,6 +3,9 @@ import views
urlpatterns = patterns('',
url(r'^package/(?P<package>\w+)/(?P<version>[^/]+)$',
- views.package_vers,
- name='user_profile')
+ views.package_vers),
+ url(r'^patch/series/dl/(?P<package>\w+)/(?P<version>[^/]+)/(?P<patch>[^/]*)$',
+ views.download_series_patch),
+ url(r'^patch/series/view/(?P<package>\w+)/(?P<version>[^/]+)/(?P<patch>[^/]*)$',
+ views.view_series_patch),
)
diff --git a/patchtracker/views.py b/patchtracker/views.py
index e24ba1b..eac4e89 100644
--- a/patchtracker/views.py
+++ b/patchtracker/views.py
@@ -1,11 +1,13 @@
import os
-import django.template
+import django.http
import django.shortcuts
+import django.template
-import models
+import DebTarHandler
import DiffGzHandler
import Conf
+import models
def package_vers(request, package, version):
pkg = models.SourcePackage.objects.get( name=package, version=version )
@@ -18,3 +20,30 @@ def package_vers(request, package, version):
extra = { 'pkg':pkg, 'ctx':ctx, 'conf':Conf, 'diffhandler':diffhandler }
return django.shortcuts.render_to_response(tmpl, extra, context_instance=ctx)
+def download_series_patch(request, package, version, patch):
+ 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(dtar)
+ patchContents = diffhandler.series().fetch(patch)
+ return django.http.HttpResponse(patchContents, mimetype="text/plain")
+
+def view_series_patch(request, package, version, patch):
+ 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(dtar)
+ patchContents = diffhandler.series().fetch(patch)
+ extra = { 'pkg':pkg, 'patch':patch, 'patchContents':patchContents,
+ 'patchType':'series', 'conf':Conf }
+ return django.shortcuts.render_to_response(tmpl, extra, context_instance=ctx)