summaryrefslogtreecommitdiff
path: root/indoteknik_api/controllers/api_v1/content.py
blob: 99077c19d1f75fc7bc3a806bc21908689475790f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
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)