def process_finished_pickup_dates(self): """ find all pickup dates that are in the past and didn't get processed yet add them to history and mark as processed """ for pickup in self.exclude_disabled().filter( feedback_possible=False, date__lt=timezone.now(), ): if not pickup.store.is_active(): # Make sure we don't process this pickup again, even if the store gets active in future pickup.is_disabled = True pickup.save() continue payload = {} payload['pickup_date'] = pickup.id if pickup.series: payload['series'] = pickup.series.id if pickup.max_collectors: payload['max_collectors'] = pickup.max_collectors if pickup.collectors.count() == 0: stats.pickup_missed(pickup) History.objects.create( typus=HistoryTypus.PICKUP_MISSED, group=pickup.store.group, store=pickup.store, date=pickup.date, payload=payload, ) else: stats.pickup_done(pickup) History.objects.create( typus=HistoryTypus.PICKUP_DONE, group=pickup.store.group, store=pickup.store, users=pickup.collectors.all(), date=pickup.date, payload=payload, ) pickup.feedback_possible = True pickup.save()
def process_finished_pickup_dates(self): """find all pickup dates that are in the past and didn't get processed yet and add them to history """ for pickup in self.filter( done_and_processed=False, date__lt=timezone.now(), deleted=False, ): if pickup.store.is_active(): payload = {} payload['pickup_date'] = pickup.id if pickup.series: payload['series'] = pickup.series.id if pickup.max_collectors: payload['max_collectors'] = pickup.max_collectors if pickup.collectors.count() == 0: stats.pickup_missed(pickup) History.objects.create( typus=HistoryTypus.PICKUP_MISSED, group=pickup.store.group, store=pickup.store, date=pickup.date, payload=payload, ) else: stats.pickup_done(pickup) History.objects.create( typus=HistoryTypus.PICKUP_DONE, group=pickup.store.group, store=pickup.store, users=pickup.collectors.all(), date=pickup.date, payload=payload, ) pickup.done_and_processed = True pickup.save() pickup_done.send(sender=PickupDate.__class__, instance=pickup)