def mark_holidays(att_map, from_date, to_date, students_list):
	holiday_list = get_holiday_list()
	holidays = get_holidays(holiday_list)

	for dt in daterange(getdate(from_date), getdate(to_date)):
		if dt in holidays:
			for student in students_list:
				att_map.setdefault(student, frappe._dict()).setdefault(dt, "Holiday")

	return att_map
示例#2
0
def execute(filters=None):
    if not filters:
        filters = {}

    if not filters.get("date"):
        msgprint(_("Please select date"), raise_exception=1)

    columns = get_columns(filters)
    date = filters.get("date")

    holiday_list = get_holiday_list()
    if is_holiday(holiday_list, filters.get("date")):
        msgprint(
            _("No attendance has been marked for {0} as it is a Holiday").
            format(frappe.bold(formatdate(filters.get("date")))))

    absent_students = get_absent_students(date)
    leave_applicants = get_leave_applications(date)
    if absent_students:
        student_list = [d["student"] for d in absent_students]
        transportation_details = get_transportation_details(date, student_list)

    data = []
    for student in absent_students:
        if not student.student in leave_applicants:
            row = [
                student.student, student.student_name, student.student_group
            ]
            stud_details = frappe.db.get_value(
                "Student",
                student.student, ['student_email_id', 'student_mobile_number'],
                as_dict=True)

            if stud_details.student_email_id:
                row += [stud_details.student_email_id]
            else:
                row += [""]

            if stud_details.student_mobile_number:
                row += [stud_details.student_mobile_number]
            else:
                row += [""]
            if transportation_details.get(student.student):
                row += transportation_details.get(student.student)

            data.append(row)

    return columns, data
示例#3
0
def execute(filters=None):
    if not filters:
        filters = {}

    if not filters.get("date"):
        msgprint(_("Please select date"), raise_exception=1)

    holiday_list = get_holiday_list()
    if is_holiday(holiday_list, filters.get("date")):
        msgprint(
            _("No attendance has been marked for {0} as it is a Holiday").
            format(frappe.bold(formatdate(filters.get("date")))))

    columns = get_columns(filters)

    active_student_group = get_active_student_group()

    data = []
    for student_group in active_student_group:
        row = [student_group.name]
        present_students = 0
        absent_students = 0
        student_group_strength = get_student_group_strength(student_group.name)
        student_attendance = get_student_attendance(student_group.name,
                                                    filters.get("date"))
        if student_attendance:
            for attendance in student_attendance:
                if attendance.status == "Present":
                    present_students = attendance.count
                elif attendance.status == "Absent":
                    absent_students = attendance.count

        unmarked_students = student_group_strength - \
            (present_students + absent_students)
        row += [
            student_group_strength, present_students, absent_students,
            unmarked_students
        ]
        data.append(row)

    return columns, data
    def update_attendance(self):
        holiday_list = get_holiday_list()

        for dt in daterange(getdate(self.from_date), getdate(self.to_date)):
            date = dt.strftime("%Y-%m-%d")

            if is_holiday(holiday_list, date):
                continue

            attendance = frappe.db.exists("Student Attendance", {
                "student": self.student,
                "date": date,
                "docstatus": ("!=", 2)
            })

            status = "Present" if self.mark_as_present else "Absent"
            if attendance:
                # update existing attendance record
                values = dict()
                values["status"] = status
                values["leave_application"] = self.name
                frappe.db.set_value("Student Attendance", attendance, values)
            else:
                # make a new attendance record
                doc = frappe.new_doc("Student Attendance")
                doc.student = self.student
                doc.student_name = self.student_name
                doc.date = date
                doc.leave_application = self.name
                doc.status = status
                if self.attendance_based_on == "Student Group":
                    doc.student_group = self.student_group
                else:
                    doc.course_schedule = self.course_schedule
                doc.insert(ignore_permissions=True, ignore_mandatory=True)
                doc.submit()
    def update_attendance(self):
        holiday_list = get_holiday_list()

        for dt in daterange(getdate(self.from_date), getdate(self.to_date)):
            date = dt.strftime('%Y-%m-%d')

            if is_holiday(holiday_list, date):
                continue

            attendance = frappe.db.exists('Student Attendance', {
                'student': self.student,
                'date': date,
                'docstatus': ('!=', 2)
            })

            status = 'Present' if self.mark_as_present else 'Absent'
            if attendance:
                # update existing attendance record
                values = dict()
                values['status'] = status
                values['leave_application'] = self.name
                frappe.db.set_value('Student Attendance', attendance, values)
            else:
                # make a new attendance record
                doc = frappe.new_doc('Student Attendance')
                doc.student = self.student
                doc.student_name = self.student_name
                doc.date = date
                doc.leave_application = self.name
                doc.status = status
                if self.attendance_based_on == 'Student Group':
                    doc.student_group = self.student_group
                else:
                    doc.course_schedule = self.course_schedule
                doc.insert(ignore_permissions=True, ignore_mandatory=True)
                doc.submit()
 def validate_holiday_list(self):
     holiday_list = get_holiday_list()
     self.total_leave_days = get_number_of_leave_days(
         self.from_date, self.to_date, holiday_list)
示例#7
0
 def update_if_holiday(self, date):
     holiday_list = self.holiday_list or get_holiday_list(self.company)
     while is_holiday(holiday_list, date):
         date = add_days(date, 1)
     return date
示例#8
0
def update_if_holiday(holiday_list, date):
    holiday_list = holiday_list or get_holiday_list()
    while is_holiday(holiday_list, date):
        date = add_days(date, 1)
    return date