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 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 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 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 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 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 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 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 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 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 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 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_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 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 upload_assignment(self, user_id, title, description, deadline, subject, class_, section, list_of_files, manual_marks): """ :return: """ return_val = None transaction_mgr = TransactionalManager() db_conn = transaction_mgr.GetDatabaseConnection("READWRITE") section = re.findall('\w+', section) return_msg = "" # comma separate all files comma_files = str() for file_count in range(0, len(list_of_files)): comma_files = comma_files + list_of_files[file_count] if file_count <= len(list_of_files) - 2: comma_files += ", " assignment_dao = AssignmentDao(db_conn, class_=class_, section=section, subject=subject, \ comma_files=comma_files, title=title, description=description, \ deadline=deadline, user_id=user_id) for file in list_of_files: # Fetching assignment type, type = re.search('__[\w]+?__', file) type = file[type.start(0) + 2:type.end(0) - 2] file_ext = file.split('.')[1] # Fetching file number for manual marks, file_num = re.search('_file\d{1}?_', file) file_num = file[file_num.start(0) + 1:file_num.end(0) - 1] if type == "manual": mark = manual_marks.get(file_num, "") return_val = assignment_dao.upload_manual( file, comma_files, mark, type) elif type == "subjective" and file_ext.startswith("xls"): return_val = assignment_dao.upload_subjective( file, comma_files, type) elif type == "mcq" and file_ext.startswith("xls"): return_val = assignment_dao.upload_MCQ(file, comma_files, type) # Break if any one fails if return_val[1] == True: return_msg += " " + return_val[0] else: break if return_val[1] == True: transaction_mgr.save() return return_msg transaction_mgr.end() return return_msg
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 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 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 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 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 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 active_assignments(self, user_id): """ :param user_id: :return: """ return_val = None transaction_manager = TransactionalManager() db_conn = transaction_manager.GetDatabaseConnection("READWRITE") assignment_view = AssignmentDao(db_conn) return_val = assignment_view.active_assignment_by_userid(user_id) if return_val[1] == True: transaction_manager.save() return return_val[0] transaction_manager.end() return return_val[0]
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 teacher_assignment_view(self, user_id, teacher_id, class_, section, subject): """ :return: """ return_val = None transaction_manager = TransactionalManager() db_conn = transaction_manager.GetDatabaseConnection("READWRITE") assignment_view = AssignmentView(db_conn) return_val = assignment_view.assignment_by_class_subject_id( user_id, teacher_id, class_, section, subject) if return_val[1] == True: transaction_manager.save() return return_val[0] transaction_manager.end() return return_val[0]
def assignment_student_detail_view(self, assignment_id, teacher_id): """ :param assignment_id: :return: """ return_val = None transaction_manager = TransactionalManager() db_conn = transaction_manager.GetDatabaseConnection("READ") assignment_view = AssignmentView(db_conn) return_val = assignment_view.student_submissions_view_by_assignment( assignment_id, teacher_id) if return_val[1] == True: transaction_manager.save() return return_val[0] transaction_manager.end() return return_val[0]
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