diff --git a/ietf/bin/expire-ids b/ietf/bin/expire-ids index 8f7d853cc..c875716ee 100755 --- a/ietf/bin/expire-ids +++ b/ietf/bin/expire-ids @@ -17,13 +17,18 @@ syslog.openlog(os.path.basename(__file__), syslog.LOG_PID, syslog.LOG_USER) import django django.setup() -from ietf.doc.expire import * +from ietf.doc.expire import ( in_draft_expire_freeze, get_expired_drafts, expirable_draft, + send_expire_notice_for_draft, expire_draft, clean_up_draft_files ) if not in_draft_expire_freeze(): + syslog.syslog("Expiring drafts ...") for doc in get_expired_drafts(): - send_expire_notice_for_draft(doc) - expire_draft(doc) - syslog.syslog("Expired draft %s-%s" % (doc.name, doc.rev)) + # verify expirability -- it might have changed after get_expired_drafts() was run + # (this whole loop took about 2 minutes on 04 Jan 2018) + if expirable_draft(doc) and doc.expires < datetime.date.today() + datetime.timedelta(1): + send_expire_notice_for_draft(doc) + expire_draft(doc) + syslog.syslog(" Expired draft %s-%s" % (doc.name, doc.rev)) syslog.syslog("Cleaning up draft files") clean_up_draft_files() diff --git a/ietf/secr/drafts/views.py b/ietf/secr/drafts/views.py index 0a2d02692..67487903d 100644 --- a/ietf/secr/drafts/views.py +++ b/ietf/secr/drafts/views.py @@ -27,7 +27,7 @@ from ietf.secr.utils.document import get_rfc_num, get_start_date from ietf.submit.models import Submission, Preapproval, DraftSubmissionStateName, SubmissionEvent from ietf.submit.mail import announce_new_version, announce_to_lists, announce_to_authors from ietf.utils.draft import Draft - +from ietf.utils.log import log # ------------------------------------------------- # Helper Functions @@ -241,9 +241,14 @@ def do_resurrect(draft, request): sorted_files = sorted(files) latest,ext = os.path.splitext(sorted_files[-1]) files = glob.glob(os.path.join(settings.INTERNET_DRAFT_ARCHIVE_DIR,latest) + '.*') + log("Resurrecting %s. Moving files:" % draft.name) for file in files: - shutil.move(file,settings.INTERNET_DRAFT_PATH) - + try: + shutil.move(file, settings.INTERNET_DRAFT_PATH) + log(" Moved file %s to %s" % (file, settings.INTERNET_DRAFT_PATH)) + except shutil.Error as e: + log(" Exception %s when attempting to move %s" % (e, file)) + # Update draft record draft.set_state(State.objects.get(type="draft", slug="active"))