Exemplo n.º 1
0
    def test_accept_deadline_offset(self):
        # 10 days in the future
        self.event.prize_accept_deadline_delta = 10
        # TODO: it should not take this much set-up to draw a single donor to a single prize
        amount = Decimal('50.0')
        targetPrize = randgen.generate_prize(
            self.rand, event=self.event, sumDonations=False, randomDraw=False, minAmount=amount, maxAmount=amount, maxwinners=1)
        targetPrize.save()
        winner = randgen.generate_donor(self.rand)
        winner.save()
        winningDonation = randgen.generate_donation(
            self.rand, donor=winner, minAmount=amount, maxAmount=amount, event=self.event)
        winningDonation.save()
        self.assertEqual(1, len(targetPrize.eligible_donors()))
        self.assertEqual(winner.id, targetPrize.eligible_donors()[0]['donor'])
        self.assertEqual(
            0, len(prizeutil.get_past_due_prize_winners(self.event)))
        currentDate = datetime.date.today()
        result, status = prizeutil.draw_prize(targetPrize)
        prizeWin = models.PrizeWinner.objects.get(prize=targetPrize)
        self.assertEqual(prizeWin.accept_deadline_date(), currentDate +
                         datetime.timedelta(days=self.event.prize_accept_deadline_delta))

        prizeWin.acceptdeadline = datetime.datetime.utcnow().replace(
            tzinfo=pytz.utc) - datetime.timedelta(days=2)
        prizeWin.save()
        self.assertEqual(0, len(targetPrize.eligible_donors()))
        pastDue = prizeutil.get_past_due_prize_winners(self.event)
        self.assertEqual(
            1, len(prizeutil.get_past_due_prize_winners(self.event)))
        self.assertEqual(prizeWin, pastDue[0])
Exemplo n.º 2
0
    def test_accept_deadline_offset(self):
        # 10 days in the future
        self.event.prize_accept_deadline_delta = 10
        # TODO: it should not take this much set-up to draw a single donor to a single prize
        amount = Decimal('50.0')
        targetPrize = randgen.generate_prize(self.rand,
                                             event=self.event,
                                             sumDonations=False,
                                             randomDraw=False,
                                             minAmount=amount,
                                             maxAmount=amount,
                                             maxwinners=1)
        targetPrize.save()
        winner = randgen.generate_donor(self.rand)
        winner.save()
        winningDonation = randgen.generate_donation(self.rand,
                                                    donor=winner,
                                                    minAmount=amount,
                                                    maxAmount=amount,
                                                    event=self.event)
        winningDonation.save()
        self.assertEqual(1, len(targetPrize.eligible_donors()))
        self.assertEqual(winner.id, targetPrize.eligible_donors()[0]['donor'])
        self.assertEqual(0,
                         len(prizeutil.get_past_due_prize_winners(self.event)))
        currentDate = datetime.date.today()
        result, status = prizeutil.draw_prize(targetPrize)
        prizeWin = models.PrizeWinner.objects.get(prize=targetPrize)
        self.assertEqual(
            prizeWin.accept_deadline_date(), currentDate +
            datetime.timedelta(days=self.event.prize_accept_deadline_delta))

        prizeWin.acceptdeadline = datetime.datetime.utcnow().replace(
            tzinfo=pytz.utc) - datetime.timedelta(days=2)
        prizeWin.save()
        self.assertEqual(0, len(targetPrize.eligible_donors()))
        pastDue = prizeutil.get_past_due_prize_winners(self.event)
        self.assertEqual(1,
                         len(prizeutil.get_past_due_prize_winners(self.event)))
        self.assertEqual(prizeWin, pastDue[0])
 def handle(self, *args, **options):
     super(Command,self).handle(*args, **options)
     event = options['event']
     dryRun = options['dry_run']
     pastDueWinners = prizeutil.get_past_due_prize_winners(event)
     
     if not pastDueWinners.exists():
         self.message("There are no past-due winners.", 2)
     elif options['list']:
         for prizeWinner in pastDueWinners:
             self.message("Winner #{0} (due {1})".format(prizeWinner.id, prizeWinner.acceptdeadline))
     elif options['close']:
         prizeutil.close_past_due_prize_winners(pastDueWinners, verbosity=self.verbosity, dry_run=dryRun)
     else:
         self.message("Invalid option.")
    def handle(self, *args, **options):
        super(Command, self).handle(*args, **options)
        event = options['event']
        dryRun = options['dry_run']
        pastDueWinners = prizeutil.get_past_due_prize_winners(event)

        if not pastDueWinners.exists():
            self.message('There are no past-due winners.', 2)
        elif options['list']:
            for prizeWinner in pastDueWinners:
                self.message('Winner #{0} (due {1})'.format(
                    prizeWinner.id, prizeWinner.acceptdeadline))
        elif options['close']:
            prizeutil.close_past_due_prize_winners(pastDueWinners,
                                                   verbosity=self.verbosity,
                                                   dry_run=dryRun)
        else:
            self.message('Invalid option.')