def delete_post_ctx(request, post_id): post = get_object_or_404(Post, pk=post_id) last_post = post.topic.posts.order_by('-created')[0] allowed = False if pybb_moderated_by(post, request.user) or \ (post.user == request.user and post == last_post): allowed = True if not allowed: return HttpResponseRedirect(post.get_absolute_url()) if request.method == 'POST': topic = post.topic forum = post.topic.forum post.delete() try: Topic.objects.get(pk=topic.id) except Topic.DoesNotExist: return HttpResponseRedirect(forum.get_absolute_url()) else: return HttpResponseRedirect(topic.get_absolute_url()) else: return { 'post': post, }
def close_topic(request, topic_id): topic = get_object_or_404(Topic, pk=topic_id) if pybb_moderated_by(topic, request.user): if not topic.closed: topic.closed = True topic.save() return HttpResponseRedirect(topic.get_absolute_url())
def unstick_topic(request, topic_id): topic = get_object_or_404(Topic, pk=topic_id) if pybb_moderated_by(topic, request.user): if topic.sticky: topic.sticky = False topic.save() return HttpResponseRedirect(topic.get_absolute_url())
def show_forum_ctx(request, forum_id): forum = get_object_or_404(Forum, pk=forum_id) if forum.category.internal and not allowed_for(request.user): raise Http404 user_is_mod = pybb_moderated_by(forum, request.user) topics = forum.topics.order_by('-sticky', '-updated').select_related() return { 'forum': forum, 'topics': topics, 'page_size': pybb_settings.FORUM_PAGE_SIZE, 'user_is_mod': user_is_mod, }
def show_topic_ctx(request, topic_id): """View of topic posts including a form to add a Post.""" context = {} try: topic = Topic.objects.select_related().get(pk=topic_id) context.update({'topic': topic}) except Topic.DoesNotExist: raise Http404() if topic.forum.category.internal and not allowed_for(request.user): raise Http404 topic.views += 1 topic.save() if request.user.is_authenticated: topic.update_read(request.user) last_post = topic.posts.order_by('-created')[0] context.update({'last_post': last_post}) initial = {} user_is_mod = False if request.user.is_authenticated: initial = {'markup': 'markdown'} form = AddPostForm( topic=topic, initial=initial, user=request.user, ) context.update({'form': form}) user_is_mod = pybb_moderated_by(topic, request.user) context.update({'user_is_mod': user_is_mod}) subscribed = (request.user.is_authenticated and request.user in topic.subscribers.all()) context.update({'subscribed': subscribed}) is_spam = False if topic.is_hidden: is_spam = topic.posts.first().is_spam() context.update({'is_spam': is_spam}) if user_is_mod: posts = topic.posts.select_related() else: posts = topic.posts.exclude(hidden=True).select_related() context.update({'posts': posts}) # TODO: fetch profiles # profiles = Profile.objects.filter(user__pk__in= # set(x.user.id for x in page.object_list)) # profiles = dict((x.user_id, x) for x in profiles) # for post in page.object_list: # post.user.pybb_profile = profiles[post.user.id] if pybb_settings.PYBB_ATTACHMENT_ENABLE: load_related(posts, Attachment.objects.all(), 'post') context.update({ 'page_size': pybb_settings.TOPIC_PAGE_SIZE, 'form_url': reverse('pybb_add_post', args=[topic.id]), 'wikipage': settings.ATTACHMENT_DESCR_PAGE, }) return context