def get_updated_customer_data(customer, headers):
    index = 1

    while index < len(customer):
        ask_label = view.color_sentence(
            Fore.GREEN, f"Would you like to edit {headers[index]}? ")
        new_data_label = view.color_sentence(
            Fore.GREEN, f"Provide new {headers[index]}: ")
        decision = view.get_yes_or_no(ask_label)
        if decision:
            customer[index] = view.get_input(new_data_label)
            customer[index] = accept_data(customer[index], new_data_label)
        index += 1
    return customer
def get_customer_data():

    name_label = view.color_sentence(Fore.GREEN, "Provide customer name: ")
    name = view.get_input(name_label)
    if name.lower() == BACK_WORD:
        return
    name = accept_data(name, name_label)

    email_label = view.color_sentence(Fore.GREEN, "Provide customer email: ")
    email = view.get_input(email_label)
    if email.lower() == BACK_WORD:
        return
    email = accept_data(email, email_label)

    subscribe_label = view.color_sentence(Fore.GREEN,
                                          "Is the customer a subscriber? ")
    subscribed = view.get_yes_or_no(subscribe_label)
    subscribed = accept_data(subscribed, subscribe_label)
    subscribed = "1" if subscribed else '0'

    return [name, email, subscribed]
示例#3
0
def delete_transaction():
    view.clear_console()
    transactions = sales.read()
    view.print_table(transactions, sales.HEADERS)
    index = view.get_input('Provide a valid transactions id to delete profile: ')
    choices = range(len(transactions))
    choices = map(lambda x: str(x + 1), choices)
    while index not in choices:
        view.print_error_message("Incorrect value. Try again!")
        index = view.get_input('Provide a valid transactions id to update profile: ')
    transactions.pop(int(index) - 1)
    sales.create(transactions)
    view.print_message(view.color_sentence(Fore.GREEN, "Transaction was deleted."))
    view.wait_for_reaction()
def menu():
    operation = None
    while operation != '0':
        display_menu()
        try:
            operation = view.get_input(
                view.color_sentence(Fore.GREEN, "\nSelect an operation: "))
            run_operation(int(operation))
            view.wait_for_reaction()
        except KeyError:
            view.print_error_message("There is no such option.")
            view.wait_for_reaction()
        except ValueError:
            view.print_error_message("Please enter a number!")
            view.wait_for_reaction()
def delete_customer():
    view.clear_console()
    view.print_message("Delete customer: ")

    customers = crm.read()
    view.print_table(customers, crm.HEADERS, title='All customers:')

    delete_label = view.color_sentence(Fore.GREEN,
                                       "Provide customer id to remove: ")
    customer_index = view.get_input_number(delete_label,
                                           max_value=len(customers))

    customers.pop(int(customer_index) - 1)
    crm.create(customers)

    view.print_message("Customer was removed correctly.")
def update_customer():
    view.clear_console()
    view.print_message("Update customer: ")

    customers = crm.read()
    view.print_table(customers, crm.HEADERS, title='All customers:')

    update_label = view.color_sentence(Fore.GREEN,
                                       "Provide customer id to update: ")
    customer_index = view.get_input_number(update_label,
                                           max_value=len(customers)) - 1

    customer_to_update = customers.pop(int(customer_index))
    updated_customer = get_updated_customer_data(customer_to_update,
                                                 crm.HEADERS)
    customers.insert(int(customer_index), updated_customer)

    crm.create(customers)

    view.print_message("Customer was updated correctly.")
def accept_data(data, label):
    while not view.get_yes_or_no(
            view.color_sentence(Fore.GREEN,
                                f"Is the value \"{data}\" correct? ")):
        data = view.get_input(label)
    return data