Exemple #1
0
def manage_whitelist(request, group_name):
    group = get_object_or_404(Group, name=group_name)
    group_proxy = GroupProxy(group)
    if not group_proxy.is_member(request.user):
        raise PermissionDenied()
    is_admin = group_proxy.is_admin(request.user)
    try:
        mailinglist = Mailinglist.objects.get(group=group)
    except Mailinglist.DoesNotExist:
        return redirect('mailinglist_show_list', group.name)

    if 'add' in request.POST and is_admin:
        add_form = AddWhitelistForm(request.POST, mailinglist=mailinglist)
        if add_form.is_valid():
            add_form.save()
            return redirect('mailinglist_whitelist', group.name)
    else:
        add_form = AddWhitelistForm(mailinglist=mailinglist)

    if 'delete' in request.POST and is_admin:
        address_pk = request.POST.get('address_pk', 0)
        mailinglist.whitelist_addresses.filter(pk=address_pk).delete()
        return redirect('mailinglist_whitelist', group.name)

    entries = mailinglist.whitelist_addresses.order_by('email')

    return render(request, 'mailinglist/whitelist.html', {
        'mailinglist': mailinglist,
        'entries': entries,
        'add_form': add_form,
        'is_admin': is_admin
    })
Exemple #2
0
def manage_whitelist(request, group_name):
    group = get_object_or_404(Group, name=group_name)
    group_proxy = GroupProxy(group)
    if not group_proxy.is_member(request.user):
        raise PermissionDenied()
    is_admin = group_proxy.is_admin(request.user)
    try:
        mailinglist = Mailinglist.objects.get(group=group)
    except Mailinglist.DoesNotExist:
        return redirect('mailinglist_show_list', group.name)

    if 'add' in request.POST and is_admin:
        add_form = AddWhitelistForm(request.POST, mailinglist=mailinglist)
        if add_form.is_valid():
            add_form.save()
            return redirect('mailinglist_whitelist', group.name)
    else:
        add_form = AddWhitelistForm(mailinglist=mailinglist)

    if 'delete' in request.POST and is_admin:
        address_pk = request.POST.get('address_pk', 0)
        mailinglist.whitelist_addresses.filter(pk=address_pk).delete()
        return redirect('mailinglist_whitelist', group.name)

    entries = mailinglist.whitelist_addresses.order_by('email')

    return render(
        request, 'mailinglist/whitelist.html', {
            'mailinglist': mailinglist,
            'entries': entries,
            'add_form': add_form,
            'is_admin': is_admin
        })
Exemple #3
0
def accept(request, invitation_token):
    if request.user.is_authenticated:
        return redirect('guests_index')

    try:
        invitation_pk = signing.loads(invitation_token)
    except signing.BadSignature:
        raise PermissionDenied

    try:
        invitation = Invitation.objects.get(pk=invitation_pk)
    except Invitation.DoesNotExist:
        return render(request, 'guests/invitation_withdrawn.html')

    if Mafiasi.objects.filter(username=invitation.username+'.guest').count():
        return render(request, 'guests/username_exists.html', {
            'username': invitation.username,
        })

    try:
        existing_account = Mafiasi.objects.get(email=invitation.email)
        return render(request, 'guests/has_account.html', {
            'existing_account': existing_account
        })
    except Mafiasi.DoesNotExist:
        pass
    
    if request.method == 'POST':
        form = PasswordForm(request.POST)
        if form.is_valid():
            password = form.cleaned_data['password1']
            mafiasi = invitation.accept_with_password(password)
            mafiasi.backend = 'django.contrib.auth.backends.ModelBackend'
            if settings.DEFAULT_GUEST_GROUP:
                group = get_object_or_404(Group, name=settings.DEFAULT_GUEST_GROUP)
                group_proxy = GroupProxy(group)
                group_proxy.add_member(mafiasi)
            if settings.GUEST_ACCEPT_INVITATION_MAIL:
                email_content = render_to_string('guests/invitation_accepted_mail.txt', {
                'invitation': invitation,
                    })
                subject_de = 'Angenommen: Einladung zu ' + settings.PROJECT_NAME + ' / ' if settings.MAIL_INCLUDE_GERMAN else ""
                subject = (settings.EMAIL_SUBJECT_PREFIX + subject_de + "Accepted: Invitation to " + settings.PROJECT_NAME)
                try:
                    send_mail(subject, email_content, None, [invitation.invited_by.email])
                except SMTPRecipientsRefused:
                    pass  # bestätigungsmail ist nicht so wichtig
            login(request, mafiasi)
            return redirect('guests_invited_by')
    else:
        form = PasswordForm()

    return render(request, 'guests/accept.html', {
        'invitation': invitation,
        'form': form,
        'guest_extension': settings.GUEST_EXTENSION,
    })
