def GetStudentAttendanceByName(self, student_name: str): student_fname, student_lname = student_name.split(' ') transaction_mgr = TransactionalManager() db_conn = transaction_mgr.GetDatabaseConnection("READWRITE") attendance_dao = AttendanceDao(db_conn) attendance_by_name = attendance_dao.GetStudentAttendanceByName( student_fname, student_lname) for record in attendance_by_name: record['attendance_date'] = record['attendance_date'].strftime( "%Y-%m-%d") record['percent'] = float("{:.2f}".format(record['present'] * 100 / record['working'])) record['acknowledged'] = "Yes" if record[ 'parent_acknowledged'] is 1 else "No" record[ 'student_name'] = f"{record['student_fname']} {record['student_lname']}" record.pop('student_fname') record.pop('student_lname') record.pop('parent_acknowledged') record.pop('present') record.pop('working') return attendance_by_name
def GetUserBasicInformation(username, password): """Get basic user information.""" user_id = None transaction_mgr = TransactionalManager() db_conn = transaction_mgr.GetDatabaseConnection("READ") user_dao = UserDao(db_conn) try: user = user_dao.GetUserByUsername(username) except UserNotRegisteredError: # log error raise except DatabaseError: # log error raise if not user.password == password: raise AuthenticationFailedError( "Either username or password is incorrect.") user_basic_info = user_dao.GetUserBasicInformation(user_role) if user_role == 'Teacher': is_class_teacher = user_dao.CheckClassTeacherFlag() user_basic_info['is_class_teacher'] = is_class_teacher return user_basic_info
def DashboardDataCard1(self, student_id: int): transaction_mgr = TransactionalManager() db_conn = transaction_mgr.GetDatabaseConnection("READWRITE") attendance_dao = AttendanceDao(db_conn) card1_data = attendance_dao.DashboardCard1(student_id) return card1_data
def GetTeacherLatestDateAttendance(self): transaction_mgr = TransactionalManager() db_conn = transaction_mgr.GetDatabaseConnection("READWRITE") attendance_dao = AttendanceDao(db_conn) modified_attendance = [] modified_record = {} teacher_daily_attendance = attendance_dao.GetTeacherLatestDateAttendance( ) for record in teacher_daily_attendance: value = float("{:.2f}".format( record['count'] * 100 / teacher_daily_attendance[-1]['count'])) if record['status'] == 'A': modified_record['Absent'] = value elif record['status'] == 'P': modified_record['Present'] = value elif record['status'] == 'L': modified_record['Late'] = value if 'Present' not in modified_record: modified_record['Present'] = 0 if 'Absent' not in modified_record: modified_record['Absent'] = 0 if 'Late' not in modified_record: modified_record['Late'] = 0 modified_attendance.append(modified_record) return modified_attendance
def dashboard_data_card3(self, student_id: int): transaction_mgr = TransactionalManager() db_conn = transaction_mgr.GetDatabaseConnection("READWRITE") attendance_dao = AttendanceDao(db_conn) card3_data_absent_days = attendance_dao.dashboard_card3_absent_days( student_id) for absent_days_record in card3_data_absent_days: absent_days_record['attendance_date'] = absent_days_record[ 'attendance_date'].strftime('%Y-%m-%d') card3_data_late_days = attendance_dao.dashboard_card3_late_days( student_id) for late_days_record in card3_data_late_days: late_days_record['attendance_date'] = late_days_record[ 'attendance_date'].strftime('%Y-%m-%d') holiday_list = [] for ptr in holidays.India(years=2020).items(): holiday_list.append(ptr[0].strftime('%Y-%m-%d')) card3_data_holidays = holiday_list card3_data = { "absent_days": card3_data_absent_days, "late_days": card3_data_late_days, "holidays": card3_data_holidays } return card3_data
def get_assignment_history(self, student_id: int): transaction_mgr = TransactionalManager() db_conn = transaction_mgr.GetDatabaseConnection("READWRITE") assignment_dao = AssignmentSubmitDao(db_conn) records1 = assignment_dao.get_student_teacher_name(student_id) records2 = assignment_dao.get_student_assignment_count(student_id) records3 = assignment_dao.get_student_late_assignments(student_id) records4 = assignment_dao.get_student_average_marks(student_id) records5 = assignment_dao.get_assignment_status(student_id) record6 = dict() for index in range(0, len(records1)): records7 = dict() records7.update({ "teacher-name": records1[index]['name'], "assignment-count": records2[index]['no_of_assignments'], "late-submission": records3[index]['late_submission'], "average_marks": records4[index]['average_marks'], "status": records5[index]['is_evaluated'] }) record6[records2[index]['name']] = records7 return (record6)
def post_leave_status_admin(self, leave_id: int, status: str): """ this function is used to update the status of the leave given by employee """ transaction_manager = TransactionalManager() db_conn = transaction_manager.GetDatabaseConnection("READWRITE") leave_dao = LeaveDao(db_conn) leave_dao.post_leave_status_admin(leave_id, status) transaction_manager.save()
def get_student_assignment_solution(self, assignment_id: int, student_id: int): transaction_mgr = TransactionalManager() db_conn = transaction_mgr.GetDatabaseConnection("READWRITE") assignment_dao = AssignmentSubmitDao(db_conn) records = assignment_dao.get_student_assignment_solution( assignment_id, student_id) return records
def PostTeacherAttendance(self, form): transaction_mgr = TransactionalManager() db_conn = transaction_mgr.GetDatabaseConnection("READWRITE") attendance_dao = AttendanceDao(db_conn) attendance_dao.PostTeacherAttendance(form) transaction_mgr.save()
def GetTeacherAttendanceReport(self): transaction_mgr = TransactionalManager() db_conn = transaction_mgr.GetDatabaseConnection("READWRITE") attendance_dao = AttendanceDao(db_conn) teacher_attendance_report = attendance_dao.GetTeacherAttendanceReport() return teacher_attendance_report
def GetTeacherLatestDateAttendanceDetails(self): transaction_mgr = TransactionalManager() db_conn = transaction_mgr.GetDatabaseConnection("READWRITE") attendance_dao = AttendanceDao(db_conn) teacher_latest_attendance_details = attendance_dao.GetTeacherLatestDateAttendanceDetails( ) return teacher_latest_attendance_details
def post_leave(self, user_id: int, start_date: str, end_date: str, type_of_leave: str, reason: str): """ this function is used to post a leave given the employee_id, start_date, end_date, type_of_leave reason""" transaction_manager = TransactionalManager() db_conn = transaction_manager.GetDatabaseConnection("READWRITE") leave_dao = LeaveDao(db_conn) leave_dao.post_leave(user_id, start_date, end_date, type_of_leave, reason) transaction_manager.save()
def get_leave_history_record_teacher(self, employee_id: int): transaction_manager = TransactionalManager() db_conn = transaction_manager.GetDatabaseConnection("READWRITE") leave_dao = LeaveDao(db_conn) records = leave_dao.get_leave_history_record_teacher(employee_id) for leave_records in records: leave_records['attendance_date'] = leave_records[ 'attendance_date'].strftime("%Y-%m-%d") if leave_records['type_of_leave'] == None: leave_records['type_of_leave'] = "N/A" return records
def DashboardDataCard2(self, student_id: int): transaction_mgr = TransactionalManager() db_conn = transaction_mgr.GetDatabaseConnection("READWRITE") attendance_dao = AttendanceDao(db_conn) card2_data = attendance_dao.DashboardCard2(student_id) for leave_record in card2_data: leave_record['attendance_date'] = leave_record[ 'attendance_date'].strftime('%Y-%m-%d') return card2_data
def get_leave_record_admin(self, leave_id): """this function return the leave record of an employee given the leave id """ transaction_manager = TransactionalManager() db_conn = transaction_manager.GetDatabaseConnection("READWRITE") leave_dao = LeaveDao(db_conn) records = leave_dao.get_leave_record_admin(leave_id) for leave_records in records: leave_records['start_date'] = leave_records['start_date'].strftime( '%Y-%m-%d') leave_records['end_date'] = leave_records['end_date'].strftime( '%Y-%m-%d') return records
def GetTeacherAttendanceByName(self, teacher_name: str): transaction_mgr = TransactionalManager() db_conn = transaction_mgr.GetDatabaseConnection("READWRITE") attendance_dao = AttendanceDao(db_conn) attendance_by_name = attendance_dao.GetTeacherAttendanceByName( teacher_name) for record in attendance_by_name: record['attendance_date'] = record['attendance_date'].strftime( "%Y-%m-%d") return attendance_by_name
def get_leave_record(self, user_id: int): """ to get the leave records based on the user id""" transaction_manager = TransactionalManager() db_conn = transaction_manager.GetDatabaseConnection("READWRITE") leave_dao = LeaveDao(db_conn) records = leave_dao.get_leave(user_id) for leave_records in records: leave_records['start_date'] = leave_records['start_date'].strftime( '%Y-%m-%d') leave_records['end_date'] = leave_records['end_date'].strftime( '%Y-%m-%d') return records
def GetTeacherAttendanceReportByName(self, emp_id): transaction_mgr = TransactionalManager() db_conn = transaction_mgr.GetDatabaseConnection("READWRITE") attendance_dao = AttendanceDao(db_conn) teacher_attendance_report_name = attendance_dao.GetTeacherAttendanceReportByName( emp_id) for record in teacher_attendance_report_name: record['attendance_date'] = record['attendance_date'].strftime( "%Y-%m-%d") return teacher_attendance_report_name
def TeacherDashboardLineGraph(self, class_id: int): transaction_mgr = TransactionalManager() db_conn = transaction_mgr.GetDatabaseConnection("READWRITE") attendance_dao = AttendanceDao(db_conn) highest_attendance = attendance_dao.teacher_dashboard_highest_attendance( class_id) average_attendance = attendance_dao.teacher_dashboard_average_attendance( class_id) lowest_attendance = attendance_dao.teacher_dashboard_worst_attendance( class_id) return { "highest_attendance": highest_attendance, "average_attendance": average_attendance, "lowest_attendance": lowest_attendance }
def PutStudentAttendance(self, student_id: int, start_date: str = None, end_date: str = None, status: str = None): """Put the student attendance based on start date and end date and student id""" if not start_date or not end_date: start_date = end_date = utils.GetTodaysDateAsStartAndEndDate() transaction_mgr = TransactionalManager() db_conn = transaction_mgr.GetDatabaseConnection("READWRITE") attendance_dao = AttendanceDao(db_conn) attendance_dates_status_map = attendance_dao.PutAttendanceByStudentId( student_id, start_date, end_date, status) transaction_mgr.save()
def DashboardDataCard4(self, student_id: int): transaction_mgr = TransactionalManager() db_conn = transaction_mgr.GetDatabaseConnection("READWRITE") attendance_dao = AttendanceDao(db_conn) card4_data_your_attendance = attendance_dao.DashboardCard4your_attendance( student_id) card4_data_highest_attendance = attendance_dao.dashboard_card4_highest_attendance( student_id) card4_data_average_attendance = attendance_dao.dashboard_card4_average_attendance( student_id) card4_data = { "your_attendance": card4_data_your_attendance, "highest_attendance": card4_data_highest_attendance, "average_attendance": card4_data_average_attendance } return card4_data
def GetStudentLeaves(self, roll_no: int = None, student_id: int = None, class_id: int = None, admission_id: int = None): # Initiate Transaction manager transaction_manager = TransactionalManager() try: db_conn = transaction_manager.GetDatabaseConnection("READ") leave_dao = LeaveDao(db_conn) student_leaves = None if admission_id: student_leaves = leave_dao.GetLeavesByAdmissionNo(admission_id) elif roll_no: if class_id: student_leaves = leave_dao.GetLeavesByStudentClassId( roll_no, class_id) else: raise Exception( 'Class id is required with student roll no.') elif student_id: student_leaves = leave_dao.GetStudentLeavesById(student_id) transaction_manager.end() return student_leaves # Add specific exceptions. except Exception: # Log exception. print("Exception occurred while fetching leaves for a user.") transaction_manager.end() raise
def assignment_submit(self, student_id: int, assignment_sol): transaction_mgr = TransactionalManager() db_conn = transaction_mgr.GetDatabaseConnection("READWRITE") assignment_dao = AssignmentSubmitDao(db_conn) for solutions in assignment_sol: question_type = assignment_dao.check_question_type( solutions['question_pool_id']) if question_type[0]['question_type_id'] != 3: assignment_dao.submit_assignment(student_id, solutions['question_pool_id'], solutions['solution']) else: assignment_dao.submit_assignment_manual( student_id, solutions['question_pool_id'], solutions['solution']) assignment_dao.submit_assignment_student( student_id, assignment_sol[0]['question_pool_id']) transaction_mgr.save()
def PostStudentsAttendance(self, class_id: int, updated_by: int, roll_no: int, start_date: str = None, end_date: str = None, status: str = None): """Post the student attendance based on start date and end date and student id""" if not start_date or not end_date: start_date = end_date = utils.GetTodaysDateAsStartAndEndDate() transaction_mgr = TransactionalManager() db_conn = transaction_mgr.GetDatabaseConnection("READWRITE") attendance_dao = AttendanceDao(db_conn) attendance_dates_status_map = attendance_dao.PostAttendanceByClassId( class_id, updated_by, roll_no, start_date, end_date, status) transaction_mgr.save()
def get_pending_assignment_handler(self, student_id): # Creating a connection with the database transaction_mgr = TransactionalManager() db_conn = transaction_mgr.GetDatabaseConnection("READWRITE") assignment_dao = AssignmentQuestionsDao(db_conn) # Calling the DAO pending_assignment = assignment_dao.get_pending_assignments_dao( student_id) # Modifying the date to appropriate format for record in pending_assignment: record['initiation_date'] = record['initiation_date'].strftime( "%Y-%m-%d") record['submission_date'] = record['submission_date'].strftime( "%Y-%m-%d") return pending_assignment
def GetStudentAttendance(self, student_id: int, start_date: str = None, end_date: str = None): """Get the student attendance based on start date and end date.""" if not start_date or not end_date: start_date = end_date = utils.GetTodaysDateAsStartAndEndDate() transaction_mgr = TransactionalManager() db_conn = transaction_mgr.GetDatabaseConnection("READWRITE") attendance_dao = AttendanceDao(db_conn) # Make dao request to get the data. attendance_dates_status_map = attendance_dao.GetAttendanceByStudentId( student_id, start_date, end_date) for attendance_records in attendance_dates_status_map: attendance_records['attendance_date'] = attendance_records[ 'attendance_date'].strftime("%Y-%m-%d") return attendance_dates_status_map
def get_assignment(self, assignment_id): # Creating a connection with the database transaction_mgr = TransactionalManager() db_conn = transaction_mgr.GetDatabaseConnection("READWRITE") assignment_dao = AssignmentQuestionsDao(db_conn) # Calling the DAO question_paper = assignment_dao.get_assignment_dao(assignment_id) # To store the non-null or non-empty records modified_question_paper = [] for record in question_paper: new_record = {} for key, value in record.items(): if value is not None and value != "": new_record[key] = value modified_question_paper.append(new_record) return modified_question_paper
def check_user(self, employee_id="", teacher_id=""): """ :return: """ return_val = None return_msg = None transaction_mgr = TransactionalManager() db_conn = transaction_mgr.GetDatabaseConnection("READ") if employee_id != "": check = CheckUser(db_conn) return_val = check.check_employee(employee_id) return_msg = return_val[0] elif teacher_id != "": check = CheckUser(db_conn) return_val = check.check_teacher(teacher_id) return_msg = return_val[0] transaction_mgr.end() return (return_msg, True) if return_val[1] else (return_msg, False)
def GetStudentLatestDateAttendanceDetails(self): transaction_mgr = TransactionalManager() db_conn = transaction_mgr.GetDatabaseConnection("READWRITE") attendance_dao = AttendanceDao(db_conn) student_latest_attendance_details = attendance_dao.GetStudentLatestDateAttendanceDetails( ) for record in student_latest_attendance_details: record[ 'student_name'] = f"{record['student_fname']} {record['student_lname']}" record[ 'class_name'] = f"{record['standard']} - {record['section']}" record['parent_notified'] = "Informed" if record[ 'parent_notified'] == 1 else "Uninformed" record['parent_acknowledged'] = "Acknowledged" if record[ 'parent_acknowledged'] == 1 else "Unacknowledged" record.pop('student_fname') record.pop('student_lname') record.pop('standard') record.pop('section') return student_latest_attendance_details
def GetStudentsLowAttendance(self): transaction_mgr = TransactionalManager() db_conn = transaction_mgr.GetDatabaseConnection("READWRITE") attendance_dao = AttendanceDao(db_conn) low_attendance = attendance_dao.GetStudentsLowAttendance() for record in low_attendance: record['percent'] = float("{:.2f}".format(record['present'] * 100 / record['working'])) record[ 'student_name'] = f"{record['student_fname']} {record['student_lname']}" record[ 'class_name'] = f"{record['standard']} - {record['section']}" record.pop('standard') record.pop('section') record.pop('student_fname') record.pop('student_lname') record.pop('present') record.pop('working') return low_attendance