kb: add history system (#7915)
This commit is contained in:
parent
7b33698eea
commit
363db32c5a
|
@ -19,8 +19,10 @@ from django.db import models
|
|||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from ckeditor.fields import RichTextField
|
||||
import reversion
|
||||
|
||||
|
||||
@reversion.register
|
||||
class Page(models.Model):
|
||||
title = models.CharField(_('Title'), max_length=200)
|
||||
slug = models.SlugField(_('Slug'))
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
{% block appbar %}
|
||||
<h2>{% trans 'Knowledge Base' %} - {{ object.title }}</h2>
|
||||
<a rel="popup" href="{% url 'kb-page-delete' slug=object.slug %}">{% trans 'Delete' %}</a>
|
||||
<a href="{% url 'kb-page-history' slug=object.slug %}">{% trans 'History' %}</a>
|
||||
<a href="{% url 'kb-page-edit' slug=object.slug %}">{% trans 'Edit' %}</a>
|
||||
{% endblock %}
|
||||
|
||||
|
|
|
@ -18,7 +18,7 @@ import json
|
|||
|
||||
from django import template
|
||||
from django.core.urlresolvers import reverse_lazy
|
||||
from django.http import HttpResponse
|
||||
from django.http import HttpResponse, HttpResponseRedirect
|
||||
from django.template import RequestContext
|
||||
from django.views.decorators.csrf import csrf_exempt
|
||||
from django.views.generic import (DetailView, CreateView, UpdateView,
|
||||
|
@ -27,6 +27,8 @@ from django.views.generic import (DetailView, CreateView, UpdateView,
|
|||
from haystack.forms import SearchForm
|
||||
from haystack.generic_views import SearchView
|
||||
from haystack.query import SearchQuerySet
|
||||
from reversion.models import Version
|
||||
from reversion.revisions import default_revision_manager
|
||||
|
||||
from .models import Page
|
||||
|
||||
|
@ -81,6 +83,36 @@ class PageSearchView(SearchView):
|
|||
page_search = PageSearchView.as_view()
|
||||
|
||||
|
||||
class PageHistoryView(DetailView):
|
||||
model = Page
|
||||
template_name = 'kb/page_history.html'
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super(PageHistoryView, self).get_context_data(**kwargs)
|
||||
context['versions_list'] = default_revision_manager.get_for_object(self.get_object())
|
||||
return context
|
||||
|
||||
page_history = PageHistoryView.as_view()
|
||||
|
||||
|
||||
class PageVersionView(DetailView):
|
||||
model = Page
|
||||
template_name = 'kb/page_version.html'
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super(PageVersionView, self).get_context_data(**kwargs)
|
||||
context['object'] = Version.objects.get(id=self.kwargs.get('version')).object_version.object
|
||||
self.kwargs.get('version')
|
||||
return context
|
||||
|
||||
def post(self, request, *args, **kwargs):
|
||||
version = Version.objects.get(id=self.kwargs.get('version'))
|
||||
version.revision.revert()
|
||||
return HttpResponseRedirect(self.get_object().get_absolute_url())
|
||||
|
||||
page_version = PageVersionView.as_view()
|
||||
|
||||
|
||||
class KbZone(TemplateView):
|
||||
template_name = 'kb/zone.html'
|
||||
|
||||
|
|
|
@ -41,6 +41,7 @@ INSTALLED_APPS = (
|
|||
'django_select2',
|
||||
'ckeditor',
|
||||
'haystack',
|
||||
'reversion',
|
||||
'welco.sources.mail',
|
||||
'welco.qualif',
|
||||
'welco.kb',
|
||||
|
@ -56,6 +57,7 @@ MIDDLEWARE_CLASSES = (
|
|||
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
|
||||
'django.contrib.messages.middleware.MessageMiddleware',
|
||||
'django.middleware.clickjacking.XFrameOptionsMiddleware',
|
||||
'reversion.middleware.RevisionMiddleware',
|
||||
)
|
||||
|
||||
ROOT_URLCONF = 'welco.urls'
|
||||
|
|
|
@ -34,6 +34,8 @@ urlpatterns = patterns('',
|
|||
url(r'^ajax/kb/(?P<slug>[\w-]+)/$', 'welco.kb.views.page_detail_fragment', name='kb-page-fragment'),
|
||||
url(r'^kb/(?P<slug>[\w-]+)/edit$', 'welco.kb.views.page_edit', name='kb-page-edit'),
|
||||
url(r'^kb/(?P<slug>[\w-]+)/delete$', 'welco.kb.views.page_delete', name='kb-page-delete'),
|
||||
url(r'^kb/(?P<slug>[\w-]+)/history$', 'welco.kb.views.page_history', name='kb-page-history'),
|
||||
url(r'^kb/(?P<slug>[\w-]+)/version/(?P<version>\w+)/$', 'welco.kb.views.page_version', name='kb-page-version'),
|
||||
|
||||
url(r'^ajax/contacts$', 'welco.contacts.views.zone', name='contacts-zone'),
|
||||
url(r'^contacts/search/json/$', 'welco.contacts.views.search_json', name='contacts-search-json'),
|
||||
|
|
Loading…
Reference in New Issue