Exemple #4
0
def leave(request, group_name):
    group = get_object_or_404(Group, name=group_name)
    group_proxy = GroupProxy(group)
    try:
        group_proxy.remove_member(request.user, check_sole_admin=True)
        messages.success(request, _('You left the group.'))
    except GroupError as e:
        messages.error(request, str(e))

    return redirect('groups_index')
Exemple #5
0
def leave(request, group_name):
    group = get_object_or_404(Group, name=group_name)
    group_proxy = GroupProxy(group)
    try:
        group_proxy.remove_member(request.user, check_sole_admin=True)
        messages.success(request, _('You left the group.'))
    except GroupError as e:
        messages.error(request, str(e))
    
    return redirect('groups_index')
Exemple #6
0
def group_action(request, group_name, member_pk):
    group = get_object_or_404(Group, name=group_name)
    if not group.properties.admins.filter(pk=request.user.pk):
        raise PermissionDenied()

    User = get_user_model()
    try:
        member = group.user_set.get(pk=member_pk)
    except User.DoesNotExist:
        raise Http404
    group_proxy = GroupProxy(group)

    if 'kick' in request.POST:
        try:
            group_proxy.remove_member(member, check_sole_admin=True)
            messages.success(request, _('User was removed from group'))
        except GroupError as e:
            messages.errror(request, str(e))
    elif 'grant_admin' in request.POST:
        group_proxy.grant_admin(member)
        messages.success(request, _('User was granted group admin.'))
    elif 'revoke_admin' in request.POST:
        try:
            group_proxy.revoke_admin(member)
            messages.success(request,
                             _('Revoked group admin rights from user.'))
        except GroupError as e:
            messages.errror(request, str(e))

    return redirect('groups_show', group.name)
Exemple #7
0
def index(request):
    group_pad_list = []
    pinned_pads = None
    if request.user.is_authenticated:
        pad_dict = {}
        groups = request.user.groups.all().order_by('name')
        group_names = [group.name for group in groups]
        pad_dict = get_group_pads(group_names)
        old_time = datetime.datetime.now() - datetime.timedelta(days=7)
        for group in groups:
            is_admin = GroupProxy(group).is_admin(request.user)
            pads = pad_dict[group.name]
            for pad in pads:
                edit_time = datetime.datetime.fromtimestamp(pad['timestamp'])
                edit_time_not_old = edit_time >= old_time
                pad['admin'] = is_admin
                pad['last_edit'] = edit_time
                pad['edit_time_not_old'] = edit_time_not_old
            pads.sort(key=itemgetter('last_edit'), reverse=True)
            group_pad_list.append({'group_name': group.name, 'pads': pads})
        pinned_pads = PinnedEtherpad.objects.filter(
            user=request.user).order_by('pad_name')

    return TemplateResponse(
        request, 'etherpad/index.html', {
            'pinned_pads': pinned_pads,
            'group_pad_list': group_pad_list,
            'etherpad_link': settings.ETHERPAD_URL,
        })
Exemple #8
0
def group_action(request, group_name, member_pk):
    group = get_object_or_404(Group, name=group_name)
    if not group.properties.admins.filter(pk=request.user.pk):
        raise PermissionDenied()
    
    User = get_user_model()
    try:
        member = group.user_set.get(pk=member_pk)
    except User.DoesNotExist:
        raise Http404
    group_proxy = GroupProxy(group)

    if 'kick' in request.POST:
        try:
            group_proxy.remove_member(member, check_sole_admin=True)
            messages.success(request, _('User was removed from group'))
        except GroupError as e:
            messages.errror(request, str(e))
    elif 'grant_admin' in request.POST:
        group_proxy.grant_admin(member)
        messages.success(request, _('User was granted group admin.'))
    elif 'revoke_admin' in request.POST:
        try:
            group_proxy.revoke_admin(member)
            messages.success(request, _('Revoked group admin rights from user.'))
        except GroupError as e:
            messages.errror(request, str(e))
    
    return redirect('groups_show', group.name) 
