$def with (status, event, messages) $code def format(time: int) -> str: if time is not None and time > 0: return minutes_seconds(time) + ' min' else: return '' def color(status: ResultStatus) -> str: if status == ResultStatus.OK: return '#70ff70' # green elif status in (ResultStatus.MISSING_PUNCH, ResultStatus.DID_NOT_FINISH, ResultStatus.OVER_TIME): return '#ff7070' # red else: return '#ffff00' # yellow def format_cardreader_status(status: str) -> str: if status is None or status == 'offline': return '

Card reader offline

' elif status in ['readerConnected', 'cardRead', 'cardRemoved']: return '

Card reader connected

' elif status in ['online', 'readerDisconnected']: return '

Card reader disconnected

' elif status == 'cardInserted': return '

Reading card

' def missing(status: str, missing_controls) -> str: if status == ResultStatus.OK: if missing_controls: if len(missing_controls) == 1: return '1 control' else: return str(len(missing_controls)) + ' controls' else: if missing_controls: if 'FINISH' in missing_controls: return 'Finish time' elif 'START' in missing_controls: return 'Start time' elif len(missing_controls) == 1: return missing_controls[0] elif len(missing_controls) == 2: return missing_controls[0] + ', ' + missing_controls[1] elif len(missing_controls) == 3: return missing_controls[0] + ', ' + missing_controls[1] + ', ' + missing_controls[2] elif len(missing_controls) >= 4: return str(len(missing_controls)) + ' controls'
Event name: $(event.name if event else '')
Event date: $(event.date.isoformat() if event and event.date else '')

$for result in messages: $if event and event.id == result.get('eventId', '-2'): $if result.get('status') in (ResultStatus.OK, ResultStatus.MISSING_PUNCH, ResultStatus.DID_NOT_FINISH, ResultStatus.OVER_TIME): $else:
Read Control card Status Time Name Class Missing controls
$result.get('entryTime', '') $format_card(result.get('controlCard')) $MAP_STATUS[result.get('status')] $format(result.get('time', 0))$result.get('lastName', ''), $result.get('firstName', '') $result.get('class', '') $missing(result.get('status'), result.get('missingControls', []))$result.get('error', '')

$:format_cardreader_status(status)