summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRafi Zadanly <zadanlyr@gmail.com>2023-04-05 09:48:18 +0700
committerRafi Zadanly <zadanlyr@gmail.com>2023-04-05 09:48:18 +0700
commit404db39b3f80c538e202e1fe728fd043cecaf7c8 (patch)
tree1f5a8db6f609e73a32923a2998db6cb28617cacd
parent51a0a2319186bf8560f36d305f8e7ee573d956ab (diff)
update api controller user and api model sale_order
-rw-r--r--indoteknik_api/controllers/api_v1/user.py73
-rw-r--r--indoteknik_api/models/sale_order.py5
2 files changed, 58 insertions, 20 deletions
diff --git a/indoteknik_api/controllers/api_v1/user.py b/indoteknik_api/controllers/api_v1/user.py
index 1f1f2413..5edb208e 100644
--- a/indoteknik_api/controllers/api_v1/user.py
+++ b/indoteknik_api/controllers/api_v1/user.py
@@ -118,6 +118,60 @@ class User(controller.Controller):
'user': request.env['res.users'].api_single_response(user)
})
+ @http.route(prefix + 'user/activation', auth='public', methods=['POST'], csrf=False)
+ @controller.Controller.must_authorized()
+ def activation_user(self, **kw):
+ token = kw.get('token')
+ if not token:
+ return self.response(code=400, description='token is required')
+
+ user = request.env['res.users'].search([('activation_token', '=', token), ('active', '=', False)], limit=1)
+ if not user:
+ return self.response({'activation': False, 'reason': 'INVALID_TOKEN'})
+
+ user.active = True
+ user.activation_token = ''
+ return self.response({
+ 'activation': True,
+ 'user': self.response_with_token(user)
+ })
+
+ @http.route(prefix + 'user/forgot-password', auth='public', methods=['POST'], csrf=False)
+ @controller.Controller.must_authorized()
+ def forgot_password_user(self, **kw):
+ email = kw.get('email')
+ user = self.get_user_by_email(email)
+ if not user:
+ return self.response({'success': False, 'reason': 'NOT_FOUND'})
+
+ token_source = string.ascii_letters + string.digits
+ user.reset_password_token = ''.join(random.choice(token_source) for i in range(21))
+ return self.response({
+ 'success': True,
+ 'token': user.reset_password_token,
+ 'user': request.env['res.users'].api_single_response(user)
+ })
+
+ @http.route(prefix + 'user/reset-password', auth='public', methods=['POST', 'OPTIONS'], csrf=False)
+ @controller.Controller.must_authorized()
+ def reset_password_user(self, **kw):
+ token = kw.get('token')
+ if not token:
+ return self.response(code=400, description='token is required')
+
+ user = request.env['res.users'].search([('reset_password_token', '=', token), ('active', 'in', [False, True])], limit=1)
+
+ if not user:
+ return self.response({'success': False, 'reason': 'INVALID_TOKEN'})
+
+ password = kw.get('password', '')
+ user.password = password
+ user.reset_password_token = ''
+ return self.response({
+ 'success': True,
+ 'user': request.env['res.users'].api_single_response(user)
+ })
+
@http.route(prefix + 'user/<id>', auth='public', methods=['PUT', 'OPTIONS'], csrf=False)
@controller.Controller.must_authorized()
def update_user(self, **kw):
@@ -151,21 +205,4 @@ class User(controller.Controller):
address = [request.env['res.users'].api_address_response(x) for x in partners]
return self.response(address)
-
- @http.route(prefix + 'user/activation', auth='public', methods=['POST'], csrf=False)
- @controller.Controller.must_authorized()
- def activation_user(self, **kw):
- token = kw.get('token')
- if not token:
- return self.response(code=400, description='token is required')
-
- user = request.env['res.users'].search([('activation_token', '=', token), ('active', '=', False)], limit=1)
- if not user:
- return self.response({'activation': False, 'reason': 'INVALID_TOKEN'})
-
- user.active = True
- user.activation_token = ''
- return self.response({
- 'activation': True,
- 'user': self.response_with_token(user)
- }) \ No newline at end of file
+ \ No newline at end of file
diff --git a/indoteknik_api/models/sale_order.py b/indoteknik_api/models/sale_order.py
index 76532d20..2b6bef37 100644
--- a/indoteknik_api/models/sale_order.py
+++ b/indoteknik_api/models/sale_order.py
@@ -58,9 +58,10 @@ class SaleOrder(models.Model):
for line in sale_order.order_line:
product = self.env['product.product'].api_single_response(line.product_id)
product['price'] = {
- 'price': line.price_unit,
+ 'price': line.price_unit / 1.11,
'discount_percentage': line.discount,
- 'price_discount': line.price_unit - (line.price_unit * (line.discount/100))
+ 'price_discount': line.price_reduce_taxexcl,
+ 'subtotal': line.price_subtotal
}
product['quantity'] = line.product_uom_qty
data_with_detail['products'].append(product)