@api.multi
def sync_serviceman_family_push(self, isReload):
synchronizer_configuration = self.env['synchronizer.configuration'].search([('id','=',1)])
if synchronizer_configuration:
base_url = synchronizer_configuration['base_url']
url = base_url + "/get-ex-serviceman/family"
response = requests.get(url, data="")
if response:
if response.status_code == 200 or response.status_code == 201:
items = json.loads(json.dumps(response.json()['data']))
if items:
counter = 0
for item in items:
_sync_ref_id = 'family-' + str(item['id']) if item['id'] else ''
_name = item['name'] if item['name'] else 'N/A'
_phone = item['mobile_number'] if item['mobile_number'] else ''
_nid = item['nid'] if item['nid'] else ''
_occupation = item['occupation'] if item['occupation'] else ''
relation_sync_ref_id = item['relation_id'] if item['relation_id'] else ''
_relation_id = self.env['basb.relation'].search([('sync_ref_id','=',relation_sync_ref_id)]).id
if _relation_id == False: _relation_id = None
serviceman_sync_ref_id = item['serviceman_id'] if item['serviceman_id'] else ''
parent = self.env['res.partner'].search([('sync_ref_id','=',serviceman_sync_ref_id)])
_parent_id = parent.id or False
if _parent_id == False: _parent_id = None
_dasb_id = None
if parent.dasb:
_dasb_id = parent.dasb.id or False
if _dasb_id == False: _dasb_id = None
_date_of_birth = None
try:
_date_of_birth = item['date_of_birth'] if item['date_of_birth'] else ''
if not _date_of_birth: _date_of_birth = None
else: _date_of_birth = datetime.datetime.strptime(_date_of_birth, '%Y-%M-%d')
except Exception:
_date_of_birth = None
# dead = item['dead'] if item['dead'] else ''
# _status = 'alive'
_active = True
# if dead == 1:
# _status = 'dead'
# _active = False
if _sync_ref_id:
'''
update_record = self.env['res.partner'].search([('sync_ref_id','=',_sync_ref_id)])
if update_record:
update_record.write({
'name': _name,
'phone': _phone,
'national_identification': _nid,
'function': _occupation,
'date_of_birth': _date_of_birth,
'relation': _relation_id,
'parent_id': _parent_id
})
else:
record = self.env['res.partner'].create({
'name': _name,
'sync_ref_id': str(_sync_ref_id),
'phone': _phone,
'national_identification': _nid,
'function': _occupation,
'date_of_birth': _date_of_birth,
'relation': _relation_id,
'parent_id': _parent_id,
'customer': True,
'active': True,
'type': 'contact'
})
'''
is_exist = self.env['res.partner'].search([('sync_ref_id','=',_sync_ref_id)])
if is_exist:
try:
query = """ UPDATE res_partner
SET name=%s,
display_name=%s,
dasb=%s,
phone=%s,
national_identification=%s,
function=%s,
date_of_birth=%s,
relation=%s,
parent_id=%s,
commercial_partner_id=%s
WHERE sync_ref_id=%s """
params = (_name, _name, _dasb_id, _phone, _nid, _occupation, _date_of_birth, _relation_id, _parent_id, _parent_id, str(_sync_ref_id), )
self.env.cr.execute(query, params)
except Exception:
print("Catch Exception ID: " + str(_sync_ref_id))
else:
try:
if _sync_ref_id is not None:
query = """ INSERT INTO res_partner
(name, display_name, sync_ref_id, dasb, phone, national_identification, function, date_of_birth, relation, parent_id, commercial_partner_id, customer, active, type)
VALUES(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, True, %s, 'contact') """
params = (_name, _name, str(_sync_ref_id), _dasb_id, _phone, _nid, _occupation, _date_of_birth, _relation_id, _parent_id, _parent_id, _active, )
self.env.cr.execute(query, params)
except Exception:
print("Catch Exception ID: " + str(_sync_ref_id))
if isReload:
return {'type': 'ir.actions.client', 'tag': 'reload'}
else:
if isReload:
raise UserError("No data found to sync.")
else:
if isReload:
raise UserError("No data found to sync.")
AND THE ERROR SHOW IS DOWN
Error:
Server Error
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/odoo/http.py", line 656, in _handle_exception
return super(JsonRequest, self)._handle_exception(exception)
File "/usr/lib/python3/dist-packages/odoo/http.py", line 314, in _handle_exception
raise pycompat.reraise(type(exception), exception, sys.exc_info()[2])
File "/usr/lib/python3/dist-packages/odoo/tools/pycompat.py", line 87, in reraise
raise value
File "/usr/lib/python3/dist-packages/odoo/http.py", line 698, in dispatch
result = self._call_function(**self.params)
File "/usr/lib/python3/dist-packages/odoo/http.py", line 346, in _call_function
return checked_call(self.db, *args, **kwargs)
File "/usr/lib/python3/dist-packages/odoo/service/model.py", line 97, in wrapper
return f(dbname, *args, **kwargs)
File "/usr/lib/python3/dist-packages/odoo/http.py", line 339, in checked_call
result = self.endpoint(*a, **kw)
File "/usr/lib/python3/dist-packages/odoo/http.py", line 941, in __call__
return self.method(*args, **kw)
File "/usr/lib/python3/dist-packages/odoo/http.py", line 519, in response_wrap
response = f(*args, **kw)
File "/usr/lib/python3/dist-packages/odoo/addons/web/controllers/main.py", line 966, in call_button
action = self._call_kw(model, method, args, {})
File "/usr/lib/python3/dist-packages/odoo/addons/web/controllers/main.py", line 954, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
File "/usr/lib/python3/dist-packages/odoo/api.py", line 759, in call_kw
return _call_kw_multi(method, model, args, kwargs)
File "/usr/lib/python3/dist-packages/odoo/api.py", line 746, in _call_kw_multi
result = method(recs, *args, **kwargs)
File "/mnt/extra-addons/meta_basb_offline/models/synchronizer_wizard.py", line 214, in sync
self.sync_serviceman_family_push(False)
File "/mnt/extra-addons/meta_basb_offline/models/synchronizer_wizard.py", line 674, in sync_serviceman_family_push
_parent_id = parent.id or False
File "/usr/lib/python3/dist-packages/odoo/fields.py", line 2863, in __get__
raise ValueError("Expected singleton: %s" % record)
ValueError: Expected singleton: res.partner(13129, 100805)