def report_thread(request, thread): """ Makes a report for a thread. """ # Cancel button support if request.POST.get("cancel"): return redirect(thread.urls.view) # Form processing if request.method == "POST": form = ReportForm(request.POST) if form.is_valid(): Report.objects.create( thread=thread, type=form.cleaned_data['type'], comment=form.cleaned_data['comment'], reporter=request.user, accused=thread.author, ) flash(request, "Report submitted. Thanks!") return redirect(thread.urls.view) else: form = ReportForm() return render(request, "threads/report.html", { "form": form, "report_url": thread.urls.report, })
def report_thread(request, thread): """ Makes a report for a thread. """ # Cancel button support if request.POST.get("cancel"): return redirect(thread.urls.view) # Form processing if request.method == "POST": form = ReportForm(request.POST) if form.is_valid(): Report.objects.create( thread=thread, type=form.cleaned_data['type'], comment=form.cleaned_data['comment'], reporter=request.user, accused=thread.author, ) flash(request, "Report submitted. Thanks!") return redirect(thread.urls.view) else: form = ReportForm() return render(request, "threads/report.html", { "form": form, "report_url": thread.urls.report, })
def join(request, group): """ Joins a group (optionally prompting for more info) """ # TODO: make all joins POST with CSRF # No more info form for now, and no pending statuses membership = group.membership(request.user) if membership is None: GroupMember.objects.create( group=group, user=request.user, status="member", ) flash(request, "You are now a member of the group!") return redirect(group.urls.view)
def join(request, group): """ Joins a group (optionally prompting for more info) """ # TODO: make all joins POST with CSRF # No more info form for now, and no pending statuses membership = group.membership(request.user) if membership is None: GroupMember.objects.create( group=group, user=request.user, status="member", ) flash(request, "You are now a member of the group!") return redirect(group.urls.view)
def settings(request): """ The user's own settings """ user = request.user if request.method == "POST": form = ChangePasswordForm(user, request.POST) if form.is_valid(): user.set_password(form.cleaned_data['new_password']) user.save() update_session_auth_hash(request, user) flash(request, "Password changed!") return redirect(".") else: form = ChangePasswordForm(user) return render(request, "users/settings.html", { "form": form, })
def edit(request, group): """ Edits group settings """ if request.method == "POST": form = EditGroupForm(request.POST) if form.is_valid(): group.description = form.cleaned_data['description'] group.colour = form.cleaned_data['colour'] group.save() flash(request, "Settings saved.") return redirect(group.urls.edit) else: form = EditGroupForm(initial={ "description": group.description, "colour": group.colour, }) return render(request, "groups/edit.html", { "group": group, "form": form, })
def edit(request, group): """ Edits group settings """ if request.method == "POST": form = EditGroupForm(request.POST) if form.is_valid(): group.description = form.cleaned_data['description'] group.colour = form.cleaned_data['colour'] group.save() flash(request, "Settings saved.") return redirect(group.urls.edit) else: form = EditGroupForm(initial={ "description": group.description, "colour": group.colour, }) return render(request, "groups/edit.html", { "group": group, "form": form, })
def leave(request, group): """ Leaves a group (optionally prompting for confirmation if getting back into the group is not trivial) """ # TODO: make all leaves POST with CSRF # Just protect against the last admin leaving for now. membership = group.membership(request.user) if membership is None or membership.status == "banned": return redirect(group.urls.view) if membership.status == "admin": if group.members.filter(status="admin").count() == 1: return render(request, "groups/leave_error.html", { "group": group, "reason": "you are the last admin", }) membership.delete() flash(request, "You are no longer a member of the group.") return redirect(group.urls.view)
def leave(request, group): """ Leaves a group (optionally prompting for confirmation if getting back into the group is not trivial) """ # TODO: make all leaves POST with CSRF # Just protect against the last admin leaving for now. membership = group.membership(request.user) if membership is None or membership.status == "banned": return redirect(group.urls.view) if membership.status == "admin": if group.members.filter(status="admin").count() == 1: return render(request, "groups/leave_error.html", { "group": group, "reason": "you are the last admin", }) membership.delete() flash(request, "You are no longer a member of the group.") return redirect(group.urls.view)