brewman/brewman/brewman/models/attendance_type.py

39 lines
1.3 KiB
Python

from decimal import Decimal
from typing import List
class AttendanceType:
id: int
name: str
value: Decimal
def __init__(self, id_: int, name: str, value: Decimal) -> None:
self.id = id_
self.name = name
self.value = value
@classmethod
def list(cls) -> List["AttendanceType"]:
return [
AttendanceType(0, "Not Set", Decimal(0)),
AttendanceType(1, "Present", Decimal(1)),
AttendanceType(2, "Off Day", Decimal(1)),
AttendanceType(3, "On Leave", Decimal(0)),
AttendanceType(4, "Absent", Decimal(0)),
AttendanceType(5, "Half Day", Decimal(0.5)),
AttendanceType(6, "Double Duty", Decimal(2)),
AttendanceType(7, "Paid Leave Availed", Decimal(1)),
AttendanceType(8, "Casual Leave Availed", Decimal(1)),
AttendanceType(9, "Compensatory Off", Decimal(1)),
AttendanceType(10, "Half Day + PL", Decimal(1)),
AttendanceType(11, "Half Day + CL", Decimal(1)),
]
@classmethod
def by_name(cls, name: str) -> "AttendanceType":
return next(i for i in cls.list() if i.name == name)
@classmethod
def by_id(cls, id_: int) -> "AttendanceType":
return next(i for i in cls.list() if i.id == id_)