summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--patchtracker/models.py7
-rw-r--r--patchtracker/urls.py8
-rw-r--r--patchtracker/views.py21
-rw-r--r--settings.py1
-rw-r--r--templates/base.html34
-rw-r--r--templates/package_vers.html121
-rw-r--r--urls.py20
7 files changed, 200 insertions, 12 deletions
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<package>\w+)/(?P<version>[^/]+)$',
+ 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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html>
+ <head>
+ <title>{% block title %}{% endblock %}</title>
+ <link rel="stylesheet" type="text/css"
+ href="/static/css/patches.css"/>
+ </head>
+ <body>
+ <div class="pageheader">
+ <img alt="[patchlogo]" src="/static/img/swirlpatch.png"/>
+ <p> <a href="/">Debian patch tracking system </a> </p>
+ <div class="breadcrumb">
+ {% for crumb in crumbs %}
+ {{ crumb }}
+ {% endfor %}
+ </div> <!-- breadcrumb -->
+ </div>
+ {% block content %}{% endblock %}
+ <div class="pagefooter">
+ page code/design/content is copyright (c) 2008 sean finney
+ &lt;seanius@debian.org&gt;. <br/>
+ patches viewed/retrieved through this system are copyrighted by
+ their respective authors. <br/>
+ <a href="http://git.debian.org/?p=users/seanius/patch-tracker.git">
+ browse git repo
+ </a>
+ -
+ <a href="http://git.debian.org/git/users/seanius/patch-tracker.git">
+ clone git repo
+ </a>
+ </div> <!-- pagefooter -->
+ </body>
+</html>
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 %}
+ <h1>
+ debian specific patch information for {{ pkg.name }} / {{ pkg.version }}
+ </h1>
+ <div class="diffsummary">
+ <a name="diff-summary"></a>
+ <h2> Summary </h2>
+ <table class="summary">
+ <tr>
+ <th>Package Version</th>
+ <th>Package Type</th>
+ <th>Source Package Format</th>
+ </tr>
+ <tr>
+ <td>{{ pkg.version }}</td>
+ <td>{{ pkg.type }}</td>
+ <td>{{ pkg.format }}</td>
+ </tr>
+ </table>
+ </div> <!-- diffsummary -->
+
+{% if pkg.debtar_name %}
+ <div class="debdiff">
+ <a name="debian-tarball"></a>
+ <h2> Debian packaging Information </h2>
+ <table class="patchlisting">
+ <tr>
+ <th>Debian changes tarfile</th>
+ <td colspan="2">
+ <a href="{{ conf.archive_root_url }}/{{ pkg.loc }}/{{ pkg.debtar_name }}">
+ {{ pkg.debtar_name }}
+ </a>
+ </td>
+ </tr>
+ <tr>
+ <th>Size</th><td colspan="2">{{ pkg.debtar_size }}</td>
+ </tr>
+ <tr>
+ <th>MD5sum</th><td colspan="2">{{ pkg.debtar_md5sum }}</td>
+ </tr>
+ </table>
+ </div> <!-- debdiff -->
+{% endif %}
+{% if pkg.diffgz_name %}
+ <div class="debdiff">
+ <a name="debian-patches"></a>
+ <h2> Debian packaging Information </h2>
+ <table class="patchlisting">
+ <tr>
+ <th>Diff file</th>
+ <td colspan="2">
+ <a href="{{ conf.archive_root_url }}/{{ pkg.loc }}/{{ pkg.diffgz_name }}">
+ {{ pkg.diffgz_name }}
+ </a>
+ </td>
+ </tr>
+ <tr>
+ <th>Size</th><td colspan="2">{{ pkg.diffgz_size }}</td>
+ </tr>
+ <tr>
+ <th>MD5sum</th><td colspan="2">{{ pkg.diffgz_md5sum }}</td>
+ </tr>
+ <tr>
+ <th>./debian only changes</th>
+ <td>
+ <a href="{{ conf.root_url }}/patch/debianonly/view/{{ pkg.name }}/{{ pkg.version }}">view</a>
+ </td>
+ <td>
+ <a href="{{ conf.root_url }}/patch/debianonly/dl/{{ pkg.name }}/{{ pkg.version }}">download</a>
+ </td>
+ </tr>
+ {% if pkg.diffgz_name and diffhandler.nondebiandir.lines %}
+ <tr>
+ <th>non packaging (i.e. not ./debian) changes</th>
+ <td>
+ <a href="{{ conf.root_url }}/patch/nondebian/view/{{ pkg.name }}/{{ pkg.version }}">view</a>
+ </td>
+ <td>
+ <a href="{{ conf.root_url }}/patch/nondebian/dl/{{ pkg.name }}/{{ pkg.version }}">download</a>
+ </td>
+ </tr>
+ {% endif %}
+ </table>
+ </div> <!-- debdiff -->
+{% endif %}
+
+{% if pkg.diffgz_name or pkg.debtar_name %}
+ {% if diffhandler.series %}
+ <div class="debseries">
+ <a name="series-patches"></a>
+ <h2> "series" style patches </h2>
+ <table class="patchlisting">
+ <tr>
+ <th>patch</th>
+ <th>summary</th>
+ <th>view</th>
+ <th>raw</th>
+ </tr>
+ {% for name,patch in diffhandler.series.iterpatches %}
+ <tr>
+ <td>{{ name }}</td>
+ <td class="diffstat"><pre>{{ patch.diffstat }}</pre></td>
+ <td>
+ <a href="{{ conf.root_url }}/patch/series/view/{{ pkg.name }}/{{ pkg.version }}/{{ name }}">view</a>
+ </td>
+ <td>
+ <a href="{{ conf.root_url }}/patch/series/dl/{{ pkg.name }}/{{ pkg.version }}/{{ name }}">download</a>
+ </td>
+ </tr>
+ {% endfor %}
+ </table>
+ </div> <!-- debseries -->
+ {% 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<path>.*)$', 'django.views.static.serve',
+ {'document_root': os.path.sep.join([os.curdir, "static"])}),
+
+ (r'^', include('patchtracker.urls')),
)