Exemplo n.º 1
0
def like_toggle(request, content_type_id, object_id):
    content_type = get_object_or_404(ContentType, pk=content_type_id)

    if not _allowed(content_type.model_class()):
        return HttpResponseForbidden()

    like, created = Like.objects.get_or_create(
        sender=request.user, receiver_content_type=content_type, receiver_object_id=object_id
    )

    if created:
        object_liked.send(sender=Like, like=like, request=request)
    else:
        like.delete()
        object_unliked.send(sender=Like, object=content_type.get_object_for_this_type(pk=object_id), request=request)

    if request.is_ajax():
        return HttpResponse(
            json.dumps(
                {
                    "likes_count": Like.objects.filter(
                        receiver_content_type=content_type, receiver_object_id=object_id
                    ).count(),
                    "liked": created,
                }
            ),
            mimetype="application/json",
        )

    return redirect(request.META["HTTP_REFERER"])
Exemplo n.º 2
0
def likes(user, *models):
    content_types = []
    model_list = models or LIKABLE_MODELS.keys()
    for model in model_list:
        if not _allowed(model):
            continue
        app, model = model.split(".")
        content_types.append(
            ContentType.objects.get(app_label=app, model__iexact=model)
        )
    return Like.objects.filter(sender=user, receiver_content_type__in=content_types)
Exemplo n.º 3
0
def likes(user, *models):
    content_types = []
    model_list = models or LIKABLE_MODELS.keys()
    for model in model_list:
        if not _allowed(model):
            continue
        app, model = model.split(".")
        content_types.append(
            ContentType.objects.get(app_label=app, model__iexact=model))
    return Like.objects.filter(sender=user,
                               receiver_content_type__in=content_types)
Exemplo n.º 4
0
    def render(self, context):
        user = self.user.resolve(context)
        content_types = []

        for raw_model_name in self.model_list:
            try:
                model_name = raw_model_name.resolve(context)
            except template.VariableDoesNotExist:
                continue

            if not _allowed(model_name):
                continue

            app, model = model_name.split(".")
            content_type = ContentType.objects.get(app_label=app,
                                                   model__iexact=model)
            content_types.append(content_type)

        context[self.varname] = Like.objects.filter(
            sender=user, receiver_content_type__in=content_types)
        return ""
Exemplo n.º 5
0
    def render(self, context):
        user = self.user.resolve(context)
        content_types = []

        for raw_model_name in self.model_list:
            try:
                model_name = raw_model_name.resolve(context)
            except template.VariableDoesNotExist:
                continue

            if not _allowed(model_name):
                continue

            app, model = model_name.split(".")
            content_type = ContentType.objects.get(app_label=app, model__iexact=model)
            content_types.append(content_type)

        context[self.varname] = Like.objects.filter(
            sender=user,
            receiver_content_type__in=content_types
        )
        return ""
Exemplo n.º 6
0
 def is_allowed(self, obj):
     return _allowed(obj)
Exemplo n.º 7
0
 def is_allowed(self, obj):
     return _allowed(obj)