Esempio n. 1
0
def get_src_attendance(username):
    a = Attendance()
    end_time = datetime.strptime('05-59', "%H-%M").time()
    begin_time = datetime.strptime('00-00', "%H-%M").time()
    now_time = datetime.now().time()

    if now_time > begin_time and now_time < end_time:
        clock_in_date = (datetime.now() +
                         timedelta(days=-1)).strftime("%Y-%m-%d")
        result = a.user_was_present(username, clock_in_date, source='zknet')
        if result == False:
            clock_in_date = datetime.now().strftime("%Y-%m-%d")
    else:
        last_clocked_in_time = a.last_clocked_in(
            username,
            datetime.now().strftime("%Y-%m-%d"))
        if last_clocked_in_time:
            if last_clocked_in_time.time() > end_time:
                clock_in_date = datetime.now().strftime("%Y-%m-%d")
            else:
                clock_in_date = (datetime.now() +
                                 timedelta(days=+1)).strftime("%Y-%m-%d")
        else:
            clock_in_date = datetime.now().strftime("%Y-%m-%d")
    return a.user_was_present(username, clock_in_date, source='zknet')
class Student(object):
    def __init__(self, dataset: list = None):
        self.total_classes = 0
        self.total_present = 0
        self.name = ''
        if dataset is not None:
            self.subjects = Subjects(dataset)

        self.classes_to_attend = 0
        self.classes_to_bunk = 0
        self.attendance = Attendance()

    # to send one attendance at a time
    def pass_data_to_relevant_subject(self, data: list):
        self.subjects.pass_attendance(data)

    def attendance_sheet(self, attendance: list):  # 2-d list
        self.subjects = Subjects(attendance)
        self.overall_percentage(attendance)

    def overall_percentage(self, dataset):
        for data in dataset:
            self.attendance.add_attendance(
                {'attendance': data[1]},
                double_attendance=self._is_lab_subject(data[2]))

    def _is_lab_subject(self, subject_name) -> bool:
        subject_name = subject_name.lower()
        if not subject_name.find('lab') == -1:
            return True
        return False
Esempio n. 3
0
    def new(self, rfid):
        # check the duplication of RFID
        if self.FIREBASE.child(self.EMPLOYEE_NODE).get().each() is not None:
            matching_rfid = [
                o
                for o in self.FIREBASE.child(self.EMPLOYEE_NODE).get().each()
                if o.val()['rfid'] == rfid
            ]
            if matching_rfid:
                print 'Duplicate RFID'
                return False

        employee_name = raw_input('Enter employee\'s name: ')

        # add employee in the database
        validate_employee_name = self.FIREBASE.child(
            self.EMPLOYEE_NODE).child(employee_name).get()
        if validate_employee_name.val() is not None:
            print 'Employee name must be unique'
            self.new(rfid)
        employee_data = {
            "rfid": rfid,
            "created_at": self.CURRENT_TIME,
            "updated_at": self.CURRENT_TIME
        }
        self.FIREBASE.child(
            self.EMPLOYEE_NODE).child(employee_name).set(employee_data)

        # mark the attendance of that employee
        attendance = Attendance()
        attendance.markAttendance(rfid)
        print 'Registered'
        return True
Esempio n. 4
0
class Main(object):
    """Main class for attendance"""
    def __init__(self):
        super(Main, self).__init__()
        self.doer = Attendance(CommonUtil.parse_arguments())

    def executor(self):
        self.doer.process(CommonUtil.get_date_day())
    def __init__(self, dataset: list = None):
        self.total_classes = 0
        self.total_present = 0
        self.name = ''
        if dataset is not None:
            self.subjects = Subjects(dataset)

        self.classes_to_attend = 0
        self.classes_to_bunk = 0
        self.attendance = Attendance()
