def test_post_edit_event_clear_media(self):
        with tempfile.NamedTemporaryFile(dir="/tmp", prefix="toolkit-test-", suffix=".jpg") as temp_jpg:
            # Add MediaItem to event 1:
            media_item = MediaItem(
                media_file=temp_jpg.name, mimetype="image/jpeg", caption="Image Caption!", credit="Image Credit!"
            )
            media_item.save()
            event = Event.objects.get(id=2)
            event.media.add(media_item)
            event.save()

            url = reverse("edit-event-details", kwargs={"event_id": 2})

            response = self.client.post(
                url,
                data={
                    "name": u"New \u20acvent Name",
                    "duration": u"00:10:00",
                    "media_file": temp_jpg.name,
                    "media_file-clear": "on",
                },
            )
            self.assert_return_to_index(response)

            event = Event.objects.get(id=2)
            # Media item should be gone:
            self.assertEqual(event.media.count(), 0)
Beispiel #2
0
    def get(self, request, event_id):
        event = get_object_or_404(Event, pk=event_id)
        # For now only support a single media item:
        media_item = event.get_main_mediaitem() or MediaItem()

        # If the event has "legacy" (ie. non-html) copy then convert it to
        # HTML;
        if event.legacy_copy:
            event.copy = event.copy_html

        form = diary_forms.EventForm(instance=event)
        media_form = diary_forms.MediaItemForm(instance=media_item)

        context = {
            'event':
            event,
            'form':
            form,
            'media_form':
            media_form,
            'programme_copy_summary_max_chars':
            settings.PROGRAMME_COPY_SUMMARY_MAX_CHARS,
        }

        return render(request, 'form_event.html', context)
    def test_get_edit_event_form_media_item(self):
        with tempfile.NamedTemporaryFile(dir="/tmp", prefix="toolkit-test-", suffix=".jpg") as temp_jpg:
            # Add MediaItem to event 1:
            media_item = MediaItem(
                media_file=temp_jpg.name, mimetype="image/jpeg", caption="Image Caption!", credit="Image Credit!"
            )
            media_item.save()
            event = Event.objects.get(id=1)
            event.media.add(media_item)
            event.save()

            # Get page:
            url = reverse("edit-event-details", kwargs={"event_id": 1})
            response = self.client.get(url)
            self.assertEqual(response.status_code, 200)
            self.assertTemplateUsed(response, "form_event.html")

            self.assertContains(response, media_item.media_file)
            # Submit the minimum amount of data to validate:
            self.assertContains(response, "Image Credit!")
Beispiel #4
0
    def post(self, request, event_id):
        # Handle POSTing of the "edit event" form. The slightly higher than
        # expected complexity is because there can be more than one media items
        # for an event (even though this isn't currently reflected in the UI).
        #
        # This means that there are two forms: one for the event, and one for
        # the media item. The extra logic is to cover the fact that both
        # records need to be updated.

        # Event object
        event = get_object_or_404(Event, pk=event_id)

        # Get the event's media item, or start a new one:
        media_item = event.get_main_mediaitem() or MediaItem()

        logger.info(u"Updating event {0}".format(event_id))
        # Create and populate forms:
        form = diary_forms.EventForm(request.POST, instance=event)
        media_form = diary_forms.MediaItemForm(request.POST,
                                               request.FILES,
                                               instance=media_item)

        # Validate
        if form.is_valid() and media_form.is_valid():
            self._save(event, media_item, form, media_form)
            messages.add_message(
                request, messages.SUCCESS,
                u"Updated details for event '{0}'".format(event.name))
            return _return_to_editindex(request)

        # Got here if there's a form validation error:
        context = {
            'event':
            event,
            'form':
            form,
            'media_form':
            media_form,
            'programme_copy_summary_max_chars':
            settings.PROGRAMME_COPY_SUMMARY_MAX_CHARS,
        }
        return render(request, 'form_event.html', context)