diff options
| author | stephanchrst <stephanchrst@gmail.com> | 2023-02-23 10:45:13 +0700 |
|---|---|---|
| committer | stephanchrst <stephanchrst@gmail.com> | 2023-02-23 10:45:13 +0700 |
| commit | eb805076e595f1c757c29357c3e581c89d492138 (patch) | |
| tree | 10ba613372eb7469342e1d8d34561ca6dd885b8c /indoteknik_api/controllers/api_v1 | |
| parent | b94e4ff577c023d0ce1717c01c6080efc988acb7 (diff) | |
| parent | 5c9214c1c846e61c5356e1b19341b070c2303198 (diff) | |
Merge branch 'staging' of bitbucket.org:altafixco/indoteknik-addons into staging
Diffstat (limited to 'indoteknik_api/controllers/api_v1')
| -rw-r--r-- | indoteknik_api/controllers/api_v1/partner.py | 57 | ||||
| -rw-r--r-- | indoteknik_api/controllers/api_v1/user.py | 32 |
2 files changed, 85 insertions, 4 deletions
diff --git a/indoteknik_api/controllers/api_v1/partner.py b/indoteknik_api/controllers/api_v1/partner.py index 09b3caa0..8c7dbd57 100644 --- a/indoteknik_api/controllers/api_v1/partner.py +++ b/indoteknik_api/controllers/api_v1/partner.py @@ -81,3 +81,60 @@ class Partner(controller.Controller): 'id': partner.id, }) + @http.route(prefix + 'partner/<id>', auth='public', methods=['PUT', 'OPTIONS'], csrf=False) + def write_partner_by_id(self, **kw): + if not self.authenticate(): + return self.response(code=401, description='Unauthorized') + + params = self.get_request_params(kw, { + 'id': ['required', 'number'], + 'name': [], + 'company_type_id': ['number'], + 'industry_id': ['number'], + 'tax_name': ['alias:nama_wajib_pajak'], + 'npwp': [], + }) + + if not params['valid']: + return self.response(code=400, description=params) + + partner = request.env[self._name].search([('id', '=', params['value']['id'])], limit=1) + if not partner: + return self.response(code=404, description='User not found') + + partner.write(params['value']) + + return self.response({ + 'id': partner.id + }) + + @http.route(prefix + 'partner/industry', auth='public', methods=['GET', 'OPTIONS']) + def get_partner_industry(self): + if not self.authenticate(): + return self.response(code=401, description='Unauthorized') + + partner_industry = request.env['res.partner.industry'].search([]) + data = [] + for industry in partner_industry: + data.append({ + 'id': industry.id, + 'name': industry.name + }) + + return self.response(data) + + @http.route(prefix + 'partner/company_type', auth='public', methods=['GET', 'OPTIONS']) + def get_partner_company_type(self): + if not self.authenticate(): + return self.response(code=401, description='Unauthorized') + + partner_company_type = request.env['res.partner.company_type'].search([]) + data = [] + for company_type in partner_company_type: + data.append({ + 'id': company_type.id, + 'name': company_type.name + }) + + return self.response(data) + diff --git a/indoteknik_api/controllers/api_v1/user.py b/indoteknik_api/controllers/api_v1/user.py index 17bc931e..800f6bf1 100644 --- a/indoteknik_api/controllers/api_v1/user.py +++ b/indoteknik_api/controllers/api_v1/user.py @@ -3,6 +3,7 @@ from odoo import http from odoo.http import request from odoo.tools.config import config import random, string +from difflib import SequenceMatcher class User(controller.Controller): @@ -62,20 +63,43 @@ class User(controller.Controller): return self.response(code=400, description='email, name and password is required') user = self.get_user_by_email(email) - if user: return self.response({ 'register': False, 'reason': 'EMAIL_USED' }) - - user = request.env['res.users'].create({ + + user_data = { 'name': name, 'login': email, 'password': password, 'active': False, 'sel_groups_1_9_10': 9 - }) + } + + user = request.env['res.users'].create(user_data) + + company = kw.get('company', False) + if company: + parameter = [ + ('company_type', '=', 'company'), + ('name', 'ilike', company) + ] + match_company = request.env['res.partner'].search(parameter, limit=1) + match_ratio = 0 + if match_company: + match_ratio = SequenceMatcher(None, match_company.name, company).ratio() + if match_ratio > 0.7: + request.env['user.company.request'].create({ + 'user_id': user.partner_id.id, + 'user_company_id': match_company.id, + 'user_input': company + }) + else: + new_company = request.env['res.partner'].create({ + 'name': company + }) + user.parent_id = new_company.id return self.response({'register': True}) |