Esempio n. 6
0
    def start(self):
        # Create an object of the class MFRC522
        MIFAREReader = MFRC522.MFRC522()


        # This loop keeps checking for chips. If one is near it will get the UID and authenticate
        while self.CONTINUE_READING:
            
            # Scan for cards    
            (status,TagType) = MIFAREReader.MFRC522_Request(MIFAREReader.PICC_REQIDL)
            
            # Get the UID of the card
            (status,uid) = MIFAREReader.MFRC522_Anticoll()

            # If a card is found
            if status == MIFAREReader.MI_OK:
                self.__led(self.LED_GREEN, 1)
                time.sleep(0.5)
                self.__led(self.LED_GREEN, 0)
                
            # If we have the UID, continue
            if status == MIFAREReader.MI_OK:
                RFID = str(uid[0])+","+str(uid[1])+","+str(uid[2])+","+str(uid[3])
                if self.MODE:
                    record = Attendance().markAttendance(RFID)
                else:
                    record = Register().new(RFID)

                if record:
                    self.__led(self.LED_GREEN, 1)
                    time.sleep(1)
                    self.__led(self.LED_GREEN, 0)
Esempio n. 7
0
def attendance():
    if 'coachID' not in session:  # authentication - least authorized principle
        return redirect(url_for('login'))
    if request.method == 'POST':
        updatedAttendance = []
        sessionID = request.form['sessionID']
        for i in request.form:
            if i == "sessionID":
                sessionID = request.form[i]
                continue
            artistID = i[0]
            status = request.form[i[0]]
            attendanceInstance = Attendance(artistID, status)
            updatedAttendance.append(attendanceInstance)
        service = CoachService()
        response = service.setAttendance(sessionID, updatedAttendance)
        if response is False:
            print("Error")
    else:
        sessionID = request.args.get('sessionID', None)
    service = CoachService()
    attendance = service.getAttendanceSheet(sessionID)
    return render_template('attendanceSheet.html',
                           attendance=attendance,
                           sessionID=sessionID)
Esempio n. 8
0
def get_employees():
    emps_dict = {}
    try:
        with open("employees.csv", "r") as file:
            fieldnames = ["id", "name", "age", "phone"]
            csv_reader = csv.DictReader(file, fieldnames=fieldnames)
            for line in csv_reader:
                emps_dict[line["id"]] = Employee(line["id"], line["name"],
                                                 line["age"], line["phone"])

        with open("attendance_log.csv", "r") as file:
            fieldnames = ["id", "date", "time"]
            csv_reader = csv.DictReader(file, fieldnames=fieldnames)
            for line in csv_reader:
                if line["id"] in emps_dict:
                    emps_dict[line["id"]].attendance.append(
                        Attendance(line["id"], line["date"], line["time"]))

    except FileNotFoundError:
        pass
    return emps_dict
        def submit(emp_id, emps_dict):
            if not is_valid_id(emp_id):
                invalid_id_label_1.grid(row=0, column=2, sticky="W")
                return
            else:
                invalid_id_label_1.grid_remove()

            if not is_exist_id(emps_dict, emp_id):
                invalid_id_label_2.grid(row=0, column=2, sticky="W")
                return
            else:
                invalid_id_label_2.grid_remove()

            emp = emps_dict[emp_id]
            now = datetime.now()
            now_date_string = now.strftime("%d/%m/%Y")
            now_time_string = now.strftime("%H:%M:%S")
            for record in emp.attendance:
                if record.date == now_date_string:
                    dup_attendance_label.grid(row=0, column=2, sticky="W")
                    return
            dup_attendance_label.grid_remove()

            emp.attendance.append(
                Attendance(emp_id, now_date_string, now.time()))

            with open("attendance_log.csv", "a") as file:
                fieldnames = ["id", "date", "time"]
                csv_writer = csv.DictWriter(file, fieldnames=fieldnames)
                csv_writer.writerow({
                    "id": emp.emp_id,
                    "date": now_date_string,
                    "time": now_time_string
                })

            top.destroy()
 def __init__(self, subject_name: str):
     self.name: str = subject_name
     self.attendance = Attendance()
Esempio n. 11
0
from Attendance import Attendance
from Employee import Employee

attendance = Attendance()
employee = Employee()


