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}))
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}))
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))
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}))
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}))
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))
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}))
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}))
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}))
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}))
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}))
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}))
def permission_denied(request): t = loader.get_template('system/403.html') return HttpResponseForbidden(t.render(Context(get_context(request, 'permission_denied', {}))))
def server_error(request): t = loader.get_template('system/500.html') return HttpResponseServerError(t.render(Context(get_context(request, 'server_error', {}))))
def page_not_found(request): t = loader.get_template('system/404.html') return HttpResponseNotFound(t.render(Context(get_context(request, 'page_not_found', {}))))
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}))
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}))
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}))