from .. import controller from odoo import http from odoo.http import request class WebsiteContent(controller.Controller): prefix = '/api/v1/' @http.route(prefix + 'coupon_program', auth='public', methods=['GET', 'OPTIONS']) @controller.Controller.must_authorized() def get_coupon_program(self, **kw): reward_type = str(kw.get('reward_type', '')) limit = int(kw.get('limit', 0)) offset = int(kw.get('offset', 0)) query = [ ('x_studio_image_promo', '!=', ''), ] if reward_type: query += [('reward_type', '=', reward_type)] coupons = request.env['coupon.program'].search(query, limit=limit, offset=offset) data = { 'coupon_total': request.env['coupon.program'].search_count(query), 'coupons': [request.env['coupon.program'].api_single_response(x) for x in coupons] } return self.response(data) @http.route(prefix + 'banner/brand', auth='public', methods=['GET', 'OPTIONS']) @controller.Controller.must_authorized() def get_banner_by_brand(self, **kw): category_id = int(kw.get('category_id'), 0) query = [ ('x_status_banner', '=', 'tayang'), ] if category_id > 0: query = [ ('x_status_banner', '=', 'tayang'), ('x_banner_category', '=', category_id), ] data = [] banners = request.env['x_banner.banner'].search(query) for banner in banners: data.append({ # 'image': base_url + 'api/image/x_banner.banner/image' + str(banner.id) if banner.x_banner_image else '', 'banner_image': request.env['ir.attachment'].api_image('x_banner.banner', 'x_banner_image', banner.id), 'category_id': banner.x_banner_category.id, 'category_image': banner.x_banner_category.x_name, 'name': banner.x_name, 'url': banner.x_url_banner, 'status': banner.x_status_banner, }) return self.response(data) @http.route(prefix + 'product_ads', auth='public', methods=['GET', 'OPTIONS']) @controller.Controller.must_authorized() def get_product_ads(self, **kw): base_url = request.env['ir.config_parameter'].get_param('web.base.url') query = [ ('page', '=', 'product'), ('status', '=', 'tayang') ] ads = request.env['website.ads'].search(query, order='sequence') data = [] for ad in ads: data.append({ 'id': ad.id, 'name': ad.name, 'image': base_url + 'api/image/website.ads/image/' + str(ad.id) if ad.image else '', 'url': ad.url, }) return self.response(data) @http.route(prefix + 'video_content', auth='public', methods=['GET', 'OPTIONS']) @controller.Controller.must_authorized() def get_video_content(self, **kw): query = [('status', '=', 'tayang'), ('slide_type', '=', 'video')] limit = int(kw.get('limit', 0)) offset = int(kw.get('offset', 0)) videos = request.env['website.content'].search(query, limit=limit, offset=offset, order='sequence') data = { 'video_total': request.env['website.content'].search_count(query), 'videos': [request.env['website.content'].api_single_response(x) for x in videos] } return self.response(data)