Пример #1
0
    def defer(self):

        today = datetime.date.today()

        if today > self.date:
            raise ValueError('unable to defer assignments that have already been completed')

        eligible_workers = self.eligible_defer_targets()
        weighted_workers = [(w, w.deferral_weight())
                            for w in eligible_workers]
        new_worker = weighted_choice(weighted_workers)

        # create the debit
        debit = Debit.objects.create(
            worker=self.worker,
            skipped_assignment=self,
        )

        # create the credit
        credit = Credit.objects.create(
            debit=debit,
            worker=new_worker,
        )

        # resassign worker on current assignment
        self.worker = new_worker
        self.defer_code = generate_uuid()
        self.save()

        email.defer_notify(debit)

        return debit
Пример #2
0
    def defer_to(self, new_worker):
        assert isinstance(new_worker, NamelessWorker)
        debit = Debit.objects.create(
            worker=self.worker,
            skipped_assignment=self
        )

        credit = Credit.objects.create(
            debit=debit,
            worker=new_worker
        )

        self.worker = new_worker
        self.defer_code = generate_uuid()
        self.save()

        email.defer_notify(debit)

        return debit