[REF] Replace the user id 1 by openerp.SUPERUSER_ID

bzr revid: stw@openerp.com-20120831135136-8k2wjeiixqt6tnkr
This commit is contained in:
Stephane Wirtel 2012-08-31 15:51:36 +02:00
parent ad051ebf45
commit 1eac0fbe52
16 changed files with 59 additions and 44 deletions

View File

@ -30,6 +30,8 @@ from osv import fields, osv
import decimal_precision as dp
from tools.translate import _
from tools.float_utils import float_round
from openerp import SUPERUSER_ID
_logger = logging.getLogger(__name__)
@ -819,7 +821,7 @@ class account_journal(osv.osv):
if not 'sequence_id' in vals or not vals['sequence_id']:
# if we have the right to create a journal, we should be able to
# create it's sequence.
vals.update({'sequence_id': self.create_sequence(cr, 1, vals, context)})
vals.update({'sequence_id': self.create_sequence(cr, SUPERUSER_ID, vals, context)})
return super(account_journal, self).create(cr, uid, vals, context)
def name_get(self, cr, user, ids, context=None):
@ -1858,7 +1860,7 @@ class account_tax(osv.osv):
def get_precision_tax():
def change_digit_tax(cr):
res = pooler.get_pool(cr.dbname).get('decimal.precision').precision_get(cr, 1, 'Account')
res = pooler.get_pool(cr.dbname).get('decimal.precision').precision_get(cr, SUPERUSER_ID, 'Account')
return (16, res+2)
return change_digit_tax
@ -3349,9 +3351,9 @@ class wizard_multi_charts_accounts(osv.osv_memory):
# write values of default taxes for product as super user
if obj_wizard.sale_tax and taxes_ref:
ir_values_obj.set_default(cr, 1, 'product.product', "taxes_id", [taxes_ref[obj_wizard.sale_tax.id]], for_all_users=True, company_id=company_id)
ir_values_obj.set_default(cr, SUPERUSER_ID, 'product.product', "taxes_id", [taxes_ref[obj_wizard.sale_tax.id]], for_all_users=True, company_id=company_id)
if obj_wizard.purchase_tax and taxes_ref:
ir_values_obj.set_default(cr, 1, 'product.product', "supplier_taxes_id", [taxes_ref[obj_wizard.purchase_tax.id]], for_all_users=True, company_id=company_id)
ir_values_obj.set_default(cr, SUPERUSER_ID, 'product.product', "supplier_taxes_id", [taxes_ref[obj_wizard.purchase_tax.id]], for_all_users=True, company_id=company_id)
# Create Bank journals
self._create_bank_journals_from_o2m(cr, uid, obj_wizard, company_id, acc_template_ref, context=context)

View File

