This repository has been archived on 2023-07-17. You can view files and clone it, but cannot push or open issues or pull requests.
pushee/submission.py
2020-06-08 17:39:36 +02:00

89 lines
2.4 KiB
Python

#!/usr/bin/env python3
import datetime
import re
from typing import Dict, List
class Submission:
MAIL_CONTENT = re.compile(r"<pre>((.*\s+)+)<\/pre>")
def __init__(
self,
uco: str,
login: str,
path: str,
submission_id: str,
points: float,
homework: str,
correction: bool,
mail: str,
) -> None:
self.uco = uco
self.login = login
self.path = path
self.submission_id = submission_id
self.points = points
self.homework = homework
self.correction = correction
self.mail = mail
self.submitted_at = None
self.submitted_before_deadline = None
self.flag = None
self.branch = f"{homework}{'-opravne' if correction else ''}-{login}"
self.__set_submission_date()
def __set_submission_date(self) -> None:
self.submitted_at = datetime.datetime.strptime(
self.submission_id[-16:], "%Y_%m%d_%H%M%S"
)
def set_late_tag(self, deadline: datetime.datetime) -> None:
self.submitted_before_deadline = self.submitted_at < deadline
if not self.submitted_before_deadline:
self.flag = "LATE"
def get_mail(self) -> str:
left = self.mail.find("<pre>")
right = self.mail.rfind("</pre>")
return self.mail[left + 5 : right]
def print_submissions(all_submissions: Dict[str, List[Submission]]) -> None:
header = (
"| "
+ " | ".join(
[
"###",
"UCO".center(6),
"LOGIN".center(8),
"SUBMITTED".center(19),
"POINTS",
"FLAG".center(6),
]
)
+ " |"
)
SEPARATOR = "-" * len(header)
print(SEPARATOR)
print(header)
print(SEPARATOR)
FORMAT = "| {:>3} | {:>6s} | {:>8s} | {} | {:>6.2f} | {:^6s} |"
for _, submissions in all_submissions.items():
for i, submission in enumerate(submissions):
date = submission.submitted_at.strftime("%Y-%m-%d %H:%M:%S")
print(
FORMAT.format(
i,
submission.uco if i == 0 else "",
submission.login if i == 0 else "",
date,
submission.points,
submission.flag if submission.flag else "",
)
)
print(SEPARATOR)