예제 #1
0
    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,
        })
예제 #2
0
    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)
예제 #3
0
    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],
        })