@ -25,6 +25,7 @@ from tools.translate import _
import pooler
import time
import tools
from openerp import SUPERUSER_ID
class audittrail_rule(osv.osv):
"""
@ -252,10 +253,10 @@ class audittrail_objects_proxy(object_proxy):
pool = pooler.get_pool(cr.dbname)
resource_pool = pool.get(model)
model_pool = pool.get('ir.model')
model_ids = model_pool.search(cr, 1, [('model', '=', model)])
model_ids = model_pool.search(cr, SUPERUSER_ID, [('model', '=', model)])
model_id = model_ids and model_ids[0] or False
assert model_id, _("'%s' Model does not exist..." %(model))
model = model_pool.browse(cr, 1, model_id)
model = model_pool.browse(cr, SUPERUSER_ID, model_id)
# fields to log. currently only used by log on read()
field_list = []
@ -322,7 +323,7 @@ class audittrail_objects_proxy(object_proxy):
data = {}
resource_pool = pool.get(model.model)
# read all the fields of the given resources in super admin mode
for resource in resource_pool.read(cr, 1, res_ids):
for resource in resource_pool.read(cr, SUPERUSER_ID, res_ids):
values = {}
values_text = {}
resource_id = resource['id']
@ -332,19 +333,19 @@ class audittrail_objects_proxy(object_proxy):
continue
values[field] = resource[field]
# get the textual value of that field for this record
values_text[field] = self.get_value_text(cr, 1, pool, resource_pool, method, field, resource[field])
values_text[field] = self.get_value_text(cr, SUPERUSER_ID, pool, resource_pool, method, field, resource[field])
field_obj = resource_pool._all_columns.get(field).column
if field_obj._type in ('one2many','many2many'):
# check if an audittrail rule apply in super admin mode
if self.check_rules(cr, 1, field_obj._obj, method):
if self.check_rules(cr, SUPERUSER_ID, field_obj._obj, method):
# check if the model associated to a *2m field exists, in super admin mode
x2m_model_ids = pool.get('ir.model').search(cr, 1, [('model', '=', field_obj._obj)])
x2m_model_ids = pool.get('ir.model').search(cr, SUPERUSER_ID, [('model', '=', field_obj._obj)])
x2m_model_id = x2m_model_ids and x2m_model_ids[0] or False
assert x2m_model_id, _("'%s' Model does not exist..." %(field_obj._obj))
x2m_model = pool.get('ir.model').browse(cr, 1, x2m_model_id)
x2m_model = pool.get('ir.model').browse(cr, SUPERUSER_ID, x2m_model_id)
#recursive call on x2m fields that need to be checked too
data.update(self.get_data(cr, 1, pool, resource[field], x2m_model, method))
data.update(self.get_data(cr, SUPERUSER_ID, pool, resource[field], x2m_model, method))
data[(model.id, resource_id)] = {'text':values_text, 'value': values}
return data
@ -389,12 +390,12 @@ class audittrail_objects_proxy(object_proxy):
field_obj = field_definition.column
if field_obj._type in ('one2many','many2many'):
# checking if an audittrail rule apply in super admin mode
if self.check_rules(cr, 1, field_obj._obj, method):
if self.check_rules(cr, SUPERUSER_ID, field_obj._obj, method):
# checking if the model associated to a *2m field exists, in super admin mode
x2m_model_ids = pool.get('ir.model').search(cr, 1, [('model', '=', field_obj._obj)])
x2m_model_ids = pool.get('ir.model').search(cr, SUPERUSER_ID, [('model', '=', field_obj._obj)])
x2m_model_id = x2m_model_ids and x2m_model_ids[0] or False
assert x2m_model_id, _("'%s' Model does not exist..." %(field_obj._obj))
x2m_model = pool.get('ir.model').browse(cr, 1, x2m_model_id)
x2m_model = pool.get('ir.model').browse(cr, SUPERUSER_ID, x2m_model_id)
# the resource_ids that need to be checked are the sum of both old and previous values (because we
# need to log also creation or deletion in those lists).
x2m_old_values_ids = old_values.get(key, {'value': {}})['value'].get(field_name, [])
@ -402,7 +403,7 @@ class audittrail_objects_proxy(object_proxy):
# We use list(set(...)) to remove duplicates.
res_ids = list(set(x2m_old_values_ids + x2m_new_values_ids))
for res_id in res_ids:
lines.update(self.prepare_audittrail_log_line(cr, 1, pool, x2m_model, res_id, method, old_values, new_values, field_list))
lines.update(self.prepare_audittrail_log_line(cr, SUPERUSER_ID, pool, x2m_model, res_id, method, old_values, new_values, field_list))
# if the value value is different than the old value: record the change
if key not in old_values or key not in new_values or old_values[key]['value'][field_name] != new_values[key]['value'][field_name]:
data = {
@ -459,9 +460,9 @@ class audittrail_objects_proxy(object_proxy):
vals.update({'method': 'unlink'})
# create the audittrail log in super admin mode, only if a change has been detected
if lines[(model_id, resource_id)]:
log_id = pool.get('audittrail.log').create(cr, 1, vals)
log_id = pool.get('audittrail.log').create(cr, SUPERUSER_ID, vals)
model = pool.get('ir.model').browse(cr, uid, model_id)
self.create_log_line(cr, 1, log_id, model, lines[(model_id, resource_id)])
self.create_log_line(cr, SUPERUSER_ID, log_id, model, lines[(model_id, resource_id)])
return True
def check_rules(self, cr, uid, model, method):
@ -475,11 +476,11 @@ class audittrail_objects_proxy(object_proxy):
"""
pool = pooler.get_pool(cr.dbname)
if 'audittrail.rule' in pool.models:
model_ids = pool.get('ir.model').search(cr, 1, [('model', '=', model)])
model_ids = pool.get('ir.model').search(cr, SUPERUSER_ID, [('model', '=', model)])
model_id = model_ids and model_ids[0] or False
if model_id:
rule_ids = pool.get('audittrail.rule').search(cr, 1, [('object_id', '=', model_id), ('state', '=', 'subscribed')])
for rule in pool.get('audittrail.rule').read(cr, 1, rule_ids, ['user_id','log_read','log_write','log_create','log_unlink','log_action','log_workflow']):
rule_ids = pool.get('audittrail.rule').search(cr, SUPERUSER_ID, [('object_id', '=', model_id), ('state', '=', 'subscribed')])
for rule in pool.get('audittrail.rule').read(cr, SUPERUSER_ID, rule_ids, ['user_id','log_read','log_write','log_create','log_unlink','log_action','log_workflow']):
if len(rule['user_id']) == 0 or uid in rule['user_id']:
if rule.get('log_'+method,0):
return True

