From 4cba81140d7862a6a0e47a2345dc10420a38041c Mon Sep 17 00:00:00 2001 From: Matej Focko Date: Sat, 30 Nov 2019 12:46:56 +0100 Subject: [PATCH] Add deadline check --- kontr_emails.py | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/kontr_emails.py b/kontr_emails.py index c8ede89..4a477d7 100644 --- a/kontr_emails.py +++ b/kontr_emails.py @@ -1,6 +1,7 @@ #!/usr/bin/env python3 +import datetime from mailbox import mbox, mboxMessage import re from typing import Tuple @@ -10,6 +11,8 @@ class Parser: INFO_REGEX = re.compile(r"(\d{6}) \| (x\S*)\s*") SUBMISSION_REGEX = re.compile(r"adresář:\s+\S*\/(\S*)\s*") POINTS_REGEX = re.compile(r"\*\scelkový počet bodů\s+((\d|\.)*)\s*") + DATE_FORMAT = "%Y_%m%d_%H%M%S" + OFFSET_FOR_CORRECTION = datetime.timedelta(days=8) @staticmethod def get_match_from_mail(regex: re.Pattern, mail: mboxMessage) -> re.Match: @@ -35,9 +38,20 @@ class Parser: match = Parser.get_match_from_mail(Parser.POINTS_REGEX, mail) return float(match.group(1)) - def __init__(self, path: str) -> None: - self.path = path + def submitted_before_deadline(self, submission: str) -> bool: + submitted = datetime.datetime.strptime( + submission.split("/")[-1][-16:], Parser.DATE_FORMAT + ) + return self.deadline > submitted + + def __init__(self, path: str, deadline: str, correction: bool = False) -> None: self.box = mbox(path) + self.deadline = datetime.datetime.strptime(deadline, Parser.DATE_FORMAT) + if correction: + # in case of correction pass the date of + # submitting review to IS for automatic computation + self.deadline = self.deadline.replace(hour=0, minute=0, second=0) + self.deadline += Parser.OFFSET_FOR_CORRECTION if __name__ == "__main__":