Skip to content

Person

sereto.cli.person

prompt_user_for_person(person_type)

Interactively prompt for a person's details.

Parameters:

Name Type Description Default
person_type PersonType

The type of person to prompt for.

required

Returns:

Type Description
Person

The person as provided by the user.

Source code in sereto/cli/person.py
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
@validate_call
def prompt_user_for_person(person_type: PersonType) -> Person:
    """Interactively prompt for a person's details.

    Args:
        person_type: The type of person to prompt for.

    Returns:
        The person as provided by the user.
    """
    name: str | None = Prompt.ask("Name", console=Console(), default=None)
    business_unit: str | None = Prompt.ask("Business unit", console=Console(), default=None)
    while True:
        try:
            e: str | None = Prompt.ask("Email", console=Console(), default=None)
            ta: TypeAdapter[EmailStr] = TypeAdapter(EmailStr)  # hack for mypy
            email: EmailStr | None = ta.validate_python(e) if e is not None else None
            break
        except ValidationError:
            Console().print("[red]Please enter valid email address")
    role: str | None = Prompt.ask("Role", console=Console(), default=None)

    return Person(type=person_type, name=name, business_unit=business_unit, email=email, role=role)