Commit 2314aa00 by benjaoming

Merge pull request #189 from yedpodtrzitko/master

_change revision_ as a class-based view
parents 0cb2ca2c 05a5f536
...@@ -28,7 +28,7 @@ class WikiURLPatterns(object): ...@@ -28,7 +28,7 @@ class WikiURLPatterns(object):
article_settings_view_class = article.Settings article_settings_view_class = article.Settings
article_source_view_class = article.Source article_source_view_class = article.Source
article_plugin_view_class = article.Plugin article_plugin_view_class = article.Plugin
revision_change_view = 'wiki.views.article.change_revision' revision_change_view = article.ChangeRevisionView
revision_merge_view = 'wiki.views.article.merge' revision_merge_view = 'wiki.views.article.merge'
search_view_class = settings.SEARCH_VIEW search_view_class = settings.SEARCH_VIEW
...@@ -71,7 +71,7 @@ class WikiURLPatterns(object): ...@@ -71,7 +71,7 @@ class WikiURLPatterns(object):
def get_revision_urls(self): def get_revision_urls(self):
urlpatterns = patterns('', urlpatterns = patterns('',
# This one doesn't work because it don't know where to redirect after... # This one doesn't work because it don't know where to redirect after...
url('^_revision/change/(?P<article_id>\d+)/(?P<revision_id>\d+)/$', self.revision_change_view, name='change_revision'), url('^_revision/change/(?P<article_id>\d+)/(?P<revision_id>\d+)/$', self.revision_change_view.as_view(), name='change_revision'),
url('^_revision/preview/(?P<article_id>\d+)/$', self.article_preview_view_class.as_view(), name='preview_revision'), url('^_revision/preview/(?P<article_id>\d+)/$', self.article_preview_view_class.as_view(), name='preview_revision'),
url('^_revision/merge/(?P<article_id>\d+)/(?P<revision_id>\d+)/preview/$', self.revision_merge_view, name='merge_revision_preview', kwargs={'preview': True}), url('^_revision/merge/(?P<article_id>\d+)/(?P<revision_id>\d+)/preview/$', self.revision_merge_view, name='merge_revision_preview', kwargs={'preview': True}),
) )
...@@ -88,7 +88,7 @@ class WikiURLPatterns(object): ...@@ -88,7 +88,7 @@ class WikiURLPatterns(object):
url('^(?P<article_id>\d+)/history/$', self.article_history_view_class.as_view(), name='history'), url('^(?P<article_id>\d+)/history/$', self.article_history_view_class.as_view(), name='history'),
url('^(?P<article_id>\d+)/settings/$', self.article_settings_view_class.as_view(), name='settings'), url('^(?P<article_id>\d+)/settings/$', self.article_settings_view_class.as_view(), name='settings'),
url('^(?P<article_id>\d+)/source/$', self.article_source_view_class.as_view(), name='source'), url('^(?P<article_id>\d+)/source/$', self.article_source_view_class.as_view(), name='source'),
url('^(?P<article_id>\d+)/revision/change/(?P<revision_id>\d+)/$', self.revision_change_view, name='change_revision'), url('^(?P<article_id>\d+)/revision/change/(?P<revision_id>\d+)/$', self.revision_change_view.as_view(), name='change_revision'),
url('^(?P<article_id>\d+)/revision/merge/(?P<revision_id>\d+)/$', self.revision_merge_view, name='merge_revision'), url('^(?P<article_id>\d+)/revision/merge/(?P<revision_id>\d+)/$', self.revision_merge_view, name='merge_revision'),
url('^(?P<article_id>\d+)/plugin/(?P<slug>\w+)/$', self.article_plugin_view_class.as_view(), name='plugin'), url('^(?P<article_id>\d+)/plugin/(?P<slug>\w+)/$', self.article_plugin_view_class.as_view(), name='plugin'),
) )
...@@ -106,7 +106,7 @@ class WikiURLPatterns(object): ...@@ -106,7 +106,7 @@ class WikiURLPatterns(object):
url('^(?P<path>.+/|)_dir/$', self.article_dir_view_class.as_view(), name='dir'), url('^(?P<path>.+/|)_dir/$', self.article_dir_view_class.as_view(), name='dir'),
url('^(?P<path>.+/|)_settings/$', self.article_settings_view_class.as_view(), name='settings'), url('^(?P<path>.+/|)_settings/$', self.article_settings_view_class.as_view(), name='settings'),
url('^(?P<path>.+/|)_source/$', self.article_source_view_class.as_view(), name='source'), url('^(?P<path>.+/|)_source/$', self.article_source_view_class.as_view(), name='source'),
url('^(?P<path>.+/|)_revision/change/(?P<revision_id>\d+)/$', self.revision_change_view, name='change_revision'), url('^(?P<path>.+/|)_revision/change/(?P<revision_id>\d+)/$', self.revision_change_view.as_view(), name='change_revision'),
url('^(?P<path>.+/|)_revision/merge/(?P<revision_id>\d+)/$', self.revision_merge_view, name='merge_revision'), url('^(?P<path>.+/|)_revision/merge/(?P<revision_id>\d+)/$', self.revision_merge_view, name='merge_revision'),
url('^(?P<path>.+/|)_plugin/(?P<slug>\w+)/$', self.article_plugin_view_class.as_view(), name='plugin'), url('^(?P<path>.+/|)_plugin/(?P<slug>\w+)/$', self.article_plugin_view_class.as_view(), name='plugin'),
# This should always go last! # This should always go last!
......
...@@ -8,7 +8,7 @@ from django.shortcuts import render_to_response, redirect, get_object_or_404 ...@@ -8,7 +8,7 @@ from django.shortcuts import render_to_response, redirect, get_object_or_404
from django.template.context import RequestContext from django.template.context import RequestContext
from django.utils.decorators import method_decorator from django.utils.decorators import method_decorator
from django.utils.translation import ugettext as _ from django.utils.translation import ugettext as _
from django.views.generic.base import TemplateView, View from django.views.generic.base import TemplateView, View, RedirectView
from django.views.generic.edit import FormView from django.views.generic.edit import FormView
from django.views.generic.list import ListView from django.views.generic.list import ListView
...@@ -576,18 +576,30 @@ class Settings(ArticleMixin, TemplateView): ...@@ -576,18 +576,30 @@ class Settings(ArticleMixin, TemplateView):
return super(Settings, self).get_context_data(**kwargs) return super(Settings, self).get_context_data(**kwargs)
# TODO: Throw in a class-based view class ChangeRevisionView(RedirectView):
@get_article(can_write=True, not_locked=True)
def change_revision(request, article, revision_id=None, urlpath=None): @method_decorator(get_article(can_write=True, not_locked=True))
revision = get_object_or_404(models.ArticleRevision, article=article, id=revision_id) def dispatch(self, request, article, *args, **kwargs):
article.current_revision = revision self.article = article
article.save() self.urlpath = kwargs.pop('kwargs', False)
messages.success(request, _(u"The article %(title)s is now set to display revision #%(revision_number)d") % {'title':revision.title, 'revision_number': revision.revision_number,}) self.change_revision()
if urlpath: return super(ChangeRevisionView, self).dispatch(request, *args, **kwargs)
return redirect("wiki:history", path=urlpath.path)
else: def get_redirect_url(self, **kwargs):
return redirect('wiki:history', article_id=article.id) if self.urlpath:
return reverse("wiki:history", kwargs={'path':self.urlpath.path})
else:
return reverse('wiki:history', kwargs={'article_id':self.article.id})
def change_revision(self):
revision = get_object_or_404(models.ArticleRevision, article=self.article, id=self.kwargs['revision_id'])
self.article.current_revision = revision
self.article.save()
messages.success(self.request, _(u"The article %(title)s is now set to display revision #%(revision_number)d") % {
'title': revision.title,
'revision_number': revision.revision_number,
})
class Preview(ArticleMixin, TemplateView): class Preview(ArticleMixin, TemplateView):
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment