summaryrefslogtreecommitdiff
path: root/indoteknik_api/controllers/api_v1
diff options
context:
space:
mode:
authorIT Fixcomart <it@fixcomart.co.id>2022-11-18 11:14:04 +0700
committerIT Fixcomart <it@fixcomart.co.id>2022-11-18 11:14:04 +0700
commit5d1d53268d836c0b650654e8fc6934fbebd2f6e5 (patch)
treed515c2875d8a5a99f9f0b6aa1fc07854ebb5e003 /indoteknik_api/controllers/api_v1
parentf168734f000ea34fc3a15bdf4b6af9f4fe797d06 (diff)
Rest api register & Rest api banner by manufacture_id
Diffstat (limited to 'indoteknik_api/controllers/api_v1')
-rw-r--r--indoteknik_api/controllers/api_v1/__init__.py2
-rw-r--r--indoteknik_api/controllers/api_v1/auth.py75
-rw-r--r--indoteknik_api/controllers/api_v1/banner.py30
-rw-r--r--indoteknik_api/controllers/api_v1/login.py34
4 files changed, 94 insertions, 47 deletions
diff --git a/indoteknik_api/controllers/api_v1/__init__.py b/indoteknik_api/controllers/api_v1/__init__.py
index 60436a45..d3023594 100644
--- a/indoteknik_api/controllers/api_v1/__init__.py
+++ b/indoteknik_api/controllers/api_v1/__init__.py
@@ -1,9 +1,9 @@
+from . import auth
from . import banner
from . import blog
from . import cart
from . import category
from . import flash_sale
-from . import login
from . import manufacture
from . import product
from . import promotion
diff --git a/indoteknik_api/controllers/api_v1/auth.py b/indoteknik_api/controllers/api_v1/auth.py
new file mode 100644
index 00000000..e51431b1
--- /dev/null
+++ b/indoteknik_api/controllers/api_v1/auth.py
@@ -0,0 +1,75 @@
+from .. import controller
+from odoo import http
+from odoo.http import request
+from odoo.tools.config import config
+
+
+class Auth(controller.Controller):
+ prefix = '/api/v1/'
+
+ @http.route(prefix + 'auth/login', auth='public', methods=['POST'], csrf=False)
+ def login(self, **kw):
+ if not self.authenticate():
+ return self.response(code=401, description='Unauthorized')
+
+ email = kw.get('email')
+ password = kw.get('password')
+ if not email or not password:
+ return self.response(code=400, description='email and password is required')
+
+ user = self.get_user(email)
+ if user and not user.active:
+ return self.response({
+ 'is_auth': False,
+ 'reason': 'NOT_ACTIVE'
+ })
+
+ try:
+ uid = request.session.authenticate(config.get('db_name'), email, password)
+ user = request.env['res.users'].browse(uid)
+ return self.response({
+ 'is_auth': True,
+ 'user': {
+ 'id': user.id,
+ 'name': user.name,
+ 'email': user.login,
+ 'external': user.share
+ }
+ })
+ except:
+ return self.response({
+ 'is_auth': False,
+ 'reason': 'NOT_FOUND'
+ })
+
+ @http.route(prefix + 'auth/register', auth='public', methods=['POST'], csrf=False)
+ def register(self, **kw):
+ if not self.authenticate():
+ return self.response(code=401, description='Unauthorized')
+
+ name = kw.get('name')
+ email = kw.get('email')
+ password = kw.get('password')
+ if not name or not email or not password:
+ return self.response(code=400, description='email and password is required')
+
+ user = self.get_user(email)
+
+ if user:
+ return self.response({
+ 'register': False,
+ 'reason': 'EMAIL_USED'
+ })
+
+ user = request.env['res.users'].create({
+ 'name': name,
+ 'login': email,
+ 'password': password,
+ 'active': False,
+ 'sel_groups_1_9_10': 9
+ })
+
+ return self.response({'register': True})
+
+ def get_user(self, email):
+ return request.env['res.users'].search([('login', '=', email), ('active', 'in', [True, False])])
diff --git a/indoteknik_api/controllers/api_v1/banner.py b/indoteknik_api/controllers/api_v1/banner.py
index 049051b0..362a2b58 100644
--- a/indoteknik_api/controllers/api_v1/banner.py
+++ b/indoteknik_api/controllers/api_v1/banner.py
@@ -12,20 +12,26 @@ class Banner(controller.Controller):
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')
- if not type:
- return self.response(code=400, description='type is required')
+ limit = int(kw.get('limit', 0))
+ offset = int(kw.get('offset', 0))
- data = []
- banner_category = request.env['x_banner.category'].search([('x_studio_field_KKVl4', '=', type)], limit=1)
+ query = [('x_status_banner', '=', 'tayang')]
+ if type:
+ query += [('x_banner_category.x_studio_field_KKVl4', '=', type)]
+
+ if manufacture_id:
+ query += [('x_relasi_manufacture', '=', int(manufacture_id))]
- if banner_category:
- for banner in banner_category.banner_ids:
- if banner.x_status_banner == 'tayang':
- 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 '',
- })
+ banners = request.env['x_banner.banner'].search(query, limit=limit, offset=offset)
+
+ data = []
+ for banner in banners:
+ 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 '',
+ })
return self.response(data) \ No newline at end of file
diff --git a/indoteknik_api/controllers/api_v1/login.py b/indoteknik_api/controllers/api_v1/login.py
deleted file mode 100644
index 5c6251ae..00000000
--- a/indoteknik_api/controllers/api_v1/login.py
+++ /dev/null
@@ -1,34 +0,0 @@
-from .. import controller
-from odoo import http
-from odoo.http import request
-from odoo.tools.config import config
-
-
-class Cart(controller.Controller):
- prefix = '/api/v1/'
-
- @http.route(prefix + 'login', auth='public', methods=['POST'], csrf=False)
- def login(self, **kw):
- if not self.authenticate():
- return self.response(code=401, description='Unauthorized')
-
- email = kw.get('email')
- password = kw.get('password')
- if not email or not password:
- return self.response(code=400, description='email and password is required')
-
- try:
- uid = request.session.authenticate(config.get('db_name'), email, password)
- user = request.env['res.users'].browse(uid)
- return self.response({
- 'is_auth': True,
- 'user': {
- 'id': user.id,
- 'name': user.name,
- 'email': user.login
- }
- })
- except:
- return self.response({'is_auth': False})
-
- \ No newline at end of file