changeset 347:ece930a816b1

Add ability to look at whole change diffs from the site history page.
author Ludovic Chabant <ludovic@chabant.com>
date Sat, 19 Sep 2015 10:14:51 -0700
parents 59bbf4358a76
children 5ff3b1639154
files wikked/templates/diff-rev.html wikked/templates/special-changes.html wikked/views/history.py wikked/webimpl/history.py
diffstat 4 files changed, 40 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wikked/templates/diff-rev.html	Sat Sep 19 10:14:51 2015 -0700
@@ -0,0 +1,15 @@
+{% extends 'index.html' %}
+{% block content %}
+<article>
+    <header>
+        <h1>Change Overview</h1>
+        <div class="decorator">
+            Diff change <span class="rev_id">{{disp_rev}}</span>
+        </div>
+    </header>
+    <section>
+        <pre><code>{{diff|safe}}</code></pre>
+    </section>
+</article>
+{% endblock %}
+
--- a/wikked/templates/special-changes.html	Sat Sep 19 10:12:18 2015 -0700
+++ b/wikked/templates/special-changes.html	Sat Sep 19 10:14:51 2015 -0700
@@ -17,7 +17,10 @@
                 <tbody>
                     {%for e in history%}
                     <tr class='wiki-history-entry'>
-                        <td><code>{{e.rev_name}}</code></td>
+                        <td>
+                            <p><code>{{e.rev_name}}</code></p>
+                            <p><a href="/diff_rev/{{e.rev_id}}">Show Diff.</a></p>
+                        </td>
                         <td>
                             <dl class="pure-dl-horizontal">
                                 <dt>Date</dt>
--- a/wikked/views/history.py	Sat Sep 19 10:12:18 2015 -0700
+++ b/wikked/views/history.py	Sat Sep 19 10:14:51 2015 -0700
@@ -6,7 +6,7 @@
 from wikked.webimpl import url_from_viewarg
 from wikked.webimpl.history import (
         get_site_history, get_page_history,
-        read_page_rev, diff_page_revs)
+        read_page_rev, diff_revs, diff_page_revs)
 
 
 @app.route('/special/history')
@@ -87,3 +87,14 @@
                 urllib.parse.urlencode(raw_url_args)))
     return render_template('diff-page.html', **data)
 
+
+@app.route('/diff_rev/<rev>')
+def diff_revision(rev):
+    wiki = get_wiki()
+    user = current_user.get_id()
+    data = diff_revs(wiki, user, rev)
+    add_auth_data(data)
+    add_navigation_data(
+            '', data)
+    return render_template('diff-rev.html', **data)
+
--- a/wikked/webimpl/history.py	Sat Sep 19 10:12:18 2015 -0700
+++ b/wikked/webimpl/history.py	Sat Sep 19 10:14:51 2015 -0700
@@ -91,6 +91,15 @@
     return result
 
 
+def diff_revs(wiki, user, rev, raw=False):
+    diff = wiki.scm.diff(path=None, rev1=rev, rev2=None)
+    if not raw:
+        lexer = get_lexer_by_name('diff')
+        formatter = get_formatter_by_name('html')
+        diff = highlight(diff, lexer, formatter)
+    return {'diff': diff, 'disp_rev': rev}
+
+
 def revert_page(wiki, user, url, rev, message=None):
     message = message or 'Reverted %s to revision %s' % (url, rev)
     page_fields = {