From 5924a11cfb9adfc57327d571f0f644cb1dcec8a0 Mon Sep 17 00:00:00 2001 From: Sean Finney Date: Thu, 13 May 2010 11:19:53 +0200 Subject: implement package/version view in django --- patchtracker/models.py | 7 +++ patchtracker/urls.py | 8 +++ patchtracker/views.py | 21 +++++++- settings.py | 1 + templates/base.html | 34 +++++++++++++ templates/package_vers.html | 121 ++++++++++++++++++++++++++++++++++++++++++++ urls.py | 20 ++++---- 7 files changed, 200 insertions(+), 12 deletions(-) create mode 100644 patchtracker/urls.py create mode 100644 templates/base.html create mode 100644 templates/package_vers.html diff --git a/patchtracker/models.py b/patchtracker/models.py index 12bd76a..0fb997d 100644 --- a/patchtracker/models.py +++ b/patchtracker/models.py @@ -15,6 +15,13 @@ class SourcePackage (models.Model): maintainer = models.CharField(max_length=1024) uploaders = models.CharField(max_length=4096, null=True, blank=True) + def type( self ): + """ Source package "type". Not incredibly useful, i guess... """ + if self.diffgz_name or self.debtar_name: + return "Debian-diff" + else: + return "Native" + def __unicode__( self ): return "%s (%s)"%(self.name, self.version) diff --git a/patchtracker/urls.py b/patchtracker/urls.py new file mode 100644 index 0000000..422a2a1 --- /dev/null +++ b/patchtracker/urls.py @@ -0,0 +1,8 @@ +from django.conf.urls.defaults import * +import views + +urlpatterns = patterns('', + url(r'^package/(?P\w+)/(?P[^/]+)$', + views.package_vers, + name='user_profile') + ) diff --git a/patchtracker/views.py b/patchtracker/views.py index 60f00ef..e24ba1b 100644 --- a/patchtracker/views.py +++ b/patchtracker/views.py @@ -1 +1,20 @@ -# Create your views here. +import os + +import django.template +import django.shortcuts + +import models +import DiffGzHandler +import Conf + +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) + extra = { 'pkg':pkg, 'ctx':ctx, 'conf':Conf, 'diffhandler':diffhandler } + return django.shortcuts.render_to_response(tmpl, extra, context_instance=ctx) + diff --git a/settings.py b/settings.py index 65cbea0..81ab0b6 100644 --- a/settings.py +++ b/settings.py @@ -70,6 +70,7 @@ TEMPLATE_DIRS = ( # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates". # Always use forward slashes, even on Windows. # Don't forget to use absolute paths, not relative paths. + '/home/sean/debian/patch-tracker/templates' ) INSTALLED_APPS = ( diff --git a/templates/base.html b/templates/base.html new file mode 100644 index 0000000..aa832ad --- /dev/null +++ b/templates/base.html @@ -0,0 +1,34 @@ + + + + {% block title %}{% endblock %} + + + + + {% block content %}{% endblock %} + + + diff --git a/templates/package_vers.html b/templates/package_vers.html new file mode 100644 index 0000000..536aed0 --- /dev/null +++ b/templates/package_vers.html @@ -0,0 +1,121 @@ +{% extends "base.html" %} +{% block title %} +debian specific patch information for {{ pkg.name }} / {{ pkg.version }} +{% endblock %} +{% block content %} +

+ debian specific patch information for {{ pkg.name }} / {{ pkg.version }} +

+
+ +

Summary

+ + + + + + + + + + + +
Package VersionPackage TypeSource Package Format
{{ pkg.version }}{{ pkg.type }}{{ pkg.format }}
+
+ +{% if pkg.debtar_name %} +
+ +

Debian packaging Information

+ + + + + + + + + + + +
Debian changes tarfile + + {{ pkg.debtar_name }} + +
Size{{ pkg.debtar_size }}
MD5sum{{ pkg.debtar_md5sum }}
+
+{% endif %} +{% if pkg.diffgz_name %} +
+ +

Debian packaging Information

+ + + + + + + + + + + + + + + + + {% if pkg.diffgz_name and diffhandler.nondebiandir.lines %} + + + + + + {% endif %} +
Diff file + + {{ pkg.diffgz_name }} + +
Size{{ pkg.diffgz_size }}
MD5sum{{ pkg.diffgz_md5sum }}
./debian only changes + view + + download +
non packaging (i.e. not ./debian) changes + view + + download +
+
+{% endif %} + +{% if pkg.diffgz_name or pkg.debtar_name %} + {% if diffhandler.series %} +
+ +

"series" style patches

+ + + + + + + + {% for name,patch in diffhandler.series.iterpatches %} + + + + + + + {% endfor %} +
patchsummaryviewraw
{{ name }}
{{ patch.diffstat }}
+ view + + download +
+
+ {% endif %} +{% endif %} + + +{% endblock %} diff --git a/urls.py b/urls.py index 7ee9c67..456c9ab 100644 --- a/urls.py +++ b/urls.py @@ -1,19 +1,17 @@ +import os + from django.conf.urls.defaults import * from django.contrib import admin admin.autodiscover() -# Uncomment the next two lines to enable the admin: -# from django.contrib import admin -# admin.autodiscover() +import patchtracker urlpatterns = patterns('', - # Example: - # (r'^debianpatchtracker/', include('debianpatchtracker.foo.urls')), - - # Uncomment the admin/doc line below and add 'django.contrib.admindocs' - # to INSTALLED_APPS to enable admin documentation: - # (r'^admin/doc/', include('django.contrib.admindocs.urls')), - - # Uncomment the next line to enable the admin: + # admin interface (for debugging, mostly) (r'^admin/', include(admin.site.urls)), + # static content + (r'^static/(?P.*)$', 'django.views.static.serve', + {'document_root': os.path.sep.join([os.curdir, "static"])}), + + (r'^', include('patchtracker.urls')), ) -- cgit v1.2.3