Beispiel #1
0
def reservation_form(request, project_slug, event):
    event = [int(x) for x in (event.split('-'))]
    event = datetime(event[0], event[1], event[2], event[3], event[4])
    project = get_object_or_404(Project, slug=project_slug, visibility=True)
    event = get_object_or_404(Event, project=project, datetime=event)
    fees = project.get_fees().filter(public=True)

    if request.method == 'POST':
        form = ReservationForm(fees=fees, data=request.POST)
        if form.is_valid():
            reservation = Reservation.objects.create(
                event=event,
                first_name=form.cleaned_data['first_name'],
                last_name=form.cleaned_data['last_name'],
                email=form.cleaned_data['email'],
                datetime=datetime.now(),
                ip=request.META['REMOTE_ADDR'],
                confirmed=False,
                taken=False
            )

            seats = []

            for seat in form.fee_names:
                if form.cleaned_data[seat] > 0:
                    s = Seat.objects.create(
                        reservation=reservation,
                        type=form.fields[seat].fee,
                        places=form.cleaned_data[seat]
                    )
                    seats.append(s)

            mail = EMailTemplate.objects.prepare('reservation-confirm', {
                'first_name': reservation.first_name,
                'last_name': reservation.last_name,
                'datetime': reservation.datetime,
                'project_title': reservation.event.project.title,
                'event_date': reservation.event.datetime,
                'event_location': reservation.event.location,
                'seats': seats
            })

            mail.to = [reservation.email, ]
            mail.attach(event.ical_filename(), event.ical(), 'text/calendar')
            mail.send()

            return render(request, 'public/reservation-success.html', get_context(request, 'reservation-form',
                                                                                  {'project': project, 'event': event,
                                                                                   'reservation': reservation,
                                                                                   'seats': seats}))

    else:
        form = ReservationForm(fees=fees)

    return render(request, 'public/reservation-form.html', get_context(request, 'reservation-form',
                                                                       {'project': project, 'event': event,
                                                                        'form': form,
                                                                        'fees': fees}))
Beispiel #2
0
def authentication(request):
    from django.contrib.auth import authenticate, login

    if request.method == 'POST':
        username = request.POST.get('username', '')
        password = request.POST.get('password', '')
        user = authenticate(username=username, password=password)
        if user is not None:
            if user.is_active:
                login(request, user)
                try:
                    user.actor.update_password_meta(password)
                except Actor.DoesNotExist:
                    pass
                return redirect('backstage')
            else:
                error = _('Dein Account ist nicht aktiv.')
        else:
            error = _(
                'Der Benutzername und das Passwort passen nicht zusammen. Bitte versuche es mit anderen Daten nochmal.')
    else:
        username = ''
        error = ''

    admins = Actor.objects.filter(user__is_superuser=True)

    return render(request, 'public/authentication.html', get_context(request, 'authentication',
                                                                     {'username': username, 'error': error,
                                                                      'admins': admins}))
Beispiel #3
0
def password_recovery(request):
    form = PasswordRecoveryForm()
    if request.POST:
        form = PasswordRecoveryForm(request.POST)
        if form.is_valid():
            try:
                actor = Actor.objects.get(user__username=form.cleaned_data['username'],
                                          password_recovery_email=form.cleaned_data['recovery_email'])

                token = str(uuid4())
                actor.password_recovery_token = make_password(token)
                actor.save()

                recovery_url = request.build_absolute_uri(reverse('password-recovery-reset',
                                                                  kwargs={'user_id': actor.id, 'token': token}))
                mail = EMailTemplate.objects.prepare('recovery-password', {
                    'site_name': Configuration.objects.current().site.name,
                    'first_name': actor.user.first_name,
                    'last_name': actor.user.last_name,
                    'recovery_url': recovery_url
                })
                mail.to = [actor.password_recovery_email, ]
                mail.send()
                messages.success(request, _(u'Dir wurde eine E-Mail mit weiteren Anweisungen gesendet.'))
                return redirect('authentication')
            except Actor.DoesNotExist:
                messages.error(request, _(u'Für die angegebene Kombination von Benutzername und '
                                          u'Wiederherstellungs-E-Mail-Adresse wurde kein Konto gefunden. Bitte '
                                          u'überprüfe deine Eingaben. Falls du nicht weiter kommst, wende dich bitte '
                                          u'an einen Administrator.'))
    c = {
        'form': form,
    }
    return render(request, 'public/password-recovery.html', get_context(request, 'password-recovery', c))
Beispiel #4
0
def actor_list(request):
    page = ContentPage.objects.get_or_create(slug='__actor_list', visibility='NO')[0]

    actor_list = Actor.objects.filter(public=True, user__is_active=True).order_by('user__last_name')
    return render(request, 'public/actor-list.html', get_context(request, 'actor_list',
                                                                 {'page': page,
                                                                  'actor_list': actor_list}))
Beispiel #5
0
def application_confirm(request, application_uuid):
    application = get_object_or_404(MembershipApplication, uuid=application_uuid)
    application.mail_confirmed = datetime.now()
    application.save()

    admins = Actor.objects.filter(user__is_superuser=True)
    boards = Actor.objects.filter_perm('board')
    treasurers = Actor.objects.filter_perm('treasurer')

    return render(request, 'public/membership-application-confirm.html',
                  get_context(request, 'application-public-form',
                              {'application': application,
                               'admins': admins, 'boards': boards,
                               'treasurers': treasurers}))
