Levels
This commit is contained in:
@@ -90,18 +90,22 @@ def refresh_billing(account):
|
||||
def apply_groups(account):
|
||||
now = timezone.now()
|
||||
desired = set()
|
||||
membership_level = 0
|
||||
for sub in Subscription.objects.filter(account=account, status__in=["active", "past_due"], paid_until__gt=now):
|
||||
tier = settings.MEMBERSHIP_TIERS.get(sub.tier)
|
||||
if tier:
|
||||
desired.add(tier["group_dn"])
|
||||
membership_level = max(membership_level, tier.get("level", 0))
|
||||
for invoice in CryptoInvoice.objects.filter(account=account, status__in=["PAID", "OVERPAID"], access_start__lte=now, access_end__gt=now):
|
||||
tier = settings.MEMBERSHIP_TIERS.get(invoice.tier)
|
||||
if tier:
|
||||
desired.add(tier["group_dn"])
|
||||
membership_level = max(membership_level, tier.get("level", 0))
|
||||
managed = set(ManagedGroup.objects.filter(account=account).values_list("dn", flat=True))
|
||||
account.ldap_dn = reconcile_groups(account, desired, managed) if managed else account.ldap_dn
|
||||
account.last_ldap_sync = now
|
||||
account.save(update_fields=["ldap_dn", "last_ldap_sync"])
|
||||
account.membership_level = membership_level
|
||||
account.save(update_fields=["ldap_dn", "last_ldap_sync", "membership_level"])
|
||||
return len(desired)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user