diff --git a/openerp/addons/base/base.sql b/openerp/addons/base/base.sql
index 26d70b7ede6..441fe536a0a 100644
--- a/openerp/addons/base/base.sql
+++ b/openerp/addons/base/base.sql
@@ -146,17 +146,15 @@ select setval('ir_ui_menu_id_seq', 2);
CREATE TABLE res_users (
id serial NOT NULL,
- name varchar(64) not null,
active boolean default True,
login varchar(64) NOT NULL UNIQUE,
password varchar(64) default null,
- email varchar(64) default null,
- context_tz varchar(64) default null,
- signature text,
- context_lang varchar(64) default '',
+ tz varchar(64) default null,
+ lang varchar(64) default '',
-- No FK references below, will be added later by ORM
-- (when the destination rows exist)
company_id int,
+ partner_id int,
primary key(id)
);
alter table res_users add constraint res_users_login_uniq unique (login);
@@ -385,7 +383,7 @@ CREATE TABLE ir_model_relation (
-- Users
---------------------------------
-insert into res_users (id,login,password,name,active,company_id,context_lang) values (1,'admin','admin','Administrator',True,1,'en_US');
+insert into res_users (id,login,password,active,company_id,partner_id,lang) values (1,'admin','admin',True,1,1,'en_US');
insert into ir_model_data (name,module,model,noupdate,res_id) values ('user_root','base','res.users',True,1);
-- Compatibility purpose, to remove V6.0
diff --git a/openerp/addons/base/base_data.xml b/openerp/addons/base/base_data.xml
index 672925143aa..1f8c97007e3 100644
--- a/openerp/addons/base/base_data.xml
+++ b/openerp/addons/base/base_data.xml
@@ -1094,19 +1094,23 @@
-
- Administrator
+
+ Administrator
+
+
+
+
+
+
-
+
+ Administrator
-
-
-
diff --git a/openerp/addons/base/ir/ir_actions.py b/openerp/addons/base/ir/ir_actions.py
index 72fd6aab349..a5d04d7f1bc 100644
--- a/openerp/addons/base/ir/ir_actions.py
+++ b/openerp/addons/base/ir/ir_actions.py
@@ -625,8 +625,8 @@ class actions_server(osv.osv):
if not email_from:
_logger.debug('--email-from command line option is not specified, using a fallback value instead.')
- if user.user_email:
- email_from = user.user_email
+ if user.email:
+ email_from = user.email
else:
email_from = "%s@%s" % (user.login, gethostname())
diff --git a/openerp/addons/base/publisher_warranty/publisher_warranty.py b/openerp/addons/base/publisher_warranty/publisher_warranty.py
index f6fdd04de14..897210ce817 100644
--- a/openerp/addons/base/publisher_warranty/publisher_warranty.py
+++ b/openerp/addons/base/publisher_warranty/publisher_warranty.py
@@ -86,7 +86,7 @@ class publisher_warranty_contract(osv.osv):
db_create_date = self.pool.get('ir.config_parameter').get_param(cr, uid, 'database.create_date')
user = self.pool.get("res.users").browse(cr, uid, uid)
user_name = user.name
- email = user.user_email
+ email = user.email
msg = {'contract_name': valid_contract.name,
'tb': tb,
@@ -333,7 +333,7 @@ def get_sys_logs(cr, uid):
"db_create_date": db_create_date,
"version": release.version,
"contracts": [c.name for c in contracts],
- "language": user.context_lang,
+ "language": user.lang,
}
add_arg = {"timeout":30} if sys.version_info >= (2,6) else {}
diff --git a/openerp/addons/base/res/photo.png b/openerp/addons/base/res/photo.png
deleted file mode 100644
index 1d124127b2b..00000000000
Binary files a/openerp/addons/base/res/photo.png and /dev/null differ
diff --git a/openerp/addons/base/res/res_company.py b/openerp/addons/base/res/res_company.py
index 77fb9b635e5..526ad0e0bad 100644
--- a/openerp/addons/base/res/res_company.py
+++ b/openerp/addons/base/res/res_company.py
@@ -149,11 +149,9 @@ class res_company(osv.osv):
def _search(self, cr, uid, args, offset=0, limit=None, order=None,
context=None, count=False, access_rights_uid=None):
-
if context is None:
context = {}
- user_preference = context.get('user_preference', False)
- if user_preference:
+ if context.get('user_preference'):
# We browse as superuser. Otherwise, the user would be able to
# select only the currently visible companies (according to rules,
# which are probably to allow to see the child companies) even if
diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py
index d275c0c7b4e..4376cb694d3 100644
--- a/openerp/addons/base/res/res_partner.py
+++ b/openerp/addons/base/res/res_partner.py
@@ -20,6 +20,7 @@
##############################################################################
import math
+import openerp
import os
from osv import osv, fields
import re
@@ -27,6 +28,10 @@ import tools
from tools.translate import _
import logging
import pooler
+import pytz
+
+def _tz_get(self,cr,uid, context=None):
+ return [(x, x) for x in pytz.all_timezones]
class res_payterm(osv.osv):
_description = 'Payment term'
@@ -150,7 +155,12 @@ class res_partner(osv.osv):
'parent_id': fields.many2one('res.partner', 'Owned by'),
'child_ids': fields.one2many('res.partner', 'parent_id', 'Contacts'),
'ref': fields.char('Reference', size=64, select=1),
- 'lang': fields.selection(_lang_get, 'Language', help="If the selected language is loaded in the system, all documents related to this partner will be printed in this language. If not, it will be english."),
+ 'lang': fields.selection(_lang_get, 'Language',
+ help="If the selected language is loaded in the system, all documents related to this partner will be printed in this language. If not, it will be english."),
+ 'tz': fields.selection(_tz_get, 'Timezone', size=64,
+ help="The partner's timezone, used to output proper date and time values inside printed reports. "
+ "It is important to set a value for this field. You should use the same timezone "
+ "that is otherwise used to pick and render date and time values: your computer's timezone."),
'user_id': fields.many2one('res.users', 'Salesperson', help='The internal user that is in charge of communicating with this partner if any.'),
'vat': fields.char('VAT',size=32 ,help="Value Added Tax number. Check the box if the partner is subjected to the VAT. Used by the VAT legal statement."),
'bank_ids': fields.one2many('res.partner.bank', 'partner_id', 'Banks'),
@@ -165,10 +175,10 @@ class res_partner(osv.osv):
'supplier': fields.boolean('Supplier', help="Check this box if the partner is a supplier. If it's not checked, purchase people will not see it when encoding a purchase order."),
'employee': fields.boolean('Employee', help="Check this box if the partner is an Employee."),
'function': fields.char('Job Position', size=128),
- 'type': fields.selection( [('default','Default'),('invoice','Invoice'),
+ 'type': fields.selection( [('default','Default'), ('invoice','Invoice'),
('delivery','Delivery'), ('contact','Contact'),
- ('other','Other')],
- 'Address Type', help="Used to select automatically the right address according to the context in sales and purchases documents."),
+ ('other', 'Other')], 'Address Type',
+ help="Used to select automatically the right address according to the context in sales and purchases documents."),
'street': fields.char('Street', size=128),
'street2': fields.char('Street2', size=128),
'zip': fields.char('Zip', change_default=True, size=24),
@@ -217,13 +227,15 @@ class res_partner(osv.osv):
def _get_default_image(self, cr, uid, is_company, context=None):
if is_company:
- image_path = os.path.join( tools.config['root_path'], 'addons', 'base', 'res', 'company_icon.png')
+ image_path = openerp.modules.get_module_resource('base', 'static/src/img', 'company_image.png')
else:
- image_path = os.path.join( tools.config['root_path'], 'addons', 'base', 'res', 'photo.png')
+ image_path = openerp.modules.get_module_resource('base', 'static/src/img', 'partner_image.png')
return tools.image_resize_image_big(open(image_path, 'rb').read().encode('base64'))
_defaults = {
'active': True,
+ 'lang': lambda self, cr, uid, context: context.get('lang', 'en_US'),
+ 'tz': lambda self, cr, uid, context: context.get('tz', False),
'customer': True,
'category_id': _default_category,
'company_id': lambda s,cr,uid,c: s.pool.get('res.company')._company_default_get(cr, uid, 'res.partner', context=c),
@@ -318,7 +330,8 @@ class res_partner(osv.osv):
def update_address(self, cr, uid, ids, vals, context=None):
addr_vals = dict((key, vals[key]) for key in POSTAL_ADDRESS_FIELDS if vals.get(key))
- return super(res_partner, self).write(cr, uid, ids, addr_vals, context)
+ if addr_vals:
+ return super(res_partner, self).write(cr, uid, ids, addr_vals, context)
def name_get(self, cr, uid, ids, context=None):
if context is None:
diff --git a/openerp/addons/base/res/res_partner_demo.xml b/openerp/addons/base/res/res_partner_demo.xml
index ae179910a92..eed67483358 100644
--- a/openerp/addons/base/res/res_partner_demo.xml
+++ b/openerp/addons/base/res/res_partner_demo.xml
@@ -6,7 +6,7 @@
-->
- Customer
+ PartnerSupplier
@@ -18,15 +18,15 @@
Employee
- Gold Partner
+ Gold
- Silver Partner
+ Silver
- Bronze Partner
+ Bronze
@@ -35,35 +35,27 @@
Consultancy Services
- Components Buyer
- Services
- Office Supplies
- Distributor
- Manufacturer
- Wholesaler
- Retailer
- Company Contact
diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml
index 7324379c2b5..43a37d1a79c 100644
--- a/openerp/addons/base/res/res_partner_view.xml
+++ b/openerp/addons/base/res/res_partner_view.xml
@@ -95,7 +95,7 @@