def open_close_topic(request, topic_id): topic = get_object_or_404(Topic, pk=topic_id) if forum_moderated_by(topic, request.user): topic.closed = not topic.closed topic.save() return HttpResponseRedirect(topic.get_absolute_url())
def move_topic(request): if 'topic_id' in request.GET: #if move only 1 topic topic_ids = [request.GET['topic_id']] else: topic_ids = request.POST.getlist('topic_id') first_topic = topic_ids[0] topic = get_object_or_404(Topic, pk=first_topic) from_forum = topic.forum if 'to_forum' in request.POST: to_forum_id = int(request.POST['to_forum']) to_forum = get_object_or_404(Forum, pk=to_forum_id) for topic_id in topic_ids: topic = get_object_or_404(Topic, pk=topic_id) if topic.forum != to_forum: if forum_moderated_by(topic, request.user): topic.forum = to_forum topic.save() #TODO: not DRY try: last_post = Post.objects.filter(topic__forum=from_forum).latest() except Post.DoesNotExist: last_post = None from_forum.last_post = last_post from_forum.topic_count = from_forum.topics.count() from_forum.post_count = from_forum.posts.count() from_forum.save() return HttpResponseRedirect(to_forum.get_absolute_url()) return {'categories': Category.objects.all(), 'topic_ids': topic_ids, 'exclude_forum': from_forum, }
def stick_unstick_topic(request, topic_id): topic = get_object_or_404(Topic, pk=topic_id) if forum_moderated_by(topic, request.user): topic.sticky = not topic.sticky topic.save() return HttpResponseRedirect(topic.get_absolute_url())
def open_close_topic(request, topic_id): topic = get_object_or_404(Topic, pk=topic_id) if forum_moderated_by(topic, request.user): topic.closed = not topic.closed topic.save() return HttpResponseRedirect(topic.get_absolute_url())
def stick_unstick_topic(request, topic_id): topic = get_object_or_404(Topic, pk=topic_id) if forum_moderated_by(topic, request.user): topic.sticky = not topic.sticky topic.save() return HttpResponseRedirect(topic.get_absolute_url())
def move_topic(request): if 'topic_id' in request.GET: #if move only 1 topic topic_ids = [request.GET['topic_id']] else: topic_ids = request.POST.getlist('topic_id') first_topic = topic_ids[0] topic = get_object_or_404(Topic, pk=first_topic) from_forum = topic.forum if 'to_forum' in request.POST: to_forum_id = int(request.POST['to_forum']) to_forum = get_object_or_404(Forum, pk=to_forum_id) for topic_id in topic_ids: topic = get_object_or_404(Topic, pk=topic_id) if topic.forum != to_forum: if forum_moderated_by(topic, request.user): topic.forum = to_forum topic.save() #TODO: not DRY try: last_post = Post.objects.filter(topic__forum=from_forum).latest() except Post.DoesNotExist: last_post = None from_forum.last_post = last_post from_forum.topic_count = from_forum.topics.count() from_forum.post_count = from_forum.posts.count() from_forum.save() return HttpResponseRedirect(to_forum.get_absolute_url()) return { 'categories': Category.objects.all(), 'topic_ids': topic_ids, 'exclude_forum': from_forum, }
def delete_posts(request, topic_id): topic = Topic.objects.select_related().get(pk=topic_id) if forum_moderated_by(topic, request.user): deleted = False post_list = request.POST.getlist('post') for post_id in post_list: if not deleted: deleted = True delete_post(request, post_id) if deleted: return HttpResponseRedirect(topic.get_absolute_url()) last_post = topic.posts.latest() if request.user.is_authenticated(): topic.update_read(request.user) posts = topic.posts.all().select_related() profiles = Profile.objects.filter(user__pk__in=set(x.user.id for x in posts)) profiles = dict((x.user_id, x) for x in profiles) for post in posts: post.user.forum_profile = profiles[post.user.id] initial = {} if request.user.is_authenticated(): initial = {'markup': request.user.forum_profile.markup} form = AddPostForm(topic=topic, initial=initial) moderator = request.user.is_superuser or\ request.user in topic.forum.moderators.all() if request.user.is_authenticated( ) and request.user in topic.subscribers.all(): subscribed = True else: subscribed = False return { 'topic': topic, 'last_post': last_post, 'form': form, 'moderator': moderator, 'subscribed': subscribed, 'paged_qs': posts, }
def delete_posts(request, topic_id): topic = Topic.objects.select_related().get(pk=topic_id) if forum_moderated_by(topic, request.user): deleted = False post_list = request.POST.getlist('post') for post_id in post_list: if not deleted: deleted = True delete_post(request, post_id) if deleted: return HttpResponseRedirect(topic.get_absolute_url()) last_post = topic.posts.latest() if request.user.is_authenticated(): topic.update_read(request.user) posts = topic.posts.all().select_related() profiles = Profile.objects.filter(user__pk__in=set(x.user.id for x in posts)) profiles = dict((x.user_id, x) for x in profiles) for post in posts: post.user.forum_profile = profiles[post.user.id] initial = {} if request.user.is_authenticated(): initial = {'markup': request.user.forum_profile.markup} form = AddPostForm(topic=topic, initial=initial) moderator = request.user.is_superuser or\ request.user in topic.forum.moderators.all() if request.user.is_authenticated() and request.user in topic.subscribers.all(): subscribed = True else: subscribed = False return { 'topic': topic, 'last_post': last_post, 'form': form, 'moderator': moderator, 'subscribed': subscribed, 'paged_qs': posts, }