39 lines
1.2 KiB
Python
39 lines
1.2 KiB
Python
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))
|