From e79bb014018c89f4e7b1daffffb6ff3d3e0b0a38 Mon Sep 17 00:00:00 2001 From: bashmak Date: Sat, 31 Mar 2018 11:58:20 +0300 Subject: [PATCH] Fix periodic pays --- abonapp/models.py | 5 +++-- cron.py | 13 ++++++++----- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/abonapp/models.py b/abonapp/models.py index 977beb2..f38eecb 100644 --- a/abonapp/models.py +++ b/abonapp/models.py @@ -426,11 +426,12 @@ class PeriodicPayForId(models.Model): next_pay = models.DateTimeField(_('Next time to pay')) account = models.ForeignKey(Abon, models.CASCADE, verbose_name=_('Account')) - def payment_for_service(self, author=None, comment=None): + def payment_for_service(self, author=None, now=None): """ Charge for the service and leave a log about it """ - now = timezone.now() + if now is None: + now = timezone.now() if self.next_pay < now: pp = self.periodic_pay amount = pp.calc_amount() diff --git a/cron.py b/cron.py index 6119957..70446bf 100755 --- a/cron.py +++ b/cron.py @@ -35,15 +35,18 @@ def main(): signals.pre_delete.connect(abontariff_pre_delete, sender=AbonTariff) # sync subscribers on NAS - tm = Transmitter() - users = Abon.objects.filter(is_dynamic_ip=False, is_active=True).exclude(current_tariff=None) - tm.sync_nas(users) + try: + tm = Transmitter() + users = Abon.objects.filter(is_dynamic_ip=False, is_active=True).exclude(current_tariff=None) + tm.sync_nas(users) + except NasNetworkError as e: + print('NetworkTrouble:', e) # manage periodic pays - ppays = PeriodicPayForId.objects.filter(next_pay__lt=timezone.now())\ + ppays = PeriodicPayForId.objects.filter(next_pay__lt=now)\ .prefetch_related('account', 'periodic_pay') for pay in ppays: - pay.payment_for_service() + pay.payment_for_service(now=now) if __name__ == "__main__":