def create_forum(request, tags=None): if tags: initial_tags = tags.split(',') tagform = DefaultForumTagsForm(initial={'default_tags': initial_tags }) else: tagform = DefaultForumTagsForm() vars = { 'form' : ForumForm(), 'tagform' : tagform, 'categories' : defaultCategories.objects.all(), } if request.method == 'POST': form = ForumForm(request.POST) tagform = DefaultForumTagsForm(request.POST) if form.is_valid() & tagform.is_valid(): default_tags = tagform.cleaned_data['default_tags'] user_tags = form.cleaned_data['tags'] # Filter list from empty strings cleaned_tags = filter(None, user_tags) # Combine and remove doubles all_tags = list(set(default_tags + cleaned_tags)) # Check if a default tag is present if len(default_tags) == 0: messages.add_message(request, messages.INFO, 'Du måste välja minst en huvudkategori!') return render(request, 'create_forum.html', {'form': form,'tagform':tagform, 'categories':vars['categories']}) # Check maximum allowed tags if len( all_tags ) > 5: messages.add_message(request, messages.INFO, 'Du kan inte välja fler än fem kategorier!') return render(request, 'create_forum.html', {'form': form,'tagform':tagform, 'categories':vars['categories']}) # Validate INTERNAL tags all_tags = validate_internal_tags(request, all_tags) post_values = request.POST.copy() all_tags = validate_internal_tags(request, all_tags) post_values['tags'] = ', '.join(all_tags) form = ForumForm(post_values) link = form.save() return HttpResponseRedirect(reverse('read_forum', args=[link.id])) return render(request, 'create_forum.html', vars )
def create_article(request, tags=None): """ Create article """ vars = { 'form':ArticleForm( user=request.user ), 'tagform' : DefaultArticleTagsForm(), 'categories':defaultArticleCategories.objects.all(), 'moderator_categories': ModeratorArticleCategories.objects.all(), } if tags != None: initial_tags = tags.split(',') vars['tagform'] = DefaultForumTagsForm(initial={'default_tags': initial_tags }) if request.method == 'POST': form = ArticleForm(request.POST, user=request.user) tagform = DefaultArticleTagsForm(request.POST) vars['form'] = form vars['tagform'] = tagform if form.is_valid() & tagform.is_valid(): default_tags = tagform.cleaned_data['default_tags'] user_tags = form.cleaned_data['tags'] user_sub_tags = form.cleaned_data['user_tags'] # Combine and remove doubles all_tags = list(set(default_tags + user_tags + user_sub_tags)) # Check if a default tag is present if len(default_tags) == 0: messages.add_message(request, messages.INFO, 'Du måste välja minst en huvudkategori!') return render(request,'create_article.html', {'form': form,'tagform':tagform, 'categories':vars['categories']}) # Check maximum allowed tags if len( all_tags ) > 5: messages.add_message(request, messages.INFO, 'Du kan inte välja fler än fem kategorier!') return render(request, 'create_article.html', {'form': form,'tagform':tagform, 'categories':vars['categories']}) post_values = request.POST.copy() all_tags = validate_internal_tags(request, all_tags) post_values['tags'] = ', '.join(all_tags) try: if post_values['allow_comments'] == "on": post_values['allow_comments'] = True except: post_values['allow_comments'] = False form = ArticleForm(post_values, user=request.user) link = form.save() return HttpResponseRedirect(reverse('read_article', args=[link.id])) return render(request,'create_article.html', vars)
def create_thread(request, tags=None): """ Create a forum thread. """ threads = Thread.active.all() form = ThreadForm() tagform = DefaultForumTagsForm() categories = defaultCategories.objects.all() if tags != None: initial_tags = tags.split(',') tagform = DefaultForumTagsForm(initial={'default_tags': initial_tags }) if request.method == 'POST': form = ThreadForm(request.POST) tagform = DefaultForumTagsForm(request.POST) if form.is_valid() & tagform.is_valid(): default_tags = tagform.cleaned_data['default_tags'] user_tags = form.cleaned_data['tags'] # Filter list from empty strings cleaned_tags = filter(None, user_tags) # Combine and remove doubles all_tags = list(set(default_tags + cleaned_tags)) # Check if a default tag is present if len(default_tags) == 0: messages.add_message(request, messages.INFO, 'Du måste välja minst en huvudkategori!') return render(request, 'create_thread.html', {"threads": threads, 'form': form,'tagform':tagform, 'categories':categories}) # Check maximum allowed tags if len( all_tags ) > 5: messages.add_message(request, messages.INFO, 'Du kan inte välja fler än fem kategorier!') return render(request, 'create_thread.html', {"threads": threads, 'form': form,'tagform':tagform, 'categories':categories}) # Validate INTERNAL tags all_tags = validate_internal_tags(request, all_tags) # Create the thread thread = Thread.objects.create( created_by = request.user, title = form.cleaned_data['title'] ) # Apply tags on thread for tag in all_tags: thread.tags.add(tag) # Create the initial post ForumPost.objects.create( created_by=request.user, collection=thread, body=form.cleaned_data['body'] ) return HttpResponseRedirect(thread.get_absolute_url()) return render(request, 'create_thread.html', {"threads": threads, 'form': form,'tagform':tagform, 'categories':categories})