diff options
| author | Rafi Zadanly <zadanlyr@gmail.com> | 2023-01-27 17:10:57 +0700 |
|---|---|---|
| committer | Rafi Zadanly <zadanlyr@gmail.com> | 2023-01-27 17:10:57 +0700 |
| commit | 1ae31b80e82373cac0275daeb943f054296917af (patch) | |
| tree | 91cc19eb9aa73f684874aaf2c0bdae46eedf9e8f /indoteknik_api/controllers/api_v1 | |
| parent | 3afc9d7c40a2fe9858aaa69b79ebdb52ccfa0830 (diff) | |
wishlist by user
Diffstat (limited to 'indoteknik_api/controllers/api_v1')
| -rw-r--r-- | indoteknik_api/controllers/api_v1/wishlist.py | 63 |
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 |
