diff --git a/waliki/git/__init__.py b/waliki/git/__init__.py index 3695e2b..83c81cc 100644 --- a/waliki/git/__init__.py +++ b/waliki/git/__init__.py @@ -1,7 +1,6 @@ import os import re import json -from io import StringIO from django.contrib.auth.models import User from django.utils.translation import ugettext_lazy as _ from django.utils import six @@ -101,14 +100,12 @@ def version(self, page, version): try: out = str(git.show('-s', "--pretty=format:%aN%n%aD%n%B%n%h%e", version)) - buf = StringIO() - buf.write(out) - buf.seek(0) - author = str(buf.readline()) - date = str(buf.readline()) - message = str(buf.readline()) - buf.close() + lines = out.splitlines() + author = lines[0] + date = lines[1] + message = lines[2] + raw = str(git.show('%s:%s' % (version, page.path))) data = { @@ -117,7 +114,6 @@ def version(self, page, version): "message": message, "raw": raw, } - return data except: return '' diff --git a/waliki/git/views.py b/waliki/git/views.py index fadf719..87ae643 100644 --- a/waliki/git/views.py +++ b/waliki/git/views.py @@ -46,7 +46,7 @@ def version(request, slug, version, raw=False): page = get_object_or_404(Page, slug=slug) content = Git().version(page, version) - form = PageForm(instance=page, initial={'message': _('Restored version @%s') % version, 'raw': content}, + form = PageForm(instance=page, initial={'message': _('Restored version @%s') % version, 'raw': content['raw']}, is_hidden=True) if raw: diff --git a/waliki/rest/views.py b/waliki/rest/views.py index e0290f7..4cfd962 100644 --- a/waliki/rest/views.py +++ b/waliki/rest/views.py @@ -10,6 +10,8 @@ from rest_framework import generics, permissions, mixins, status from rest_framework.response import Response +import json + from .serializers import PageListRetrieveSerializer, PageCreateSerializer, PageEditSerializer, PageDeleteSerializer, PageRetrieveSerializer, PageMoveSerializer from .permissions import WalikiPermission_AddPage, WalikiPermission_ViewPage, WalikiPermission_ChangePage @@ -152,7 +154,7 @@ def get(self, request, *args, **kwargs): response = version(request, raw=True, *args, **kwargs) data = self.get_serializer(page, many=False).data - data['raw'] = response.content.decode("utf8") + data['raw'] = json.loads(response.content) data['version'] = kwargs['version'] return Response(data)