From fedbfff60c15360949242128b7938015af5963ef Mon Sep 17 00:00:00 2001 From: HamodiGit Date: Sat, 9 Nov 2024 12:05:48 -0700 Subject: [PATCH] feat(ReadDB): Added comments and fixed logic and made it efficent --- ReadDB.py | 44 +++++++++++++++++++++++++++------------- interview_database.xlsx | Bin 5408 -> 9936 bytes 2 files changed, 30 insertions(+), 14 deletions(-) diff --git a/ReadDB.py b/ReadDB.py index 168c2c4..7c7235a 100644 --- a/ReadDB.py +++ b/ReadDB.py @@ -1,6 +1,18 @@ import pandas as pd - +import json def ReadDatabase(): + """ + Reads the Database + + ``REQUIRES``: None + + ``PROMISES``: JSON (Interview Avaiable Slots) + + ``Develop in part by``: Ahmad + + ``Contact``: ahmad.ahmad1@ucalgary.ca + + """ # Load the updated Excel file into a pandas DataFrame excel_file_path = "./interview_database.xlsx" df = pd.read_excel(excel_file_path) @@ -10,17 +22,21 @@ def ReadDatabase(): # Group the DataFrame by Date, Start Time, and Slot for organization for _, row in df.iterrows(): - date = row['Date'] - start_time = row['Start Time'] + date = str(row['Date']) + start_time = str(row['Start Time']) slot = int(row['Slot']) if not pd.isna(row['Slot']) else 0 - - # Initialize nested structure if not present - if date not in interview_data: - interview_data[date] = {} - if start_time not in interview_data[date]: - if len(str(row['Interviewee Name']).split()) != slot: - interview_data[date][start_time] = { - 'Meeting Duration': row['Meeting Duration'], - } - # Print the structured dictionary in JSON format for readability - return interview_data \ No newline at end of file + #Returns amount of interviewees in the slot and if it's empty it will return 0 + interviewee_amount = len(str(row['Interviewee Name']).split()) if str(row['Interviewee Name']) != "nan" else 0 + + # Check if the slot is available for an interviewee to attend + avaliable_slots = interviewee_amount != slot + if avaliable_slots: + # Initialize nested structure if not present + if date not in interview_data: + interview_data[date] = {} + #Adds the start time and duration if not present + if start_time not in interview_data[date]: + interview_data[date][start_time] = { + 'Meeting Duration': row['Meeting Duration'], + } + return interview_data diff --git a/interview_database.xlsx b/interview_database.xlsx index ed722d941da9611f2d40866c19772e14b65fd3e8..68fc44d8b569d1d7213422eddd21c087c85c8481 100644 GIT binary patch literal 9936 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 LGx!kAui5_r^9XWc