def preview(request, id=None, form_class=PageForm, meta_form_class=MetaForm, category_form_class=CategoryForm, template="pages/preview.html"): content_type = get_object_or_404(ContentType, app_label='pages', model='page') page = None if id: page = get_object_or_404(Page, pk=id) if request.method == "POST": if page: form = form_class(request.POST, request.FILES, instance=page, user=request.user) else: form = form_class(request.POST, request.FILES, user=request.user) metaform = meta_form_class(request.POST, prefix='meta') categoryform = category_form_class(content_type, request.POST, prefix='category') if form.is_valid(): page = form.save(commit=False) edit_button = False if request.POST['preview_for'] == 'edit': edit_button = True f = form.cleaned_data['header_image'] if f: header = HeaderImage() header.content_type = ContentType.objects.get_for_model(Page) header.object_id = page.id header.creator = request.user header.creator_username = request.user.username header.owner = request.user header.owner_username = request.user.username filename = "%s-%s" % (page.slug, f.name) f.file.seek(0) header.file.save(filename, f, save=False) page.header_image = header return render_to_response(template, { 'page': page, 'form': form, 'metaform': metaform, 'categoryform': categoryform, 'edit_button': edit_button }, context_instance=RequestContext(request)) return HttpResponseRedirect(reverse('page.search'))
def add(request, form_class=PageForm, meta_form_class=MetaForm, category_form_class=CategoryForm, template_name="pages/add.html"): if not has_perm(request.user, 'pages.add_page'): raise Http403 content_type = get_object_or_404(ContentType, app_label='pages', model='page') if request.method == "POST": form = form_class(request.POST, request.FILES, user=request.user) metaform = meta_form_class(request.POST, prefix='meta') categoryform = category_form_class(content_type, request.POST, prefix='category') if form.is_valid() and metaform.is_valid() and categoryform.is_valid(): page = form.save() # handle header image f = form.cleaned_data['header_image'] if f: header = HeaderImage() header.content_type = ContentType.objects.get_for_model(Page) header.object_id = page.id header.creator = request.user header.creator_username = request.user.username header.owner = request.user header.owner_username = request.user.username filename = "%s-%s" % (page.slug, f.name) f.file.seek(0) header.file.save(filename, f) page.header_image = header #save meta meta = metaform.save() page.meta = meta ## update the category and subcategory page.update_category_subcategory( categoryform.cleaned_data['category'], categoryform.cleaned_data['sub_category'] ) # add all permissions page = update_perms_and_save(request, form, page) messages.add_message(request, messages.SUCCESS, _('Successfully added %(p)s' % {'p': unicode(page)})) checklist_update('add-page') if not request.user.profile.is_superuser: # send notification to administrators recipients = get_notice_recipients('module', 'pages', 'pagerecipients') if recipients: if notification: extra_context = { 'object': page, 'request': request, } notification.send_emails(recipients, 'page_added', extra_context) if page.status and page.status_detail == 'active': return HttpResponseRedirect(reverse('page', args=[page.slug])) return HttpResponseRedirect(reverse('page.search')) else: initial_category_form_data = { 'app_label': 'pages', 'model': 'page', 'pk': 0, } form = form_class(user=request.user) metaform = meta_form_class(prefix='meta') categoryform = category_form_class(content_type, initial=initial_category_form_data, prefix='category') return render_to_response(template_name, { 'form': form, 'metaform': metaform, 'categoryform': categoryform, }, context_instance=RequestContext(request))
def edit(request, id, form_class=PageForm, meta_form_class=MetaForm, category_form_class=CategoryForm, template_name="pages/edit.html"): page = get_object_or_404(Page, pk=id) if not has_perm(request.user, 'pages.change_page', page): raise Http403 content_type = get_object_or_404(ContentType, app_label='pages', model='page') if request.method == "POST": form = form_class(request.POST, request.FILES, instance=page, user=request.user) metaform = meta_form_class(request.POST, instance=page.meta, prefix='meta') categoryform = category_form_class(content_type, request.POST, prefix='category') if form.is_valid() and metaform.is_valid() and categoryform.is_valid(): page = form.save() # handle header image f = form.cleaned_data['header_image'] if f: header = HeaderImage() header.content_type = ContentType.objects.get_for_model(Page) header.object_id = page.id header.creator = request.user header.creator_username = request.user.username header.owner = request.user header.owner_username = request.user.username filename = "%s-%s" % (page.slug, f.name) f.file.seek(0) header.file.save(filename, f) page.header_image = header #save meta meta = metaform.save() page.meta = meta ## update the category and subcategory page.update_category_subcategory( categoryform.cleaned_data['category'], categoryform.cleaned_data['sub_category'] ) # update all permissions page = update_perms_and_save(request, form, page) if page.pk == 1: # the about page has id 1 in the npo defaults fixture checklist_update('update-about') messages.add_message(request, messages.SUCCESS, _('Successfully updated %(p)s' % {'p': unicode(page)})) if not request.user.profile.is_superuser: # send notification to administrators recipients = get_notice_recipients('module', 'pages', 'pagerecipients') if recipients: if notification: extra_context = { 'object': page, 'request': request, } notification.send_emails(recipients, 'page_edited', extra_context) return HttpResponseRedirect(reverse('page', args=[page.slug])) else: form = form_class(instance=page, user=request.user) metaform = meta_form_class(instance=page.meta, prefix='meta') #setup categories category = Category.objects.get_for_object(page, 'category') sub_category = Category.objects.get_for_object(page, 'sub_category') initial_category_form_data = { 'app_label': 'pages', 'model': 'page', 'pk': page.pk, 'category': getattr(category, 'name', '0'), 'sub_category': getattr(sub_category, 'name', '0') } categoryform = category_form_class(content_type, initial=initial_category_form_data, prefix='category') return render_to_response(template_name, { 'page': page, 'form': form, 'metaform': metaform, 'categoryform': categoryform, }, context_instance=RequestContext(request))
def preview(request, id=None, form_class=PageForm, meta_form_class=MetaForm, category_form_class=CategoryForm, template="pages/preview.html"): content_type = get_object_or_404(ContentType, app_label='pages', model='page') page = None if id: page = get_object_or_404(Page, pk=id) if request.method == "POST": if page: form = form_class(request.POST, request.FILES, instance=page, user=request.user) else: form = form_class(request.POST, request.FILES, user=request.user) metaform = meta_form_class(request.POST, prefix='meta') categoryform = category_form_class(content_type, request.POST, prefix='category') if form.is_valid(): page = form.save(commit=False) edit_button = False if request.POST.get('preview_for', '') == 'edit': edit_button = True f = form.cleaned_data['header_image'] if f: header = HeaderImage() header.content_type = ContentType.objects.get_for_model(Page) header.object_id = page.id header.creator = request.user header.creator_username = request.user.username header.owner = request.user header.owner_username = request.user.username filename = "%s-%s" % (page.slug, f.name) f.file.seek(0) header.file.save(filename, f, save=False) page.header_image = header if 'preview_for' not in request.POST: page.save() if metaform.is_valid(): #save meta meta = metaform.save() page.meta = meta if categoryform.is_valid(): ## update the category and subcategory page.update_category_subcategory( categoryform.cleaned_data['category'], categoryform.cleaned_data['sub_category'] ) # update all permissions page = update_perms_and_save(request, form, page) messages.add_message(request, messages.SUCCESS, _('Successfully updated %(p)s' % {'p': str(page)})) if not request.user.profile.is_superuser: # send notification to administrators recipients = get_notice_recipients('module', 'pages', 'pagerecipients') if recipients: if notification: extra_context = { 'object': page, 'request': request, } notification.send_emails(recipients, 'page_edited', extra_context) return HttpResponseRedirect(reverse('page', args=[page.slug])) return render_to_resp(request=request, template_name=template, context={'page': page, 'form': form, 'metaform': metaform, 'categoryform': categoryform, 'edit_button': edit_button}) return HttpResponseRedirect(reverse('page.search'))