Add transaction handling to the interval sources
Adds transaction handling to the delete and save methods. Signed-off-by: Roberto Rosario <roberto.rosario@mayan-edms.com>
This commit is contained in:
@@ -15,6 +15,8 @@
|
||||
- Delete periodic task on document type delete. Closes Gitlab
|
||||
issue #715. Thanks to Rob de Canha-Knight (@rssfed23) for the
|
||||
report and research.
|
||||
- Add transaction handling to the interval sources delete and save
|
||||
methods.
|
||||
|
||||
3.3.5 (2019-12-13)
|
||||
==================
|
||||
|
||||
@@ -217,26 +217,28 @@ class IntervalBaseModel(OutOfProcessSource):
|
||||
|
||||
def delete(self, *args, **kwargs):
|
||||
pk = self.pk
|
||||
super(IntervalBaseModel, self).delete(*args, **kwargs)
|
||||
self._delete_periodic_task(pk=pk)
|
||||
with transaction.atomic():
|
||||
super(IntervalBaseModel, self).delete(*args, **kwargs)
|
||||
self._delete_periodic_task(pk=pk)
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
new_source = not self.pk
|
||||
super(IntervalBaseModel, self).save(*args, **kwargs)
|
||||
with transaction.atomic():
|
||||
super(IntervalBaseModel, self).save(*args, **kwargs)
|
||||
|
||||
if not new_source:
|
||||
self._delete_periodic_task()
|
||||
if not new_source:
|
||||
self._delete_periodic_task()
|
||||
|
||||
interval_instance, created = IntervalSchedule.objects.get_or_create(
|
||||
every=self.interval, period='seconds'
|
||||
)
|
||||
# Create a new interval or reuse someone else's
|
||||
PeriodicTask.objects.create(
|
||||
name=self._get_periodic_task_name(),
|
||||
interval=interval_instance,
|
||||
task='mayan.apps.sources.tasks.task_check_interval_source',
|
||||
kwargs=json.dumps({'source_id': self.pk})
|
||||
)
|
||||
interval_instance, created = IntervalSchedule.objects.get_or_create(
|
||||
every=self.interval, period='seconds'
|
||||
)
|
||||
# Create a new interval or reuse someone else's
|
||||
PeriodicTask.objects.create(
|
||||
name=self._get_periodic_task_name(),
|
||||
interval=interval_instance,
|
||||
task='mayan.apps.sources.tasks.task_check_interval_source',
|
||||
kwargs=json.dumps({'source_id': self.pk})
|
||||
)
|
||||
|
||||
|
||||
class SourceLog(models.Model):
|
||||
|
||||
Reference in New Issue
Block a user