Esempio n. 1
0
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'))
Esempio n. 2
0
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"))
Esempio n. 3
0
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'))
Esempio n. 4
0
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),
    )
Esempio n. 5
0
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),
    )
Esempio n. 6
0
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))
Esempio n. 7
0
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))
Esempio n. 8
0
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'))