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
示例#2
0
    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
示例#6
0
    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)
示例#7
0
    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()
示例#8
0
 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
示例#12
0
    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()
示例#13
0
 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
示例#15
0
 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
示例#17
0
    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
示例#22
0
 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
示例#23
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()
示例#25
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
示例#27
0
    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
示例#28
0
    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