Beispiel #1
0
def subscribe_forum(request, forum_id):
    """
    Subscribe to the specified forum for new topics notification
    """
    
    forum = get_object_or_404(Forum, id=forum_id)
    
    profile = request.user.get_profile()
    do_subscribe(profile, forum)
    
    return HttpResponseRedirect(request.META.get('HTTP_REFERER', '/'))
Beispiel #2
0
def subscribe_topic(request, topic_id):
    """
    Subscribe to the specified topic for new posts notification
    """
    
    topic = get_object_or_404(Topic, id=topic_id)
    
    profile = request.user.get_profile()
    do_subscribe(profile, topic)
    
    return HttpResponseRedirect(request.META.get('HTTP_REFERER', '/'))
Beispiel #3
0
def topic_add(request, forum_id):
    """
    Adds a new topic
    """
    
    forum = get_object_or_404(Forum, id=forum_id)
    group, perms = get_group_perms_or_404(request.user, forum)
    
    if perms.can_add_topic():
        PollFormset = inlineformset_factory(Topic, Poll, fk_name='topic', form=PollForm, max_num=10, extra=10)
        
        if request.method == 'POST':
            topic_form = TopicForm(request.POST, prefix='topic_form')
            post_form = PostForm(request.POST, prefix='post_form')
            poll_formset = PollFormset(request.POST)
            
            if topic_form.is_valid() and post_form.is_valid() and poll_formset.is_valid():
                profile = request.user.get_profile()
                ip_address = request.META.get('REMOTE_ADDR', None)
                
                topic = topic_form.save(commit=False)
                topic.forum = forum
                topic.save()
                
                post = post_form.save(commit=False)
                post.topic = topic
                post.profile = profile
                post.ip_address = ip_address
                post.save()
                
                topic.first_post = post
                topic.save()
                
                # Save poll
                poll_formset.instance = topic
                for form in poll_formset.forms:
                    if hasattr(form, 'cleaned_data') and form.cleaned_data:
                        form.cleaned_data['topic'] = topic
                poll_formset.save()
                
                # Save poll choices
                for form in poll_formset.forms:
                    form.save_choices()
                
                # Inform subscribed users about new topic
                inform_new_topic(topic)
                
                # Auto subscribe user to his topic
                do_subscribe(profile, topic)
                
                return HttpResponseRedirect(topic.get_absolute_url())
        else:
            topic_form = TopicForm(prefix='topic_form')
            post_form = PostForm(prefix='post_form')
            poll_formset = PollFormset()
    else:
        raise Http404
    
    return {
        'forum': forum,
        'topic_form': topic_form,
        'post_form': post_form,
        'poll_formset': poll_formset,
    }