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_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)
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