Beispiel #1
0
async def close_workitem(
    jtrace: Session,
    workitem_id: int,
    user: UKRDCUser,
    mirth: MirthAPI,
    redis: Redis,
    comment: Optional[str] = None,
) -> MirthMessageResponseSchema:
    """Close a WorkItem by ID if it exists and the user has permission

    Args:
        jtrace (Session): JTRACE SQLAlchemy session
        workitem_id (int): WorkItem ID
        user (UKRDCUser): User object
        mirth (MirthAPI): Mirth API instance
        redis (Redis): Redis session
        comment (str, optional): User comment to add to WorkItem

    Returns:
        MirthMessageResponseSchema: Mirth API response object
    """
    workitem = get_workitem(jtrace, workitem_id, user)

    return await safe_send_mirth_message_to_name(
        "WorkItemUpdate",
        build_close_workitem_message(workitem.id, comment or "", user.email),
        mirth,
        redis,
    )
Beispiel #2
0
async def workitem_close(
        workitem_id: int,
        args: Optional[CloseWorkItemRequestSchema],
        jtrace: Session = Depends(get_jtrace),
        user: UKRDCUser = Security(auth.get_user()),
        mirth: MirthAPI = Depends(get_mirth),
        redis: Redis = Depends(get_redis),
        audit: Auditer = Depends(get_auditer),
):
    """Update and close a particular work item"""
    workitem = get_workitem(jtrace, workitem_id, user)

    audit.add_event(Resource.WORKITEM, workitem.id, AuditOperation.UPDATE)

    return await close_workitem(
        jtrace,
        workitem.id,
        user,
        mirth,
        redis,
        comment=(args.comment if args else None),
    )
Beispiel #3
0
def test_get_workitem_denied(jtrace_session, test_user):
    with pytest.raises(PermissionsError):
        workitems.get_workitem(jtrace_session, 2, test_user)
Beispiel #4
0
def test_get_workitem_user(jtrace_session, test_user):
    record = workitems.get_workitem(jtrace_session, 1, test_user)
    assert record
    assert record.id == 1