diff --git a/users/models.py b/users/models.py index f35149dc..0253cb97 100755 --- a/users/models.py +++ b/users/models.py @@ -931,10 +931,14 @@ class User( """ if self.state == self.STATE_NOT_YET_ACTIVE: - if self.facture_set.filter(valid=True).filter( - ~(Q(vente__duration_membership__isnull=True) | Q(vente__duration_membership=0)))\ - .filter(~(Q(vente__duration_days_membership__isnull=True) | Q(vente__duration_days_membership=0)) - ).exists() or OptionalUser.get_cached_value("all_users_active"): + # Look for ventes with non 0 and non null subscription duration in the invoices set + not_null = self.facture_set.filter(valid=True).exclude(Q(vente__duration_membership__isnull=True)).exists() + not_zero = self.facture_set.filter(valid=True).exclude(Q(vente__duration_membership=0)).exists() + days_not_null = self.facture_set.filter(valid=True).exclude(Q(vente__duration_days_membership__isnull=True)).exists() + days_not_zero = self.facture_set.filter(valid=True).exclude(Q(vente__duration_days_membership=0)).exists() + # if any vente is found, activate the user + if(not_null or not_zero or days_not_null or days_not_zero \ + or OptionalUser.get_cached_value("all_users_active")): self.state = self.STATE_ACTIVE self.save() if self.state == self.STATE_ARCHIVE or self.state == self.STATE_FULL_ARCHIVE: