diff options
| author | IT Fixcomart <it@fixcomart.co.id> | 2022-11-18 11:14:04 +0700 |
|---|---|---|
| committer | IT Fixcomart <it@fixcomart.co.id> | 2022-11-18 11:14:04 +0700 |
| commit | 5d1d53268d836c0b650654e8fc6934fbebd2f6e5 (patch) | |
| tree | d515c2875d8a5a99f9f0b6aa1fc07854ebb5e003 /indoteknik_api/controllers/api_v1 | |
| parent | f168734f000ea34fc3a15bdf4b6af9f4fe797d06 (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__.py | 2 | ||||
| -rw-r--r-- | indoteknik_api/controllers/api_v1/auth.py | 75 | ||||
| -rw-r--r-- | indoteknik_api/controllers/api_v1/banner.py | 30 | ||||
| -rw-r--r-- | indoteknik_api/controllers/api_v1/login.py | 34 |
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 |
