from typing import List from .utils import http_get from ceo_common.model import Term import ceo.cli.utils as cli_utils import ceo.tui.utils as tui_utils # Had to put these in a separate file to avoid a circular import. def get_terms_for_new_user(num_terms: int) -> List[str]: current_term = Term.current() terms = [current_term + i for i in range(num_terms)] return list(map(str, terms)) def get_terms_for_renewal( username: str, num_terms: int, clubrep: bool, tui_model=None, ) -> List[str]: resp = http_get('/api/members/' + username) if tui_model is None: result = cli_utils.handle_sync_response(resp) else: result = tui_utils.handle_sync_response(resp, tui_model) max_term = None current_term = Term.current() if clubrep and 'non_member_terms' in result: max_term = max(Term(s) for s in result['non_member_terms']) elif not clubrep and 'terms' in result: max_term = max(Term(s) for s in result['terms']) if max_term is not None and max_term >= current_term: next_term = max_term + 1 else: next_term = Term.current() terms = [next_term + i for i in range(num_terms)] return list(map(str, terms))