View File

@ -7,6 +7,7 @@ import werkzeug.utils
import openerp.modules.registry
import openerp.addons.web.controllers.main
import openerp.addons.web.common.http as openerpweb
from openerp import SUPERUSER_ID
_logger = logging.getLogger(__name__)
@ -18,7 +19,7 @@ class OAuthController(openerpweb.Controller):
registry = openerp.modules.registry.RegistryManager.get(dbname)
with registry.cursor() as cr:
providers = registry.get('auth.oauth.provider')
l = providers.read(cr, 1, providers.search(cr, 1, [('enabled','=',True)]))
l = providers.read(cr, SUPERUSER_ID, providers.search(cr, SUPERUSER_ID, [('enabled','=',True)]))
return l
@openerpweb.httprequest
@ -30,7 +31,7 @@ class OAuthController(openerpweb.Controller):
with registry.cursor() as cr:
try:
u = registry.get('res.users')
credentials = u.auth_oauth(cr, 1, provider, kw)
credentials = u.auth_oauth(cr, SUPERUSER_ID, provider, kw)
cr.commit()
return openerp.addons.web.controllers.main.login_and_redirect(req, *credentials)
except AttributeError:

View File

@ -6,6 +6,7 @@ import simplejson
import openerp
from openerp.osv import osv, fields
from openerp import SUPERUSER_ID
_logger = logging.getLogger(__name__)
@ -63,7 +64,7 @@ class res_users(osv.Model):
try:
return super(res_users, self).check_credentials(cr, uid, password)
except openerp.exceptions.AccessDenied:
res = self.search(cr, 1, [('id','=',uid),('oauth_access_token','=',password)])
res = self.search(cr, SUPERUSER_ID, [('id','=',uid),('oauth_access_token','=',password)])
if not res:
raise

View File

@ -23,6 +23,7 @@ import logging
import os
import tempfile
import urllib
from openerp import SUPERUSER_ID
import werkzeug.urls
import werkzeug.exceptions
@ -176,7 +177,7 @@ class OpenIDController(openerpweb.Controller):
with registry.cursor() as cr:
Modules = registry.get('ir.module.module')
installed = Modules.search_count(cr, 1, ['&', ('name', '=', 'auth_openid'), ('state', '=', 'installed')]) == 1
installed = Modules.search_count(cr, SUPERUSER_ID, ['&', ('name', '=', 'auth_openid'), ('state', '=', 'installed')]) == 1
if installed:
Users = registry.get('res.users')
@ -196,13 +197,13 @@ class OpenIDController(openerpweb.Controller):
domain += [('openid_url', '=', openid_url), ('active', '=', True)]
ids = Users.search(cr, 1, domain)
ids = Users.search(cr, SUPERUSER_ID, domain)
assert len(ids) < 2
if ids:
user_id = ids[0]
login = Users.browse(cr, 1, user_id).login
login = Users.browse(cr, SUPERUSER_ID, user_id).login
key = randomString(utils.KEY_LENGTH, '0123456789abcdef')
Users.write(cr, 1, [user_id], {'openid_key': key})
Users.write(cr, SUPERUSER_ID, [user_id], {'openid_key': key})
# TODO fill empty fields with the ones from sreg/ax
cr.commit()

View File

