def employees_by_responsibilities(employees: list[schemas.Employee], responsibilities: bool = True, by_date: datetime.date | None = None) -> list[schemas.Employee]:
result: list[schemas.Employee] = []
print(f"List:{result}")
fact_employment = []
for emp in employees:
for e in emp.fact_employment_history:
fact_employment.append(e)
for emp in employees:
if by_date:
employments = check_employment_by_date(by_date, fact_employment)
print(f"Employments check by data: {employments}")
if any(e.Responsibilities == responsibilities for e in employments):
result.append(emp)
print(f"argument function: {responsibilities}")
print(f"e.Responsibilities: {[e.Responsibilities for e in employments]}")
return result
def check_employment_by_date(by_date: datetime.date, fact_employment_history: list[schemas.Employment]):
return [
e
for e in fact_employment_history
if (e.EmploymentStart or datetime.date(1000, 1, 1)) = by_date)
]
Суть в том, что в базе данных хранятся данные о занятости сотрудника, моя цель функции сделать так, чтобы она выдавала список сотрудников, чьи обязанности = True, иначе пропускаем тех, чьи обязанности = Ложь
result: list[schemas.Employee] = [] print(f"List:{result}") fact_employment = [] for emp in employees: for e in emp.fact_employment_history: fact_employment.append(e) for emp in employees: if by_date: employments = check_employment_by_date(by_date, fact_employment) print(f"Employments check by data: {employments}")
if any(e.Responsibilities == responsibilities for e in employments): result.append(emp) print(f"argument function: {responsibilities}") print(f"e.Responsibilities: {[e.Responsibilities for e in employments]}")
return result
def check_employment_by_date(by_date: datetime.date, fact_employment_history: list[schemas.Employment]): return [ e for e in fact_employment_history if (e.EmploymentStart or datetime.date(1000, 1, 1)) = by_date) ] [/code] Пример сотрудника [code]Id EmployeeId EmploymentStart EmploymentEnd Fired PositionId Responsibilities PositionStart 866 20960 2024-05-01 2024-05-17 1 638893 1 NULL 884 20960 2024-05-20 NULL 0 638893 0 NULL [/code] --Журналы-- [code]List:[] Employments check by data: [Employment(Company=None, EmploymentStart=datetime.date(2024, 5, 1), EmploymentEnd=datetime.date(2024, 5, 17), Fired=True, Position=Dictionary(Name='Головний бухгалтер', Description='1231', SpecId=114, id=638893), IsPartTime=None, Responsibilities=True, TimeoffBalances=[], c_FreeTimeoffCount=None, Documents=[], id=866)] argument function: True e.Responsibilities: [True] List:[] [/code] Суть в том, что в базе данных хранятся данные о занятости сотрудника, моя цель функции сделать так, чтобы она выдавала список сотрудников, чьи обязанности = True, иначе пропускаем тех, чьи обязанности = Ложь