def failure(self, request, form, object, kwargs={}): """ Handles case if form is incorrect. """ if request.is_ajax(): return json_response({ 'errors': dict([(k, unicode(v)) for k,v in form.errors.items()]), 'success': False, 'kwargs': kwargs }) return self.render(request, 'failure', { 'parent_comment': self.parent_comment, 'form': form, 'content_object': object, 'kwargs': kwargs, })
def after_save(self, request, form, comment, kwargs={}): """ Handles case after comment save if form filled correctly. """ obj = getattr(comment, self.plugin.content_object_field) if request.is_ajax(): return json_response({ 'success': True, 'parent_id': getattr(self.parent_comment, 'pk', None), 'tree_id': comment.tree_id, 'id': comment.pk, 'comment': self.render_to_string(request, 'item', { 'comment': comment, 'kwargs': kwargs }), }) return redirect(obj)
def post(self, request, *args, **kwargs): # @TODO: check? #if not request.is_ajax(): # return HttpResponse('XMLHttpRequest required', status=400) if not request.user.is_authenticated(): return HttpResponse('Only for authenticated users', status=403) object = self.get_content_object(request, self.kwargs) # Log reading comments for given object by current user. readed, created = LastReaded.objects.get_or_create( content_object = object, user = request.user, ) last_readed = readed.date_readed if not created: readed.date_readed = datetime.datetime.now() readed.save() # Gets the comments that was written after current user last time # has read comments to given object queryset = self.plugin.get_queryset(request, object) queryset = queryset.filter(date_created__gt=last_readed) return json_response({ 'last_readed': unicode(last_readed), 'new_comments': [{ 'html': self.render_to_string(request, 'item', {'comment':c}), 'parent': c.parent_comment_id, 'id': c.pk, 'tree_id': c.tree_id, } for c in queryset], })