from typing import Dict, Any, Optional from color import Color import api.projects COLOR_TITLE = Color(Color.YELLOW) COLOR_HEADER = Color(Color.CYAN) COLOR_WHITE = Color(Color.BRIGHT_WHITE) COLOR_PLANNED = Color(Color.BRIGHT_BLACK) COLOR_STARTED = Color(226) COLOR_FINISHED = Color(Color.BRIGHT_BLUE) COLOR_DELIVERED = Color(208) COLOR_ACCEPTED = Color(Color.BRIGHT_GREEN) COLOR_REJECTED = Color(Color.BRIGHT_RED) def _format_state(state: str, header: Optional[bool] = False) -> str: STATES = { 'accepted': COLOR_ACCEPTED.format('Acc' if header else 'accepted'), 'rejected': COLOR_REJECTED.format('Rej' if header else 'rejected'), 'delivered': COLOR_DELIVERED.format('Del' if header else 'delivered'), 'finished': COLOR_FINISHED.format('Fin' if header else 'finished'), 'started': COLOR_STARTED.format('Sta' if header else 'started'), 'planned': COLOR_PLANNED.format('Pln' if header else 'planned'), 'unstarted': COLOR_PLANNED.format('Uns' if header else 'unstarted'), } return STATES[state] def _get_persons(project_id: int) -> Dict[int, Dict[str, Any]]: memberships = api.projects.get_memberships(project_id) persons: Dict[int, Dict[str, Any]] = {} for membership in memberships: person = membership['person'] persons[person['id']] = person return persons