Beispiel #1
0
    def test_main_ticked_for_more_than_one_picture(self):
        page = baker.make(Page)
        pic_file = NamedTemporaryFile(suffix='.txt', dir='/tmp')
        pic_file1 = NamedTemporaryFile(suffix='.txt', dir='/tmp')

        form_data = {
            'pictures-TOTAL_FORMS': 2,
            'pictures-INITIAL_FORMS': 0,
            'pictures-0-image': pic_file.name,
            'pictures-0-main': True,
            'pictures-1-image': pic_file1.name,
            'pictures-1-main': True
        }

        form = PictureFormset(data=form_data, instance=page)
        self.assertFalse(form.is_valid())
        self.assertIn(
            {
                'main image':
                'More than one image is selected as the "main" '
                'image to be displayed in single image layouts.  '
                'Please select one only.'
            }, form.errors)
        os.unlink(pic_file.name)
        os.unlink(pic_file1.name)
Beispiel #2
0
    def test_main_ticked_for_more_than_one_picture(self):
        page = mommy.make(Page)
        pic_file = NamedTemporaryFile(suffix='.txt', dir='/tmp')
        pic_file1 = NamedTemporaryFile(suffix='.txt', dir='/tmp')

        form_data = {
            'pictures-TOTAL_FORMS': 2,
            'pictures-INITIAL_FORMS': 0,
            'pictures-0-image': pic_file.name,
            'pictures-0-main': True,
            'pictures-1-image': pic_file1.name,
            'pictures-1-main': True
            }

        form = PictureFormset(data=form_data, instance=page)
        self.assertFalse(form.is_valid())
        self.assertIn(
            {
                'main image': 'More than one image is selected as the "main" '
                              'image to be displayed in single image layouts.  '
                              'Please select one only.'
            },
            form.errors
        )
        os.unlink(pic_file.name)
        os.unlink(pic_file1.name)
Beispiel #3
0
    def test_form_valid(self):
        page = mommy.make(Page)
        pic_file = NamedTemporaryFile(suffix='.jpg', dir='/tmp')

        form_data = {
            'pictures-TOTAL_FORMS': 1,
            'pictures-INITIAL_FORMS': 0,
            'pictures-0-image': pic_file.name,
            }

        form = PictureFormset(data=form_data, instance=page)
        self.assertTrue(form.is_valid())
        os.unlink(pic_file.name)
Beispiel #4
0
    def test_form_valid(self):
        page = baker.make(Page)
        pic_file = NamedTemporaryFile(suffix='.jpg', dir='/tmp')

        form_data = {
            'pictures-TOTAL_FORMS': 1,
            'pictures-INITIAL_FORMS': 0,
            'pictures-0-image': pic_file.name,
        }

        form = PictureFormset(data=form_data, instance=page)
        self.assertTrue(form.is_valid())
        os.unlink(pic_file.name)
Beispiel #5
0
    def get_context_data(self, **kwargs):
        context = super(PageUpdateView, self).get_context_data(**kwargs)
        context['sidenav_selection'] = 'page_list'

        picture_formset = PictureFormset(instance=self.get_object())
        context['picture_formset'] = picture_formset
        return context
Beispiel #6
0
    def post(self, request, *args, **kwargs):
        form = PageForm(request.POST)

        if form.is_valid():
            page = form.save()
            picture_formset = PictureFormset(request.POST,
                                             request.FILES,
                                             instance=page)

            if form.is_valid() and picture_formset.is_valid():
                form.save()
                picture_formset.save()

                messages.success(
                    request,
                    mark_safe("Page {} has been created".format(page.name)))
                ActivityLog.objects.create(
                    log="Page {} (id {}) has been created by admin "
                    "user {}".format(page.name, page.id,
                                     request.user.username))
            else:
                if not picture_formset.is_valid():
                    for error in picture_formset.errors:
                        for k, v in error.items():
                            messages.error(
                                request,
                                mark_safe("{}: {}".format(k.title(), v)))

                context = {
                    'form': form,
                    'picture_formset': picture_formset,
                    'sidenav_selection': 'page_list'
                }

                return TemplateResponse(request, self.template_name, context)
        else:
            messages.error(request, "Please correct the errors below")
            picture_formset = PictureFormset(request.POST, request.FILES)
            return TemplateResponse(
                request, self.template_name, {
                    'form': form,
                    'picture_formset': picture_formset,
                    'sidenav_selection': 'add_page'
                })

        return HttpResponseRedirect(self.get_success_url())
