Beispiel #1
0
def update_schedule(instance, raw, using, update_fields, **kwargs):
    if instance.status == 1:
        if instance.attached_job_id is not None:
            job = instance.attached_job
            instance.attached_job_id = None
            instance.save()
            # in case foreignkey not update
            instance.attached_job = None
            sched.unschedule_job(job)
        return

    from sokoban.sync_worker import sync_project
    if instance.attached_job_id is None:
        interval = timedelta
        job_name = '%s : %s' % (instance.owner.id, instance.owner.name)
        job = sched.add_interval_job(sync_project,
                                     start_date=instance.start_time,
                                     args=(instance.owner_id,),
                                     name=job_name,
                                     hours=instance.interval)
        instance.attached_job_id = job.id
        instance.save()
        sched._wakeup.set()
        return

    interval = timedelta(hours=instance.interval)
    trigger = IntervalTrigger(interval, instance.start_time)
    instance.attached_job.trigger = trigger
    instance.attached_job.compute_next_run_time(timezone.now())
    instance.attached_job.save()
    sched._wakeup.set()
Beispiel #2
0
def delete_schedule(instance, using, **kwargs):
    if not instance.attached_job_id:
        return
    job = DjangoJob.objects.filter(id=instance.attached_job_id).get()
    sched.unschedule_job(job)