Example #1
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
Example #2
0
def has_access_to_premium_group_features(user):
    # type: (User) -> bool
    return is_lite(user) \
           or is_premium(user) \
           or is_lite_2020(user) \
           or is_premium_2020(user) \
           or is_ultimate_2020(user)
Example #3
0
def show_ads(user):
    if not settings.ADS_ENABLED:
        return False

    if is_donor(user) and not user.userprofile.allow_astronomy_ads:
        return False

    if is_lite(user) or is_premium(user):
        return False

    if (is_premium_2020(user) or is_ultimate_2020(user)) and not user.userprofile.allow_astronomy_ads:
        return False

    return True
    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