FIX: fixed several deadline issues.

This commit is contained in:
2018-12-20 15:32:13 +01:00
parent 06a42fca18
commit 188589c8b0
2 changed files with 65 additions and 56 deletions

View File

@@ -13,7 +13,6 @@ class BasicWorkflow(object):
#
# Status updates
#
@classmethod
def validate_status_code_update(cls, code, event, callback=None, *args, **kwargs):
valid = True
@@ -124,7 +123,6 @@ class BasicWorkflow(object):
#
# Signal handlers
#
@classmethod
def send_emails_on_event_update(cls, sender, **kwargs):
event = kwargs.get('event')
@@ -205,5 +203,38 @@ class BasicWorkflow(object):
confirm_publication_action=action)
email.send()
#
# Misc logic
#
@classmethod
def plan_publication(cls, first_day, deadline=None):
app_config = apps.get_containing_app_config(__package__)
if deadline:
publication_deadline = deadline - datetime.timedelta(app_config.settings.publish_before_deadline_days)
else:
publication_deadline = first_day - datetime.timedelta(app_config.settings.publish_before_begin_days)
today = datetime.date.today()
for year in (today.year, today.year + 1):
for issue in app_config.settings.publish_issues:
if not ('issue' in issue and 'release' in issue and 'deadline' in issue):
logger.error('workflow.plan_publication(): invalid configured issue.')
continue
issue_release = datetime.date(year, issue['release'][1], issue['release'][0])
if issue_release < today:
continue
issue_deadline = datetime.date(year, issue['deadline'][1], issue['deadline'][0])
if issue_deadline > issue_release:
issue_deadline = datetime.date(year - 1, issue['deadline'][1], issue['deadline'][0])
if publication_deadline > issue_release and today <= issue_deadline:
return issue_release, u'%s/%s' % (issue['issue'], year)
return None, None
workflow = BasicWorkflow