summaryrefslogtreecommitdiff
path: root/indoteknik_api/controllers/api_v1
diff options
context:
space:
mode:
authorRafi Zadanly <zadanlyr@gmail.com>2023-01-27 17:10:57 +0700
committerRafi Zadanly <zadanlyr@gmail.com>2023-01-27 17:10:57 +0700
commit1ae31b80e82373cac0275daeb943f054296917af (patch)
tree91cc19eb9aa73f684874aaf2c0bdae46eedf9e8f /indoteknik_api/controllers/api_v1
parent3afc9d7c40a2fe9858aaa69b79ebdb52ccfa0830 (diff)
wishlist by user
Diffstat (limited to 'indoteknik_api/controllers/api_v1')
-rw-r--r--indoteknik_api/controllers/api_v1/wishlist.py63
1 files changed, 63 insertions, 0 deletions
diff --git a/indoteknik_api/controllers/api_v1/wishlist.py b/indoteknik_api/controllers/api_v1/wishlist.py
index 9860f40b..192a9c49 100644
--- a/indoteknik_api/controllers/api_v1/wishlist.py
+++ b/indoteknik_api/controllers/api_v1/wishlist.py
@@ -5,6 +5,7 @@ from odoo.http import request
class Wishlist(controller.Controller):
prefix = '/api/v1/'
+ PREFIX_USER = prefix + 'user/<user_id>/'
@http.route(prefix + 'wishlist', auth='public', methods=['GET'])
def get_wishlist_by_user_id(self, **kw):
@@ -71,3 +72,65 @@ class Wishlist(controller.Controller):
create = request.env['website.user.wishlist'].create(params)
result['id'] = create.id
return self.response(result)
+
+ @http.route(PREFIX_USER + 'wishlist', auth='public', methods=['GET', 'OPTIONS'])
+ def get_user_wishlist(self, **kw):
+ user_token = self.authenticate()
+ if not user_token:
+ return self.unauthorized_response()
+
+ params = self.get_request_params(kw, {
+ 'user_id': ['number'],
+ 'product_id': [],
+ 'limit': ['default:0', 'number'],
+ 'offset': ['default:0', 'number'],
+ })
+ limit = params['value']['limit']
+ offset = params['value']['offset']
+ if not user_token['id'] == params['value']['user_id']:
+ return self.unauthorized_response()
+ if not params['valid']:
+ return self.response(code=400, description=params)
+
+ domain = [('user_id', '=', params['value']['user_id'])]
+ if params['value']['product_id']:
+ domain.append(('product_id', '=', params['value']['product_id']))
+ wishlists = request.env['website.user.wishlist'].search(domain, limit=limit, offset=offset, order='create_date DESC')
+ product = []
+ for wishlist in wishlists:
+ product.append(request.env['product.template'].api_single_response(wishlist.product_id))
+ data = {
+ 'product_total': request.env['website.user.wishlist'].search_count(domain),
+ 'products': product
+ }
+ return self.response(data)
+
+ @http.route(PREFIX_USER + 'wishlist/create-or-delete', auth='public', methods=['POST', 'OPTIONS'], csrf=False)
+ def create_or_delete_user_wishlist(self, **kw):
+ user_token = self.authenticate()
+ if not user_token:
+ return self.unauthorized_response()
+
+ params = self.get_request_params(kw, {
+ 'user_id': ['number'],
+ 'product_id': ['required', 'number'],
+ })
+ if not user_token['id'] == params['value']['user_id']:
+ return self.unauthorized_response()
+ if not params['valid']:
+ return self.response(code=400, description=params)
+
+ query = [
+ ('user_id', '=', params['value']['user_id']),
+ ('product_id', '=', params['value']['product_id'])
+ ]
+ wishlist = request.env['website.user.wishlist'].search(query, limit=1)
+ result = {}
+ if wishlist:
+ wishlist.unlink()
+ result['id'] = wishlist.id
+ else:
+ create = request.env['website.user.wishlist'].create(params['value'])
+ result['id'] = create.id
+ return self.response(result)
+ \ No newline at end of file