rendered paste body@login_required
def edit_page(request, slug='index', is_template=False):
if is_template:
is_template = True
if request.user.has_perm('wiki.edit_page'):
page = None
try:
page_id = Page.objects.get(slug__exact=slug, lang=request.LANGUAGE_CODE, is_template=is_template)
if page_id.is_protected and not request.user.has_perm('wiki.edit_protected_page'):
context = template.RequestContext(request)
return render_to_response('errors/no-access.html', context_instance=context) # can't view page
manipulator = Page.ChangeManipulator(page_id.id)
page_data = manipulator.flatten_data()
page = manipulator.original_object
if request.POST:
page_data = request.POST.copy()
page_data["slug"] = page.slug
page_data["modification_user"] = str(request.user)
page_data["modification_ip"] = request.META['REMOTE_ADDR']
page_data["lang"] = request.LANGUAGE_CODE
page_data["is_template"] = is_template
errors = manipulator.get_validation_errors(page_data)
if not errors:
#set edit as current content
manipulator.do_html2python(page_data)
new_place = manipulator.save(page_data)
if not is_template:
return HttpResponseRedirect("/wiki/%s/" % page_data['slug'])
else:
return HttpResponseRedirect("/wiki/template/%s/" % page_data['slug'])
else:
errors = {}
#page_data = page.__dict__
page_data['changes'] = ''
form = forms.FormWrapper(manipulator, page_data, errors)
except Page.DoesNotExist:
manipulator = Page.AddManipulator()
page = {'slug': slug}
if request.POST:
page_data = request.POST.copy()
page_data["slug"] = slug
page_data["modification_user"] = str(request.user)
page_data["modification_ip"] = request.META['REMOTE_ADDR']
page_data["lang"] = request.LANGUAGE_CODE
page_data["is_template"] = is_template
errors = manipulator.get_validation_errors(page_data)
if not errors:
manipulator.do_html2python(page_data)
new_place = manipulator.save(page_data)
if not is_template:
return HttpResponseRedirect("/wiki/%s/" % page_data['slug'])
else:
return HttpResponseRedirect("/wiki/template/%s/" % page_data['slug'])
else:
from sre import sub
page_data = {'title': sub("-", " ", slug)}
errors = {}
form = forms.FormWrapper(manipulator, page_data, errors)
context = template.RequestContext(request)
extra_context = {'form': form, 'page': page, 'is_template': is_template}
context.update(extra_context)
return render_to_response('wiki/edit.html', context_instance=context)
else:
context = template.RequestContext(request)
return render_to_response('errors/no-access.html', context_instance=context) # can't view page