From 1ae31b80e82373cac0275daeb943f054296917af Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Fri, 27 Jan 2023 17:10:57 +0700 Subject: wishlist by user --- indoteknik_api/controllers/api_v1/wishlist.py | 63 +++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) (limited to 'indoteknik_api/controllers/api_v1/wishlist.py') 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//' @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 -- cgit v1.2.3 From a197b978872cab655263541d65bc86e5131e78aa Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Mon, 30 Jan 2023 09:34:06 +0700 Subject: api wishlist --- indoteknik_api/controllers/api_v1/wishlist.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'indoteknik_api/controllers/api_v1/wishlist.py') diff --git a/indoteknik_api/controllers/api_v1/wishlist.py b/indoteknik_api/controllers/api_v1/wishlist.py index 192a9c49..a3299033 100644 --- a/indoteknik_api/controllers/api_v1/wishlist.py +++ b/indoteknik_api/controllers/api_v1/wishlist.py @@ -81,7 +81,7 @@ class Wishlist(controller.Controller): params = self.get_request_params(kw, { 'user_id': ['number'], - 'product_id': [], + 'product_id': ['number'], 'limit': ['default:0', 'number'], 'offset': ['default:0', 'number'], }) @@ -92,7 +92,10 @@ class Wishlist(controller.Controller): if not params['valid']: return self.response(code=400, description=params) - domain = [('user_id', '=', params['value']['user_id'])] + domain = [ + ('user_id', '=', params['value']['user_id']), + ('variant_id', '=', False) + ] 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') -- cgit v1.2.3