Exemplo n.º 1
0
def actor_data_form(request):
    actor = request.user.actor

    success_messages = []

    if request.POST:
        form = ActorDataForm(request.POST, instance=actor)
        if form.is_valid():
            form.save()
            success_messages.append(_(u'Deine Stammdaten wurden aktualisiert.'))

        form_picture = PictureMembershipForm(request.POST, request.FILES, instance=actor.picture_membership)
        if form_picture.is_valid():
            form_picture.title = actor.__unicode__()
            actor.picture_membership = form_picture.save()
            actor.save()
            success_messages.append(_(u'Dein internes Profilbild wurde aktualisiert.'))

    else:
        form = ActorDataForm(instance=actor)
        form_picture = PictureMembershipForm(instance=actor.picture_membership)

    if success_messages:
        messages.success(request, ' '.join(success_messages))

    c = {
        'form': form,
        'form_picture': form_picture
    }

    return render(request, 'backstage/actor-data-form.html', get_context_backstage(request,
                                                                                   'actor-data-form',
                                                                                   c))
Exemplo n.º 2
0
def actor_init_form(request):
    try:
        actor = request.user.actor
        return redirect('backstage')
    except Actor.DoesNotExist:
        actor = Actor(user=request.user, status=Configuration.objects.current().default_status)

    if request.POST:
        form_public = ActorPublicForm(request.POST, instance=actor)
        form_data = ActorDataForm(request.POST, instance=actor)
        form_group = UserGroupForm(request.POST)
        if form_public.is_valid() and form_data.is_valid() and form_group.is_valid():
            form_public.save()
            form_data.save()
            request.user.groups.add(form_group.cleaned_data['group'])
            messages.success(request, _(
                u'Vielen Dank! Damit hast du nun dein Profil angelegt. Bitte melde dich nun noch mal an.'))
            return redirect('logout')
    else:
        form_public = ActorPublicForm(instance=actor)
        form_data = ActorDataForm(instance=actor)
        form_group = UserGroupForm()

    forms = ((_(u'Öffentliches Profil'), form_public),
             (_('Stammdaten'), form_data),
             (_(u'Gruppenzugehörigkeit'), form_group))

    return render(request, 'backstage/actor-init-form.html',
                  get_context_backstage(request, 'actor-init-form', {'forms': forms}))
Exemplo n.º 3
0
def backstage_project_add(request):
    if request.POST:
        form = ProjectAddForm(request.POST)
        if form.is_valid():
            actor = form.cleaned_data['manager']
            project = Project.objects.create(title=form.cleaned_data['title'])
            Role.objects.create(name=Role._meta.get_field('perm_is_manager').verbose_name, project=project,
                                actor=actor, appearance=1)

            request.get_full_path()

            mail = EMailTemplate.objects.prepare('project-added', {
                'first_name': actor.user.first_name,
                'last_name': actor.user.last_name,
                'admin': request.user,
                'project': project,
                'dashboard_url': request.build_absolute_uri(reverse('bs-dashboard', kwargs={'project': project.pk}))
            })
            mail.to = [actor.user.email, ]
            mail.send()

            message_object_created(request, project)
            return redirect('bs-dashboard', project=project.pk)
    else:
        form = ProjectAddForm()

    return render(request, 'administrator/projects-form.html',
                  get_context_backstage(request, 'bs-project-add', {'form': form}))
Exemplo n.º 4
0
def get_context_filestorage(request, active_page, upd_dict=None):
    d = {
        'tpl__active_organization': True
    }

    if not upd_dict:
        upd_dict = d
    else:
        upd_dict.update(d)

    return get_context_backstage(request, active_page, upd_dict)
Exemplo n.º 5
0
def backstage_project_list(request):
    object_list = Project.objects.by_premiere()
    c = {
        'object_list': object_list,
        'url_add': 'bs-project-add',
        'action_add': True,
        'url_list': 'bs-project-list',
        'verbose_name_plural': Project.objects.model._meta.verbose_name_plural,
    }
    return render(request, 'backstage/project-list.html',
                  get_context_backstage(request, 'bs-project-list', c))
