Example #1
0
def edit_event(request, slug=None, clone=None):
    """Edit event view."""

    event, created = get_or_create_instance(Event, slug=slug)

    if created:
        event.owner = request.user
    else:
        # This is for backwards compatibility for all the events
        # that were set before the change in the minutes section
        # of the drop down widget to multiples of 5.
        # Start time: Floor rounding
        # End time: Ceilling rounding
        event.start -= timedelta(minutes=event.start.minute % 5)
        if (event.end.minute % 5) != 0:
            event.end += timedelta(minutes=(5 - (event.end.minute % 5)))

    initial = {'country': request.user.userprofile.country,
               'city': request.user.userprofile.city,
               'region': request.user.userprofile.region}

    if request.user.groups.filter(name='Admin').count():
        event_form = forms.EventForm(request.POST or None,
                                     editable_owner=True, instance=event,
                                     initial=initial)
    else:
        event_form = forms.EventForm(request.POST or None,
                                     editable_owner=False, instance=event,
                                     initial=initial)

    metrics_formset = forms.EventMetricsFormset(request.POST or None,
                                                instance=event)

    if (event_form.is_valid() and metrics_formset.is_valid() and request.POST):
        event_form.save(clone=clone)
        metrics_formset.save(clone=clone)

        if created:
            messages.success(request, 'Event successfully created.')
        else:
            messages.success(request, 'Event successfully updated.')

        return redirect('events_view_event', slug=event_form.instance.slug)

    can_delete_event = False
    if (not created and
        (event.owner == request.user or
         request.user.has_perm('events.can_delete_events'))):
        can_delete_event = True

    selected_categories = map(int, event_form['categories'].value())

    return render(request, 'edit_event.html',
                  {'creating': created,
                   'event': event,
                   'event_form': event_form,
                   'selected_categories': selected_categories,
                   'metrics_formset': metrics_formset,
                   'can_delete_event': can_delete_event})
Example #2
0
def edit_event(request, slug=None):
    """Edit event view."""
    event, created = get_or_create_instance(Event, slug=slug)
    if created:
        event.owner = request.user

    if request.user.groups.filter(name='Admin').count():
        event_form = forms.EventForm(request.POST or None,
                                     editable_owner=True,
                                     instance=event)
    else:
        event_form = forms.EventForm(request.POST or None,
                                     editable_owner=False,
                                     instance=event)
    metrics_formset = forms.EventMetricsFormset(request.POST or None,
                                                instance=event)

    if (event_form.is_valid() and metrics_formset.is_valid()):
        event_form.save()
        metrics_formset.save()

        if created:
            messages.success(request, 'Event successfully created.')
        else:
            messages.success(request, 'Event successfully updated.')

        return redirect('events_view_event', slug=event_form.instance.slug)

    can_delete_event = False
    if (not created
            and (event.owner == request.user
                 or request.user.has_perm('events.can_delete_events'))):
        can_delete_event = True

    return render(
        request, 'edit_event.html', {
            'creating': created,
            'event': event,
            'event_form': event_form,
            'metrics_formset': metrics_formset,
            'can_delete_event': can_delete_event
        })