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 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)