All pastes #170764 Raw Edit

Anonymous

public text v1 · immutable
·published 2006-09-14 19:54 UTC
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