Add phase 3 consultant task execution workflow
This commit is contained in:
@@ -62,6 +62,7 @@ from app.modules.consultants.service import (
|
||||
)
|
||||
from app.modules.consultants.portal_service import (
|
||||
get_consultant_assignment_detail,
|
||||
update_consultant_assignment,
|
||||
get_consultant_document_centre,
|
||||
get_consultant_work_board,
|
||||
)
|
||||
@@ -1837,3 +1838,32 @@ def consultant_documents_page(request: Request, q: str = ""):
|
||||
)
|
||||
finally:
|
||||
db.close()
|
||||
|
||||
|
||||
@portal_router.post("/assignments/{task_id}/execution")
|
||||
async def consultant_assignment_execution(request: Request, task_id: int, csrf_token: str = Form(...)):
|
||||
validate_csrf(request, csrf_token)
|
||||
form = await request.form()
|
||||
db = CommonSessionLocal()
|
||||
try:
|
||||
user = get_current_user(request, db=db)
|
||||
if not user:
|
||||
return RedirectResponse(url="/login", status_code=303)
|
||||
if not (_has_perm(db, user, "consultants.portal.view") or _is_consultant(db, user)):
|
||||
return _redirect_denied()
|
||||
consultant = _get_own_consultant_or_dashboard(request, db, user)
|
||||
if not consultant:
|
||||
return RedirectResponse(url="/consultant/dashboard", status_code=303)
|
||||
detail = get_consultant_assignment_detail(db, consultant=consultant, task_id=task_id)
|
||||
if not detail:
|
||||
return RedirectResponse(url="/consultant/work", status_code=303)
|
||||
ok, error = update_consultant_assignment(db, consultant=consultant, task=detail["task"], action=str(form.get("action") or ""), note=str(form.get("note") or ""), user_id=user.id)
|
||||
if not ok:
|
||||
refreshed = get_consultant_assignment_detail(db, consultant=consultant, task_id=task_id) or detail
|
||||
return _render(request, "modules/consultants/templates/consultants/assignment_detail.html", db, user, title="Consultant Work Detail", consultant=consultant, **refreshed, errors=[error or "Action could not be completed."])
|
||||
db.commit()
|
||||
return RedirectResponse(url=f"/consultant/assignments/{task_id}?execution=updated", status_code=303)
|
||||
except Exception:
|
||||
db.rollback(); raise
|
||||
finally:
|
||||
db.close()
|
||||
|
||||
Reference in New Issue
Block a user