@ -6,6 +6,7 @@ import urlparse
from openerp.tools import config
from openerp.osv import osv, fields
from openerp import SUPERUSER_ID
TWENTY_FOUR_HOURS = 24 * 60 * 60
@ -76,9 +77,9 @@ class res_users(osv.osv):
MailMessage.send(cr, uid, [msg_id], context=context)
def send_reset_password_request(self, cr, uid, email, context=None):
ids = self.pool.get('res.users').search(cr, 1, [('user_email', '=', email)], context=context)
ids = self.pool.get('res.users').search(cr, SUPERUSER_ID, [('user_email', '=', email)], context=context)
if ids:
self._auth_reset_password_send_email(cr, 1, email, 'reset_password_email', ids[0], context=context)
self._auth_reset_password_send_email(cr, SUPERUSER_ID, email, 'reset_password_email', ids[0], context=context)
return True
#else:
# _m, company_id = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'base', 'main_company')
@ -109,7 +110,7 @@ class auth_reset_password(osv.TransientModel):
Users = self.pool.get('res.users')
data = Users._auth_reset_password_check_token(cr, uid, values.get('token', ''))
if data:
Users.write(cr, 1, data['uid'], {'password': pw}, context=context)
Users.write(cr, SUPERUSER_ID, data['uid'], {'password': pw}, context=context)
else:
raise osv.except_osv('Error', 'Invalid token')

View File

@ -5,6 +5,7 @@ import werkzeug.urls
from openerp.modules.registry import RegistryManager
from openerp.addons.web.controllers.main import login_and_redirect
import openerp.addons.web.common.http as openerpweb
from openerp import SUPERUSER_ID
_logger = logging.getLogger(__name__)
@ -18,7 +19,7 @@ class OpenIDController(openerpweb.Controller):
with registry.cursor() as cr:
try:
Users = registry.get('res.users')
credentials = Users.auth_signup(cr, 1, name, login, password)
credentials = Users.auth_signup(cr, SUPERUSER_ID, name, login, password)
cr.commit()
return login_and_redirect(req, *credentials)
except AttributeError:

View File

@ -1,5 +1,6 @@
import openerp
from openerp.osv import osv
from openerp import SUPERUSER_ID
class res_users(osv.Model):
_inherit = 'res.users'
@ -15,9 +16,9 @@ class res_users(osv.Model):
#
user_template_id = self.pool.get('ir.config_parameter').get_param(cr, uid, 'auth.signup_template_user_id', 0)
if user_template_id:
self.pool.get('res.users').copy(cr, 1, user_template_id, new_user, context=context)
self.pool.get('res.users').copy(cr, SUPERUSER_ID, user_template_id, new_user, context=context)
else:
self.pool.get('res.users').create(cr, 1, new_user, context=context)
self.pool.get('res.users').create(cr, SUPERUSER_ID, new_user, context=context)
def auth_signup(self, cr, uid, name, login, password, context=None):
r = (cr.dbname, login, password)

View File

@ -22,6 +22,7 @@
from osv import osv, fields
import tools
import pooler
from openerp import SUPERUSER_ID
class decimal_precision(osv.osv):
_name = 'decimal.precision'
@ -56,7 +57,7 @@ decimal_precision()
def get_precision(application):
def change_digit(cr):
res = pooler.get_pool(cr.dbname).get('decimal.precision').precision_get(cr, 1, application)
res = pooler.get_pool(cr.dbname).get('decimal.precision').precision_get(cr, SUPERUSER_ID, application)
return (16, res)
return change_digit

View File

@ -25,6 +25,8 @@ from tools.safe_eval import safe_eval as eval
import time
import urllib
import uuid
from openerp import SUPERUSER_ID
try:
from tools.dict_tools import dict_filter
except ImportError:
@ -233,7 +235,7 @@ class node_acl_mixin(object):
if props_to_delete:
# explicitly delete, as admin, any of the ids we have identified.
propobj.unlink(cr, 1, props_to_delete)
propobj.unlink(cr, SUPERUSER_ID, props_to_delete)
if lock_data.get('unlock_mode', False):
return lock_found and True

View File

