Add employee engagement pause and dependency workflow phase 3
This commit is contained in:
@@ -49,6 +49,8 @@ from app.modules.employees.service import (
|
||||
get_employee_engagement_work_board,
|
||||
start_employee_engagement_workflow,
|
||||
save_employee_workflow_task,
|
||||
pause_employee_engagement_workflow,
|
||||
resume_employee_engagement_workflow,
|
||||
list_employee_work_assignable_users,
|
||||
list_visible_work_assignment_dashboard,
|
||||
list_engagement_progress_dashboard,
|
||||
@@ -2129,6 +2131,44 @@ def employee_my_work_engagement_board(request: Request, engagement_id: int, task
|
||||
db.close()
|
||||
|
||||
|
||||
@portal_router.post("/work/engagements/{engagement_id}/pause")
|
||||
def employee_workflow_pause(request: Request, engagement_id: int, reason: str = Form(...), notes: str = Form(""), follow_up_date: str = Form(""), csrf_token: str = Form(...)):
|
||||
db = CommonSessionLocal()
|
||||
try:
|
||||
current_user = get_current_user(request, db=db)
|
||||
if not current_user: return _redirect_login()
|
||||
try: require_permission(db, current_user, "employees.work.view_self")
|
||||
except Exception: return _redirect_denied()
|
||||
try: validate_csrf(request, csrf_token)
|
||||
except PermissionError: return _csrf_rejected(request)
|
||||
scope = build_employee_scope(db, current_user, tenant_id=request.session.get("active_tenant_id") or current_user.tenant_id, branch_id=request.session.get("active_branch_id"))
|
||||
try:
|
||||
pause_employee_engagement_workflow(db, scope, engagement_id, reason=reason, notes=notes, follow_up_date=follow_up_date, actor_user_id=current_user.id, financial_year=_active_financial_year(request))
|
||||
except ValueError:
|
||||
db.rollback(); return RedirectResponse(url=f"/employee/work/engagements/{engagement_id}?pause_error=1", status_code=303)
|
||||
return RedirectResponse(url=f"/employee/work/engagements/{engagement_id}?paused=1", status_code=303)
|
||||
finally: db.close()
|
||||
|
||||
|
||||
@portal_router.post("/work/engagements/{engagement_id}/resume")
|
||||
def employee_workflow_resume(request: Request, engagement_id: int, csrf_token: str = Form(...)):
|
||||
db = CommonSessionLocal()
|
||||
try:
|
||||
current_user = get_current_user(request, db=db)
|
||||
if not current_user: return _redirect_login()
|
||||
try: require_permission(db, current_user, "employees.work.view_self")
|
||||
except Exception: return _redirect_denied()
|
||||
try: validate_csrf(request, csrf_token)
|
||||
except PermissionError: return _csrf_rejected(request)
|
||||
scope = build_employee_scope(db, current_user, tenant_id=request.session.get("active_tenant_id") or current_user.tenant_id, branch_id=request.session.get("active_branch_id"))
|
||||
try:
|
||||
resume_employee_engagement_workflow(db, scope, engagement_id, actor_user_id=current_user.id, financial_year=_active_financial_year(request))
|
||||
except ValueError:
|
||||
db.rollback(); return RedirectResponse(url=f"/employee/work/engagements/{engagement_id}?resume_error=1", status_code=303)
|
||||
return RedirectResponse(url=f"/employee/work/engagements/{engagement_id}?resumed=1", status_code=303)
|
||||
finally: db.close()
|
||||
|
||||
|
||||
@portal_router.post("/work/engagements/{engagement_id}/tasks/{task_id}/save")
|
||||
def employee_workflow_task_save(
|
||||
request: Request,
|
||||
|
||||
Reference in New Issue
Block a user