Skip to content

Commit

Permalink
Merge branch 'master' of github.com:farahats9/sqlalchemy-celery-beat
Browse files Browse the repository at this point in the history
  • Loading branch information
farahats9 committed Nov 28, 2023
2 parents 648f6c5 + 6b1af1a commit 67dd05e
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 1 deletion.
5 changes: 4 additions & 1 deletion sqlalchemy_celery_beat/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -283,7 +283,10 @@ def setup_listener(mapper, class_):
),
backref=backref(
"model_%s" % discriminator,
primaryjoin=remote(class_.id) == foreign(PeriodicTask.schedule_id),
primaryjoin=sa.and_(
remote(class_.id) == foreign(PeriodicTask.schedule_id),
PeriodicTask.discriminator == discriminator,
),
viewonly=True,
lazy='selectin'
),
Expand Down
21 changes: 21 additions & 0 deletions tests/test_schedulers.py
Original file line number Diff line number Diff line change
Expand Up @@ -660,6 +660,27 @@ def test_ClockedSchedule_schedule(self):
assert isdue2 is True # True means task is due and should run.
assert (nextcheck2 == NEVER_CHECK_TIMEOUT) and (isdue2 is True)

def test_PeriodicTask_specifyjoin(self):
p = self.create_model_interval(self.session, schedule(timedelta(seconds=3)))
c = self.create_model_crontab(self.session, crontab(minute="3", hour="3"))

self.session.add(p)
self.session.add(c)
self.session.commit()

p = self.session.query(PeriodicTask).first()

assert p.schedule_id == 1
assert c.schedule_id == 1

assert p.discriminator == 'intervalschedule'
assert p.model_crontabschedule is None
assert p.model_intervalschedule is not None

assert c.discriminator == 'crontabschedule'
assert c.model_crontabschedule is not None
assert c.model_intervalschedule is None


class test_model_PeriodicTaskChanged(SchedulerCase):

Expand Down

0 comments on commit 67dd05e

Please sign in to comment.