コード例 #1
0
ファイル: views.py プロジェクト: koniiiik/akademia
def latest_event_detail(request, success_redirect='event_latest'):
    """
    Shows the defails of the latest event same as EventDetailView. In
    addition checks whether the signup period is still open and if it is,
    handles the appropriate signup form as well.
    """
    event = get_latest_event(request)
    if request.user.is_authenticated():
        form_class = get_signup_form(request)
        signup_model = get_signup_model(request)
        try:
            signup_instance = signup_model.objects.get(
                user=request.user,
                event=event,
            )
        except signup_model.DoesNotExist:
            signup_instance = None

    context = {
        'event': event,
    }

    if request.user.is_authenticated():
        if request.method == 'POST' and event.signup_period_open():
            if 'sign_out' in request.POST:
                # Sign the user out of the event. If they aren't signed up, do
                # nothing.
                if signup_instance:
                    signup_instance.delete()
                    messages.success(request, "Úspešne odhlásené z akcie.")
                    return redirect(success_redirect)
            form = form_class(request.POST, instance=signup_instance,
                              request=request)
            if form.is_valid():
                form.save()
                if signup_instance:
                    messages.success(request, "Úspešne zmenená prihláška.")
                else:
                    messages.success(request, "Úspešne prihlásené na akciu.")
                return redirect(success_redirect)
        else:
            form = form_class(instance=signup_instance, request=request)

        context.update({
            'signup_form': form,
            'is_signed_up': signup_instance is not None,
        })

    context['do_signups'] = True,

    return TemplateResponse(request=request,
                            template='events/event_detail.html',
                            context=context)
コード例 #2
0
ファイル: events.py プロジェクト: koniiiik/akademia
def get_latest_event(context):
    return models.get_latest_event(context['request'])
コード例 #3
0
ファイル: forms.py プロジェクト: koniiiik/akademia
 def __init__(self, *args, **kwargs):
     request = kwargs.pop('request')
     self.event = get_latest_event(request)
     self.user = request.user
     super(SignupFormMixin, self).__init__(*args, **kwargs)