summaryrefslogtreecommitdiff
path: root/indoteknik_api/controllers/api_v1/cart.py
diff options
context:
space:
mode:
authorRafi Zadanly <zadanlyr@gmail.com>2023-09-23 11:50:20 +0700
committerRafi Zadanly <zadanlyr@gmail.com>2023-09-23 11:50:20 +0700
commitdae4a3bf266ba4c19b1ba1d11c52ed9e19259b7c (patch)
tree8858e0660aa004b582aedf6f437c0f455f8ad1ef /indoteknik_api/controllers/api_v1/cart.py
parentadbc9b985f1c5fb2b2f41f79c686b3a573003e62 (diff)
Update promotion program scheme
Diffstat (limited to 'indoteknik_api/controllers/api_v1/cart.py')
-rw-r--r--indoteknik_api/controllers/api_v1/cart.py21
1 files changed, 15 insertions, 6 deletions
diff --git a/indoteknik_api/controllers/api_v1/cart.py b/indoteknik_api/controllers/api_v1/cart.py
index 6faac27f..2243ec0f 100644
--- a/indoteknik_api/controllers/api_v1/cart.py
+++ b/indoteknik_api/controllers/api_v1/cart.py
@@ -31,7 +31,7 @@ class Cart(controller.Controller):
return self.response(carts)
@http.route(PREFIX_USER + 'cart/create-or-update', auth='public', methods=['POST', 'OPTIONS'], csrf=False)
- @controller.Controller.must_authorized()
+ @controller.Controller.must_authorized(private=True, private_key='user_id')
def create_or_update_cart(self, user_id, **kw):
# Convert input values to appropriate types
user_id = int(user_id)
@@ -54,19 +54,29 @@ class Cart(controller.Controller):
user_query = ('user_id', '=', user_id)
website_user_cart.search([user_query, ('source', '=', 'buy')]).unlink()
- # Prepare query to find existing cart entry for the product
- query = [user_query, ('product_id', '=', product_id), ('source', '=', 'add_to_cart')]
+ # Prepare query to find existing cart entry
+ query = [user_query, ('source', '=', 'add_to_cart')]
+ if product_id:
+ query.append(('product_id', '=', product_id))
+ elif program_line_id:
+ query.append(('program_line_id', '=', program_line_id))
+
cart = website_user_cart.search(query, limit=1)
- result = {}
+
data_to_update = {
'qty': qty,
'is_selected': is_selected,
- 'program_line_id': program_line_id
+ 'program_line_id': program_line_id,
+ 'product_id': product_id
}
+ if program_line_id:
+ data_to_update['product_id'] = False
+
if source:
data_to_update['source'] = source
+ result = {}
if cart and source in (None, 'add_to_cart'):
# Update existing cart entry
cart.write(data_to_update)
@@ -75,7 +85,6 @@ class Cart(controller.Controller):
# Create a new cart entry if it doesn't exist
create = website_user_cart.create({
'user_id': user_id,
- 'product_id': product_id,
**data_to_update
})
result['id'] = create.id