summaryrefslogtreecommitdiff
path: root/indoteknik_api/controllers/api_v1/cart.py
diff options
context:
space:
mode:
authorIT Fixcomart <it@fixcomart.co.id>2023-07-24 08:38:12 +0000
committerIT Fixcomart <it@fixcomart.co.id>2023-07-24 08:38:12 +0000
commitc344ccd81208b5b466ae047dbb9e084dd5d0f358 (patch)
treec07caf6a1df48719b828fbe270bb62ccc3e0c947 /indoteknik_api/controllers/api_v1/cart.py
parent989002aca3ed9b1e724e9b98d8ca3513ba598663 (diff)
parent2ad6b4ecf783b5dfe0d4aa11f238cbf6aefd9747 (diff)
Merged in production (pull request #66)
Production
Diffstat (limited to 'indoteknik_api/controllers/api_v1/cart.py')
-rw-r--r--indoteknik_api/controllers/api_v1/cart.py53
1 files changed, 34 insertions, 19 deletions
diff --git a/indoteknik_api/controllers/api_v1/cart.py b/indoteknik_api/controllers/api_v1/cart.py
index a8628432..0265ec57 100644
--- a/indoteknik_api/controllers/api_v1/cart.py
+++ b/indoteknik_api/controllers/api_v1/cart.py
@@ -5,55 +5,70 @@ 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_cart = request.env['website.user.cart']
+ 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')
+ carts = user_cart.search(query, limit=limit, offset=offset, order='create_date desc')
data = {
- 'product_total': request.env['website.user.cart'].search_count(query),
- 'products': []
+ 'product_total': user_cart.search_count(query),
+ 'products': carts.get_products()
}
- 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/count', auth='public', methods=['GET', 'OPTIONS'])
@controller.Controller.must_authorized()
- def create_or_update_cart(self, **kw):
- user_id = int(kw.get('user_id', 0))
+ def get_cart_count_by_user_id(self, user_id, **kw):
+ user_id = int(user_id)
+ query = [('user_id', '=', user_id)]
+ carts = request.env['website.user.cart'].search_count(query)
+ return self.response(carts)
+
+ @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, user_id, **kw):
+ user_id = int(user_id)
product_id = int(kw.get('product_id', 0))
qty = int(kw.get('qty', 0))
+ is_selected = kw.get('selected', False)
+ program_line_id = kw.get('program_line_id', False)
+ program_line_id = False if program_line_id == 'null' or not program_line_id else int(program_line_id)
+ if is_selected:
+ is_selected = True if is_selected == 'true' else 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')
query = [('user_id', '=', user_id), ('product_id', '=', product_id)]
cart = request.env['website.user.cart'].search(query, limit=1)
result = {}
+ data_to_update = {
+ 'qty': qty,
+ 'is_selected': is_selected,
+ 'program_line_id': program_line_id
+ }
if cart:
- cart.write({'qty': qty})
+ 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
+ **data_to_update
})
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: