Exemplo n.º 1
0
def subject(request, subject_id):
	try:
		subject = Subject.objects.get(id=subject_id)
		context = {'pagetitle': subject.title, 'subject': subject}

		if request.method == 'POST':
			form = AddPostForm(request.POST)

			if form.is_valid():
				profile = Profile.objects.get(user=request.user)
				post_id = request.POST['postId']
				title = form.cleaned_data['title']				
				if len(title) == 0:
					title = subject.title
				content = form.cleaned_data['content']

				if post_id == -1:
					post = Post.objects.create_post(subject, profile, title, content)
				else:
					post = Post.objects.filter(id=post_id, profile=profile)[0]
					post.title = title
					post.content = content
					post.save()
				
				logger.info(post.title + ' created')

				form = AddPostForm()


			else:
				error_list = []

				for e in dict(form.errors):
					error_list.append('Le champ ' + form[e].label + ' a une erreur : ' + form.errors[e].as_text()[2:])
				context['error'] = '\n'.join(error_list)

		else:
			
			if request.user.is_authenticated():
				profile = Profile.objects.get(user=request.user)
				UnreadPost.objects.filter(profile=profile, subject=subject).delete()
				logger.debug('UnreadPosts of ' + subject.title + ' deleted for ' + profile.pseudo)

			form = AddPostForm()

		posts = Post.objects.filter(subject=subject)
		posts_dtos = [PostDto(post) for post in posts]
		context['posts'] = posts_dtos
		context['form'] = form

		return myRender(request, "subject.html", context)

	except ObjectDoesNotExist:
		return redirect('forum')
Exemplo n.º 2
0
def add_post(request, topic_id):
    topic = get_object_or_404(Topic, pk=topic_id)
    profile = get_object_or_404(UserProfile, pk=request.user.id)
    posts = topic.posts.all().select_related()
    #for i in posts:
        # This will truncates the description if it is greater than 100 characters and adds some dots
        #i.description = (i.description[:300] + " ....") if len(i.description) > 300 else i.description
        #i.description = i.description
    if request.method == 'POST':
        form=AddPostForm(request.POST)
        if form.is_valid():
            profile.post_count+=1
            profile.save()
            data=form.save(commit=False)
            data.user=request.user
            data.topic=topic
            data.save()
            body = '<span style="color:blue;">%s</span> posted in <span style="color:red;">%s</span> under <span style="color:green;">%s</span>' %(request.user.first_name,data.topic.title,data.topic.forum.title)
            link = '/forum/topic/%d/' %(data.topic.id)
            notif = Notification(notif_body=body,link=link)
            notif.save()
            if data.topic.forum.department == 'public':
                notif.is_public = True
            elif data.topic.forum.department == 'coregroup':
                print '-------------------'
                print 'coregroup'
                print '-------------------'
                for user in Group.objects.get(name='Core').user_set.all():
                    notif.receive_users.add(user)
            else:
                notif.receive_depts.add(Department.objects.get(name=data.topic.forum.department))
            notif.save()
            print notif.receive_depts.all()
            topic.updated=datetime.datetime.now()
            topic.post_count+=1
            topic.last_post=data
            topic.save()
            print topic.forum.pk
            forum = get_object_or_404(Forum, pk=topic.forum.pk)
            print forum
            forum.post_count+=1
            forum.last_post=data
            forum.save()
            print data.pk
            return redirect('forum.views.show_topic', topic_id = topic.pk)
        else:
            for error in form.errors:
                messages.warning(request, error)
    else:
        form=AddPostForm()
    return render(request, 'forum/add.html',{ 'form':form, 'topic': topic, 'post_count': topic.post_count, 'posts': posts, })
Exemplo n.º 3
0
def subject(request, subject_id):
    try:
        subject = Subject.objects.get(id=subject_id)
        context = {'pagetitle': subject.title, 'subject': subject}

        if request.method == 'POST':
            form = AddPostForm(request.POST)

            if form.is_valid():
                profile = Profile.objects.get(user=request.user)
                post_id = request.POST['postId']
                title = form.cleaned_data['title']
                if len(title) == 0:
                    title = subject.title
                content = form.cleaned_data['content']

                if post_id == -1:
                    post = Post.objects.create_post(subject, profile, title,
                                                    content)
                else:
                    post = Post.objects.filter(id=post_id, profile=profile)[0]
                    post.title = title
                    post.content = content
                    post.save()

                logger.info(post.title + ' created')

                form = AddPostForm()

            else:
                error_list = []

                for e in dict(form.errors):
                    error_list.append('Le champ ' + form[e].label +
                                      ' a une erreur : ' +
                                      form.errors[e].as_text()[2:])
                context['error'] = '\n'.join(error_list)

        else:

            if request.user.is_authenticated():
                profile = Profile.objects.get(user=request.user)
                UnreadPost.objects.filter(profile=profile,
                                          subject=subject).delete()
                logger.debug('UnreadPosts of ' + subject.title +
                             ' deleted for ' + profile.pseudo)

            form = AddPostForm()

        posts = Post.objects.filter(subject=subject)
        posts_dtos = [PostDto(post) for post in posts]
        context['posts'] = posts_dtos
        context['form'] = form

        return myRender(request, "subject.html", context)

    except ObjectDoesNotExist:
        return redirect('forum')