def add_forum(request): """Render and process a form to create a new forum.""" log_page_view(request, 'Add Forum') if request.method == 'POST': form = ForumForm(request.POST) if form.is_valid(): forum = form.save(commit=False) forum.slug = slugify(forum.name) try: forum.save() except IntegrityError: form._errors['name'] = form.error_class( ['That name is too similar to an existing forum name.']) else: for mod in form.cleaned_data.get('moderators'): forum.moderators.add(mod) forum.save() log.info('%s (%s) added new forum \'%s\'', request.user.username, request.user.get_full_name(), forum.name) return HttpResponseRedirect(reverse('forums')) else: form = ForumForm() return render(request, 'forums/add_forum.html', { 'form': form, 'create': True }, context_instance=RequestContext(request))
def edit_forum(request, slug): """Render and process a form to modify an existing forum. Required arguments: - slug => the slug of the forum to edit (as a string) If 'delete=true' appears in the request's query string, the forum will be deleted, along with all of its threads. """ log_page_view(request, 'Edit Forum') forum = get_object_or_404(Forum, slug=slug) profile = request.user.get_profile() if profile not in forum.moderators.all() and not profile.is_admin(): return HttpResponseRedirect(reverse('forbidden')) if request.method == 'POST': form = ForumForm(request.POST, instance=forum) if form.is_valid(): form.save() return HttpResponseRedirect(reverse('forums')) else: if 'delete' in request.GET and request.GET.get('delete') == 'true': log.info('%s (%s) deleted forum \'%s\'', request.user.username, request.user.get_full_name(), forum.name) forum.delete() return HttpResponseRedirect(reverse('forums')) form = ForumForm(instance=forum) return render(request, 'forums/add_forum.html', { 'form': form, 'forum': forum, 'create': False }, context_instance=RequestContext(request))
def edit_forum(request, slug): """Render and process a form to modify an existing forum. Required arguments: - slug => the slug of the forum to edit (as a string) If 'delete=true' appears in the request's query string, the forum will be deleted, along with all of its threads. """ log_page_view(request, 'Edit Forum') forum = get_object_or_404(Forum, slug=slug) profile = request.user.get_profile() if profile not in forum.moderators.all() and not profile.is_admin(): return HttpResponseRedirect(reverse('forbidden')) if request.method == 'POST': form = ForumForm(request.POST, instance=forum) if form.is_valid(): form.save() return HttpResponseRedirect(reverse('forums')) else: if 'delete' in request.GET and request.GET.get('delete') == 'true': log.info('%s (%s) deleted forum \'%s\'', request.user.username, request.user.get_full_name(), forum.name) forum.delete() return HttpResponseRedirect(reverse('forums')) form = ForumForm(instance=forum) return render(request, 'forums/add_forum.html', {'form': form, 'forum': forum, 'create': False}, context_instance=RequestContext(request))
def add_forum(request): """Render and process a form to create a new forum.""" log_page_view(request, 'Add Forum') if request.method == 'POST': form = ForumForm(request.POST) if form.is_valid(): forum = form.save(commit=False) forum.slug = slugify(forum.name) try: forum.save() except IntegrityError: form._errors['name'] = form.error_class(['That name is too similar to an existing forum name.']) else: for mod in form.cleaned_data.get('moderators'): forum.moderators.add(mod) forum.save() log.info('%s (%s) added new forum \'%s\'', request.user.username, request.user.get_full_name(), forum.name) return HttpResponseRedirect(reverse('forums')) else: form = ForumForm() return render(request, 'forums/add_forum.html', {'form': form, 'create': True}, context_instance=RequestContext(request))