mirror of
https://github.com/ansible/awx.git
synced 2026-05-12 11:57:37 -02:30
fix bug when creating system job schedule
This commit is contained in:
@@ -19,6 +19,7 @@ from awx.main.models.jobs import LaunchTimeConfig
|
|||||||
from awx.main.utils import ignore_inventory_computed_fields
|
from awx.main.utils import ignore_inventory_computed_fields
|
||||||
from awx.main.consumers import emit_channel_notification
|
from awx.main.consumers import emit_channel_notification
|
||||||
|
|
||||||
|
|
||||||
logger = logging.getLogger('awx.main.models.schedule')
|
logger = logging.getLogger('awx.main.models.schedule')
|
||||||
|
|
||||||
__all__ = ['Schedule']
|
__all__ = ['Schedule']
|
||||||
@@ -91,40 +92,6 @@ class Schedule(CommonModel, LaunchTimeConfig):
|
|||||||
help_text=_("The next time that the scheduled action will run.")
|
help_text=_("The next time that the scheduled action will run.")
|
||||||
)
|
)
|
||||||
|
|
||||||
# extra_data is actually a string with a JSON payload in it. This
|
|
||||||
# is technically OK because a string is a valid JSON. One day we will
|
|
||||||
# enforce non-string JSON.
|
|
||||||
def _clean_extra_data_system_jobs(self):
|
|
||||||
extra_data = self.extra_data
|
|
||||||
if not isinstance(extra_data, dict):
|
|
||||||
try:
|
|
||||||
extra_data = json.loads(self.extra_data)
|
|
||||||
except Exception:
|
|
||||||
raise ValidationError(_("Expected JSON"))
|
|
||||||
|
|
||||||
if extra_data and 'days' in extra_data:
|
|
||||||
try:
|
|
||||||
if type(extra_data['days']) is bool:
|
|
||||||
raise ValueError
|
|
||||||
if float(extra_data['days']) != int(extra_data['days']):
|
|
||||||
raise ValueError
|
|
||||||
days = int(extra_data['days'])
|
|
||||||
if days < 0:
|
|
||||||
raise ValueError
|
|
||||||
except ValueError:
|
|
||||||
raise ValidationError(_("days must be a positive integer."))
|
|
||||||
return self.extra_data
|
|
||||||
|
|
||||||
def clean_extra_data(self):
|
|
||||||
if not self.unified_job_template:
|
|
||||||
return self.extra_data
|
|
||||||
|
|
||||||
# Compare class by string name because it's hard to import SystemJobTemplate
|
|
||||||
if type(self.unified_job_template).__name__ is not 'SystemJobTemplate':
|
|
||||||
return self.extra_data
|
|
||||||
|
|
||||||
return self._clean_extra_data_system_jobs()
|
|
||||||
|
|
||||||
def __unicode__(self):
|
def __unicode__(self):
|
||||||
return u'%s_t%s_%s_%s' % (self.name, self.unified_job_template.id, self.id, self.next_run)
|
return u'%s_t%s_%s_%s' % (self.name, self.unified_job_template.id, self.id, self.next_run)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user