summaryrefslogtreecommitdiff
path: root/indoteknik_api/controllers/api_v1
diff options
context:
space:
mode:
authorIT Fixcomart <it@fixcomart.co.id>2022-11-14 13:53:14 +0700
committerIT Fixcomart <it@fixcomart.co.id>2022-11-14 13:53:14 +0700
commitc6ace1b75f1c93e1706cfa6f82b7f34513b209f5 (patch)
tree31505ec473c214552609e25a25c9862a6a1d9c4d /indoteknik_api/controllers/api_v1
parentd6c056a43636bd2707620649cb1917ea341f1400 (diff)
Create product solr (fixing)
Diffstat (limited to 'indoteknik_api/controllers/api_v1')
-rw-r--r--indoteknik_api/controllers/api_v1/product.py46
1 files changed, 35 insertions, 11 deletions
diff --git a/indoteknik_api/controllers/api_v1/product.py b/indoteknik_api/controllers/api_v1/product.py
index 90a01fa8..667347d4 100644
--- a/indoteknik_api/controllers/api_v1/product.py
+++ b/indoteknik_api/controllers/api_v1/product.py
@@ -17,16 +17,15 @@ class Product(controller.Controller):
categories = kw.get('categories')
promotions = kw.get('promotions')
ready_stock = kw.get('ready_stock')
- solr_flag = kw.get('solr_flag')
- require_betweens = ['name', 'manufactures', 'categories', 'ready_stock', 'solr_flag', 'promotions']
+ require_betweens = ['name', 'manufactures', 'categories', 'ready_stock', 'promotions']
is_fulfill = False
for required in require_betweens:
if kw.get(required):
is_fulfill = True
if not is_fulfill:
- return self.response(code=400, description='name or manufactures or categories or ready_stock or solr_flag or promotions is required')
+ return self.response(code=400, description='name or manufactures or categories or ready_stock or promotions is required')
query = [('sale_ok', '=', True)]
@@ -46,16 +45,11 @@ class Product(controller.Controller):
if ready_stock == '1':
query.append(('virtual_qty', '>', 0))
-
- if solr_flag:
- query.append(('solr_flag', '=', int(solr_flag)))
if promotions:
coupon_programs = request.env['coupon.program'].search([('id', 'in', promotions.split(','))])
promotion_query = [x for coupon_program in coupon_programs for x in ast.literal_eval(coupon_program.rule_products_domain)]
query += promotion_query
-
- is_with_detail = True if kw.get('with_detail') == '1' else False
price_from = kw.get('price_from')
if price_from and int(price_from):
@@ -76,19 +70,49 @@ class Product(controller.Controller):
product_templates = request.env['product.template'].search(query, limit=limit, offset=offset, order=order)
data = {
'product_total': request.env['product.template'].search_count(query),
- 'products': [request.env['product.template'].api_single_response(x, with_detail=is_with_detail) for x in product_templates]
+ 'products': [request.env['product.template'].api_single_response(x) for x in product_templates]
}
return self.response(data)
+
+ @http.route(prefix + 'product/solr', auth='public', methods=['GET'])
+ def get_product_solr(self, **kw):
+ if not self.authenticate():
+ return self.response(code=401, description='Unauthorized')
+ query = [('sale_ok', '=', True)]
+ solr_flag = kw.get('flag')
+ limit = int(kw.get('limit', 0))
+ offset = int(kw.get('offset', 0))
+
+ if not solr_flag:
+ return self.response(code=400, description='flag is required')
+
+ if solr_flag:
+ query.append(('solr_flag', '=', int(solr_flag)))
+
+ product_variants = request.env['product.product'].search(query)
+ product_variant_ids = [x.id for x in product_variants]
+ query = [
+ '|',
+ ('solr_flag', '=', int(solr_flag)),
+ ('product_variant_ids', 'in', product_variant_ids)
+ ]
+ product_templates = request.env['product.template'].search(query, limit=limit, offset=offset)
+ data = {
+ 'product_total': request.env['product.template'].search_count(query),
+ 'products': [request.env['product.template'].api_single_response(x, with_detail=True) for x in product_templates]
+ }
+ return self.response(data)
+
@http.route(prefix + 'product/<id>', auth='public', methods=['GET'])
def get_product_by_id(self, **kw):
if not self.authenticate():
return self.response(code=401, description='Unauthorized')
-
+
id = kw.get('id')
if not id:
return self.response(code=400, description='id is required')
-
+
data = []
id = [int(x) for x in id.split(',')]
product_templates = request.env['product.template'].search([('id', 'in', id)])