blob: 5addd7fe85ab93cac4f04c723aa6244bb9b062e2 (
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
|
from datetime import datetime
import logging
from urllib import response
from .. import controller
from odoo import http
from odoo.http import request
_logger = logging.getLogger(__name__)
class FlashSale(controller.Controller):
prefix = '/api/v1/'
@http.route(prefix + 'flash_sale', auth='public', methods=['GET'])
def get_flash_sale(self, **kw):
try:
self.authenticate()
base_url = request.env['ir.config_parameter'].get_param('web.base.url')
active_flash_sale = request.env['product.pricelist'].get_active_flash_sale()
data = {}
if active_flash_sale:
product_variant_ids = [x.product_id.id for x in active_flash_sale.item_ids]
query = [('product_variant_ids', 'in', product_variant_ids)]
product_templates = self.search_filter('product.template', kw, query)
data = {
'flash_sale': {
'banner': base_url + 'api/image/product.pricelist/banner/' + str(active_flash_sale.id) if active_flash_sale.banner else '',
'duration': round((active_flash_sale.end_date - datetime.now()).total_seconds()),
'product_total': request.env['product.template'].search_count(query),
'products': [request.env['product.template'].api_single_response(x) for x in product_templates]
}
}
return self.response(data)
else:
return self.response(code=404, description='Data not found')
except Exception as e:
_logger.info(self.prefix_url + '/flash_sale: ' + str(e))
return self.response(code=500, description='Internal server error')
|