diff options
| author | stephanchrst <stephanchrst@gmail.com> | 2022-12-21 18:48:38 +0700 |
|---|---|---|
| committer | stephanchrst <stephanchrst@gmail.com> | 2022-12-21 18:48:38 +0700 |
| commit | db2f280683b29ac5d32158f3fab0f3df671935e9 (patch) | |
| tree | 83624efbd3e7abc705c8d987994cf2c1b7612284 /indoteknik_api/controllers/api_v1 | |
| parent | a08dfcb0d1f99a99686a8fba948fae7d4eca374e (diff) | |
add website categories homepage module
Diffstat (limited to 'indoteknik_api/controllers/api_v1')
| -rw-r--r-- | indoteknik_api/controllers/api_v1/category.py | 35 |
1 files changed, 34 insertions, 1 deletions
diff --git a/indoteknik_api/controllers/api_v1/category.py b/indoteknik_api/controllers/api_v1/category.py index 88296d58..36e67e01 100644 --- a/indoteknik_api/controllers/api_v1/category.py +++ b/indoteknik_api/controllers/api_v1/category.py @@ -6,7 +6,40 @@ import ast class Category(controller.Controller): prefix = '/api/v1/' - + + @http.route(prefix + 'categories_homepage', auth='public', methods=['GET', 'OPTIONS']) + def get_categories_homepage(self, **kw): + if not self.authenticate(): + return self.response(code=401, description='Unauthorized') + base_url = request.env['ir.config_parameter'].get_param('web.base.url') + query = [('status', '=', 'tayang')] + categories = request.env['website.categories.homepage'].search(query, order='sequence') + data = [] + for category in categories: + query_product = [ + ('active', '=', True), + ('type', '=', 'product'), + ('product_rating', '>', 0), + ('public_categ_ids', 'child_of', [category.category_id.id]) + ] + products = request.env['product.template'].search(query_product, order='product_rating desc', limit=12) + # product_brands = [] + brands = request.env['x_manufactures'].search([ + ('product_tmpl_ids.public_categ_ids', 'child_of', [category.category_id.id]) + ], limit=8) + + data.append({ + 'id': category.id, + 'sequence': category.sequence, + 'category_id': category.category_id.id, + 'name': category.category_id.name, + 'image': base_url + 'api/image/website.categories.homepage/image/' + str(category.id) if category.image else '', + 'url': category.url, + 'brands': [y.x_name for y in brands], + 'products': [request.env['product.template'].api_single_response(x) for x in products] + }) + return self.response(data) + @http.route(prefix + 'category/page/<page>', auth='public', methods=['GET']) def get_category(self, **kw): if not self.authenticate(): |