Beispiel #6
0
def homepage(request):
    hero_page = ContentPage.objects.get_or_create(slug='__homepage', visibility='NO')[0]
    news_published = News.objects.published()[:3]
    social_media_links = SocialNetwork.objects.get_at_homepage()

    try:
        slider = Slider.objects.get(name='_homepage')
    except Slider.DoesNotExist:
        slider = None

    c = {
        'hero_page': hero_page,
        'news_list': news_published,
        'slider': slider,
        'social_media_links': social_media_links}

    return render(request, 'public/homepage.html', get_context(request, 'homepage', c))
Beispiel #7
0
def application_public_form(request):
    success = False
    if request.POST:
        form = MembershipApplicationPublicForm(request.POST, request.FILES)
        if form.is_valid():
            application = form.save(commit=False)
            application.ip = request.META['REMOTE_ADDR']
            application.save()
            success = True
            mail = EMailTemplate.objects.prepare('application-confirm', {
                'first_name': application.first_name,
                'last_name': application.last_name,
                'required_members_confirming': Configuration.objects.current().required_members_confirming,
                'activiation_url': '%s%s' % (Site.objects.get_current().domain, reverse('application-confirm', kwargs={
                    'application_uuid': application.uuid}))
            })
            mail.to = [application.email, ]
            mail.send()
    else:
        form = MembershipApplicationPublicForm()

    admins = Actor.objects.filter(user__is_superuser=True)
    boards = Actor.objects.filter_perm('board')
    treasurers = Actor.objects.filter_perm('treasurer')
    period = Period.objects.get_current()

    form.fields['group'].queryset = Configuration.objects.current().application_groups

    try:
        content_page = ContentPage.objects.get(slug='__application')
    except ContentPage.DoesNotExist:
        content_page = False

    return render(request, 'public/membership-application-public-form.html',
                  get_context(request, 'application-public-form',
                              {'form': form, 'admins': admins,
                               'boards': boards,
                               'treasurers': treasurers,
                               'content_page': content_page,
                               'period': period,
                               'success': success}))
Beispiel #8
0
def password_recovery_reset(request, user_id, token):
    try:
        actor = Actor.objects.get(id=user_id)
        if not actor.check_password_recovery_token(token):
            raise ValueError

    except (Actor.DoesNotExist, ValueError):
        messages.error(request, _(u'Dieser Link ist leider nicht mehr gültig. Wahrscheinlich hast du ihn bereits '
                                  u'verwendet. Falls nicht, solltest du dich an den Administrator wenden oder den '
                                  u'Vorgang noch mal beginnen.'))
        return redirect('authentication')

    if request.POST:
        form = PasswordRecoveryResetForm(request.POST)
        if form.is_valid():
            actor.set_password(form.cleaned_data['password_1'])
            messages.success(request,
                             _(u'Dein Passwort wurde erfolgreich geändert. Du kannst dich nun anmelden.'))
            return redirect('authentication')
    else:
        form = PasswordRecoveryResetForm()

    return render(request, 'public/password-recovery-reset.html',
                  get_context(request, 'password-recovery-reset', {'form': form}))
Beispiel #9
0
def project_detail(request, project_slug):
    project = get_object_or_404(Project, slug=project_slug, visibility=True)
    return render(request, 'public/project-detail.html',
                  get_context(request, 'project_detail', {'project': project}))
Beispiel #10
0
def news_detail(request, news_slug):
    teaser = ContentPage.objects.get_or_create(slug='__news', visibility='NO')[0].teaser
    news = get_object_or_404(News, slug=news_slug)
    return render(request, 'public/news-detail.html',
                  get_context(request, 'news-detail', {'news': news, 'teaser': teaser}))
Beispiel #11
0
def news_list(request):
    content_page = ContentPage.objects.get_or_create(slug='__news', visibility='NO')[0]
    news_published = News.objects.published()
    return render(request, 'public/news-list.html', get_context(request, 'news-list',
                                                                {'page': content_page,
                                                                 'news_list': news_published}))
Beispiel #12
0
def page(request, page_slug):
    current_page = get_object_or_404(ContentPage, slug=page_slug)
    return render(request, 'public/single-page.html', get_context(request, 'content-page', {'page': current_page}))
Beispiel #13
0
def permission_denied(request):
    t = loader.get_template('system/403.html')
    return HttpResponseForbidden(t.render(Context(get_context(request, 'permission_denied', {}))))
Beispiel #14
0
def server_error(request):
    t = loader.get_template('system/500.html')
    return HttpResponseServerError(t.render(Context(get_context(request, 'server_error', {}))))
Beispiel #15
0
def page_not_found(request):
    t = loader.get_template('system/404.html')
    return HttpResponseNotFound(t.render(Context(get_context(request, 'page_not_found', {}))))
Beispiel #16
0
def project_list(request):
    page = ContentPage.objects.get_or_create(slug='__project_list', visibility='NO')[0]
    project_list = Project.objects.by_premiere().filter(visibility=True)
    return render(request, 'public/project-list.html', get_context(request, 'project_list',
                                                                   {'page': page,
                                                                    'project_list': project_list}))
Beispiel #17
0
def print_sepamandate(request, sepamandate_pk):
    mandate = get_object_or_404(SEPAMandate, pk=sepamandate_pk, actor=request.user.actor,
                                state=SEPAMandate.STATE_PENDING)
    return render(request, 'print/sepa-mandate.html',
                  get_context(request, 'print-funds-sepamandate', {'mandate': mandate}))
Beispiel #18
0
def actor_detail(request, actor_slug):
    actor = get_object_or_404(Actor, slug=actor_slug, public=True, user__is_active=True)
    return render(request, 'public/actor-detail.html', get_context(request, 'actor_detail', {'actor': actor}))