Exemplo n.º 6
0
def backstage(request):
    actor = request.user.actor

    if actor.can_affirm_memberships():
        applications = MembershipApplication.objects.filter(mail_confirmed__isnull=False).exclude(
            members_confirmed=request.user.actor)
    else:
        applications = None

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

    period = Period.objects.get_current()

    wiki_pages = Page.objects.get_most_recent(request.user)[:4]

    if request.user.has_perm('organization.treasurer'):
        last_added_entries = Entry.objects.order_by('-entry_date')[:4]
    else:
        last_added_entries = None

    current_hour = datetime.now().hour
    if current_hour in range(0, 5):
        greeting = _(u'Hallo Nachtschwärmer')
    elif current_hour in range(6, 9):
        greeting = _('Guten Morgen')
    elif current_hour in range(12, 14):
        greeting = _('Mahlzeit')
    elif current_hour in range(19, 24):
        greeting = _('Guten Abend')
    else:
        greeting = _('Willkommen')

    greeting = u'{greeting}, {fullname}!'.format(greeting=greeting, fullname=request.user.actor)

    upcoming_birthdays = Actor.objects.upcoming_birthdays(Configuration.objects.current().show_number_of_birthdays)

    second_row = not actor.get_membership_fee_paid()['paid'] or applications or not actor.password_recovery_email

    c = {
        'admins': admins,
        'applications': applications,
        'period': period,
        'wiki_pages': wiki_pages,
        'greeting': greeting,
        'upcoming_birthdays': upcoming_birthdays,
        'last_added_entries': last_added_entries,
        'second_row': second_row
    }

    return render(request, 'backstage/dashboard.html', get_context_backstage(request, 'backstage', c))
Exemplo n.º 7
0
def password_policy_form(request):
    if request.POST:
        form = ActorPasswordForm(request.POST)
        if form.is_valid():
            password_old = form.cleaned_data['password_old']
            if request.user.actor.check_password(password_old) is not True:
                form.errors['password_old'] = _(u'Das eingegebene Passwort ist nicht das aktuelle.')
            else:
                request.user.actor.set_password(form.cleaned_data['password_1'])
                messages.success(request,
                                 _(u'Dein Passwort wurde erfolgreich geändert. Bitte melde dich nun neu an.'))
                return redirect('logout')
    else:
        form = ActorPasswordForm()

    return render(request, 'backstage/password-policy-form.html',
                  get_context_backstage(request, 'password-policy-form', {'form': form}))
Exemplo n.º 8
0
def board_memberlist(request):
    filter_isactive_active, filter_isactive_inactive = '1', '2'
    filter_isactive_current = None
    a = Actor.objects.all()
    if 'filter_isactive' in request.GET:
        filter_isactive = request.GET.get('filter_isactive')
        if filter_isactive == filter_isactive_active:
            a = a.filter(user__is_active=True)
            filter_isactive_current = filter_isactive_active
        elif filter_isactive == filter_isactive_inactive:
            a = a.filter(user__is_active=False)
            filter_isactive_current = filter_isactive_inactive

    select_status_form = SelectStatusForm()
    form_recovery_by_admin = RecoveryByAdminForm()

    if request.POST:
        post_action = request.POST.get('action', None)
        if 'update_status' == post_action:
            select_status_form = SelectStatusForm(request.POST)
            if select_status_form.is_valid():
                status = select_status_form.cleaned_data['status']
                gl = request.POST.getlist('user_selection')
                Actor.objects.filter(pk__in=gl).update(status=status)
                messages.success(request, _(u'Es wurden {number} Mitglied(er) auf den '
                                            u'Status {status} gesetzt.'.format(number=len(gl), status=status)))
        if 'recovery_by_admin' == post_action:
            form_recovery_by_admin = RecoveryByAdminForm(request.POST)
            if form_recovery_by_admin.is_valid():
                actor = get_object_or_404(Actor, pk=request.POST.get('actor_pk', None))
                actor.invoke_recovery_email_confirmation(request, form_recovery_by_admin.cleaned_data['recovery_email'])
                messages.success(request, _(u'Eine E-Mail wurde an <em>{0}</em> gesendet.'.format(actor)))
                return redirect('bs-board-memberlist')
    c = {
        'objects': a,
        'select_status_form': select_status_form,
        'form_recovery_by_admin': form_recovery_by_admin,
        'filter_isactive': {
            'active': filter_isactive_active,
            'inactive': filter_isactive_inactive,
            'current': filter_isactive_current,
        },
    }
    return render(request, 'backstage/board-member-list.html',
                  get_context_backstage(request, 'bs-board-memberlist', c))
