Пример #1
0
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 )
Пример #2
0
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)
Пример #3
0
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})