Exemple #9
0
def create_list(request, group_name):
    group = get_object_or_404(Group, name=group_name)
    if not GroupProxy(group).is_admin(request.user):
        raise PermissionDenied()
    if request.method == 'POST':
        mailinglist, created = Mailinglist.objects.get_or_create(group=group)
        if created:
            msg = _('Mailinglist {list_name} was created.').format(
                list_name=group.name)
            messages.success(request, msg)
    return redirect('mailinglist_show_list', group.name)
Exemple #10
0
def show_list(request, group_name):
    group = get_object_or_404(Group, name=group_name)
    group_proxy = GroupProxy(group)
    if not group_proxy.is_member(request.user):
        raise PermissionDenied()

    try:
        mailinglist = Mailinglist.objects.get(group=group)
        moderated_mails = mailinglist.moderated_mails.all()
        whitelist_count = mailinglist.whitelist_addresses.count()
    except Mailinglist.DoesNotExist:
        mailinglist = None
        moderated_mails = []
        whitelist_count = 0

    is_admin = GroupProxy(group).is_admin(request.user)
    return render(request, 'mailinglist/show_list.html', {
        'group': group,
        'mailinglist': mailinglist,
        'moderated_mails': moderated_mails,
        'whitelist_count': whitelist_count,
        'is_admin': is_admin
    })
Exemple #11
0
def show_list(request, group_name):
    group = get_object_or_404(Group, name=group_name)
    group_proxy = GroupProxy(group)
    if not group_proxy.is_member(request.user):
        raise PermissionDenied()

    try:
        mailinglist = Mailinglist.objects.get(group=group)
        moderated_mails = mailinglist.moderated_mails.all()
        whitelist_count = mailinglist.whitelist_addresses.count()
    except Mailinglist.DoesNotExist:
        mailinglist = None
        moderated_mails = []
        whitelist_count = 0

    is_admin = GroupProxy(group).is_admin(request.user)
    return render(
        request, 'mailinglist/show_list.html', {
            'group': group,
            'mailinglist': mailinglist,
            'moderated_mails': moderated_mails,
            'whitelist_count': whitelist_count,
            'is_admin': is_admin
        })
Exemple #12
0
def mailaction(request, group_name, mmail_pk):
    group = get_object_or_404(Group, name=group_name)
    if not GroupProxy(group).is_admin(request.user):
        raise PermissionDenied()
    try:
        mailinglist = Mailinglist.objects.get(group=group)
    except Mailinglist.DoesNotExist:
        return redirect('mailinglist_show_list', group.name)

    try:
        mmail = ModeratedMail.objects.get(pk=mmail_pk, mailinglist=mailinglist)
    except ModeratedMail.DoesNotExist:
        return redirect('mailinglist_show_list', group.name)

    if request.method == 'POST':
        if 'allow' in request.POST:
            mmail.unmoderate()
            messages.success(request, _('Mail was sent to mailinglist.'))
        elif 'discard' in request.POST:
            messages.success(request, _('Mail was discarded.'))
            mmail.delete()

    return redirect('mailinglist_show_list', group.name)
Exemple #13
0
def manage_settings(request, group_name):
    group = get_object_or_404(Group, name=group_name)
    if not GroupProxy(group).is_admin(request.user):
        raise PermissionDenied()

    try:
        mailinglist = Mailinglist.objects.get(group=group)
    except Mailinglist.DoesNotExist:
        return redirect('mailinglist_show_list', group.name)

    if request.method == 'POST':
        form = SettingsForm(request.POST, instance=mailinglist)
        if form.is_valid():
            form.save()
            messages.success(request, _('Mailinglist settings saved.'))
            return redirect('mailinglist_show_list', group.name)
    else:
        form = SettingsForm(instance=mailinglist)

    return render(request, 'mailinglist/settings.html', {
        'mailinglist': mailinglist,
        'form': form
    })