@ -42,6 +42,7 @@ from tools import config
from xmlrpclib import Transport, ProtocolError
import StringIO
import base64
from openerp import SUPERUSER_ID
_logger = logging.getLogger(__name__)
@ -361,7 +362,7 @@ class DAVClient(object):
to break if "base_crypt" is used.
"""
ruob = obj.pool.get('res.users')
res = ruob.read(cr, 1, [uid,], ['login', 'password'])
res = ruob.read(cr, SUPERUSER_ID, [uid,], ['login', 'password'])
assert res, "uid %s not found" % uid
self.user = res[0]['login']
self.passwd = res[0]['password']

View File

@ -29,6 +29,7 @@ import decimal_precision as dp
from tools.misc import currency
from tools.translate import _
from tools import config
from openerp import SUPERUSER_ID
class account_tax_code_template(osv.osv):
@ -53,7 +54,7 @@ class account_tax_template(osv.osv):
def get_precision_tax():
def change_digit_tax(cr):
res = pooler.get_pool(cr.dbname).get('decimal.precision').precision_get(cr, 1, 'Account')
res = pooler.get_pool(cr.dbname).get('decimal.precision').precision_get(cr, SUPERUSER_ID, 'Account')
return (16, res+2)
return change_digit_tax
@ -91,7 +92,7 @@ class account_tax(osv.osv):
def get_precision_tax():
def change_digit_tax(cr):
res = pooler.get_pool(cr.dbname).get('decimal.precision').precision_get(cr, 1, 'Account')
res = pooler.get_pool(cr.dbname).get('decimal.precision').precision_get(cr, SUPERUSER_ID, 'Account')
return (16, res+2)
return change_digit_tax

View File

@ -92,9 +92,8 @@ class mail_alias(osv.Model):
_defaults = {
'alias_defaults': '{}',
'alias_user_id': lambda self,cr,uid,context: uid,
# looks better when creating new aliases - even if the field is informative only
'alias_domain': lambda self,cr,uid,context: self._get_alias_domain(cr,1,[1],None,None)[1]
'alias_domain': lambda self,cr,uid,context: self._get_alias_domain(cr, SUPERUSER_ID,[1],None,None)[1]
}
_sql_constraints = [

View File

@ -88,7 +88,7 @@ class res_users(osv.Model):
subject = '''%s has joined %s.''' % (user.name, company_name)
body = '''Welcome to OpenERP !'''
# TODO change 1 into user.id but catch errors
return self.pool.get('res.partner').message_append_note(cr, 1, [user.partner_id.id],
return self.pool.get('res.partner').message_append_note(cr, SUPERUSER_ID, [user.partner_id.id],
subject=subject, body=body, type='comment', content_subtype='html', context=context)
def write(self, cr, uid, ids, vals, context=None):

View File

@ -26,6 +26,7 @@ from osv import fields, osv
from openerp.addons.resource.faces import task as Task
import time
from tools.translate import _
from openerp import SUPERUSER_ID
_TASK_STATE = [('draft', 'New'),('open', 'In Progress'),('pending', 'Pending'), ('done', 'Done'), ('cancelled', 'Cancelled')]
@ -877,7 +878,7 @@ class task(base_stage, osv.osv):
if context is None: context = {}
# read uom as admin to avoid access rights issues, e.g. for portal/share users,
# this should be safe (no context passed to avoid side-effects)
obj_tm = users_obj.browse(cr, 1, uid, context=context).company_id.project_time_mode_id
obj_tm = users_obj.browse(cr, SUPERUSER_ID, uid, context=context).company_id.project_time_mode_id
tm = obj_tm and obj_tm.name or 'Hours'
res = super(task, self).fields_view_get(cr, uid, view_id, view_type, context, toolbar, submenu=submenu)

View File

@ -23,6 +23,7 @@ import random
import time
from urllib import quote_plus
import uuid
from openerp import SUPERUSER_ID
import simplejson
@ -545,7 +546,7 @@ class share_wizard(osv.TransientModel):
_logger.debug("Copying rule %s (%s) on model %s with domain: %s", rule.name, rule.id, model.model, rule.domain_force)
else:
# otherwise we can simply link the rule to keep it dynamic
rule_obj.write(cr, 1, [rule.id], {
rule_obj.write(cr, SUPERUSER_ID, [rule.id], {
'groups': [(4,group_id)]
})
_logger.debug("Linking rule %s (%s) on model %s with domain: %s", rule.name, rule.id, model.model, rule.domain_force)