Ejemplo n.º 1
0
def show_skyscraper_ads_on_page(context):
    request = context['request']

    if not show_ads(request.user):
        return False

    country = utils.get_client_country_code(request)
    if country.lower() not in ('us', 'ca'):
        return False

    is_anon = not context['request'].user.is_authenticated
    image_owner_is_ultimate = False

    if context.template_name.startswith('registration/'):
        return False
    elif context.template_name == 'image/detail.html':
        for data in context.dicts:
            if 'image' in data:
                image_owner_is_ultimate = is_any_ultimate(data['image'].user)
    elif context.template_name in (
            'user/profile.html',
            'user_collections_list.html',
            'user_collections_detail.html',
            'user/bookmarks.html',
            'user/liked.html',
            'user/following.html',
            'user/followers.html',
            'user/plots.html',
    ):
        for data in context.dicts:
            if 'requested_user' in data:
                image_owner_is_ultimate = is_any_ultimate(data['requested_user'])

    return (is_anon or is_free(request.user)) and not image_owner_is_ultimate and \
           (context["COOKIELAW_ACCEPTED"] is not False or not show_cookie_banner(context.request))
Ejemplo n.º 2
0
def show_ads_on_page(context):
    request = context['request']

    if not show_ads(request.user):
        return False

    if context.template_name == 'image/detail.html':
        for data in context.dicts:
            if 'image' in data:
                return not is_any_ultimate(data['image'].user)
    elif context.template_name in (
            'user/profile.html',
            'user_collections_list.html',
            'user_collections_detail.html',
            'user/bookmarks.html',
            'user/liked.html',
            'user/following.html',
            'user/followers.html',
            'user/plots.html',
    ):
        for data in context.dicts:
            if 'requested_user' in data:
                return not is_any_ultimate(data['requested_user'])
    elif context.template_name == 'index/root.html':
        return show_ads(request.user) and is_free(request.user)
    elif context.template_name in (
            'search/search.html',
            'top_picks.html',
            'astrobin_apps_iotd/iotd_archive.html'
    ):
        return not request.user.is_authenticated or is_free(request.user)

    return False
Ejemplo n.º 3
0
def show_secondary_ad_on_page(context):
    request = context['request']

    if not show_ads(request.user):
        return False

    country = utils.get_client_country_code(request)
    if country.lower() not in ('us', 'ca'):
        return False

    if context.template_name == 'image/detail.html':
        for data in context.dicts:
            if 'image' in data:
                return (not request.user.is_authenticated or is_free(request.user)) and \
                       not is_any_ultimate(data['image'].user)
    elif context.template_name in (
            'user/profile.html',
            'user_collections_list.html',
            'user_collections_detail.html',
            'user/bookmarks.html',
            'user/liked.html',
            'user/following.html',
            'user/followers.html',
            'user/plots.html',
    ):
        for data in context.dicts:
            if 'requested_user' in data:
                return (not request.user.is_authenticated or is_free(request.user)) and \
                       not is_any_ultimate(data['requested_user'])

    return False
Ejemplo n.º 4
0
def show_adsense_ads(context):
    if not settings.ADSENSE_ENABLED:
        return False

    is_anon = not context['request'].user.is_authenticated()
    image_owner_is_ultimate = False

    if context.template_name.startswith('registration/'):
        return False
    elif context.template_name == 'image/detail.html':
        for data in context.dicts:
            if 'image' in data:
                image_owner_is_ultimate = is_any_ultimate(data['image'].user)
    elif context.template_name in (
            'user/profile.html',
            'user_collections_list.html',
            'user_collections_detail.html',
            'user/bookmarks.html',
            'user/liked.html',
            'user/following.html',
            'user/followers.html',
            'user/plots.html',
    ):
        for data in context.dicts:
            if 'requested_user' in data:
                image_owner_is_ultimate = is_any_ultimate(data['requested_user'])

    return is_anon and not image_owner_is_ultimate and \
           (context["COOKIELAW_ACCEPTED"] is not False or not show_cookie_banner(context.request)) and \
           not context['request'].get_host().startswith("localhost")
Ejemplo n.º 5
0
def image_post_delete(sender, instance, **kwargs):
    def decrease_counter(user):
        user.userprofile.premium_counter -= 1
        with transaction.atomic():
            user.userprofile.save(keep_deleted=True)

    ImageIndex().remove_object(instance)

    try:
        if instance.uploaded > datetime.datetime.now() - relativedelta(
                hours=24):
            decrease_counter(instance.user)
        elif is_lite(instance.user):
            usersub = premium_get_valid_usersubscription(instance.user)
            usersub_created = usersub.expires - relativedelta(years=1)
            dt = instance.uploaded.date() - usersub_created
            if dt.days >= 0:
                decrease_counter(instance.user)
        elif is_lite_2020(instance.user) or \
                is_premium(instance.user) or \
                is_premium_2020(instance.user) or \
                is_any_ultimate(instance.user):
            decrease_counter(instance.user)
    except IntegrityError:
        # Possibly the user is being deleted
        pass
    def has_object_permission(self, request, view, obj: ImageRevision) -> bool:
        if request.method in permissions.SAFE_METHODS:
            return True

        if is_any_ultimate(request.user) or is_premium(
                request.user) or is_lite(request.user):
            return True

        revision_count: int = obj.image.revisions.count()

        if is_premium_2020(request.user):
            return revision_count < settings.PREMIUM_MAX_REVISIONS_PREMIUM_2020

        if is_lite_2020(request.user):
            return revision_count < settings.PREMIUM_MAX_REVISIONS_LITE_2020

        return revision_count < settings.PREMIUM_MAX_REVISIONS_FREE_2020
Ejemplo n.º 7
0
    def post(self, request, *args, **kwargs):
        log.info("CkEditorUpload: user %d - requested file upload" % request.user.pk)

        if settings.READONLY_MODE:
            return self.upload_error(
                request,
                _("AstroBin is currently in read-only mode, because of server maintenance. Please try again soon!"))

        MB = 1024 * 1024

        if is_any_lite(request.user):
            max_size = MB * 5
        elif is_any_premium(request.user):
            max_size = MB * 10
        elif is_any_ultimate(request.user):
            max_size = MB * 20
        else:
            max_size = MB * 1

        form = CkEditorUploadForm(request.POST, request.FILES)

        if not form.is_valid():
            return self.upload_error(request)

        uploaded_file = request.FILES['upload']
        if uploaded_file.size > max_size:
            return self.upload_error(
                request, _("The file is too large. Maximum size: %d MB." % (max_size / MB)))

        upload = form.save(commit=False)
        upload.user = request.user
        upload.filename = uploaded_file.name
        upload.filesize = uploaded_file.size
        upload.save(keep_deleted=True)

        return self.render_json_response({
            "uploaded": 1,
            "fileName": upload.filename,
            "url": upload.upload.url,
        })
Ejemplo n.º 8
0
    def has_object_permission(self, request, view, obj):
        if request.method in permissions.SAFE_METHODS:
            return True

        return is_any_ultimate(request.user) or is_premium(request.user)