diff --git a/brewman/routers/attendance.py b/brewman/routers/attendance.py
index 45276127..7a3efbfc 100644
--- a/brewman/routers/attendance.py
+++ b/brewman/routers/attendance.py
@@ -26,14 +26,14 @@ def get_db() -> Session:
db.close()
-@router.get("")
+@router.get("", response_model=schemas.Attendance)
def attendance_blank(
request: Request, user: UserToken = Security(get_user, scopes=["attendance"])
):
return {"date": get_date(request.session), "body": []}
-@router.get("/{date_}")
+@router.get("/{date_}", response_model=schemas.Attendance)
def attendance_date(
date_: str,
request: Request,
@@ -90,10 +90,10 @@ def attendance_date_report(date_: date, db: Session):
return body
-@router.post("/{date_}")
+@router.post("/{date_}", response_model=schemas.Attendance)
def save(
date_: str,
- data: schemas.AttendanceIn,
+ data: schemas.Attendance,
db: Session = Depends(get_db),
user: UserToken = Security(get_user, scopes=["attendance"]),
):
diff --git a/brewman/routers/employee.py b/brewman/routers/employee.py
index 69e73851..a255050e 100644
--- a/brewman/routers/employee.py
+++ b/brewman/routers/employee.py
@@ -151,7 +151,7 @@ async def show_list(db: Session = Depends(get_db), user: UserToken = Depends(get
]
-@router.get("/query",) # "Authenticated"
+@router.get("/query")
async def show_term(
q: str,
c: int = None,
@@ -159,7 +159,7 @@ async def show_term(
current_user: UserToken = Depends(get_user),
):
list_ = []
- for index, item in enumerate(AccountBase.list(10, q, dbsession=db)):
+ for index, item in enumerate(AccountBase.query(q=q, type_=10, db=db)):
list_.append(
{
"id": item.id,
diff --git a/brewman/routers/employee_attendance.py b/brewman/routers/employee_attendance.py
index 238cb763..b179d107 100644
--- a/brewman/routers/employee_attendance.py
+++ b/brewman/routers/employee_attendance.py
@@ -28,7 +28,7 @@ def get_db() -> Session:
db.close()
-@router.get("")
+@router.get("", response_model=schemas.EmployeeAttendance)
def show_blank(
request: Request,
user: UserToken = Security(get_user, scopes=["attendance"]),
@@ -41,9 +41,9 @@ def show_blank(
}
-@router.get("/{id_}")
+@router.get("/{id_}", response_model=schemas.EmployeeAttendance)
def employee_attendance_report(
- id_: int,
+ id_: uuid.UUID,
request: Request,
s: str = None,
f: str = None,
@@ -90,23 +90,23 @@ def employee_attendance(employee: Employee, start_date: date, finish_date: date,
.first()
)
att = 0 if att is None else att.attendance_type
- prints, hours, worked = get_prints(employee.id, item, db)
+ prints, hours_worked, full_day = get_prints(employee.id, item, db)
list_.append(
- {
- "date": item.strftime("%d-%b-%Y"),
- "attendanceType": {"id": att},
- "prints": prints,
- "hours": hours,
- "worked": worked,
- }
+ schemas.EmployeeAttendanceItem(
+ date=item.strftime("%d-%b-%Y"),
+ attendanceType={"id": att},
+ prints=prints,
+ hoursWorked=hours_worked,
+ fullDay=full_day
+ )
)
return list_
-@router.post("/{id_}")
+@router.post("/{id_}", response_model=schemas.EmployeeAttendance)
def save_employee_attendance(
id_: uuid.UUID,
- data: schemas.EmployeeAttendanceIn,
+ data: schemas.EmployeeAttendance,
db: Session = Depends(get_db),
user: UserToken = Security(get_user, scopes=["attendance"]),
):
@@ -115,14 +115,14 @@ def save_employee_attendance(
employee: Employee = db.query(Employee).filter(Employee.id == id_).first()
for item in data.body:
if start_date is None:
- start_date = item.date
- finish_date = item.date
+ start_date = item.date_
+ finish_date = item.date_
attendance_type = item.attendance_type.id_
if attendance_type != 0:
attendance = Attendance(
employee_id=employee.id,
- date=item.date,
+ date=item.date_,
attendance_type=attendance_type,
user_id=user.id_,
)
diff --git a/brewman/schemas/reports.py b/brewman/schemas/reports.py
index d94ca01f..a34322e8 100644
--- a/brewman/schemas/reports.py
+++ b/brewman/schemas/reports.py
@@ -21,6 +21,8 @@ class LedgerItem(BaseModel):
@validator("date_", pre=True)
def parse_date(cls, value):
+ if isinstance(value, date):
+ return value
return datetime.strptime(value, "%d-%b-%Y").date()
class Config:
@@ -42,10 +44,14 @@ class Ledger(BaseModel):
@validator("start_date", pre=True)
def parse_start_date(cls, value):
+ if isinstance(value, date):
+ return value
return datetime.strptime(value, "%d-%b-%Y").date()
@validator("finish_date", pre=True)
def parse_finish_date(cls, value):
+ if isinstance(value, date):
+ return value
return datetime.strptime(value, "%d-%b-%Y").date()
@@ -73,6 +79,8 @@ class BalanceSheet(BaseModel):
@validator("date_", pre=True)
def parse_date(cls, value):
+ if isinstance(value, date):
+ return value
return datetime.strptime(value, "%d-%b-%Y").date()
@@ -110,10 +118,14 @@ class CashFlow(BaseModel):
@validator("start_date", pre=True)
def parse_start_date(cls, value):
+ if isinstance(value, date):
+ return value
return datetime.strptime(value, "%d-%b-%Y").date()
@validator("finish_date", pre=True)
def parse_finish_date(cls, value):
+ if isinstance(value, date):
+ return value
return datetime.strptime(value, "%d-%b-%Y").date()
@@ -139,6 +151,8 @@ class ClosingStock(BaseModel):
@validator("date_", pre=True)
def parse_date(cls, value):
+ if isinstance(value, date):
+ return value
return datetime.strptime(value, "%d-%b-%Y").date()
@@ -156,6 +170,8 @@ class DaybookItem(BaseModel):
@validator("date_", pre=True)
def parse_date(cls, value):
+ if isinstance(value, date):
+ return value
return datetime.strptime(value, "%d-%b-%Y").date()
class Config:
@@ -176,10 +192,14 @@ class Daybook(BaseModel):
@validator("start_date", pre=True)
def parse_start_date(cls, value):
+ if isinstance(value, date):
+ return value
return datetime.strptime(value, "%d-%b-%Y").date()
@validator("finish_date", pre=True)
def parse_finish_date(cls, value):
+ if isinstance(value, date):
+ return value
return datetime.strptime(value, "%d-%b-%Y").date()
@@ -207,10 +227,14 @@ class NetTransactions(BaseModel):
@validator("start_date", pre=True)
def parse_start_date(cls, value):
+ if isinstance(value, date):
+ return value
return datetime.strptime(value, "%d-%b-%Y").date()
@validator("finish_date", pre=True)
def parse_finish_date(cls, value):
+ if isinstance(value, date):
+ return value
return datetime.strptime(value, "%d-%b-%Y").date()
@@ -231,6 +255,8 @@ class ProductLedgerItem(BaseModel):
@validator("date_", pre=True)
def parse_date(cls, value):
+ if isinstance(value, date):
+ return value
return datetime.strptime(value, "%d-%b-%Y").date()
class Config:
@@ -252,10 +278,14 @@ class ProductLedger(BaseModel):
@validator("start_date", pre=True)
def parse_start_date(cls, value):
+ if isinstance(value, date):
+ return value
return datetime.strptime(value, "%d-%b-%Y").date()
@validator("finish_date", pre=True)
def parse_finish_date(cls, value):
+ if isinstance(value, date):
+ return value
return datetime.strptime(value, "%d-%b-%Y").date()
@@ -285,10 +315,14 @@ class ProfitLoss(BaseModel):
@validator("start_date", pre=True)
def parse_start_date(cls, value):
+ if isinstance(value, date):
+ return value
return datetime.strptime(value, "%d-%b-%Y").date()
@validator("finish_date", pre=True)
def parse_finish_date(cls, value):
+ if isinstance(value, date):
+ return value
return datetime.strptime(value, "%d-%b-%Y").date()
@@ -305,6 +339,8 @@ class PurchaseEntriesItem(BaseModel):
@validator("date_", pre=True)
def parse_date(cls, value):
+ if isinstance(value, date):
+ return value
return datetime.strptime(value, "%d-%b-%Y").date()
class Config:
@@ -324,10 +360,14 @@ class PurchaseEntries(BaseModel):
@validator("start_date", pre=True)
def parse_start_date(cls, value):
+ if isinstance(value, date):
+ return value
return datetime.strptime(value, "%d-%b-%Y").date()
@validator("finish_date", pre=True)
def parse_finish_date(cls, value):
+ if isinstance(value, date):
+ return value
return datetime.strptime(value, "%d-%b-%Y").date()
diff --git a/brewman/schemas/voucher.py b/brewman/schemas/voucher.py
index 77e63ebf..18d6bc4c 100644
--- a/brewman/schemas/voucher.py
+++ b/brewman/schemas/voucher.py
@@ -5,6 +5,7 @@ from typing import List, Optional
from pydantic import BaseModel, validator
from brewman.schemas import to_camel
+from brewman.schemas.master import AccountLink
class Voucher(BaseModel):
@@ -95,18 +96,65 @@ class AttendanceItem(BaseModel):
class Config:
alias_generator = to_camel
-class AttendanceIn(BaseModel):
+
+class Attendance(BaseModel):
+ date_: Optional[date]
body: List[AttendanceItem]
+ @validator("date_", pre=True)
+ def parse_date(cls, value):
+ if isinstance(value, date):
+ return value
+ return datetime.strptime(value, "%d-%b-%Y").date()
+
+ class Config:
+ anystr_strip_whitespace = True
+ alias_generator = to_camel
+ json_encoders = {date: lambda v: v.strftime("%d-%b-%Y")}
+
class EmployeeAttendanceItem(BaseModel):
- date: date
+ date_: date
attendance_type: AttendanceType
+ prints: str
+ hours_worked: str
+ full_day: Optional[bool]
+
+ @validator("date_", pre=True)
+ def parse_date(cls, value):
+ if isinstance(value, date):
+ return value
+ return datetime.strptime(value, "%d-%b-%Y").date()
+
+ class Config:
+ anystr_strip_whitespace = True
+ alias_generator = to_camel
+ json_encoders = {date: lambda v: v.strftime("%d-%b-%Y")}
-class EmployeeAttendanceIn(BaseModel):
+class EmployeeAttendance(BaseModel):
+ start_date: Optional[date]
+ finish_date: Optional[date]
+ employee: Optional[AccountLink]
body: List[EmployeeAttendanceItem]
+ @validator("start_date", pre=True)
+ def parse_start_date(cls, value):
+ if isinstance(value, date):
+ return value
+ return datetime.strptime(value, "%d-%b-%Y").date()
+
+ @validator("finish_date", pre=True)
+ def parse_finish_date(cls, value):
+ if isinstance(value, date):
+ return value
+ return datetime.strptime(value, "%d-%b-%Y").date()
+
+ class Config:
+ anystr_strip_whitespace = True
+ alias_generator = to_camel
+ json_encoders = {date: lambda v: v.strftime("%d-%b-%Y")}
+
class Fingerprint(BaseModel):
id: uuid.UUID
diff --git a/overlord/src/app/employee-attendance/employee-attendance.component.html b/overlord/src/app/employee-attendance/employee-attendance.component.html
index 782ff5c4..efe240ba 100644
--- a/overlord/src/app/employee-attendance/employee-attendance.component.html
+++ b/overlord/src/app/employee-attendance/employee-attendance.component.html
@@ -58,9 +58,9 @@
{{row.prints}}
new_releases
-
- {{row.hours}}
+
+ {{row.hoursWorked}}
diff --git a/overlord/src/app/employee-attendance/employee-attendance.ts b/overlord/src/app/employee-attendance/employee-attendance.ts
index ea1e5ba1..da400256 100644
--- a/overlord/src/app/employee-attendance/employee-attendance.ts
+++ b/overlord/src/app/employee-attendance/employee-attendance.ts
@@ -16,8 +16,8 @@ export class EmployeeAttendanceItem {
date: string;
attendanceType: AttendanceType;
prints: string;
- hours: string;
- worked: string;
+ hoursWorked: string;
+ fullDay?: boolean;
public constructor(init?: Partial) {
Object.assign(this, init);