summaryrefslogtreecommitdiff
path: root/indoteknik_api
diff options
context:
space:
mode:
Diffstat (limited to 'indoteknik_api')
-rw-r--r--indoteknik_api/controllers/api_v1/banner.py3
-rw-r--r--indoteknik_api/controllers/api_v1/content.py31
-rw-r--r--indoteknik_api/controllers/api_v1/sale_order.py15
-rw-r--r--indoteknik_api/models/__init__.py1
-rw-r--r--indoteknik_api/models/coupon_program.py36
5 files changed, 81 insertions, 5 deletions
diff --git a/indoteknik_api/controllers/api_v1/banner.py b/indoteknik_api/controllers/api_v1/banner.py
index 9a4a9ec7..1327a749 100644
--- a/indoteknik_api/controllers/api_v1/banner.py
+++ b/indoteknik_api/controllers/api_v1/banner.py
@@ -11,7 +11,6 @@ class Banner(controller.Controller):
if not self.authenticate():
return self.response(code=401, description='Unauthorized')
- base_url = request.env['ir.config_parameter'].get_param('web.base.url')
manufacture_id = kw.get('manufacture_id')
type = kw.get('type')
limit = int(kw.get('limit', 0))
@@ -32,7 +31,7 @@ class Banner(controller.Controller):
data.append({
'name': banner.x_name,
'url': banner.x_url_banner,
- 'image': base_url + 'api/image/x_banner.banner/x_banner_image/' + str(banner.id) if banner.x_banner_image else '',
+ 'image': request.env['ir.attachment'].api_image('x_banner.banner', 'x_banner_image', banner.id),
})
return self.response(data) \ No newline at end of file
diff --git a/indoteknik_api/controllers/api_v1/content.py b/indoteknik_api/controllers/api_v1/content.py
index 3e175dc4..2d788306 100644
--- a/indoteknik_api/controllers/api_v1/content.py
+++ b/indoteknik_api/controllers/api_v1/content.py
@@ -6,11 +6,36 @@ from odoo.http import request
class WebsiteContent(controller.Controller):
prefix = '/api/v1/'
- @http.route(prefix + 'banner/category', auth='public', methods=['GET', 'OPTIONS'])
- def get_banner_by_category(self, **kw):
+ @http.route(prefix + 'coupon_program', auth='public', methods=['GET', 'OPTIONS'])
+ def get_coupon_program(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')
+
+ 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]
+ }
+ # print (data)
+ return self.response(data)
+
+
+
+ @http.route(prefix + 'banner/brand', auth='public', methods=['GET', 'OPTIONS'])
+ def get_banner_by_brand(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')
category_id = int(kw.get('category_id'), 0)
query = [
diff --git a/indoteknik_api/controllers/api_v1/sale_order.py b/indoteknik_api/controllers/api_v1/sale_order.py
index 073f6301..47cb2d59 100644
--- a/indoteknik_api/controllers/api_v1/sale_order.py
+++ b/indoteknik_api/controllers/api_v1/sale_order.py
@@ -7,6 +7,21 @@ class SaleOrder(controller.Controller):
prefix = '/api/v1/'
PREFIX_PARTNER = prefix + 'partner/<partner_id>/'
+ @http.route(prefix + "sale_order_number", auth='public', method=['GET', 'OPTIONS'])
+ def get_number_sale_order(self, **kw):
+ user_token = self.authenticate()
+ if not user_token:
+ return self.unauthorized_response()
+
+ sale_order_id = int(kw.get('sale_order_id', '0'))
+ sale_number = str(kw.get('sale_number', ''))
+ if sale_order_id > 0:
+ sales = request.env['sale.order'].search_read([('id', '=', sale_order_id)], fields=['id', 'name', 'amount_total', 'state'])
+ else:
+ sales = request.env['sale.order'].search_read([('name', '=', sale_number)], fields=['id', 'name', 'amount_total', 'state'])
+
+ return self.response(sales)
+
@http.route(PREFIX_PARTNER + 'sale_order', auth='public', method=['GET', 'OPTIONS'])
def get_partner_sale_order(self, **kw):
user_token = self.authenticate()
diff --git a/indoteknik_api/models/__init__.py b/indoteknik_api/models/__init__.py
index a4f7363a..892d2657 100644
--- a/indoteknik_api/models/__init__.py
+++ b/indoteknik_api/models/__init__.py
@@ -8,3 +8,4 @@ from . import rest_api
from . import sale_order
from . import x_manufactures
from . import website_content
+from . import coupon_program
diff --git a/indoteknik_api/models/coupon_program.py b/indoteknik_api/models/coupon_program.py
new file mode 100644
index 00000000..7ca003cd
--- /dev/null
+++ b/indoteknik_api/models/coupon_program.py
@@ -0,0 +1,36 @@
+from odoo import models
+import datetime
+from pytz import timezone
+
+
+class CouponProgram(models.Model):
+ _inherit = 'coupon.program'
+
+ def api_single_response(self, coupon):
+ # print (coupon.display_name)
+ data = {
+ 'active': coupon.active,
+ 'discount_percentage': coupon.discount_percentage,
+ 'display_name': coupon.display_name,
+ 'id': coupon.id,
+ 'reward_type': coupon.reward_type,
+ 'reward_id': coupon.reward_id.id,
+ 'reward_product_id': coupon.reward_product_id.id,
+ 'reward_product_quantity': coupon.reward_product_quantity,
+ 'rule_date_from': self.time_to_str(coupon.rule_date_from, '%d/%m/%Y %H:%M:%S'),
+ 'rule_date_to': self.time_to_str(coupon.rule_date_to, '%d/%m/%Y %H:%M:%S'),
+ 'rule_id': coupon.rule_id.id,
+ 'rule_products_domain': coupon.rule_products_domain,
+ 'icon_program_promo': self.env['ir.attachment'].api_image('coupon.program', 'x_studio_field_Ifopn', coupon.id),
+ 'icon_program_promo2': self.env['ir.attachment'].api_image('coupon.program', 'x_studio_field_2Ul77', coupon.id),
+ 'discount_line_product_id': coupon.discount_line_product_id.id,
+ 'image_promo': self.env['ir.attachment'].api_image('coupon.program', 'x_studio_image_promo', coupon.id),
+ 'image_banner_promo': self.env['ir.attachment'].api_image('coupon.program', 'x_studio_banner_promo', coupon.id),
+ }
+ return data
+
+ def time_to_str(self, object, format):
+ time = ''
+ if isinstance(object, datetime.datetime):
+ time = object.astimezone(timezone('Asia/Jakarta')).strftime(format)
+ return time