mirror of
https://github.com/django-q2/django-q2.git
synced 2026-09-19 02:48:16 +08:00
Merge pull request #123 from Koed00/schedule
Adds a check for duplicate schedule names.
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
from multiprocessing import Queue, Value
|
||||
|
||||
# django
|
||||
from django.db import IntegrityError
|
||||
from django.utils import timezone
|
||||
|
||||
# local
|
||||
@@ -75,6 +76,11 @@ def schedule(func, *args, **kwargs):
|
||||
repeats = kwargs.pop('repeats', -1)
|
||||
next_run = kwargs.pop('next_run', timezone.now())
|
||||
|
||||
# check for name duplicates instead of am unique constraint
|
||||
if name and Schedule.objects.filter(name=name).exists():
|
||||
raise IntegrityError("A schedule with the same name already exists.")
|
||||
|
||||
# create and return the schedule
|
||||
return Schedule.objects.create(name=name,
|
||||
func=func,
|
||||
hook=hook,
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
from datetime import timedelta
|
||||
from multiprocessing import Queue, Event, Value
|
||||
|
||||
import pytest
|
||||
import arrow
|
||||
|
||||
import pytest
|
||||
from django.db import IntegrityError
|
||||
from django.utils import timezone
|
||||
|
||||
from django_q.brokers import get_broker
|
||||
from django_q.conf import Conf
|
||||
from django_q.cluster import pusher, worker, monitor, scheduler
|
||||
from django_q.tasks import Schedule, fetch, schedule as create_schedule, queue_size
|
||||
from django_q.conf import Conf
|
||||
from django_q.tasks import Schedule, fetch, schedule as create_schedule
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
@@ -33,6 +33,14 @@ def test_scheduler(broker):
|
||||
schedule_type=Schedule.HOURLY,
|
||||
repeats=1)
|
||||
assert schedule.last_run() is None
|
||||
# check duplicate constraint
|
||||
with pytest.raises(IntegrityError):
|
||||
schedule = create_schedule('math.copysign',
|
||||
1, -1,
|
||||
name='test math',
|
||||
hook='django_q.tests.tasks.result',
|
||||
schedule_type=Schedule.HOURLY,
|
||||
repeats=1)
|
||||
# run scheduler
|
||||
scheduler(broker=broker)
|
||||
# set up the workflow
|
||||
|
||||
Reference in New Issue
Block a user