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')
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, })