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
|
from .. import controller
from odoo import http
from odoo.http import request
from datetime import datetime
class Banner(controller.Controller):
prefix = '/api/v1/'
@http.route(prefix + 'banner', auth='public', methods=['GET', 'OPTIONS'])
@controller.Controller.must_authorized()
def get_banner(self, **kw):
manufacture_id = kw.get('manufacture_id')
type = kw.get('type')
limit = int(kw.get('limit', 0))
offset = int(kw.get('offset', 0))
order = kw.get('order', 'write_date DESC')
query = [('x_status_banner', '=', 'tayang')]
if type:
query += [('x_banner_category.x_studio_field_KKVl4', '=', type)]
week_number = self.get_week_number_of_current_month()
if type == 'index-a-1':
order = 'sequence ASC'
query += [('for_week', 'in', [week_number, False])]
if manufacture_id:
query += [('x_relasi_manufacture', '=', int(manufacture_id))]
banners = request.env['x_banner.banner'].search(query, limit=limit, offset=offset, order=order)
data = []
for banner in banners:
data.append({
'name': banner.x_name,
'url': banner.x_url_banner,
'background_color': banner.background_color,
'image': request.env['ir.attachment'].api_image('x_banner.banner', 'x_banner_image', banner.id),
})
return self.response(data, headers=[('Cache-Control', 'max-age=3600, public')])
def get_week_number_of_current_month(self):
today = datetime.now().day
week_number = (today - 1) // 7 + 1
return min(week_number, 4)
|