def add_topic(request, forum_id, full=True): """ create a new topic, with or without poll """ forum = get_object_or_404(Forum, pk=forum_id) if not forum.category.has_access(request.user) or (forum.moderator_only and not (request.user.is_superuser or request.user in forum.moderators.all())): return HttpResponseForbidden() ip = request.META.get('REMOTE_ADDR', None) post_form_kwargs = {"forum":forum, "user":request.user, "ip":ip, } if request.method == 'POST': form = AddPostForm(request.POST, request.FILES, **post_form_kwargs) if form.is_valid(): all_valid = True else: all_valid = False poll_form = PollForm(request.POST) create_poll = poll_form.create_poll() if not create_poll: # All poll fields are empty: User didn't want to create a poll # Don't run validation and remove all form error messages poll_form = PollForm() # create clean form without form errors elif not poll_form.is_valid(): all_valid = False if all_valid: post = form.save() if create_poll: poll_form.save(post) messages.success(request, _("Topic with poll saved.")) else: messages.success(request, _("Topic saved.")) return HttpResponseRedirect(post.get_absolute_url() if full else post.get_mobile_url()) else: form = AddPostForm( initial={ 'markup': request.user.forum_profile.markup, 'subscribe': request.user.forum_profile.auto_subscribe, }, **post_form_kwargs ) # if creating a new topic and allowed create_poll_form = forum_id and forum_settings.ALLOW_POLLS poll_form = PollForm() context = { 'forum': forum, 'create_poll_form': create_poll_form, 'poll_form': poll_form, 'form': form, 'form_url': request.path, 'back_url': forum.get_absolute_url(), } return render(request, 'djangobb_forum/add_topic.html' if full else 'djangobb_forum/mobile/add_topic.html', context)
def add_topic(request, forum_id): """ create a new topic, with or without poll """ forum = get_object_or_404(Forum, pk=forum_id) if not forum.category.has_access(request.user): return HttpResponseForbidden() ip = request.META.get('REMOTE_ADDR', None) post_form_kwargs = { "forum": forum, "user": request.user, "ip": ip, } if request.method == 'POST': form = AddPostForm(request.POST, request.FILES, **post_form_kwargs) if form.is_valid(): all_valid = True else: all_valid = False poll_form = PollForm(request.POST) create_poll = poll_form.create_poll() if not create_poll: # All poll fields are empty: User didn't want to create a poll # Don't run validation and remove all form error messages poll_form = PollForm() # create clean form without form errors elif not poll_form.is_valid(): all_valid = False if all_valid: post = form.save() if create_poll: poll_form.save(post) messages.success(request, _("Topic with poll saved.")) else: messages.success(request, _("Topic saved.")) return HttpResponseRedirect(post.get_absolute_url()) else: form = AddPostForm(initial={ 'markup': request.user.forum_profile.markup, 'subscribe': request.user.forum_profile.auto_subscribe, }, **post_form_kwargs) if forum_id: # Create a new topic poll_form = PollForm() context = { 'forum': forum, 'create_poll_form': poll_form, 'form': form, 'form_url': request.path, 'back_url': forum.get_absolute_url(), } return render(request, 'djangobb_forum/add_topic.html', context)
def add_topic(request, forum_id, full=True): """ create a new topic, with or without poll """ forum = get_object_or_404(Forum, pk=forum_id) if not forum.category.has_access(request.user) or ( forum.moderator_only and not (request.user.is_superuser or request.user in forum.moderators.all())): return HttpResponseForbidden() ip = get_client_ip(request) post_form_kwargs = { "forum": forum, "user": request.user, "ip": ip, "is_ip_banned": request.is_ip_banned, "request_data": request.META } if request.method == 'POST': form = AddPostForm(request.POST, request.FILES, **post_form_kwargs) if form.is_valid(): all_valid = True else: all_valid = False poll_form = PollForm(request.POST) create_poll = poll_form.create_poll() if not create_poll: # All poll fields are empty: User didn't want to create a poll # Don't run validation and remove all form error messages poll_form = PollForm() # create clean form without form errors elif not poll_form.is_valid(): all_valid = False if all_valid: post = form.save() if create_poll: poll_form.save(post) messages.success(request, _("Topic with poll saved.")) else: messages.success(request, _("Topic saved.")) return HttpResponseRedirect( post.get_absolute_url() if full else post.get_mobile_url()) else: form = AddPostForm(initial={ 'markup': request.user.forum_profile.markup, 'subscribe': True, }, **post_form_kwargs) # if creating a new topic and allowed create_poll_form = forum_id and forum_settings.ALLOW_POLLS poll_form = PollForm() context = { 'forum': forum, 'create_poll_form': create_poll_form, 'poll_form': poll_form, 'form': form, 'form_url': request.path, 'back_url': forum.get_absolute_url(), 'simple_user_agent': simple_user_agent(request), } return render( request, 'djangobb_forum/add_topic.html' if full else 'djangobb_forum/mobile/add_topic.html', context)