blooparksystems / website

Odoo Website builder related addons
GNU Affero General Public License v3.0
10 stars 33 forks source link

Uninstalling the module website_seo is not possible #26

Closed rruebner closed 8 years ago

rruebner commented 8 years ago

Problem

If you installed the website_seo module you can't uninstall it later.

Steps to reproduce

2015-11-12 11:54:55,361 11161 ERROR master2 openerp.http: Exception during JSON request handling.
Traceback (most recent call last):
  File "/var/www/openerp/http.py", line 599, in _handle_exception
    return super(JsonRequest, self)._handle_exception(exception)
  File "/var/www/openerp/http.py", line 636, in dispatch
    result = self._call_function(**self.params)
  File "/var/www/openerp/http.py", line 315, in _call_function
    return checked_call(self.db, *args, **kwargs)
  File "/var/www/openerp/service/model.py", line 113, in wrapper
    return f(dbname, *args, **kwargs)
  File "/var/www/openerp/http.py", line 308, in checked_call
    result = self.endpoint(*a, **kw)
  File "/var/www/openerp/http.py", line 887, in __call__
    return self.method(*args, **kw)
  File "/var/www/openerp/http.py", line 465, in response_wrap
    response = f(*args, **kw)
  File "/var/www/addons/web/controllers/main.py", line 975, in call_button
    action = self._call_kw(model, method, args, {})
  File "/var/www/addons/web/controllers/main.py", line 963, in _call_kw
    return checked_call(request.db, *args, **kwargs)
  File "/var/www/openerp/service/model.py", line 113, in wrapper
    return f(dbname, *args, **kwargs)
  File "/var/www/addons/web/controllers/main.py", line 962, in checked_call
    return getattr(request.registry.get(model), method)(request.cr, request.uid, *args, **kwargs)
  File "/var/www/openerp/api.py", line 223, in wrapper
    return old_api(self, *args, **kwargs)
  File "/var/www/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 "/var/www/openerp/modules/registry.py", line 385, in new
    openerp.modules.load_modules(registry._db, force_demo, status, update_module)
  File "/var/www/openerp/modules/loading.py", line 385, in load_modules
    registry['ir.module.module'].module_uninstall(cr, SUPERUSER_ID, modules_to_remove.values())
  File "/var/www/openerp/api.py", line 223, in wrapper
    return old_api(self, *args, **kwargs)
  File "/var/www/openerp/addons/base/module/module.py", line 471, in module_uninstall
    ir_model_data._module_data_uninstall(cr, uid, modules_to_remove, context)
  File "/var/www/openerp/api.py", line 223, in wrapper
    return old_api(self, *args, **kwargs)
  File "/var/www/openerp/addons/base/ir/ir_model.py", line 1247, in _module_data_uninstall
    unlink_if_refcount((model, res_id) for model, res_id in to_unlink
  File "/var/www/openerp/addons/base/ir/ir_model.py", line 1221, in unlink_if_refcount
    if field.name in openerp.models.LOG_ACCESS_COLUMNS and self.pool[field.model]._log_access:
  File "/var/www/openerp/fields.py", line 805, in __get__
    self.determine_value(record)
  File "/var/www/openerp/fields.py", line 903, in determine_value
    record._prefetch_field(self)
  File "/var/www/openerp/api.py", line 221, in wrapper
    return new_api(self, *args, **kwargs)
  File "/var/www/openerp/models.py", line 3270, in _prefetch_field
    result = records.read([f.name for f in fs], load='_classic_write')
  File "/var/www/openerp/api.py", line 221, in wrapper
    return new_api(self, *args, **kwargs)
  File "/var/www/openerp/models.py", line 3211, in read
    self._read_from_database(stored, inherited)
  File "/var/www/openerp/api.py", line 221, in wrapper
    return new_api(self, *args, **kwargs)
  File "/var/www/openerp/models.py", line 3321, in _read_from_database
    qual_names = map(qualify, set(fields_pre + [self._fields['id']]))
  File "/var/www/openerp/models.py", line 3315, in qualify
    res = self._inherits_join_calc(self._table, field.name, query)
  File "/var/www/openerp/api.py", line 221, in wrapper
    return new_api(self, *args, **kwargs)
  File "/var/www/openerp/models.py", line 2189, in _inherits_join_calc
    return model._generate_translated_field(alias, field, query)
  File "/var/www/openerp/api.py", line 221, in wrapper
    return new_api(self, *args, **kwargs)
  File "/var/www/addons_bloopark/website_seo/core/core.py", line 46, in _extended_generate_translated_field
    lang = lang_model.get_code_from_alias(self._context.get('lang'))
  File "/var/www/openerp/api.py", line 221, in wrapper
    return new_api(self, *args, **kwargs)
  File "/var/www/addons_bloopark/website_seo/models/res_lang.py", line 32, in get_code_from_alias
    lang = self.search([('short_code', '=', code)])
  File "/var/www/openerp/api.py", line 221, in wrapper
    return new_api(self, *args, **kwargs)
  File "/var/www/openerp/api.py", line 454, in new_api
    result = method(self._model, cr, uid, *args, **kwargs)
  File "/var/www/openerp/models.py", line 1659, in search
    return self._search(cr, user, args, offset=offset, limit=limit, order=order, context=context, count=count)
  File "/var/www/openerp/api.py", line 223, in wrapper
    return old_api(self, *args, **kwargs)
  File "/var/www/openerp/models.py", line 4729, in _search
    query = self._where_calc(cr, user, args, context=context)
  File "/var/www/openerp/api.py", line 223, in wrapper
    return old_api(self, *args, **kwargs)
  File "/var/www/openerp/models.py", line 4513, in _where_calc
    e = expression.expression(cr, user, domain, self, context)
  File "/var/www/addons_bloopark/website_seo/core/core.py", line 89, in extended_init
    self.parse(cr, uid, context=parse_ctx)
  File "/var/www/openerp/osv/expression.py", line 833, in parse
    raise ValueError("Invalid field %r in leaf %r" % (left, str(leaf)))
ValueError: Invalid field 'short_code' in leaf "<osv.ExtendedLeaf: ('short_code', '=', None) on res_lang (ctx: )>"

Expected behaviour

If you commented out the including of the file "website_seo/core/core.py" you can uninstall the website_seo module.

rruebner commented 8 years ago

:x: Uninstalling of the module website_seo is still not possible, I tried it in the SNODOO project, the same error will be raised

rruebner commented 8 years ago

Sorry, my fault. I found the PR.