예제 #1
0
def list_customers_codes():
    params = request.args
    used = params.get('used')
    if used is None:
        return jsonify(list(cs.customer_codes)), 200
    elif int(used) == 1:
        return jsonify(list(cs.list_used_customer_codes())), 200
    else:
        return jsonify(list(cs.list_unused_customer_codes())), 200
예제 #2
0
def create_address(customer_id):
    data = request.get_json()
    required = ['contact', 'address_line1', 'address_line2', 'postcode', 'country']
    lacked = lack_keys(data, required)
    if lacked:
        raise LackRequiredData(lacked)

    new_address = Address(data)
    cs.create_customer_address(customer_id, new_address)
    return new_address.json(), 201
예제 #3
0
def update_customer(customer_id):
    data = request.get_json()
    if 'id' in data:
        del data['id']

    customer = cs.get_one_customer(customer_id)
    for key, value in data.items():
        if key in customer.__dict__:
            customer.__dict__[key] = value

    cs.update_customer(customer)
    return customer.json(), 200
예제 #4
0
def update_address(customer_id, address_id):
    data = request.get_json()
    if 'id' in data:
        del data['id']

    if 'customer_id' in data:
        del data['customer_id']

    address = cs.get_one_address(customer_id, address_id)
    for key, value in data.items():
        if key in address.__dict__:
            address.__dict__[key] = value

    cs.update_address(address)
    return address.json(), 200
예제 #5
0
def switch_customer():
    data = request.get_json()
    # Check necessary keys
    required = ['customer_id']
    lacked = lack_keys(data, required)

    if lacked:
        raise LackRequiredData(lacked)

    cust_id = data.get('customer_id')
    customer = cs.get_one_customer(cust_id)

    sync_products_prices(customer.customer_code)
    return jsonify({'message': 'Switch customer successfully'}), 200
예제 #6
0
def create_customer():
    data = request.get_json()
    cust_data = data.get('customer')
    addr_data = data.get('address')

    # Check customer necessary keys
    cust_required = ['customer_code', 'title', 'first_name', 'last_name']
    cust_lacked = lack_keys(cust_data, cust_required, prefix='customer')

    if cust_lacked:
        raise LackRequiredData(cust_lacked)
    # Check customer_code
    cust_code = cust_data['customer_code']
    if cust_code not in cs.customer_codes:
        return jsonify({'message': f'Provided customer code {cust_code} does not exist'}), 404

    if cust_code not in cs.list_unused_customer_codes():
        return jsonify({'message': f'Provided customer code {cust_code} is already used'}), 409

    new_customer = Customer(cust_data)

    # Create customer only
    if addr_data is None:
        cs.create_customer(new_customer)
        return jsonify({"customer": new_customer.__dict__}), 201

    # Create customer with address
    addr_data = data['address']
    addr_required = ['contact', 'address_line1', 'address_line2', 'postcode', 'country']
    addr_lacked = lack_keys(addr_data, addr_required, prefix='address')
    if addr_lacked:
        raise LackRequiredData(addr_lacked)

    new_address = Address(addr_data)
    cs.create_customer(new_customer, new_address)
    return jsonify({'customer': new_customer.__dict__, 'address': new_address.__dict__}), 201
예제 #7
0
def get_customer(customer_id):
    return cs.get_one_customer(customer_id).json(), 200
예제 #8
0
def list_customers():
    all_customers = cs.list_all_customers()
    return jsonify([c.__dict__ for c in all_customers]), 200
예제 #9
0
def del_address(customer_id, address_id):
    cs.delete_address(customer_id, address_id)
    return jsonify({'message': f'Address {address_id} deleted'})
예제 #10
0
def list_addresses(customer_id):
    cust_addresses = cs.list_customer_addresses(customer_id)
    return jsonify([addr.__dict__ for addr in cust_addresses]), 200
예제 #11
0
def del_customer(customer_id):
    cs.delete_customer(customer_id)
    return jsonify({'message': f'Customer {customer_id} deleted'}), 200