Exemplo n.º 9
0
def board_member_form(request, actor_pk):
    a = get_object_or_404(Actor, pk=actor_pk)

    if request.POST:
        form_actor = BoardActorForm(request.POST, instance=a)
        form_user = BoardUserForm(request.POST, instance=a.user)
        if form_actor.is_valid() and form_actor.is_valid():
            form_actor.save()
            form_user.save()
            message_object_updated(request, a)
    else:
        form_actor = BoardActorForm(instance=a)
        form_user = BoardUserForm(instance=a.user)

    forms = (form_actor, form_user)

    return render(request, 'backstage/board-member-form.html', get_context_backstage(request, 'bs-board-member-form',
                                                                                     {'actor': a, 'forms': forms}))
Exemplo n.º 10
0
def actor_password_form(request):
    form = ActorPasswordForm()
    form_recovery = ActorRecoverPasswordForm(initial={'recovery_email': request.user.actor.password_recovery_email})

    if request.POST:
        if 'set_password' == request.POST.get('action'):
            form = ActorPasswordForm(request.POST)
            if form.is_valid():
                password_old = form.cleaned_data['password_old']
                if request.user.actor.check_password(password_old) is not True:
                    form.errors['password_old'] = _(u'Das eingegebene Passwort ist nicht das aktuelle.')
                else:
                    request.user.actor.set_password(form.cleaned_data['password_1'])
                    messages.success(request,
                                     _(u'Dein Passwort wurde erfolgreich geändert. Bitte melde dich nun neu an.'))
                    return redirect('logout')

        elif 'set_recovery' == request.POST.get('action'):
            form_recovery = ActorRecoverPasswordForm(request.POST)
            if form_recovery.is_valid():
                password_old = form_recovery.cleaned_data['password_old']
                if request.user.actor.check_password(password_old) is not True:
                    form_recovery.errors['password_old'] = _(u'Das eingegebene Passwort ist nicht das aktuelle.')
                if request.user.email == form_recovery.cleaned_data['recovery_email']:
                    form_recovery.errors['recovery_email'] = _(
                        u'Das darf nicht deine normale E-Mail-Adresse sein. Bitte verwende eine andere.')
                if not form_recovery.errors:
                    request.user.actor.invoke_recovery_email_confirmation(request,
                                                                          form_recovery.cleaned_data['recovery_email'])
                    messages.success(request, _(
                        u'Dir wurde eine E-Mail an {email} gesendet. Bitte klicke auf den Link in dieser E-Mail um '
                        u'deine E-Mail-Adresse zu bestätigen. Erst dann kannst du sie zur Passwort-Wiederherstellung '
                        u'verwendet.'.format(email=request.user.actor.password_recovery_email_new)))

    c = {
        'form': form,
        'form_recovery': form_recovery
    }

    return render(request, 'backstage/actor-password-form.html',
                  get_context_backstage(request, 'actor-password-form', c))
