📝 Functions and docstrings

This commit is contained in:
2024-08-29 10:30:06 +02:00
parent c42cf9cb1e
commit 37702b7380

114
main.py
View File

@ -14,8 +14,13 @@ def log(text: str):
def read_config() -> dict: def read_config() -> dict:
""" """
Returns the contents of config.ini as a a dict, assuming it exists and has Reads the file config.ini. If the there is no file, it will create one. If
no empty fields. the file has empty fields, it will notify the user and end the program.
RETURNS
-------
- dict
The contents of the config.ini file.
""" """
config = ConfigParser() config = ConfigParser()
@ -45,7 +50,18 @@ def read_config() -> dict:
def get_trello_cards(config: dict) -> list[dict]: def get_trello_cards(config: dict) -> list[dict]:
""" """
Returns a list of every card in the Trello board, each a dict. Uses the Trello API to get every card from the board, and extracts the important information.
PARAMETERS
----------
- config: dict
The config file data. Uses this for the board ID, and the API key and
token.
RETURNS
-------
- list[dict]
A list of each card, with the following information: card id, name of the card, when the last activity on the card was performed, the IDs of whatever members are assigned, and the labels the card has.
""" """
url = TRELLO_API_CARDS_URL.format(id=config["Trello"]["boardid"]) url = TRELLO_API_CARDS_URL.format(id=config["Trello"]["boardid"])
query = { query = {
@ -74,24 +90,98 @@ def get_trello_cards(config: dict) -> list[dict]:
return cards return cards
def flag_out_of_date_cards(cards: list[dict]) -> list[dict]:
"""
Flags cards as out of date, if they exceed the deadline.
PARAMETERS
----------
- cards: list[dict]
The list of cards.
RETURNS
-------
- list[dict]
The same list of cards, but with an out_of_date boolean field.
"""
pass
def generate_reports(cards: list[dict]) -> tuple[str,list]:
"""
Generates the PDF reports for each user. Each report will be found at
./reports/TIMESTAMP/USERID.pdf
PARAMETERS
----------
- cards: list[dict]
The list of cards.
RETURNS
-------
- str
The timestamp used for the folder in which the reports are generated.
- list
The list of users reports were generated for.
"""
pass
def get_emails(config: dict, user_ids: list[str]) -> dict:
"""
Uses the Trello API to find the email addresses of the given users.
PARAMETERS
----------
- config: dict
The config file data. Uses this for the board ID, and the API key and
token.
- user_ids: list[str]
A list of user IDs.
RETURNS
-------
- dict
A dict where each user ID is the key and the value is their email.
"""
pass
def send_emails(config: dict, users: dict, timestamp: str) -> None:
"""
Sending out emails.
PARAMETERS
----------
- config: dict
The config file data. Uses this for the SMTP server, username and
password.
- users: dict
Each user ID and the email connected to it.
- timestamp: str
The timestamp used to create the folder that the reports are in.
"""
pass
def main(): def main():
# Reading the config file # Reading the config file
config = read_config() config = read_config()
# Getting the cards from Trello # Getting the cards from Trello
submissions = get_trello_cards(config) cards = get_trello_cards(config)
# Step 3: # Flagging the cards if they've exceeded their deadline
# For each card, compare to escalation rules to see if it's at the step cards = flag_out_of_date_cards(cards)
# and escalation level it should be at. If not, flag it.
# Step 4: # Generate the PDF reports
# Generate reports for each person, showing their own cards. timestamp, user_ids = generate_reports(cards)
# Perhaps a "master report" with every card.
# Step 5: # Get the email address of each user
# Send out the reports via email. users = get_emails(config, user_ids)
# Send out the emails
send_emails(config, users, timestamp)
if __name__ == "__main__": if __name__ == "__main__":
main() main()