Exemple #1
0
    def get(self, request, *args, **kwargs):
        """Flag a particular comment."""

        try:
            models.CommentFlag.objects.report(
                request.user,
                self.kwargs['pk'],
            )
        except IntegrityError:
            if request.is_ajax():
                return core_utils.respond_with_json({
                    'success': False,
                    'reason': 'You have already reported this comment'
                })

            messages.error(request, 'You have already reported this comment')
            return redirect(request.META['HTTP_REFERER'])

        if request.is_ajax():
            return core_utils.respond_with_json({
                'success': True
            })

        messages.success(request, 'This comment has been reported')
        return redirect(request.META['HTTP_REFERER'])
Exemple #2
0
    def ajax_form_invalid(self, form):
        """Redirect if form invalid."""

        return core_utils.respond_with_json({
            'success': False,
            'reason': str(form.errors)
        })
Exemple #3
0
    def form_valid(self, form):
        """
        If the form is valid and no duplicate votes have
        been cast, save the form.

        """
        cookie_name = 'poll_%s_voted' % self.kwargs['pk']
        form.save(self.request, cookie_name, self.kwargs['pk'])

        if self.request.is_ajax():
            response = core_utils.respond_with_json({
                'success': True,
                'results': render_to_string(
                    self.ajax_template_name, RequestContext(self.request, {
                        'object_list': self.poll.answers\
                                .get_poll_percentages()
                    })
                )
            })
        else:
            response = self.render_to_response(
                self.get_context_data(
                    object_list=self.poll.answers.get_poll_percentages()
                )
            )
        response.set_cookie(cookie_name, True)

        return response
Exemple #4
0
    def form_valid(self, form):
        """Validate and save form."""
        image_ids = form.save()

        return core_utils.respond_with_json({
            'success': True,
            'image_ids': image_ids
        })
Exemple #5
0
    def form_valid(self, form):
        """Save new tags."""

        form.save(self.request.POST.getlist('tags', []))

        return core_utils.respond_with_json({
            'success': True
        })
Exemple #6
0
    def post(self, request, *args, **kwargs):
        slug = request.POST.get('slug')
        content = request.POST.get('content')

        content_block = get_object_or_404(models.ContentModel, slug=slug)
        content_block.content = content
        content_block.save()

        return utils.respond_with_json({'success': True})
Exemple #7
0
    def form_valid(self, form):
        """Ensure form is valid and return response."""

        obj = form.save(self.request)

        return core_utils.respond_with_json({
            'success': True,
            'message': 'You have been successfully \
                    subscribed to our newsletter'
        })
Exemple #8
0
    def form_invalid(self, form):
        """
        Return a list of errors of items that didn't
        pass validation.

        """
        return core_utils.respond_with_json({
            'success': False,
            'reason': str(form.errors)
        })
Exemple #9
0
    def ajax_form_valid(self, form):
        """Allow for ajax form posts and check if form is valid."""

        try:
            comment = form.save(self.request)
            num_comments = models.CommentModel.objects.permitted().count()

            return core_utils.respond_with_json({
                'success': True,
                'comment': render_to_string(
                    self.template_name,
                    RequestContext(self.request, {'comment': comment})
                ),
                'num_comments': num_comments
            })
        except exceptions.RapidCommentingError as e:
            return core_utils.respond_with_json({
                'success': False,
                'reason': e.value
            })
Exemple #10
0
    def post(self, request, *args, **kwargs):
        """Record the user removing their like."""

        try:
            throttle_key = _like(request, 'remove')
        except (exceptions.RapidLikingError,
                exceptions.UnauthorizedLikingError), e:
            return core_utils.respond_with_json({
                'success': False,
                'reason': str(e)
            })
Exemple #11
0
    def get(self, request, *args, **kwargs):
        """Get tags."""

        term = request.GET.get('term', '')

        return core_utils.respond_with_json(
            [tag.title for tag in models.Tag.objects\
                    .for_current_site()\
                    .filter(title__icontains=term)
            ]
        )
Exemple #12
0
    def dispatch(self, request, *args, **kwargs):
        """Handle request and return response."""

        if self.partial_template_name is None:
            raise ImproperlyConfigured(
                _("'AjaxMorePaginationMixin' requires "
                "'partial_template_name' attribute to be set.")
            )

        page = request.GET.get('page', None)

        if page is not None:
            if hasattr(self, 'get_object'):
                self.object = self.get_object()
            self.queryset = self.get_queryset()
            paginate_by = request.GET.get('paginate_by', self.paginate_by)
            paginator = Paginator(self.queryset, paginate_by)
            object_list= paginator.page(page)
            has_previous = object_list.has_previous()
            has_next = object_list.has_next()

            return core_utils.respond_with_json({
                'success': True,
                'content': render_to_string(
                    self.partial_template_name,
                    RequestContext(
                        request, {
                            'object_list': object_list
                        }
                    )
                ),
                'has_previous': has_previous,
                'has_next': has_next,
                'previous_page_number': object_list.previous_page_number() \
                        if has_previous else 0,
                'next_page_number': object_list.next_page_number() \
                        if has_next else 0,
                'page_number': object_list.number,
                'start_index': object_list.start_index(),
                'end_index': object_list.end_index()
            })

        return super(AjaxMorePaginationMixin, self)\
                .dispatch(request, *args, **kwargs)
Exemple #13
0
    def form_invalid(self, form):
        """Return to browser if unsuccessful."""

        return core_utils.respond_with_json({
            'success': False
        })
Exemple #14
0
        return response

    def post(self, request, *args, **kwargs):
        """Record what the user has liked."""

        try:
            throttle_key = _like(request, 'add')
        except (exceptions.RapidLikingError,
                exceptions.UnauthorizedLikingError), e:
            return core_utils.respond_with_json({
                'success': False,
                'reason': str(e)
            })

        response = core_utils.respond_with_json({
            'success': True
        })
        response.set_cookie(throttle_key, True)
        return response


class RemoveLike(core_mixins.DeterministicLoginRequiredMixin,
        generic_views.View):
    """Allow users to remove their likes."""

    def deterministic_function(self):
        """Determine if annonymous liking is allowed."""

        return settings.ANONYMOUS_LIKES_ALLOWED

    def get(self, request, *args, **kwargs):
Exemple #15
0
    def form_invalid(self, form):
        """Fail form validation and render form again."""

        return core_utils.respond_with_json({
            'success': False
        })