class PayRoll:
    """
    Calculate the total payment company pay to their employee.
    """
    def __init__(self, attendance, employee):
        self.attendance = attendance
        self.employee = employee

    def each_day_payroll(self):
        total_days = self.attendance.total_days
        salary = self.employee.salary
        each_day_payment = salary / total_days
        return each_day_payment

    def get_payroll(self):
        present_days = self.attendance.present_days
        payment = self.each_day_payroll() * present_days
        return 'Total Payment: ' + str(payment)


p = PayRoll(attendance, employee)
print(p.get_payroll())
Esempio n. 12
0
# Global variables.
SUBMIT_BUTTON_TEXT = "Submit grades"
UNSORTED_STUDENTS_TEXT = "Unsorted students"
CHANGE_CURRENT_SECTION_TITLE = "Change Section"
COLORS = {
	-1: "grey",
	0: "red",
	1: "orange",
	2: "green",
}

# The main page GUI that gets changed with each section change.
gui = None

# Creates the Attendance Instance and alerts user that the program is loaded once this class loads.
grader = Attendance()
print("Program has loaded.")

# Gets the name of the class this program is being used for.
className = grader.getClassName()

# List of all the sections from the Sheets file.
allSections = grader.getSections()

# The current section that will be displayed.
currentSection = allSections[-1]

# List of students
studentsDict = grader.getDefinedGrades(currentSection)

# List of table numbers and students in those tables
Esempio n. 13
0
#!/usr/bin/env python
# -*- coding: utf8 -*-
from Read import Read
from Attendance import Attendance
from Email import Email
import sys

if len(sys.argv) > 1:
    PASSED_ARG = sys.argv[1]
    MODE = None

    if PASSED_ARG == "--register":
        MODE = 0
        Read(MODE).start()
    elif PASSED_ARG == "--read":
        MODE = 1
        Read(MODE).start()
    elif PASSED_ARG == "--offline":
        Attendance().markOfflineAttendance()
    elif PASSED_ARG == "--email":
        Email().send()
    elif PASSED_ARG == "--help":
        print open("manual.txt", "r").read()
    else:
        print "app: invalid option -- " + PASSED_ARG
        print "Try python app.py --help for more information."
else:
    print "Try python app.py --help for more information."
Esempio n. 14
0
 def get_attendance(self, attendance_key, username):
     with dbapi2.connect(self.dbfile) as connection:
         cursor = connection.cursor()
         query = "SELECT upper_limit_percent,attendance_hour1,attendance_hour2,attendance_hour3,attendance_hour4,attendance_hour5,attendance_hour6,attendance_hour7,attendance_hour8,attendance_hour9,attendance_hour10,attendance_hour11,attendance_hour12,attendance_hour13,attendance_hour14,is_important FROM attendances WHERE (id = %s AND username=%s)"
         cursor.execute(query, (attendance_key, username))
         upper_limit_percent, attendance_hour1, attendance_hour2, attendance_hour3, attendance_hour4, attendance_hour5, attendance_hour6, attendance_hour7, attendance_hour8, attendance_hour9, attendance_hour10, attendance_hour11, attendance_hour12, attendance_hour13, attendance_hour14, is_important = cursor.fetchone(
         )
         attendance_ = Attendance(upper_limit_percent, is_important,
                                  attendance_key)
         attendance_.attendance[0] = attendance_hour1
         attendance_.attendance[1] = attendance_hour2
         attendance_.attendance[2] = attendance_hour3
         attendance_.attendance[3] = attendance_hour4
         attendance_.attendance[4] = attendance_hour5
         attendance_.attendance[5] = attendance_hour6
         attendance_.attendance[6] = attendance_hour7
         attendance_.attendance[7] = attendance_hour8
         attendance_.attendance[8] = attendance_hour9
         attendance_.attendance[9] = attendance_hour10
         attendance_.attendance[10] = attendance_hour11
         attendance_.attendance[11] = attendance_hour12
         attendance_.attendance[12] = attendance_hour13
         attendance_.attendance[13] = attendance_hour14
     return attendance_
Esempio n. 15
0
 def __init__(self):
     super(Main, self).__init__()
     self.doer = Attendance(CommonUtil.parse_arguments())