From aadb8db022718b43e9b87f419bd1a1949ee3005e Mon Sep 17 00:00:00 2001 From: Tom Price Date: Sat, 25 Apr 2015 19:03:28 +0100 Subject: [PATCH] Basic diff between source -> HEAD or source -> dest. --- RIGS/rigboard.py | 38 ++++++++++++++++++------- RIGS/templates/RIGS/event_revision.html | 13 +++++++++ RIGS/templates/RIGS/revision_list.html | 2 +- RIGS/urls.py | 9 ++++-- 4 files changed, 48 insertions(+), 14 deletions(-) diff --git a/RIGS/rigboard.py b/RIGS/rigboard.py index 23371b2f..dba6b13c 100644 --- a/RIGS/rigboard.py +++ b/RIGS/rigboard.py @@ -214,10 +214,10 @@ class EventRevisions(generic.ListView): thisEvent = get_object_or_404(models.Event, pk=self.kwargs['pk']) - revisions = reversion.get_for_object(thisEvent) + revisions = reversion.get_unique_for_object(thisEvent) items = [] for revisionNo, thisRevision in enumerate(revisions): - thisItem = {} + thisItem = {'pk': thisRevision.pk} thisItem['revision'] = thisRevision.revision logger.info(thisRevision.revision.version_set.all()) if revisionNo >= len(revisions)-1: @@ -233,14 +233,32 @@ class EventRevisions(generic.ListView): return context -class EventRevision(generic.DetailView): +class EventRevision(generic.TemplateView): model = reversion.revisions.Revision - template_name = "RIGS/event_revision.html" + template_name = "RIGS/event_detail.html" - def get_queryset(self): - pk=self.kwargs['pk'] - thisVersion = get_object_or_404(reversion.models.Revision, pk=self.kwargs['pk']) - #items = reversion.revisions.Version - #thisVersion. + def get_context_data(self, pk, source, dest=None): + model = get_object_or_404(models.Event, pk=pk) + revisions = reversion.get_for_object(model) + source = revisions.get(pk=source) - return self.model.objects.filter(pk=pk) \ No newline at end of file + if dest: + dest = revisions.get(pk=dest) + else: + dest = reversion.get_for_date(model, datetime.datetime.today()) + + diff = { + 'pk': pk, # need this for the edit button to work + } + for field in source.field_dict: + html = generate_patch_html(source, dest, field, cleanup="semantic") + # tidy up + html = html.replace("¶", "") + diff[field] = html + + context = { + 'object': diff, + 'event': diff + } + + return context \ No newline at end of file diff --git a/RIGS/templates/RIGS/event_revision.html b/RIGS/templates/RIGS/event_revision.html index e69de29b..b4c7a96f 100644 --- a/RIGS/templates/RIGS/event_revision.html +++ b/RIGS/templates/RIGS/event_revision.html @@ -0,0 +1,13 @@ +{% extends 'base.html' %} + +{% block title %}Versions{% endblock %} + +{% block content %} + {% for field, change in diff.items %} + {{ change }}
+ {% autoescape off %} + {{ change }} + {% endautoescape %} +
+ {% endfor %} +{% endblock %} \ No newline at end of file diff --git a/RIGS/templates/RIGS/revision_list.html b/RIGS/templates/RIGS/revision_list.html index 7e5f5b1e..a84d711d 100644 --- a/RIGS/templates/RIGS/revision_list.html +++ b/RIGS/templates/RIGS/revision_list.html @@ -26,7 +26,7 @@ {% for version in object_list %} - {{ version.revision.pk }} + {{ version.pk }} {{ version.revision.date_created }} {{ version.revision.user.name }} {% for key, old, new in version.changes %} diff --git a/RIGS/urls.py b/RIGS/urls.py index d079de38..0a3740c7 100644 --- a/RIGS/urls.py +++ b/RIGS/urls.py @@ -79,12 +79,15 @@ urlpatterns = patterns('', url(r'^event/archive/$', login_required()(rigboard.EventArchive.as_view()), name='event_archive'), - url(r'^event_revisions/(?P\d+)/$', + url(r'^event/(?P\d+)/version/$', permission_required_with_403('RIGS.view_event')(rigboard.EventRevisions.as_view()), name='event_revisions'), - url(r'^event_revision/(?P\d+)/$', + url(r'^event/(?P\d+)/version/(?P\d+)/$', permission_required_with_403('RIGS.view_event')(rigboard.EventRevision.as_view()), - name='event_revisions'), + name='event_verions'), + url(r'^event/(?P\d+)/version/(?P\d+)/(?P\d+)$', + permission_required_with_403('RIGS.view_event')(rigboard.EventRevision.as_view()), + name='event_version'), # Finance url(r'^invoice/$',