39 lines
1.3 KiB
Python
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_)
|