summaryrefslogtreecommitdiff
path: root/indoteknik_api/controllers/api_v1/cart.py
diff options
context:
space:
mode:
authorRafi Zadanly <zadanlyr@gmail.com>2023-06-15 16:48:29 +0700
committerRafi Zadanly <zadanlyr@gmail.com>2023-06-15 16:48:29 +0700
commitbc6bc85f455c4b8bc9f73b779b521faa5fcdcf96 (patch)
tree08c434bd0d6935945c95c81eae29b3b4c8aacafb /indoteknik_api/controllers/api_v1/cart.py
parent55c67c71b04fce80c635b3a58d91c8bcb02e17c8 (diff)
Update user cart model and API
Diffstat (limited to 'indoteknik_api/controllers/api_v1/cart.py')
-rw-r--r--indoteknik_api/controllers/api_v1/cart.py36
1 files changed, 19 insertions, 17 deletions
diff --git a/indoteknik_api/controllers/api_v1/cart.py b/indoteknik_api/controllers/api_v1/cart.py
index a8628432..0d54ecbc 100644
--- a/indoteknik_api/controllers/api_v1/cart.py
+++ b/indoteknik_api/controllers/api_v1/cart.py
@@ -5,32 +5,30 @@ from odoo.http import request
class Cart(controller.Controller):
prefix = '/api/v1/'
+ PREFIX_USER = prefix + 'user/<user_id>/'
- @http.route(prefix + 'cart', auth='public', methods=['GET'])
+ @http.route(PREFIX_USER + 'cart', auth='public', methods=['GET', 'OPTIONS'])
@controller.Controller.must_authorized()
- def get_cart_by_user_id(self, **kw):
- user_id = int(kw.get('user_id', 0))
+ def get_cart_by_user_id(self, user_id, **kw):
+ user_id = int(user_id)
limit = int(kw.get('limit', 0))
offset = int(kw.get('offset', 0))
query = [('user_id', '=', user_id)]
carts = request.env['website.user.cart'].search(query, limit=limit, offset=offset, order='create_date desc')
data = {
'product_total': request.env['website.user.cart'].search_count(query),
- 'products': []
+ 'products': [cart.get_product() for cart in carts]
}
- for cart in carts:
- product = request.env['product.product'].api_single_response(cart.product_id)
- product['template_id'] = cart.product_id.product_tmpl_id.id
- product['quantity'] = cart.qty
- data['products'].append(product)
return self.response(data)
- @http.route(prefix + 'cart/create-or-update', auth='public', methods=['POST'], csrf=False)
+ @http.route(PREFIX_USER + 'cart/create-or-update', auth='public', methods=['POST', 'OPTIONS'], csrf=False)
@controller.Controller.must_authorized()
- def create_or_update_cart(self, **kw):
- user_id = int(kw.get('user_id', 0))
+ def create_or_update_cart(self, user_id, **kw):
+ user_id = int(user_id)
product_id = int(kw.get('product_id', 0))
qty = int(kw.get('qty', 0))
+ is_selected = int(kw.get('is_selected', False))
+ program_line_id = int(kw.get('program_line_id', False))
if not user_id or not product_id or not qty:
return self.response(code=400, description='user_id, product_id and qty is required')
@@ -38,22 +36,26 @@ class Cart(controller.Controller):
cart = request.env['website.user.cart'].search(query, limit=1)
result = {}
if cart:
- cart.write({'qty': qty})
+ data_to_update = {'qty': qty, 'is_selected': is_selected}
+ if program_line_id:
+ data_to_update['program_line_id'] = program_line_id
+ cart.write(data_to_update)
result['id'] = cart.id
else:
create = request.env['website.user.cart'].create({
'user_id': user_id,
'product_id': product_id,
- 'qty': qty
+ 'qty': qty,
+ 'is_selected': is_selected
})
result['id'] = create.id
return self.response(result)
- @http.route(prefix + 'cart', auth='public', methods=['DELETE'], csrf=False)
+ @http.route(PREFIX_USER + 'cart', auth='public', methods=['DELETE', 'OPTIONS'], csrf=False)
@controller.Controller.must_authorized()
- def delete_cart_by_user_id(self, **kw):
- user_id = int(kw.get('user_id', 0))
+ def delete_cart_by_user_id(self, user_id, **kw):
+ user_id = int(user_id)
query = [('user_id', '=', user_id)]
product_ids = kw.get('product_ids')
if product_ids: