Commit 0cb2ca2c by benjaoming

Merge pull request #188 from yedpodtrzitko/master

create root as a class-based view
parents 9528bf71 10a44575
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
<h2 class="page-header">{% trans "Root article" %}</h2> <h2 class="page-header">{% trans "Root article" %}</h2>
<form method="POST" class="form-horizontal"> <form method="POST" class="form-horizontal">
{% wiki_form create_form %} {% wiki_form form %}
<div class="form-group form-actions"> <div class="form-group form-actions">
<div class="col-lg-2"></div> <div class="col-lg-2"></div>
<div class="col-lg-10"> <div class="col-lg-10">
......
...@@ -6,6 +6,7 @@ from wiki.core.plugins import registry ...@@ -6,6 +6,7 @@ from wiki.core.plugins import registry
from wiki.views import article, accounts from wiki.views import article, accounts
from wiki.core.utils import get_class_from_str from wiki.core.utils import get_class_from_str
class WikiURLPatterns(object): class WikiURLPatterns(object):
''' '''
configurator for wiki urls. configurator for wiki urls.
...@@ -30,7 +31,6 @@ class WikiURLPatterns(object): ...@@ -30,7 +31,6 @@ class WikiURLPatterns(object):
revision_change_view = 'wiki.views.article.change_revision' revision_change_view = 'wiki.views.article.change_revision'
revision_merge_view = 'wiki.views.article.merge' revision_merge_view = 'wiki.views.article.merge'
create_root = 'wiki.views.article.root_create'
search_view_class = settings.SEARCH_VIEW search_view_class = settings.SEARCH_VIEW
article_diff_view = 'wiki.views.article.diff' article_diff_view = 'wiki.views.article.diff'
...@@ -54,7 +54,7 @@ class WikiURLPatterns(object): ...@@ -54,7 +54,7 @@ class WikiURLPatterns(object):
def get_root_urls(self): def get_root_urls(self):
urlpatterns = patterns('', urlpatterns = patterns('',
url('^$', self.article_view_class.as_view(), name='root', kwargs={'path': ''}), url('^$', self.article_view_class.as_view(), name='root', kwargs={'path': ''}),
url('^create-root/$', self.create_root, name='root_create'), url('^create-root/$', article.CreateRootView.as_view(), name='root_create'),
url('^_search/$', get_class_from_str(self.search_view_class).as_view(), name='search'), url('^_search/$', get_class_from_str(self.search_view_class).as_view(), name='search'),
url('^_revision/diff/(?P<revision_id>\d+)/$', self.article_diff_view, name='diff'), url('^_revision/diff/(?P<revision_id>\d+)/$', self.article_diff_view, name='diff'),
) )
......
...@@ -702,31 +702,37 @@ def merge(request, article, revision_id, urlpath=None, template_file="wiki/previ ...@@ -702,31 +702,37 @@ def merge(request, article, revision_id, urlpath=None, template_file="wiki/previ
'content': content}) 'content': content})
return render_to_response(template_file, context_instance=c) return render_to_response(template_file, context_instance=c)
# TODO: Should be a class-based view
def root_create(request): class CreateRootView(FormView):
form_class = forms.CreateRootForm
template_name = 'wiki/create_root.html'
def dispatch(self, request, *args, **kwargs):
if not request.user.is_superuser:
return redirect(settings.LOGIN_URL + "?next=" + reverse("wiki:root_create"))
try: try:
root = models.URLPath.root() root = models.URLPath.root()
if not root.article:
# TODO: This is too dangerous... let's say there is no root.article and we end up here,
# then it might cascade to delete a lot of things on an existing installation.... / benjaoming
root.delete()
raise NoRootURL
return redirect('wiki:get', path=root.path)
except NoRootURL: except NoRootURL:
pass pass
if not request.user.is_superuser:
return redirect(settings.LOGIN_URL + "?next=" + reverse("wiki:root_create"))
if request.method == 'POST':
create_form = forms.CreateRootForm(request.POST)
if create_form.is_valid():
models.URLPath.create_root(title=create_form.cleaned_data["title"],
content=create_form.cleaned_data["content"],
request=request)
return redirect("wiki:root")
else: else:
create_form = forms.CreateRootForm() if root.article:
return redirect('wiki:get', path=root.path)
# TODO: This is too dangerous... let's say there is no root.article and we end up here,
# then it might cascade to delete a lot of things on an existing installation.... / benjaoming
root.delete()
return super(CreateRootView, self).dispatch(request, *args, **kwargs)
c = RequestContext(request, {'create_form': create_form, def form_valid(self, form):
'editor': editors.getEditor(),}) models.URLPath.create_root(
return render_to_response("wiki/create_root.html", context_instance=c) title=form.cleaned_data["title"],
content=form.cleaned_data["content"],
request=self.request
)
return redirect("wiki:root")
def get_context_data(self, **kwargs):
data = super(CreateRootView, self).get_context_data(**kwargs)
data['editor'] = editors.getEditor()
return data
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