Exemplo n.º 11
0
def actor_public_form(request):
    try:
        actor = request.user.actor
    except:
        actor = Actor(user=request.user)

    success_messages = []

    if request.POST and actor:
        form = ActorPublicForm(request.POST, instance=actor)
        if form.is_valid():
            form.save()
            success_messages.append(u'Dein öffentliches Profil wurde aktualisiert.')

        form_picture = PicturePublicForm(request.POST, request.FILES, instance=actor.picture_public)
        if form_picture.is_valid():
            form_picture.title = actor.__unicode__()
            actor.picture_public = form_picture.save()
            actor.save()
            success_messages.append(u'Dein öffentliches Profilbild wurde aktualisiert.')

    else:
        form = ActorPublicForm(instance=actor)
        form_picture = PicturePublicForm(instance=actor.picture_public)

    if success_messages:
        messages.success(request, ' '.join(success_messages))

    c = {
        'form': form,
        'form_picture': form_picture,
        'actor_slug': actor.slug,
    }

    return render(request, 'backstage/actor-public-form.html', get_context_backstage(request, 'actor-public-form',
                                                                                     c))
Exemplo n.º 12
0
def backstage_application_list(request):
    o = MembershipApplication.objects.all()
    return render(request, 'backstage/board-application-list.html',
                  get_context_backstage(request, 'bs-application-list', {'objects': o}))
Exemplo n.º 13
0
def backstage_group_list(request):
    groups = Group.objects.all()
    unassigned = Actor.objects.filter(user__groups__isnull=True)
    return render(request, 'backstage/group-list.html',
                  get_context_backstage(request, 'backstage-group-list',
                                        {'groups': groups, 'unassigned': unassigned}))
Exemplo n.º 14
0
def actor_finance(request):
    actor = request.user.actor

    # First: collect membership fee status
    periods = Period.objects.all()[:5]
    status = {}
    if len(periods) > 0:
        for period in periods:
            status.update({period.pk: {'paid': False, 'amount': 0}})
            status[period.pk] = actor.get_membership_fee_paid(period)
        actor.fee_status = status

    # Second: prepare and execute refund data form
    if request.POST and 'refund_obligee' in request.POST and 'refund_iban' in request.POST and 'refund_swift_bic' in request.POST:
        actor_refund_data_form = ActorRefundDataForm(request.POST, instance=actor)
        if actor_refund_data_form.is_valid():
            messages.success(request, _(u'Deine Konto-Informationen für Erstattungen wurden aktualisiert.'))
            actor_refund_data_form.save()
    else:
        actor_refund_data_form = ActorRefundDataForm(instance=actor)

    # Third: prepare sepa mandate form

    if 'new_sepa' == request.POST.get('form', False):
        actor_sepa_mandate_form = SEPAMandateCreateForm(request.POST)
        actor_sepa_mandate_form.instance.actor = request.user.actor
        if actor_sepa_mandate_form.is_valid():
            sepa_mandate = actor_sepa_mandate_form.save()
            message_object_created(request, sepa_mandate)
    else:
        actor_sepa_mandate_form = SEPAMandateCreateForm()

    if request.POST.get('delete', False):
        mandate = get_object_or_404(SEPAMandate, pk=request.POST.get('delete'), actor=actor)
        if mandate.state is SEPAMandate.STATE_PENDING or not mandate.keep_until() or mandate.keep_until() < datetime.now().date():
            message_object_deleted(request, mandate)
            mandate.delete()

    if request.POST.get('revoke', False):
        mandate = get_object_or_404(SEPAMandate, pk=request.POST.get('delete'), actor=actor)
        message_object_updated(request, mandate)
        mandate.state = mandate.STATE_REVOKED
        mandate.save()

    active_mandate = SEPAMandate.objects.get_active(actor=actor)
    pending_mandate = SEPAMandate.objects.get_pending(actor=actor)
    other_mandates = SEPAMandate.objects.get_other(actor=actor)

    # Fourth: creditor accounts

    creditor_accounts = Account.objects.filter(is_creditor=True)

    try:
        current_period = periods[0]
    except ValueError:
        current_period = None

    return render(request, 'backstage/actor-finance.html', get_context_backstage(request, 'actor-finance', {
        'actor': actor, 'periods': periods, 'actor_refund_data_form': actor_refund_data_form, 'actor_sepa_mandate_form':
        actor_sepa_mandate_form, 'active_mandate': active_mandate, 'pending_mandate': pending_mandate,
        'other_mandates': other_mandates, 'creditor_accounts': creditor_accounts, 'current_period': current_period}))