Beispiel #1
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)
Beispiel #2
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)