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 })
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 })
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, })
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')
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)
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, })
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)
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 })
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 })
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)
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 })