botapi 1.2.1

Creator: railscoder56

Last updated:

Add to Cart

Description:

botapi 1.2.1

Build json API fast and simple

Key Features

Provides simple API.
Supports serialize/deserialize class objects to/from dictionary.
Field type may be the same with model type (self_base Field attribute)



Installation
pip install botapi


Getting started
Let’s take some data:
order = {
'user': {
'name': 'Jack',
'surname': 'Doe',
'phone': '123456789',
},
'date': '2020-12-10 10:12:13',
'paid': True,
'items': [
{
'name': 'product 1',
'id': 1,
'quantity': 2,
'subtotal': 10.5
},
{
'name': 'product 2',
'id': 2,
'quantity': 1,
'subtotal': 5
}
]
}
Write models:
from datetime import datetime

from botapi import Model, Field, ListField

class Item(Model):
name = Field()
item_id = Field(alias='id')


# inherit model
class CartItem(Item):
quantity = Field(base=int)
subtotal = Field()


class UserModel(Model):
name = Field()
surname = Field()
phone = Field()


class OrderModel(Model):
user = Field(base=UserModel)
paid = Field(base=bool, default=False)
cart = ListField(item_base=CartItem, default=[], alias='items')
order_date = DateTimeField()
Deserialize and work with data:
# deserialize data
obj = OrderModel(**order)

# work with data
obj.user.name = 'John'
obj.paid = True
obj.cart[0].subtotal = 12.5
obj.order_date = datetime.now()
Serialize model:
# may be you want to add some data
comment = 'call before delivery'

# serialize data
print(obj.serialize(data_to_update={'comment': comment}))
Output:
{'user': {'surname': 'Doe', 'phone': '123456789', 'name': 'John'}, 'paid': True, 'items': [{'quantity': 2, 'subtotal': 12.5, 'id': 1, 'name': 'product 1'}, {'quantity': 1, 'subtotal': 5, 'id': 2, 'name': 'product 2'}], 'order_date': '2020-12-22 12:04:39', 'comment': 'call before delivery'}


Requirements

Python >= 3.7



License
BotAPI is distributed under the Apache License 2.0 license.

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.