def order_create()

in cqrs/services/order/main.py [0:0]


def order_create():
    json_data = request.get_json()
    customer_id, product_id, number, order_date = None, None, None, None
    invalid_fields = []
    for key in json_data.keys():
        if key == 'customer_id':
            customer_id = json_data[key]
        elif key == 'product_id':
            product_id = json_data[key]
        elif key == 'number':
            number = json_data[key]
        elif key == 'order_date':
            order_date = json_data[key]
        else:
            invalid_fields.append(key)
    if order_date is None:
        order_date = datetime.date.today().strftime('%Y-%m-%d')
    else:
        result = re.match(r'^(\d{4}-\d{2}-\d{2})$', order_date)
        if result:
            order_date = result.group(1) # '%Y-%m-%d'
            #order_date = datetime.datetime.strptime(result.group(1), '%Y-%m-%d')
        else:
            order_date = None

    if customer_id is None or number is None or product_id is None:
        return error500()

    order = {
        'customer_id': customer_id,
        'order_id': str(uuid.uuid4()),
        'product_id': product_id,
        'number': number,
        'order_date': order_date
    }
    event = {
        'event_id': str(uuid.uuid4()),
        'topic': 'order-service-cqrs-event',
        'type': 'order_create',
        'timestamp': datetime.datetime.utcnow(),
        'published': False,
        'body': json.dumps(order)
    }

    with ds_client.transaction():
        incomplete_key = ds_client.key('OrderCQRS')
        order_entity = datastore.Entity(key=incomplete_key)
        order_entity.update(order)
        ds_client.put(order_entity)

        incomplete_key = ds_client.key('Event')
        event_entity = datastore.Entity(key=incomplete_key)
        event_entity.update(event)
        ds_client.put(event_entity)

    return order, 200