Parcourir la source

Fix a subtle bug with dates: default argument of functions are evaluated when the function is declared, not when it is called...

Baptiste Jonglez il y a 10 ans
Parent
commit
3da3f9940e
2 fichiers modifiés avec 9 ajouts et 3 suppressions
  1. 3 1
      coin/billing/create_subscriptions_invoices.py
  2. 6 2
      coin/members/models.py

+ 3 - 1
coin/billing/create_subscriptions_invoices.py

@@ -13,11 +13,13 @@ from coin.members.models import Member
 from coin.billing.models import Invoice, InvoiceDetail
 from coin.billing.models import Invoice, InvoiceDetail
 
 
 
 
-def create_all_members_invoices_for_a_period(date=datetime.date.today()):
+def create_all_members_invoices_for_a_period(date=None):
     """
     """
     Pour chaque membre ayant au moins un abonnement actif, génère les factures
     Pour chaque membre ayant au moins un abonnement actif, génère les factures
     en prenant la date comme premier mois de la période de facturation
     en prenant la date comme premier mois de la période de facturation
     """
     """
+    if date is None:
+        date = datetime.date.today()
     members = Member.objects.filter(
     members = Member.objects.filter(
         Q(offersubscription__resign_date__isnull=True) |
         Q(offersubscription__resign_date__isnull=True) |
         Q(offersubscription__resign_date__gte=date))
         Q(offersubscription__resign_date__gte=date))

+ 6 - 2
coin/members/models.py

@@ -129,19 +129,23 @@ class Member(CoinLdapSyncMixin, AbstractUser):
         super(Member, self).set_password(new_password, *args, **kwargs)
         super(Member, self).set_password(new_password, *args, **kwargs)
         self._password_ldap = utils.ldap_hash(new_password)
         self._password_ldap = utils.ldap_hash(new_password)
 
 
-    def get_active_subscriptions(self, date=datetime.date.today()):
+    def get_active_subscriptions(self, date=None):
         """
         """
         Return list of OfferSubscription which are active today
         Return list of OfferSubscription which are active today
         """
         """
+        if date is None:
+            date = datetime.date.today()
         return OfferSubscription.objects.filter(
         return OfferSubscription.objects.filter(
             Q(member__exact=self.pk),
             Q(member__exact=self.pk),
             Q(subscription_date__lte=date),
             Q(subscription_date__lte=date),
             Q(resign_date__isnull=True) | Q(resign_date__gte=date))
             Q(resign_date__isnull=True) | Q(resign_date__gte=date))
 
 
-    def get_inactive_subscriptions(self, date=datetime.date.today()):
+    def get_inactive_subscriptions(self, date=None):
         """
         """
         Return list of OfferSubscription which are not active today
         Return list of OfferSubscription which are not active today
         """
         """
+        if date is None:
+            date = datetime.date.today()
         return OfferSubscription.objects.filter(
         return OfferSubscription.objects.filter(
             Q(member__exact=self.pk),
             Q(member__exact=self.pk),
             Q(subscription_date__gt=date) |
             Q(subscription_date__gt=date) |