Using search_count in odoo - orm

How can I use search_count?
**[controllers.py]**
def register_session(self, prevouseURL, currentURL):
remoteAddr = request.httprequest.environ['REMOTE_ADDR']
_logger.error("currentURL : %r", currentURL)
registerSession = SessionVisitor()
url = URLList()
_logger.error(url.search_count([('url', '=', currentURL)])>0)
**[models.py]**
class URLList(models.Model):
_name = 'webvisitorcalc.url_list'
url = fields.Char(string="URL", required=True)
target_session_id = fields.One2many('webvisitorcalc.session_visitor', 'target_url_ids', string='Target URL')
In this situation i am receiving error:
*2016-06-06 14:41:33,108 30086 ERROR odoov8 openerp.http: Exception during JSON request handling.
Traceback (most recent call last):
File "/home/skif/odoo/openerp/http.py", line 540, in _handle_exception
return super(JsonRequest, self)._handle_exception(exception)
File "/home/skif/odoo/openerp/http.py", line 577, in dispatch
result = self._call_function(**self.params)
File "/home/skif/odoo/openerp/http.py", line 313, in _call_function
return checked_call(self.db, *args, **kwargs)
File "/home/skif/odoo/openerp/service/model.py", line 118, in wrapper
return f(dbname, *args, **kwargs)
File "/home/skif/odoo/openerp/http.py", line 310, in checked_call
return self.endpoint(*a, **kw)
File "/home/skif/odoo/openerp/http.py", line 806, in __call__
return self.method(*args, **kw)
File "/home/skif/odoo/openerp/http.py", line 406, in response_wrap
response = f(*args, **kw)
File "/home/skif/odoo/my-modules/webvisitorcalc/controllers.py", line 31, in register_session
_logger.error(url.search_count([('url', '=', currentURL)])>0)
AttributeError: 'NoneType' object has no attribute 'search_count'*
Ok. I modified code.
**[controllers.py]**
def register_session(self, prevouseURL, currentURL):
remoteAddr = request.httprequest.environ['REMOTE_ADDR']
_logger.error("currentURL : %r", currentURL)
registerSession = SessionVisitor()
url = URLList()
_logger.error(url.search_count([('url', '=', currentURL)])>0)
if url.url_exist(currentURL):
_logger.info("URL exist in DB ")
else:
_logger.info("URL NOT exist in DB ")
**[models.py]**
class URLList(models.Model):
_name = 'webvisitorcalc.url_list'
url = fields.Char(string="URL", required=True)
target_session_id = fields.One2many('webvisitorcalc.session_visitor', 'target_url_ids', string='Target URL')
#api.multi
def url_exist(self, urlForCheck):
_logger.error("Check URL exist in DB ")
result = False
if (self.search_count([('url', '=', urlForCheck)])>0):
result = True
return result
I'm receive error:
*2016-06-06 14:56:50,797 30796 ERROR odoov8 openerp.http: Exception during JSON request handling.
Traceback (most recent call last):
File "/home/skif/odoo/openerp/http.py", line 540, in _handle_exception
return super(JsonRequest, self)._handle_exception(exception)
File "/home/skif/odoo/openerp/http.py", line 577, in dispatch
result = self._call_function(**self.params)
File "/home/skif/odoo/openerp/http.py", line 313, in _call_function
return checked_call(self.db, *args, **kwargs)
File "/home/skif/odoo/openerp/service/model.py", line 118, in wrapper
return f(dbname, *args, **kwargs)
File "/home/skif/odoo/openerp/http.py", line 310, in checked_call
return self.endpoint(*a, **kw)
File "/home/skif/odoo/openerp/http.py", line 806, in __call__
return self.method(*args, **kw)
File "/home/skif/odoo/openerp/http.py", line 406, in response_wrap
response = f(*args, **kw)
File "/home/skif/odoo/my-modules/webvisitorcalc/controllers.py", line 33, in register_session
if url.url_exist():
AttributeError: 'NoneType' object has no attribute 'url_exist'*
In doc (https://www.odoo.com/documentation/8.0/howtos/backend.html) present:
**[openacademy/models.py]**
...
#api.multi
def copy(self, default=None):
default = dict(default or {})
copied_count = self.search_count([('name', '=like', u"Copy of {}%".format(self.name))])
...
In doc (http://odoo-new-api-guide-line.readthedocs.io/en/latest/environment.html?highlight=search#model) present:
>>> self.search_count([('is_company', '=', True)])
26L
I can not understand what I forgot add in my code. Why do I receive errors?

Related

Error odoo.exceptions.UserError: No data has been found I can't update rate on odoo14

I have this problem in odoo 14 when I update rate, I don't know why but it does not update the rate and it tells me that no data has been found
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_http.py", line 237, in _dispatch
result = request.dispatch()
File "/usr/lib/python3/dist-packages/odoo/http.py", line 685, in dispatch
result = self._call_function(**self.params)
File "/usr/lib/python3/dist-packages/odoo/http.py", line 361, in _call_function
return checked_call(self.db, *args, **kwargs)
File "/usr/lib/python3/dist-packages/odoo/service/model.py", line 94, in wrapper
return f(dbname, *args, **kwargs)
File "/usr/lib/python3/dist-packages/odoo/http.py", line 349, in checked_call
result = self.endpoint(*a, **kw)
File "/usr/lib/python3/dist-packages/odoo/http.py", line 914, in __call__
return self.method(*args, **kw)
File "/usr/lib/python3/dist-packages/odoo/http.py", line 533, in response_wrap
response = f(*args, **kw)
File "/usr/lib/python3/dist-packages/odoo/addons/web/controllers/main.py", line 1388, in call_kw
return self._call_kw(model, method, args, kwargs)
File "/usr/lib/python3/dist-packages/odoo/addons/web/controllers/main.py", line 1380, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
File "/usr/lib/python3/dist-packages/odoo/api.py", line 399, in call_kw
result = _call_kw_multi(method, model, args, kwargs)
File "/usr/lib/python3/dist-packages/odoo/api.py", line 386, in _call_kw_multi
result = method(recs, *args, **kwargs)
File "/mnt/alimentos_dms/fc_currency_rate_live/models/res_company.py", line 120, in update_currency_rates_bcv
self.env.company.update_currency_rates()
File "/mnt/enterprise/currency_rate_live/models/res_config_settings.py", line 232, in update_currency_rates
parse_results = parse_function(active_currencies)
File "/mnt/alimentos_dms/fc_currency_rate_live/models/res_company.py", line 64, in _parse_bcv_data
dictionary = self.get_dictionary(date, date, 'USD')
File "/mnt/alimentos_dms/fc_currency_rate_live/models/res_company.py", line 46, in get_dictionary
dictionary = gr.get_exchange_rate(currency, from_date, end_date, self.env)
File "/mnt/alimentos_dms/fc_currency_rate_live/models/getrate.py", line 161, in get_exchange_rate
raise UserError(_("No data found."))
Exception
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/odoo/http.py", line 641, in _handle_exception
return super(JsonRequest, self)._handle_exception(exception)
File "/usr/lib/python3/dist-packages/odoo/http.py", line 317, in _handle_exception
raise exception.with_traceback(None) from new_cause
odoo.exceptions.UserError: No data has been found
here it's the getrate.py, but i don't understand why don't read the information
`
def get_exchange_rate(self, currency, date, to_date=None, env=False):
data_frame = self._data_frame(currency, date, to_date or date)
if data_frame is not None:
data = self._to_dict(data_frame)
if date and not to_date:
date = datetime.strptime(date, '%d/%m/%Y')
return data[date.strftime(self.date_format)]
return data
else:
raise UserError(_("No data found."))
`

Odoo issue : missing record does not exist or has been deleted

In Quotation => New
Select customer => Search more
result => Odoo Error : missing record does not exist or has been deleted
POST http://example.net/web/dataset/call_kw/res.partner/name_search 200 OK :
"Traceback (most recent call last):
File "/mnt/odoo-source/odoo/http.py", line 640, in _handle_exception
return super(JsonRequest, self)._handle_exception(exception)
File "/mnt/odoo-source/odoo/http.py", line 677, in dispatch
result = self._call_function(**self.params)
File "/mnt/odoo-source/odoo/http.py", line 333, in _call_function
return checked_call(self.db, *args, **kwargs)
File "/mnt/odoo-source/odoo/service/model.py", line 101, in wrapper
return f(dbname, *args, **kwargs)
File "/mnt/odoo-source/odoo/http.py", line 326, in checked_call
result = self.endpoint(*a, **kw)
File "/mnt/odoo-source/odoo/http.py", line 935, in __call__
return self.method(*args, **kw)
File "/mnt/odoo-source/odoo/http.py", line 506, in response_wrap
response = f(*args, **kw)
File "/mnt/odoo-source/addons/web/controllers/main.py", line 885, in call_kw
return self._call_kw(model, method, args, kwargs)
File "/mnt/odoo-source/addons/web/controllers/main.py", line 877, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
File "/mnt/odoo-source/odoo/api.py", line 679, in call_kw
return call_kw_model(method, model, args, kwargs)
File "/mnt/odoo-source/odoo/api.py", line 664, in call_kw_model
result = method(recs, *args, **kwargs)
File "/mnt/odoo-source/odoo/addons/base/res/res_partner.py", line 681, in name_search
return super(Partner, self).name_search(name, args, operator=operator, limit=limit)
File "/mnt/odoo-source/odoo/models.py", line 1600, in name_search
return self._name_search(name, args, operator, limit=limit)
File "/mnt/odoo-source/odoo/models.py", line 1615, in _name_search
return recs.sudo(access_rights_uid).name_get()
File "/mnt/odoo-source/odoo/addons/base/res/res_partner.py", line 586, in name_get
name = name + "\n" + partner._display_address(without_company=True)
File "/mnt/odoo-source/odoo/addons/base/res/res_partner.py", line 781, in _display_address
address_format = self.country_id.address_format or \
File "/mnt/odoo-source/odoo/fields.py", line 866, in __get__
value = record._cache[self]
File "/mnt/odoo-source/odoo/models.py", line 5562, in __getitem__
return value.get() if isinstance(value, SpecialValue) else value
File "/mnt/odoo-source/odoo/fields.py", line 48, in get
raise self.exception
MissingError: (u'Enregistrement inexistant ou d\xe9truit.', None)
"
I'm stuck with this issue. Anyone know what could i do ?
The issue is solved.
"Country_id" field in "res_partner" table was referencing an unexisting country in "res_country table".

The error when developing an Odoo 9 custom module?

I'm try to code an Odoo 9 module that inherit other module, when I try to install the new module, this error came out:
Odoo Server Error
Traceback (most recent call last):
File "/opt/odoo/openerp/http.py", line 648, in _handle_exception
return super(JsonRequest, self)._handle_exception(exception)
File "/opt/odoo/openerp/http.py", line 685, in dispatch
result = self._call_function(**self.params)
File "/opt/odoo/openerp/http.py", line 321, in _call_function
return checked_call(self.db, *args, **kwargs)
File "/opt/odoo/openerp/service/model.py", line 118, in wrapper
return f(dbname, *args, **kwargs)
File "/opt/odoo/openerp/http.py", line 314, in checked_call
result = self.endpoint(*a, **kw)
File "/opt/odoo/openerp/http.py", line 964, in __call__
return self.method(*args, **kw)
File "/opt/odoo/openerp/http.py", line 514, in response_wrap
response = f(*args, **kw)
File "/opt/odoo/addons/web/controllers/main.py", line 892, in call_button
action = self._call_kw(model, method, args, {})
File "/opt/odoo/addons/web/controllers/main.py", line 880, in _call_kw
return getattr(request.registry.get(model), method)(request.cr, request.uid, *args, **kwargs)
File "/opt/odoo/openerp/api.py", line 250, in wrapper
return old_api(self, *args, **kwargs)
File "/opt/odoo/openerp/addons/base/module/wizard/base_module_upgrade.py", line 87, in upgrade_module
openerp.modules.registry.RegistryManager.new(cr.dbname, update_module=True)
File "/opt/odoo/openerp/modules/registry.py", line 386, in new
openerp.modules.load_modules(registry._db, force_demo, status, update_module)
File "/opt/odoo/openerp/modules/loading.py", line 338, in load_modules
loaded_modules, update_module)
File "/opt/odoo/openerp/modules/loading.py", line 237, in load_marked_modules
loaded, processed = load_module_graph(cr, graph, progressdict, report=report, skip_modules=loaded_modules, perform_checks=perform_checks)
File "/opt/odoo/openerp/modules/loading.py", line 123, in load_module_graph
load_openerp_module(package.name)
File "/opt/odoo/openerp/modules/module.py", line 331, in load_openerp_module
__import__('openerp.addons.' + module_name)
File "/opt/odoo/openerp/modules/module.py", line 61, in load_module
mod = imp.load_module('openerp.addons.' + module_part, f, path, descr)
File "/opt/odoo/addons/old_residual/__init__.py", line 3, in <module>
from . import models
File "/opt/odoo/addons/old_residual/models/__init__.py", line 3, in <module>
from . import old_residual
File "/opt/odoo/addons/old_residual/models/old_residual.py", line 14
for invoice in self:
^
IndentationError: expected an indented block**
After the function declaration you should provide intent, ie
#api.multi
def _compute_old_residual(self):
for invoice in self:
invs = self.search([('state', '=', 'open'), ('partner_id', '=', invoice.partner_id.id)])
# -*- coding: utf-8 -*-
from openerp import models, fields, api
class old_residual(models.Model):
_inherit = "account.invoice"
old_residual = fields.Monetary(string='Nợ cũ',currency_field='company_currency_id', compute='_compute_o$
#api.multi
def _compute_old_residual(self):
for invoice in self:
invs = self.search([('state', '=', 'open'), ('partner_id', '=', invoice.partner_id.id)])
out_invoice = 0
in_invoice = 0
out_refund = 0
in_refund = 0
for inv in invs:
if inv.type == 'out_invoice':
out_invoice += inv.residual
if inv.type == 'in_invoice':
in_invoice += inv.residual
if inv.type == 'out_refund':
out_refund += inv.residual
if inv.type == 'in_refund':
in_refund += inv.residual
invoice.old_residual = out_invoice + in_refund - in_invoice - out_refund - invoice.amount_total

How can override a field default value with default_get in odoo9?

I want to override the default value for a field with the default_get API function in odoo9.
I have this in my code:
#api.model
def default_get(self, fields_list):
res = super(hr_attendance, self).default_get(fields_list)
res.update({
'animal': 'dog'
})
return res
When I create a new register, this error appears in the odoo log:
2016-09-02 11:33:36,680 27542 ERROR mydb openerp.http: Exception during JSON request handling.
Traceback (most recent call last):
File "/etc/odoo/server/openerp/http.py", line 648, in _handle_exception
return super(JsonRequest, self)._handle_exception(exception)
File "/etc/odoo/server/openerp/http.py", line 685, in dispatch
result = self._call_function(**self.params)
File "/etc/odoo/server/openerp/http.py", line 321, in _call_function
return checked_call(self.db, *args, **kwargs)
File "/etc/odoo/server/openerp/service/model.py", line 118, in wrapper
return f(dbname, *args, **kwargs)
File "/etc/odoo/server/openerp/http.py", line 314, in checked_call
result = self.endpoint(*a, **kw)
File "/etc/odoo/server/openerp/http.py", line 964, in __call__
return self.method(*args, **kw)
File "/etc/odoo/server/openerp/http.py", line 514, in response_wrap
response = f(*args, **kw)
File "/etc/odoo/server/addons/web/controllers/main.py", line 888, in call_kw
return self._call_kw(model, method, args, kwargs)
File "/etc/odoo/server/addons/web/controllers/main.py", line 880, in _call_kw
return getattr(request.registry.get(model), method)(request.cr, request.uid, *args, **kwargs)
File "/etc/odoo/server/openerp/api.py", line 250, in wrapper
return old_api(self, *args, **kwargs)
File "/etc/odoo/server/openerp/api.py", line 354, in old_api
result = method(recs, *args, **kwargs)
File "/etc/odoo/server/addons_extra/hr_attendance_extend/hr_attendance.py", line 79, in default_get
res.update({
AttributeError: 'tuple' object has no attribute 'update'
What I am doing wrong?
Edit: I had another variable with the same name which provoqued conflict.
Renaming the variable, everything works perfect.
update is a method of dictionary data-type. And you are trying to use it with tuple data-type. That's reason you got error.
Try with following code:
#api.model
def default_get(self, fields):
res = super(hr_attendance, self).default_get(fields)
res['animal'] = 'dog'
return res

Odoo 8 error when trying to open product with multiple attributes

Our Odoo is version 8 and is running on Ubuntu.
When I try to open product which has multiple attributes (colours, sizes) I get KeyError: 57. Other simple products are OK.
Any idea what can cause this problem ?
here is complete traceback:
Odoo Server Error
Traceback (most recent call last):
File "/opt/odoo/odoo/openerp/http.py", line 530, in _handle_exception
return super(JsonRequest, self)._handle_exception(exception)
File "/opt/odoo/odoo/openerp/http.py", line 567, in dispatch
result = self._call_function(**self.params)
File "/opt/odoo/odoo/openerp/http.py", line 303, in _call_function
return checked_call(self.db, *args, **kwargs)
File "/opt/odoo/odoo/openerp/service/model.py", line 113, in wrapper
return f(dbname, *args, **kwargs)
File "/opt/odoo/odoo/openerp/http.py", line 300, in checked_call
return self.endpoint(*a, **kw)
File "/opt/odoo/odoo/openerp/http.py", line 796, in __call__
return self.method(*args, **kw)
File "/opt/odoo/odoo/openerp/http.py", line 396, in response_wrap
response = f(*args, **kw)
File "/opt/odoo/odoo/addons/web/controllers/main.py", line 949, in call_kw
return self._call_kw(model, method, args, kwargs)
File "/opt/odoo/odoo/addons/web/controllers/main.py", line 932, in _call_kw
records = getattr(request.session.model(model), method)(*args, **kwargs)
File "/opt/odoo/odoo/openerp/http.py", line 900, in proxy
result = meth(cr, request.uid, *args, **kw)
File "/opt/odoo/odoo/openerp/api.py", line 241, in wrapper
return old_api(self, *args, **kwargs)
File "/opt/odoo/odoo/openerp/models.py", line 3109, in read
result = BaseModel.read(records, fields, load=load)
File "/opt/odoo/odoo/openerp/api.py", line 239, in wrapper
return new_api(self, *args, **kwargs)
File "/opt/odoo/odoo/openerp/models.py", line 3141, in read
self._read_from_database(stored)
File "/opt/odoo/odoo/openerp/api.py", line 239, in wrapper
return new_api(self, *args, **kwargs)
File "/opt/odoo/odoo/openerp/models.py", line 3305, in _read_from_database
res2 = self._columns[f].get(cr, self._model, ids, f, user, context=context, values=result)
File "/opt/odoo/odoo/openerp/osv/fields.py", line 1361, in get
result = self._fnct(obj, cr, uid, ids, name, self._arg, context)
File "/opt/odoo/odoo/addons/sale/sale.py", line 1283, in _sales_count
res[template.id] = sum([p.sales_count for p in template.product_variant_ids])
File "/opt/odoo/odoo/openerp/fields.py", line 760, in __get__
self.determine_value(record)
File "/opt/odoo/odoo/openerp/fields.py", line 853, in determine_value
record._prefetch_field(self)
File "/opt/odoo/odoo/openerp/api.py", line 239, in wrapper
return new_api(self, *args, **kwargs)
File "/opt/odoo/odoo/openerp/models.py", line 3196, in _prefetch_field
result = records.read(list(fnames), load='_classic_write')
File "/opt/odoo/odoo/openerp/api.py", line 239, in wrapper
return new_api(self, *args, **kwargs)
File "/opt/odoo/odoo/openerp/models.py", line 3141, in read
self._read_from_database(stored)
File "/opt/odoo/odoo/openerp/api.py", line 239, in wrapper
return new_api(self, *args, **kwargs)
File "/opt/odoo/odoo/openerp/models.py", line 3308, in _read_from_database
vals[f] = res2[vals['id']]
KeyError: 57
I got same error like your log, but I don't know your code details. You should check field type.
In my case, I used field function.
I was make mistaken like below:
rec = obj.browse(cr,...)
result = {}
# result[id] = val # wrong
result[rec.id] = val # correct
I hope this helps..