Beispiel #7
0
    def post(self, request, *args, **kwargs):
        form = PageForm(request.POST)

        if form.is_valid():
            page = form.save()
            picture_formset = PictureFormset(
                request.POST, request.FILES, instance=page
            )

            if form.is_valid() and picture_formset.is_valid():
                form.save()
                picture_formset.save()

                messages.success(request, mark_safe(
                    "Page {} has been created".format(page.name)
                    )
                )
                ActivityLog.objects.create(
                    log="Page {} (id {}) has been created by admin "
                        "user {}".format(
                        page.name, page.id, request.user.username
                    )
                    )
            else:
                if not picture_formset.is_valid():
                    for error in picture_formset.errors:
                        for k, v in error.items():
                            messages.error(
                                request, mark_safe("{}: {}".format(k.title(), v))
                            )

                context = {
                    'form': form,
                    'picture_formset': picture_formset,
                    'sidenav_selection': 'page_list'
                }

                return TemplateResponse(request, self.template_name, context)
        else:
            messages.error(request, "Please correct the errors below")
            picture_formset = PictureFormset(request.POST, request.FILES)
            return TemplateResponse(
                    request, self.template_name,
                    {'form': form, 'picture_formset': picture_formset,
                     'sidenav_selection': 'add_page'}
                    )

        return HttpResponseRedirect(self.get_success_url())
Beispiel #8
0
    def post(self, request, *args, **kwargs):
        name = self.kwargs['name']
        page = Page.objects.get(name=name)
        form = PageForm(request.POST, instance=page)
        picture_formset = PictureFormset(request.POST,
                                         request.FILES,
                                         instance=page)

        if form.is_valid() and picture_formset.is_valid():

            if (form.has_changed() or picture_formset.has_changed()):

                change_messages = []

                if form.has_changed():
                    change_messages.append("{} has been updated".format(
                        ', '.join(form.changed_data)))

                page = form.save()

                for form in picture_formset.forms:
                    if form.is_valid():
                        picture = form.save(commit=False)
                        if 'DELETE' in form.changed_data:
                            name = picture.image.name
                            picture.delete()
                            change_messages.append(
                                'Picture {} deleted from "{}" page'.format(
                                    name.split('/')[-1], page.name))
                        elif form.has_changed():
                            action = 'edited' if picture.id else 'added'
                            picture.save()
                            change_messages.append(
                                'Picture {} has been {}'.format(
                                    picture.image.name.split('/')[-1], action))
                    else:
                        for error in form.errors:
                            messages.error(request, mark_safe(error))

                messages.success(
                    request,
                    mark_safe("<ul>{}</ul>".format(''.join([
                        '<li>{}</li>'.format(msg) for msg in change_messages
                    ]))))
                ActivityLog.objects.create(
                    log="Page {} (id {}) has been updated by admin user "
                    "{}: {}".format(page.name, page.id, request.user.username,
                                    ', '.join(change_messages)))

            else:
                messages.info(request, "No changes made")
        else:
            messages.error(request, "Please correct the errors below")
            if not picture_formset.is_valid():
                for error in picture_formset.errors:
                    for k, v in error.items():
                        messages.error(
                            request, mark_safe("{}: {}".format(k.title(), v)))
            context = {
                'form': form,
                'picture_formset': picture_formset,
                'sidenav_selection': 'page_list'
            }

            return TemplateResponse(request, self.template_name, context)

        return HttpResponseRedirect(self.get_success_url(name=page.name))
Beispiel #9
0
    def post(self, request, *args, **kwargs):
        name = self.kwargs['name']
        page = Page.objects.get(name=name)
        form = PageForm(request.POST, instance=page)
        picture_formset = PictureFormset(request.POST, request.FILES, instance=page)

        if form.is_valid() and picture_formset.is_valid():

            if (form.has_changed() or picture_formset.has_changed()):

                change_messages = []

                if form.has_changed():
                    change_messages.append("{} has been updated".format(
                        ', '.join(form.changed_data)
                        )
                    )

                page = form.save()

                for form in picture_formset.forms:
                    if form.is_valid():
                        picture = form.save(commit=False)
                        if 'DELETE' in form.changed_data:
                            name = picture.image.name
                            picture.delete()
                            change_messages.append(
                                'Picture {} deleted from "{}" page'.format(
                                    name.split('/')[-1],
                                    page.name
                                )
                            )
                        elif form.has_changed():
                            action = 'edited' if picture.id else 'added'
                            picture.save()
                            change_messages.append(
                                'Picture {} has been {}'.format(
                                    picture.image.name.split('/')[-1],
                                    action
                                )
                            )
                    else:
                        for error in form.errors:
                            messages.error(request, mark_safe(error))

                messages.success(
                    request,
                    mark_safe(
                         "<ul>{}</ul>".format(
                             ''.join(['<li>{}</li>'.format(msg)
                              for msg in change_messages])
                         )
                    )
                )
                ActivityLog.objects.create(
                    log="Page {} (id {}) has been updated by admin user "
                        "{}: {}".format(
                        page.name, page.id, request.user.username,
                        ', '.join(change_messages)
                    )
                )

            else:
                messages.info(request, "No changes made")
        else:
            messages.error(request, "Please correct the errors below")
            if not picture_formset.is_valid():
                for error in picture_formset.errors:
                    for k, v in error.items():
                        messages.error(
                            request, mark_safe("{}: {}".format(k.title(), v))
                        )
            context = {
                'form': form,
                'picture_formset': picture_formset,
                'sidenav_selection': 'page_list'
            }

            return TemplateResponse(request, self.template_name, context)

        return HttpResponseRedirect(self.get_success_url(name=page.name))