def update(self, request, thread_pk, pk=None): thread = self.get_thread(request, thread_pk).unwrap() post = self.get_post(request, thread, pk).unwrap() allow_edit_post(request.user, post) posting = PostingEndpoint( request, PostingEndpoint.EDIT, thread=thread, post=post, ) if posting.is_valid(): post_edits = post.edits posting.save() post.is_read = True post.is_new = False post.edits = post_edits + 1 if post.poster: make_users_status_aware(request.user, [post.poster]) return Response( PostSerializer(post, context={ 'user': request.user }).data) else: return Response(posting.errors, status=400)
def post_editor(self, request, thread_pk, pk=None): thread = self.get_thread(request, thread_pk) post = self.get_post(request, thread, pk).unwrap() allow_edit_post(request.user, post) attachments = [] for attachment in post.attachment_set.order_by('-id'): add_acl(request.user, attachment) attachments.append(attachment) attachments_json = AttachmentSerializer(attachments, many=True, context={ 'user': request.user }).data return Response({ 'id': post.pk, 'api': post.get_api_url(), 'post': post.original, 'attachments': attachments_json, 'can_protect': bool(thread.category.acl['can_protect_posts']), 'is_protected': post.is_protected, 'poster': post.poster_name, })
def update(self, request, thread_pk, pk=None): thread = self.get_thread(request, thread_pk).unwrap() post = self.get_post(request, thread, pk).unwrap() allow_edit_post(request.user, post) posting = PostingEndpoint( request, PostingEndpoint.EDIT, thread=thread, post=post, ) if posting.is_valid(): post_edits = post.edits posting.save() post.is_read = True post.is_new = False post.edits = post_edits + 1 if post.poster: make_users_status_aware(request.user, [post.poster]) return Response(PostSerializer(post, context={'user': request.user}).data) else: return Response(posting.errors, status=400)
def edits(self, request, thread_pk, pk=None): if request.method == 'GET': thread = self.get_thread(request, thread_pk) post = self.get_post(request, thread, pk).unwrap() return get_edit_endpoint(request, post) if request.method == 'POST': with transaction.atomic(): thread = self.get_thread(request, thread_pk) post = self.get_post(request, thread, pk).unwrap() allow_edit_post(request.user, post) return revert_post_endpoint(request, post)
def post_editor(self, request, thread_pk, pk=None): thread = self.get_thread(request, thread_pk) post = self.get_post(request, thread, pk).unwrap() allow_edit_post(request.user, post) attachments = [] for attachment in post.attachment_set.order_by('-id'): add_acl(request.user, attachment) attachments.append(attachment) attachments_json = AttachmentSerializer( attachments, many=True, context={'user': request.user} ).data return Response({ 'id': post.pk, 'api': post.get_api_url(), 'post': post.original, 'attachments': attachments_json, 'can_protect': bool(thread.category.acl['can_protect_posts']), 'is_protected': post.is_protected, 'poster': post.poster_name, })
def allow_edit(self, user, post): allow_edit_post(user, post)