Example #1
0
def _format_status(session: 'CheckCalibrationSession',
                   router: UrlDispatcher) -> 'CalibrationSessionStatus':
    pips = session.pipettes
    # pydantic restricts dictionary keys that can be evaluated. Since
    # the session pipettes dictionary has a UUID as a key, we must first
    # convert the UUID to a hex string.
    instruments = {token.hex: data for token, data in pips.items() if token}
    current = session.state_machine.current_state.name
    next = session.state_machine.next_state
    if next:
        path = router.get(next.name, '')
        if path:
            url = path.url_for()
        else:
            url = path
        links = {'links': {next.name: url}}
    else:
        links = {'links': {}}
    status = CalibrationSessionStatus(instruments=instruments,
                                      currentStep=current,
                                      nextSteps=links)
    return status