[MERGE]with main branch
bzr revid: jpr@tinyerp.com-20140505095333-v514kj2dz0advdf8
This commit is contained in:
commit
1bb22f2ddd
|
@ -93,15 +93,11 @@ The kernel of OpenERP, needed for all installation.
|
||||||
'res/res_partner_image_demo.xml',
|
'res/res_partner_image_demo.xml',
|
||||||
],
|
],
|
||||||
'test': [
|
'test': [
|
||||||
'test/base_test.yml',
|
'tests/base_test.yml',
|
||||||
'test/test_osv_expression.yml',
|
'tests/test_osv_expression.yml',
|
||||||
'test/test_ir_rule.yml', # <-- These tests modify/add/delete ir_rules.
|
'tests/test_ir_rule.yml', # <-- These tests modify/add/delete ir_rules.
|
||||||
],
|
],
|
||||||
'installable': True,
|
'installable': True,
|
||||||
'auto_install': True,
|
'auto_install': True,
|
||||||
'css': ['static/src/css/modules.css'],
|
|
||||||
'js': [
|
|
||||||
'static/src/js/apps.js',
|
|
||||||
],
|
|
||||||
}
|
}
|
||||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||||
|
|
|
@ -2,30 +2,20 @@
|
||||||
-- Pure SQL
|
-- Pure SQL
|
||||||
-------------------------------------------------------------------------
|
-------------------------------------------------------------------------
|
||||||
|
|
||||||
-------------------------------------------------------------------------
|
CREATE TABLE ir_actions (
|
||||||
-- IR dictionary
|
id serial,
|
||||||
-------------------------------------------------------------------------
|
primary key(id)
|
||||||
|
|
||||||
create table ir_values
|
|
||||||
(
|
|
||||||
id serial,
|
|
||||||
name varchar(128) not null,
|
|
||||||
key varchar(128) not null,
|
|
||||||
key2 varchar(256) not null,
|
|
||||||
model varchar(128) not null,
|
|
||||||
value text,
|
|
||||||
meta text default NULL,
|
|
||||||
res_id integer default null,
|
|
||||||
primary key (id)
|
|
||||||
);
|
);
|
||||||
|
CREATE TABLE ir_act_window (primary key(id)) INHERITS (ir_actions);
|
||||||
|
CREATE TABLE ir_act_report_xml (primary key(id)) INHERITS (ir_actions);
|
||||||
|
CREATE TABLE ir_act_url (primary key(id)) INHERITS (ir_actions);
|
||||||
|
CREATE TABLE ir_act_server (primary key(id)) INHERITS (ir_actions);
|
||||||
|
CREATE TABLE ir_act_client (primary key(id)) INHERITS (ir_actions);
|
||||||
|
|
||||||
-------------------------------------------------------------------------
|
|
||||||
-- Modules Description
|
|
||||||
-------------------------------------------------------------------------
|
|
||||||
|
|
||||||
CREATE TABLE ir_model (
|
CREATE TABLE ir_model (
|
||||||
id serial,
|
id serial,
|
||||||
model varchar DEFAULT ''::varchar NOT NULL,
|
model varchar NOT NULL,
|
||||||
name varchar,
|
name varchar,
|
||||||
state varchar,
|
state varchar,
|
||||||
info text,
|
info text,
|
||||||
|
@ -34,103 +24,27 @@ CREATE TABLE ir_model (
|
||||||
|
|
||||||
CREATE TABLE ir_model_fields (
|
CREATE TABLE ir_model_fields (
|
||||||
id serial,
|
id serial,
|
||||||
model varchar DEFAULT ''::varchar NOT NULL,
|
model varchar NOT NULL,
|
||||||
model_id int references ir_model on delete cascade,
|
model_id integer references ir_model on delete cascade,
|
||||||
name varchar DEFAULT ''::varchar NOT NULL,
|
name varchar NOT NULL,
|
||||||
relation varchar,
|
relation varchar,
|
||||||
select_level varchar,
|
select_level varchar,
|
||||||
field_description varchar,
|
field_description varchar,
|
||||||
ttype varchar,
|
ttype varchar,
|
||||||
state varchar default 'base',
|
state varchar default 'base',
|
||||||
relate boolean default False,
|
|
||||||
relation_field varchar,
|
relation_field varchar,
|
||||||
translate boolean default False,
|
translate boolean default False,
|
||||||
|
serialization_field_id integer references ir_model_fields on delete cascade,
|
||||||
primary key(id)
|
primary key(id)
|
||||||
);
|
);
|
||||||
|
|
||||||
ALTER TABLE ir_model_fields ADD column serialization_field_id int references ir_model_fields on delete cascade;
|
CREATE TABLE res_lang (
|
||||||
|
id serial,
|
||||||
|
name VARCHAR(64) NOT NULL UNIQUE,
|
||||||
-------------------------------------------------------------------------
|
code VARCHAR(16) NOT NULL UNIQUE,
|
||||||
-- Actions
|
|
||||||
-------------------------------------------------------------------------
|
|
||||||
|
|
||||||
CREATE TABLE ir_actions (
|
|
||||||
id serial NOT NULL,
|
|
||||||
name varchar(64) DEFAULT ''::varchar NOT NULL,
|
|
||||||
"type" varchar(32) NOT NULL,
|
|
||||||
usage varchar(32) DEFAULT null,
|
|
||||||
primary key(id)
|
primary key(id)
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE TABLE ir_act_window (
|
|
||||||
view_id integer,
|
|
||||||
res_model varchar(64),
|
|
||||||
view_type varchar(16),
|
|
||||||
"domain" varchar(250),
|
|
||||||
primary key(id)
|
|
||||||
)
|
|
||||||
INHERITS (ir_actions);
|
|
||||||
|
|
||||||
CREATE TABLE ir_act_report_xml (
|
|
||||||
model varchar(64) NOT NULL,
|
|
||||||
report_name varchar(64) NOT NULL,
|
|
||||||
report_xsl varchar(256),
|
|
||||||
report_xml varchar(256),
|
|
||||||
auto boolean default true,
|
|
||||||
primary key(id)
|
|
||||||
)
|
|
||||||
INHERITS (ir_actions);
|
|
||||||
|
|
||||||
create table ir_act_report_custom (
|
|
||||||
report_id int,
|
|
||||||
-- report_id int references ir_report_custom
|
|
||||||
primary key(id)
|
|
||||||
)
|
|
||||||
INHERITS (ir_actions);
|
|
||||||
|
|
||||||
CREATE TABLE ir_act_wizard (
|
|
||||||
wiz_name varchar(64) NOT NULL,
|
|
||||||
primary key(id)
|
|
||||||
)
|
|
||||||
INHERITS (ir_actions);
|
|
||||||
|
|
||||||
CREATE TABLE ir_act_url (
|
|
||||||
url text NOT NULL,
|
|
||||||
target varchar(64) NOT NULL,
|
|
||||||
primary key(id)
|
|
||||||
)
|
|
||||||
INHERITS (ir_actions);
|
|
||||||
|
|
||||||
CREATE TABLE ir_act_server (
|
|
||||||
primary key(id)
|
|
||||||
)
|
|
||||||
INHERITS (ir_actions);
|
|
||||||
|
|
||||||
CREATE TABLE ir_act_client (
|
|
||||||
primary key(id)
|
|
||||||
)
|
|
||||||
INHERITS (ir_actions);
|
|
||||||
|
|
||||||
CREATE TABLE ir_ui_menu (
|
|
||||||
id serial NOT NULL,
|
|
||||||
parent_id int references ir_ui_menu on delete set null,
|
|
||||||
name varchar(64) DEFAULT ''::varchar NOT NULL,
|
|
||||||
icon varchar(64) DEFAULT ''::varchar,
|
|
||||||
primary key (id)
|
|
||||||
);
|
|
||||||
|
|
||||||
select setval('ir_ui_menu_id_seq', 2);
|
|
||||||
|
|
||||||
---------------------------------
|
|
||||||
-- Res users
|
|
||||||
---------------------------------
|
|
||||||
|
|
||||||
-- level:
|
|
||||||
-- 0 RESTRICT TO USER
|
|
||||||
-- 1 RESTRICT TO GROUP
|
|
||||||
-- 2 PUBLIC
|
|
||||||
|
|
||||||
CREATE TABLE res_users (
|
CREATE TABLE res_users (
|
||||||
id serial NOT NULL,
|
id serial NOT NULL,
|
||||||
active boolean default True,
|
active boolean default True,
|
||||||
|
@ -138,146 +52,44 @@ CREATE TABLE res_users (
|
||||||
password varchar(64) default null,
|
password varchar(64) default null,
|
||||||
-- No FK references below, will be added later by ORM
|
-- No FK references below, will be added later by ORM
|
||||||
-- (when the destination rows exist)
|
-- (when the destination rows exist)
|
||||||
company_id int,
|
company_id integer, -- references res_company,
|
||||||
partner_id int,
|
partner_id integer, -- references res_partner,
|
||||||
primary key(id)
|
|
||||||
);
|
|
||||||
alter table res_users add constraint res_users_login_uniq unique (login);
|
|
||||||
|
|
||||||
CREATE TABLE res_groups (
|
|
||||||
id serial NOT NULL,
|
|
||||||
name varchar(64) NOT NULL,
|
|
||||||
primary key(id)
|
primary key(id)
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE TABLE res_groups_users_rel (
|
create table wkf (
|
||||||
uid integer NOT NULL references res_users on delete cascade,
|
|
||||||
gid integer NOT NULL references res_groups on delete cascade,
|
|
||||||
UNIQUE("uid","gid")
|
|
||||||
);
|
|
||||||
|
|
||||||
create index res_groups_users_rel_uid_idx on res_groups_users_rel (uid);
|
|
||||||
create index res_groups_users_rel_gid_idx on res_groups_users_rel (gid);
|
|
||||||
|
|
||||||
|
|
||||||
---------------------------------
|
|
||||||
-- Workflows
|
|
||||||
---------------------------------
|
|
||||||
|
|
||||||
create table wkf
|
|
||||||
(
|
|
||||||
id serial,
|
id serial,
|
||||||
name varchar(64),
|
name varchar(64),
|
||||||
osv varchar(64),
|
osv varchar(64),
|
||||||
on_create bool default False,
|
on_create bool default false,
|
||||||
primary key(id)
|
primary key(id)
|
||||||
);
|
);
|
||||||
|
|
||||||
create table wkf_activity
|
|
||||||
(
|
|
||||||
id serial,
|
|
||||||
wkf_id int references wkf on delete cascade,
|
|
||||||
subflow_id int references wkf on delete set null,
|
|
||||||
split_mode varchar(3) default 'XOR',
|
|
||||||
join_mode varchar(3) default 'XOR',
|
|
||||||
kind varchar(16) not null default 'dummy',
|
|
||||||
name varchar(64),
|
|
||||||
signal_send varchar(32) default null,
|
|
||||||
flow_start boolean default False,
|
|
||||||
flow_stop boolean default False,
|
|
||||||
action text default null,
|
|
||||||
primary key(id)
|
|
||||||
);
|
|
||||||
|
|
||||||
create table wkf_transition
|
|
||||||
(
|
|
||||||
id serial,
|
|
||||||
act_from int references wkf_activity on delete cascade,
|
|
||||||
act_to int references wkf_activity on delete cascade,
|
|
||||||
condition varchar(128) default NULL,
|
|
||||||
|
|
||||||
trigger_type varchar(128) default NULL,
|
|
||||||
trigger_expr_id varchar(128) default NULL,
|
|
||||||
|
|
||||||
signal varchar(64) default null,
|
|
||||||
group_id int references res_groups on delete set null,
|
|
||||||
|
|
||||||
primary key(id)
|
|
||||||
);
|
|
||||||
|
|
||||||
create table wkf_instance
|
|
||||||
(
|
|
||||||
id serial,
|
|
||||||
wkf_id int references wkf on delete restrict,
|
|
||||||
uid int default null,
|
|
||||||
res_id int not null,
|
|
||||||
res_type varchar(64) not null,
|
|
||||||
state varchar(32) not null default 'active',
|
|
||||||
primary key(id)
|
|
||||||
);
|
|
||||||
|
|
||||||
create table wkf_workitem
|
|
||||||
(
|
|
||||||
id serial,
|
|
||||||
act_id int not null references wkf_activity on delete cascade,
|
|
||||||
inst_id int not null references wkf_instance on delete cascade,
|
|
||||||
subflow_id int references wkf_instance on delete cascade,
|
|
||||||
state varchar(64) default 'blocked',
|
|
||||||
primary key(id)
|
|
||||||
);
|
|
||||||
|
|
||||||
create table wkf_witm_trans
|
|
||||||
(
|
|
||||||
trans_id int not null references wkf_transition on delete cascade,
|
|
||||||
inst_id int not null references wkf_instance on delete cascade
|
|
||||||
);
|
|
||||||
|
|
||||||
create index wkf_witm_trans_inst_idx on wkf_witm_trans (inst_id);
|
|
||||||
|
|
||||||
create table wkf_logs
|
|
||||||
(
|
|
||||||
id serial,
|
|
||||||
res_type varchar(128) not null,
|
|
||||||
res_id int not null,
|
|
||||||
uid int references res_users on delete set null,
|
|
||||||
act_id int references wkf_activity on delete set null,
|
|
||||||
time time not null,
|
|
||||||
info varchar(128) default NULL,
|
|
||||||
primary key(id)
|
|
||||||
);
|
|
||||||
|
|
||||||
---------------------------------
|
|
||||||
-- Modules
|
|
||||||
---------------------------------
|
|
||||||
|
|
||||||
CREATE TABLE ir_module_category (
|
CREATE TABLE ir_module_category (
|
||||||
id serial NOT NULL,
|
id serial NOT NULL,
|
||||||
create_uid integer references res_users on delete set null,
|
create_uid integer, -- references res_users on delete set null,
|
||||||
create_date timestamp without time zone,
|
create_date timestamp without time zone,
|
||||||
write_date timestamp without time zone,
|
write_date timestamp without time zone,
|
||||||
write_uid integer references res_users on delete set null,
|
write_uid integer, -- references res_users on delete set null,
|
||||||
parent_id integer REFERENCES ir_module_category ON DELETE SET NULL,
|
parent_id integer REFERENCES ir_module_category ON DELETE SET NULL,
|
||||||
name character varying(128) NOT NULL,
|
name character varying(128) NOT NULL,
|
||||||
primary key(id)
|
primary key(id)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
CREATE TABLE ir_module_module (
|
CREATE TABLE ir_module_module (
|
||||||
id serial NOT NULL,
|
id serial NOT NULL,
|
||||||
create_uid integer references res_users on delete set null,
|
create_uid integer, -- references res_users on delete set null,
|
||||||
create_date timestamp without time zone,
|
create_date timestamp without time zone,
|
||||||
write_date timestamp without time zone,
|
write_date timestamp without time zone,
|
||||||
write_uid integer references res_users on delete set null,
|
write_uid integer, -- references res_users on delete set null,
|
||||||
website character varying(256),
|
website character varying(256),
|
||||||
summary character varying(256),
|
summary character varying(256),
|
||||||
name character varying(128) NOT NULL,
|
name character varying(128) NOT NULL,
|
||||||
author character varying(128),
|
author character varying(128),
|
||||||
url character varying(128),
|
|
||||||
icon character varying(64),
|
icon character varying(64),
|
||||||
state character varying(16),
|
state character varying(16),
|
||||||
latest_version character varying(64),
|
latest_version character varying(64),
|
||||||
shortdesc character varying(256),
|
shortdesc character varying(256),
|
||||||
complexity character varying(32),
|
|
||||||
category_id integer REFERENCES ir_module_category ON DELETE SET NULL,
|
category_id integer REFERENCES ir_module_category ON DELETE SET NULL,
|
||||||
description text,
|
description text,
|
||||||
application boolean default False,
|
application boolean default False,
|
||||||
|
@ -292,45 +104,15 @@ ALTER TABLE ir_module_module add constraint name_uniq unique (name);
|
||||||
|
|
||||||
CREATE TABLE ir_module_module_dependency (
|
CREATE TABLE ir_module_module_dependency (
|
||||||
id serial NOT NULL,
|
id serial NOT NULL,
|
||||||
create_uid integer references res_users on delete set null,
|
create_uid integer, -- references res_users on delete set null,
|
||||||
create_date timestamp without time zone,
|
create_date timestamp without time zone,
|
||||||
write_date timestamp without time zone,
|
write_date timestamp without time zone,
|
||||||
write_uid integer references res_users on delete set null,
|
write_uid integer, -- references res_users on delete set null,
|
||||||
name character varying(128),
|
name character varying(128),
|
||||||
version_pattern character varying(128) default NULL,
|
|
||||||
module_id integer REFERENCES ir_module_module ON DELETE cascade,
|
module_id integer REFERENCES ir_module_module ON DELETE cascade,
|
||||||
primary key(id)
|
primary key(id)
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE TABLE res_partner (
|
|
||||||
id serial NOT NULL,
|
|
||||||
name character varying(128),
|
|
||||||
lang varchar(64),
|
|
||||||
company_id int,
|
|
||||||
primary key(id)
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
CREATE TABLE res_currency (
|
|
||||||
id serial PRIMARY KEY,
|
|
||||||
name VARCHAR(32) NOT NULL
|
|
||||||
);
|
|
||||||
|
|
||||||
CREATE TABLE res_company (
|
|
||||||
id serial PRIMARY KEY,
|
|
||||||
name character varying(128) not null,
|
|
||||||
parent_id integer references res_company on delete set null,
|
|
||||||
partner_id integer not null references res_partner,
|
|
||||||
currency_id integer not null references res_currency
|
|
||||||
|
|
||||||
);
|
|
||||||
|
|
||||||
CREATE TABLE res_lang (
|
|
||||||
id serial PRIMARY KEY,
|
|
||||||
name VARCHAR(64) NOT NULL UNIQUE,
|
|
||||||
code VARCHAR(16) NOT NULL UNIQUE
|
|
||||||
);
|
|
||||||
|
|
||||||
CREATE TABLE ir_model_data (
|
CREATE TABLE ir_model_data (
|
||||||
id serial NOT NULL,
|
id serial NOT NULL,
|
||||||
create_uid integer,
|
create_uid integer,
|
||||||
|
@ -343,7 +125,8 @@ CREATE TABLE ir_model_data (
|
||||||
date_update timestamp without time zone,
|
date_update timestamp without time zone,
|
||||||
module varchar NOT NULL,
|
module varchar NOT NULL,
|
||||||
model varchar NOT NULL,
|
model varchar NOT NULL,
|
||||||
res_id integer, primary key(id)
|
res_id integer,
|
||||||
|
primary key(id)
|
||||||
);
|
);
|
||||||
|
|
||||||
-- Records foreign keys and constraints installed by a module (so they can be
|
-- Records foreign keys and constraints installed by a module (so they can be
|
||||||
|
@ -352,49 +135,64 @@ CREATE TABLE ir_model_data (
|
||||||
-- - for a constraint: type is 'u' (this is the convention PostgreSQL uses).
|
-- - for a constraint: type is 'u' (this is the convention PostgreSQL uses).
|
||||||
CREATE TABLE ir_model_constraint (
|
CREATE TABLE ir_model_constraint (
|
||||||
id serial NOT NULL,
|
id serial NOT NULL,
|
||||||
create_uid integer,
|
|
||||||
create_date timestamp without time zone,
|
|
||||||
write_date timestamp without time zone,
|
|
||||||
write_uid integer,
|
|
||||||
date_init timestamp without time zone,
|
date_init timestamp without time zone,
|
||||||
date_update timestamp without time zone,
|
date_update timestamp without time zone,
|
||||||
module integer NOT NULL references ir_module_module on delete restrict,
|
module integer NOT NULL references ir_module_module on delete restrict,
|
||||||
model integer NOT NULL references ir_model on delete restrict,
|
model integer NOT NULL references ir_model on delete restrict,
|
||||||
type character varying(1) NOT NULL,
|
type character varying(1) NOT NULL,
|
||||||
name varchar NOT NULL
|
name varchar NOT NULL,
|
||||||
|
primary key(id)
|
||||||
);
|
);
|
||||||
|
|
||||||
-- Records relation tables (i.e. implementing many2many) installed by a module
|
-- Records relation tables (i.e. implementing many2many) installed by a module
|
||||||
-- (so they can be removed when the module is uninstalled).
|
-- (so they can be removed when the module is uninstalled).
|
||||||
CREATE TABLE ir_model_relation (
|
CREATE TABLE ir_model_relation (
|
||||||
id serial NOT NULL,
|
id serial NOT NULL,
|
||||||
create_uid integer,
|
|
||||||
create_date timestamp without time zone,
|
|
||||||
write_date timestamp without time zone,
|
|
||||||
write_uid integer,
|
|
||||||
date_init timestamp without time zone,
|
date_init timestamp without time zone,
|
||||||
date_update timestamp without time zone,
|
date_update timestamp without time zone,
|
||||||
module integer NOT NULL references ir_module_module on delete restrict,
|
module integer NOT NULL references ir_module_module on delete restrict,
|
||||||
model integer NOT NULL references ir_model on delete restrict,
|
model integer NOT NULL references ir_model on delete restrict,
|
||||||
name varchar NOT NULL
|
name varchar NOT NULL,
|
||||||
|
primary key(id)
|
||||||
);
|
);
|
||||||
|
|
||||||
---------------------------------
|
CREATE TABLE res_currency (
|
||||||
-- Users
|
id serial,
|
||||||
---------------------------------
|
name varchar NOT NULL,
|
||||||
insert into res_users (id,login,password,active,company_id,partner_id) VALUES (1,'admin','admin',true,1,1);
|
primary key(id)
|
||||||
insert into ir_model_data (name,module,model,noupdate,res_id) VALUES ('user_root','base','res.users',true,1);
|
);
|
||||||
|
|
||||||
insert into res_partner (id, name, lang, company_id) VALUES (1, 'Your Company', 'en_US', 1);
|
CREATE TABLE res_company (
|
||||||
insert into ir_model_data (name,module,model,noupdate,res_id) VALUES ('main_partner','base','res.partner',true,1);
|
id serial,
|
||||||
|
name varchar NOT NULL,
|
||||||
|
partner_id integer,
|
||||||
|
currency_id integer,
|
||||||
|
primary key(id)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE res_partner (
|
||||||
|
id serial,
|
||||||
|
name varchar,
|
||||||
|
company_id integer,
|
||||||
|
primary key(id)
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
---------------------------------
|
||||||
|
-- Default data
|
||||||
|
---------------------------------
|
||||||
insert into res_currency (id, name) VALUES (1, 'EUR');
|
insert into res_currency (id, name) VALUES (1, 'EUR');
|
||||||
insert into ir_model_data (name,module,model,noupdate,res_id) VALUES ('EUR','base','res.currency',true,1);
|
insert into ir_model_data (name, module, model, noupdate, res_id) VALUES ('EUR', 'base', 'res.currency', true, 1);
|
||||||
|
select setval('res_currency_id_seq', 2);
|
||||||
|
|
||||||
insert into res_company (id, name, partner_id, currency_id) VALUES (1, 'Your Company', 1, 1);
|
insert into res_company (id, name, partner_id, currency_id) VALUES (1, 'Your Company', 1, 1);
|
||||||
insert into ir_model_data (name,module,model,noupdate,res_id) VALUES ('main_company','base','res.company',true,1);
|
insert into ir_model_data (name, module, model, noupdate, res_id) VALUES ('main_company', 'base', 'res.company', true, 1);
|
||||||
|
|
||||||
select setval('res_company_id_seq', 2);
|
select setval('res_company_id_seq', 2);
|
||||||
select setval('res_users_id_seq', 2);
|
|
||||||
|
insert into res_partner (id, name, company_id) VALUES (1, 'Your Company', 1);
|
||||||
|
insert into ir_model_data (name, module, model, noupdate, res_id) VALUES ('main_partner', 'base', 'res.partner', true, 1);
|
||||||
select setval('res_partner_id_seq', 2);
|
select setval('res_partner_id_seq', 2);
|
||||||
select setval('res_currency_id_seq', 2);
|
|
||||||
|
insert into res_users (id, login, password, active, partner_id, company_id) VALUES (1, 'admin', 'admin', true, 1, 1);
|
||||||
|
insert into ir_model_data (name, module, model, noupdate, res_id) VALUES ('user_root', 'base', 'res.users', true, 1);
|
||||||
|
select setval('res_users_id_seq', 2);
|
||||||
|
|
|
@ -11,15 +11,6 @@
|
||||||
</field>
|
</field>
|
||||||
<field name="field_parent">child_id</field>
|
<field name="field_parent">child_id</field>
|
||||||
</record>
|
</record>
|
||||||
<record id="action_menu_admin" model="ir.actions.act_window">
|
|
||||||
<field name="name">Menu</field>
|
|
||||||
<field name="usage">menu</field>
|
|
||||||
<field name="type">ir.actions.act_window</field>
|
|
||||||
<field name="view_id" ref="view_menu"/>
|
|
||||||
<field name="res_model">ir.ui.menu</field>
|
|
||||||
<field name="view_type">tree</field>
|
|
||||||
<field name="domain">[('parent_id', '=', False)]</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record id="lang_en" model="res.lang">
|
<record id="lang_en" model="res.lang">
|
||||||
<field name="code">en_US</field>
|
<field name="code">en_US</field>
|
||||||
|
@ -75,7 +66,6 @@
|
||||||
<field name="partner_id" ref="base.partner_root"/>
|
<field name="partner_id" ref="base.partner_root"/>
|
||||||
<field name="company_id" ref="main_company"/>
|
<field name="company_id" ref="main_company"/>
|
||||||
<field name="company_ids" eval="[(4, ref('main_company'))]"/>
|
<field name="company_ids" eval="[(4, ref('main_company'))]"/>
|
||||||
<field name="menu_id" ref="action_menu_admin"/>
|
|
||||||
<field name="signature">--
|
<field name="signature">--
|
||||||
Administrator</field>
|
Administrator</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
|
@ -14,7 +14,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-04-17 05:37+0000\n"
|
"X-Launchpad-Export-Date: 2014-04-24 05:43+0000\n"
|
||||||
"X-Generator: Launchpad (build 16985)\n"
|
"X-Generator: Launchpad (build 16985)\n"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
|
|
|
@ -14,7 +14,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-04-17 05:38+0000\n"
|
"X-Launchpad-Export-Date: 2014-04-24 05:43+0000\n"
|
||||||
"X-Generator: Launchpad (build 16985)\n"
|
"X-Generator: Launchpad (build 16985)\n"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
|
|
|
@ -14,7 +14,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-04-17 05:38+0000\n"
|
"X-Launchpad-Export-Date: 2014-04-24 05:43+0000\n"
|
||||||
"X-Generator: Launchpad (build 16985)\n"
|
"X-Generator: Launchpad (build 16985)\n"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
|
|
|
@ -13,7 +13,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-04-17 05:38+0000\n"
|
"X-Launchpad-Export-Date: 2014-04-24 05:44+0000\n"
|
||||||
"X-Generator: Launchpad (build 16985)\n"
|
"X-Generator: Launchpad (build 16985)\n"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
|
|
|
@ -13,7 +13,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-04-17 05:39+0000\n"
|
"X-Launchpad-Export-Date: 2014-04-24 05:45+0000\n"
|
||||||
"X-Generator: Launchpad (build 16985)\n"
|
"X-Generator: Launchpad (build 16985)\n"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
|
@ -579,7 +579,7 @@ msgstr ""
|
||||||
#. module: base
|
#. module: base
|
||||||
#: model:ir.module.module,shortdesc:base.module_idea
|
#: model:ir.module.module,shortdesc:base.module_idea
|
||||||
msgid "Ideas"
|
msgid "Ideas"
|
||||||
msgstr ""
|
msgstr "Идеи"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
#: model:ir.module.module,description:base.module_event
|
#: model:ir.module.module,description:base.module_event
|
||||||
|
@ -668,7 +668,7 @@ msgstr "Колумбия"
|
||||||
#. module: base
|
#. module: base
|
||||||
#: model:res.partner.title,name:base.res_partner_title_mister
|
#: model:res.partner.title,name:base.res_partner_title_mister
|
||||||
msgid "Mister"
|
msgid "Mister"
|
||||||
msgstr ""
|
msgstr "Господин"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
#: help:res.country,code:0
|
#: help:res.country,code:0
|
||||||
|
@ -720,7 +720,7 @@ msgstr "Персонализираните полета трябва да има
|
||||||
#. module: base
|
#. module: base
|
||||||
#: model:ir.module.module,shortdesc:base.module_l10n_mx
|
#: model:ir.module.module,shortdesc:base.module_l10n_mx
|
||||||
msgid "Mexico - Accounting"
|
msgid "Mexico - Accounting"
|
||||||
msgstr ""
|
msgstr "Мексико - Счетоводство"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
#: help:ir.actions.server,action_id:0
|
#: help:ir.actions.server,action_id:0
|
||||||
|
@ -835,7 +835,7 @@ msgstr "Еритрея"
|
||||||
#. module: base
|
#. module: base
|
||||||
#: sql_constraint:res.company:0
|
#: sql_constraint:res.company:0
|
||||||
msgid "The company name must be unique !"
|
msgid "The company name must be unique !"
|
||||||
msgstr ""
|
msgstr "Името на фирмата трябва да е уникално!"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
#: model:ir.ui.menu,name:base.menu_base_action_rule_admin
|
#: model:ir.ui.menu,name:base.menu_base_action_rule_admin
|
||||||
|
@ -845,7 +845,7 @@ msgstr "Автоматизирани действия"
|
||||||
#. module: base
|
#. module: base
|
||||||
#: model:ir.module.module,shortdesc:base.module_l10n_ro
|
#: model:ir.module.module,shortdesc:base.module_l10n_ro
|
||||||
msgid "Romania - Accounting"
|
msgid "Romania - Accounting"
|
||||||
msgstr ""
|
msgstr "Румъния - Счетоводство"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
#: model:ir.model,name:base.model_res_config_settings
|
#: model:ir.model,name:base.model_res_config_settings
|
||||||
|
@ -890,7 +890,7 @@ msgstr "шведски / svenska"
|
||||||
#: field:base.language.export,name:0
|
#: field:base.language.export,name:0
|
||||||
#: field:ir.attachment,datas_fname:0
|
#: field:ir.attachment,datas_fname:0
|
||||||
msgid "File Name"
|
msgid "File Name"
|
||||||
msgstr ""
|
msgstr "Име на файла"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
#: model:res.country,name:base.rs
|
#: model:res.country,name:base.rs
|
||||||
|
@ -1169,6 +1169,8 @@ msgstr "TGZ Архив"
|
||||||
msgid ""
|
msgid ""
|
||||||
"Users added to this group are automatically added in the following groups."
|
"Users added to this group are automatically added in the following groups."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Потребителите добавени в тази група автоматично ще бъдат добавени и в "
|
||||||
|
"следните групи."
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
#: code:addons/base/ir/ir_model.py:732
|
#: code:addons/base/ir/ir_model.py:732
|
||||||
|
@ -1205,7 +1207,7 @@ msgstr "Вид"
|
||||||
#. module: base
|
#. module: base
|
||||||
#: field:ir.mail_server,smtp_user:0
|
#: field:ir.mail_server,smtp_user:0
|
||||||
msgid "Username"
|
msgid "Username"
|
||||||
msgstr ""
|
msgstr "Потребителско име"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
#: model:ir.module.module,description:base.module_l10n_br
|
#: model:ir.module.module,description:base.module_l10n_br
|
||||||
|
@ -1345,7 +1347,7 @@ msgstr ""
|
||||||
#. module: base
|
#. module: base
|
||||||
#: field:ir.module.category,visible:0
|
#: field:ir.module.category,visible:0
|
||||||
msgid "Visible"
|
msgid "Visible"
|
||||||
msgstr ""
|
msgstr "Видим"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
#: model:ir.actions.client,name:base.action_client_base_menu
|
#: model:ir.actions.client,name:base.action_client_base_menu
|
||||||
|
@ -1431,7 +1433,7 @@ msgstr ""
|
||||||
#. module: base
|
#. module: base
|
||||||
#: model:ir.module.module,shortdesc:base.module_web_tests
|
#: model:ir.module.module,shortdesc:base.module_web_tests
|
||||||
msgid "Tests"
|
msgid "Tests"
|
||||||
msgstr ""
|
msgstr "Тестове"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
#: field:ir.actions.report.xml,attachment:0
|
#: field:ir.actions.report.xml,attachment:0
|
||||||
|
@ -1512,7 +1514,7 @@ msgstr "Отказана операция"
|
||||||
#. module: base
|
#. module: base
|
||||||
#: model:ir.module.module,shortdesc:base.module_document
|
#: model:ir.module.module,shortdesc:base.module_document
|
||||||
msgid "Document Management System"
|
msgid "Document Management System"
|
||||||
msgstr ""
|
msgstr "Система за управление на документи"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
#: model:ir.module.module,shortdesc:base.module_crm_claim
|
#: model:ir.module.module,shortdesc:base.module_crm_claim
|
||||||
|
@ -1655,7 +1657,7 @@ msgstr "Не съществува език с код \"%s\""
|
||||||
#: model:ir.module.category,name:base.module_category_social_network
|
#: model:ir.module.category,name:base.module_category_social_network
|
||||||
#: model:ir.module.module,shortdesc:base.module_mail
|
#: model:ir.module.module,shortdesc:base.module_mail
|
||||||
msgid "Social Network"
|
msgid "Social Network"
|
||||||
msgstr ""
|
msgstr "Социална мрежа"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
#: view:res.lang:0
|
#: view:res.lang:0
|
||||||
|
@ -1814,12 +1816,12 @@ msgstr ""
|
||||||
#. module: base
|
#. module: base
|
||||||
#: field:res.partner,image_small:0
|
#: field:res.partner,image_small:0
|
||||||
msgid "Small-sized image"
|
msgid "Small-sized image"
|
||||||
msgstr ""
|
msgstr "Картинка с малък размер"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
#: model:ir.module.module,shortdesc:base.module_stock
|
#: model:ir.module.module,shortdesc:base.module_stock
|
||||||
msgid "Warehouse Management"
|
msgid "Warehouse Management"
|
||||||
msgstr ""
|
msgstr "Управление на складове"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
#: model:ir.model,name:base.model_res_request_link
|
#: model:ir.model,name:base.model_res_request_link
|
||||||
|
@ -1859,7 +1861,7 @@ msgstr "Източен Тимор"
|
||||||
#: view:ir.module.module:0
|
#: view:ir.module.module:0
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Install"
|
msgid "Install"
|
||||||
msgstr ""
|
msgstr "Инсталиране"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
#: field:res.currency,accuracy:0
|
#: field:res.currency,accuracy:0
|
||||||
|
@ -2188,7 +2190,7 @@ msgstr ""
|
||||||
#: model:ir.ui.menu,name:base.menu_administration
|
#: model:ir.ui.menu,name:base.menu_administration
|
||||||
#: model:res.groups,name:base.group_system
|
#: model:res.groups,name:base.group_system
|
||||||
msgid "Settings"
|
msgid "Settings"
|
||||||
msgstr ""
|
msgstr "Настройки"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
#: selection:ir.actions.act_window,view_type:0
|
#: selection:ir.actions.act_window,view_type:0
|
||||||
|
@ -2274,7 +2276,7 @@ msgstr ""
|
||||||
#. module: base
|
#. module: base
|
||||||
#: model:ir.module.category,name:base.module_category_tools
|
#: model:ir.module.category,name:base.module_category_tools
|
||||||
msgid "Extra Tools"
|
msgid "Extra Tools"
|
||||||
msgstr ""
|
msgstr "Допълнителни инструменти"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
#: view:ir.attachment:0
|
#: view:ir.attachment:0
|
||||||
|
@ -2292,6 +2294,8 @@ msgid ""
|
||||||
"Appears by default on the top right corner of your printed documents (report "
|
"Appears by default on the top right corner of your printed documents (report "
|
||||||
"header)."
|
"header)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"По подразбиране се появява в горния десен ъгъл на принтираните документи "
|
||||||
|
"(горния колонтитул на отчетите)"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
#: field:base.module.update,update:0
|
#: field:base.module.update,update:0
|
||||||
|
@ -2301,7 +2305,7 @@ msgstr "Брой обновени модули"
|
||||||
#. module: base
|
#. module: base
|
||||||
#: field:ir.cron,function:0
|
#: field:ir.cron,function:0
|
||||||
msgid "Method"
|
msgid "Method"
|
||||||
msgstr ""
|
msgstr "Метод"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
#: model:ir.module.module,shortdesc:base.module_auth_crypt
|
#: model:ir.module.module,shortdesc:base.module_auth_crypt
|
||||||
|
@ -2350,7 +2354,7 @@ msgstr ""
|
||||||
#. module: base
|
#. module: base
|
||||||
#: field:change.password.user,new_passwd:0
|
#: field:change.password.user,new_passwd:0
|
||||||
msgid "New Password"
|
msgid "New Password"
|
||||||
msgstr ""
|
msgstr "Нова парола"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
#: model:ir.actions.act_window,help:base.action_ui_view
|
#: model:ir.actions.act_window,help:base.action_ui_view
|
||||||
|
@ -2968,7 +2972,7 @@ msgstr ""
|
||||||
#: code:addons/base/ir/ir_fields.py:146
|
#: code:addons/base/ir/ir_fields.py:146
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "yes"
|
msgid "yes"
|
||||||
msgstr ""
|
msgstr "да"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
#: field:ir.model.fields,serialization_field_id:0
|
#: field:ir.model.fields,serialization_field_id:0
|
||||||
|
@ -3184,7 +3188,7 @@ msgstr ""
|
||||||
#: view:res.users:0
|
#: view:res.users:0
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Application"
|
msgid "Application"
|
||||||
msgstr ""
|
msgstr "Приложение"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
#: model:res.groups,comment:base.group_hr_manager
|
#: model:res.groups,comment:base.group_hr_manager
|
||||||
|
@ -3507,7 +3511,7 @@ msgstr "workflow.activity"
|
||||||
#. module: base
|
#. module: base
|
||||||
#: view:base.language.export:0
|
#: view:base.language.export:0
|
||||||
msgid "Export Complete"
|
msgid "Export Complete"
|
||||||
msgstr ""
|
msgstr "Изнасянето завърши"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
#: help:ir.ui.view_sc,res_id:0
|
#: help:ir.ui.view_sc,res_id:0
|
||||||
|
@ -3744,7 +3748,7 @@ msgstr ""
|
||||||
#: field:res.company,rml_footer:0
|
#: field:res.company,rml_footer:0
|
||||||
#: field:res.company,rml_footer_readonly:0
|
#: field:res.company,rml_footer_readonly:0
|
||||||
msgid "Report Footer"
|
msgid "Report Footer"
|
||||||
msgstr ""
|
msgstr "Долен колонтитул на отчета"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
#: selection:res.lang,direction:0
|
#: selection:res.lang,direction:0
|
||||||
|
@ -3869,7 +3873,7 @@ msgstr ""
|
||||||
#: code:addons/orm.py:3902
|
#: code:addons/orm.py:3902
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Access Denied"
|
msgid "Access Denied"
|
||||||
msgstr ""
|
msgstr "Отказан достъп"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
#: field:res.company,name:0
|
#: field:res.company,name:0
|
||||||
|
@ -3952,7 +3956,7 @@ msgstr ""
|
||||||
#. module: base
|
#. module: base
|
||||||
#: model:res.country,name:base.je
|
#: model:res.country,name:base.je
|
||||||
msgid "Jersey"
|
msgid "Jersey"
|
||||||
msgstr ""
|
msgstr "Джърси (остров)"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
#: model:ir.model,name:base.model_ir_translation
|
#: model:ir.model,name:base.model_ir_translation
|
||||||
|
@ -4017,7 +4021,7 @@ msgstr ""
|
||||||
#. module: base
|
#. module: base
|
||||||
#: model:res.country,name:base.sk
|
#: model:res.country,name:base.sk
|
||||||
msgid "Slovakia"
|
msgid "Slovakia"
|
||||||
msgstr ""
|
msgstr "Словакия"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
#: model:res.country,name:base.nr
|
#: model:res.country,name:base.nr
|
||||||
|
@ -4378,7 +4382,7 @@ msgstr "Обобщение"
|
||||||
#. module: base
|
#. module: base
|
||||||
#: model:ir.module.category,name:base.module_category_hidden_dependency
|
#: model:ir.module.category,name:base.module_category_hidden_dependency
|
||||||
msgid "Dependency"
|
msgid "Dependency"
|
||||||
msgstr ""
|
msgstr "Зависимост"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
#: model:ir.module.module,description:base.module_portal
|
#: model:ir.module.module,description:base.module_portal
|
||||||
|
@ -4472,7 +4476,7 @@ msgstr ""
|
||||||
#. module: base
|
#. module: base
|
||||||
#: model:ir.module.module,shortdesc:base.module_knowledge
|
#: model:ir.module.module,shortdesc:base.module_knowledge
|
||||||
msgid "Knowledge Management System"
|
msgid "Knowledge Management System"
|
||||||
msgstr ""
|
msgstr "Система за управление на ЗНАНИЯ"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
#: view:workflow.activity:0
|
#: view:workflow.activity:0
|
||||||
|
@ -4685,7 +4689,7 @@ msgstr "Изглед"
|
||||||
#: code:addons/base/ir/ir_fields.py:146
|
#: code:addons/base/ir/ir_fields.py:146
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "no"
|
msgid "no"
|
||||||
msgstr ""
|
msgstr "не"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
#: model:ir.module.module,description:base.module_crm_partner_assign
|
#: model:ir.module.module,description:base.module_crm_partner_assign
|
||||||
|
@ -4767,7 +4771,7 @@ msgstr ""
|
||||||
#. module: base
|
#. module: base
|
||||||
#: model:res.country,name:base.ps
|
#: model:res.country,name:base.ps
|
||||||
msgid "Palestinian Territory, Occupied"
|
msgid "Palestinian Territory, Occupied"
|
||||||
msgstr ""
|
msgstr "Палестинска територия, Окупирана"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
#: model:ir.module.module,shortdesc:base.module_l10n_ch
|
#: model:ir.module.module,shortdesc:base.module_l10n_ch
|
||||||
|
@ -4859,7 +4863,7 @@ msgstr "Правила"
|
||||||
#. module: base
|
#. module: base
|
||||||
#: field:ir.mail_server,smtp_host:0
|
#: field:ir.mail_server,smtp_host:0
|
||||||
msgid "SMTP Server"
|
msgid "SMTP Server"
|
||||||
msgstr ""
|
msgstr "SMTP сървър"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
#: code:addons/base/module/module.py:320
|
#: code:addons/base/module/module.py:320
|
||||||
|
@ -5239,7 +5243,7 @@ msgstr ""
|
||||||
#. module: base
|
#. module: base
|
||||||
#: model:ir.module.module,shortdesc:base.module_hr_recruitment
|
#: model:ir.module.module,shortdesc:base.module_hr_recruitment
|
||||||
msgid "Recruitment Process"
|
msgid "Recruitment Process"
|
||||||
msgstr ""
|
msgstr "Процес на наемане"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
#: model:res.country,name:base.br
|
#: model:res.country,name:base.br
|
||||||
|
@ -5693,7 +5697,7 @@ msgstr "Монсерат"
|
||||||
#. module: base
|
#. module: base
|
||||||
#: model:ir.module.module,shortdesc:base.module_decimal_precision
|
#: model:ir.module.module,shortdesc:base.module_decimal_precision
|
||||||
msgid "Decimal Precision Configuration"
|
msgid "Decimal Precision Configuration"
|
||||||
msgstr ""
|
msgstr "Настройки на десетична точност"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
#: model:ir.model,name:base.model_ir_actions_act_url
|
#: model:ir.model,name:base.model_ir_actions_act_url
|
||||||
|
@ -5850,7 +5854,7 @@ msgstr ""
|
||||||
#. module: base
|
#. module: base
|
||||||
#: view:ir.translation:0
|
#: view:ir.translation:0
|
||||||
msgid "Comments"
|
msgid "Comments"
|
||||||
msgstr ""
|
msgstr "Коментари"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
#: model:res.country,name:base.et
|
#: model:res.country,name:base.et
|
||||||
|
@ -5860,7 +5864,7 @@ msgstr "Етиопия"
|
||||||
#. module: base
|
#. module: base
|
||||||
#: model:ir.module.category,name:base.module_category_authentication
|
#: model:ir.module.category,name:base.module_category_authentication
|
||||||
msgid "Authentication"
|
msgid "Authentication"
|
||||||
msgstr ""
|
msgstr "Идентификация"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
#: model:res.country,name:base.sj
|
#: model:res.country,name:base.sj
|
||||||
|
@ -5929,7 +5933,7 @@ msgstr "Свойство при изтриване на полета много-
|
||||||
#. module: base
|
#. module: base
|
||||||
#: model:ir.module.category,name:base.module_category_accounting_and_finance
|
#: model:ir.module.category,name:base.module_category_accounting_and_finance
|
||||||
msgid "Accounting & Finance"
|
msgid "Accounting & Finance"
|
||||||
msgstr ""
|
msgstr "Счетоводство и финанси"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
#: field:ir.actions.server,write_id:0
|
#: field:ir.actions.server,write_id:0
|
||||||
|
@ -6082,7 +6086,7 @@ msgstr "Името на група не може да започва с \"-\""
|
||||||
#: view:ir.module.module:0
|
#: view:ir.module.module:0
|
||||||
#: model:ir.ui.menu,name:base.module_mi
|
#: model:ir.ui.menu,name:base.module_mi
|
||||||
msgid "Apps"
|
msgid "Apps"
|
||||||
msgstr ""
|
msgstr "Приложения"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
#: view:ir.ui.view_sc:0
|
#: view:ir.ui.view_sc:0
|
||||||
|
@ -6135,7 +6139,7 @@ msgstr ""
|
||||||
#. module: base
|
#. module: base
|
||||||
#: view:res.partner:0
|
#: view:res.partner:0
|
||||||
msgid "Phone:"
|
msgid "Phone:"
|
||||||
msgstr ""
|
msgstr "Телефон:"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
#: field:res.partner,is_company:0
|
#: field:res.partner,is_company:0
|
||||||
|
@ -6811,7 +6815,7 @@ msgstr ""
|
||||||
#. module: base
|
#. module: base
|
||||||
#: field:res.users,id:0
|
#: field:res.users,id:0
|
||||||
msgid "ID"
|
msgid "ID"
|
||||||
msgstr ""
|
msgstr "ID"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
#: field:ir.cron,doall:0
|
#: field:ir.cron,doall:0
|
||||||
|
@ -6833,7 +6837,7 @@ msgstr "Свързване на обекти"
|
||||||
#: field:ir.module.category,xml_id:0
|
#: field:ir.module.category,xml_id:0
|
||||||
#: field:ir.ui.view,xml_id:0
|
#: field:ir.ui.view,xml_id:0
|
||||||
msgid "External ID"
|
msgid "External ID"
|
||||||
msgstr ""
|
msgstr "Външен ID"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
#: help:res.currency.rate,rate:0
|
#: help:res.currency.rate,rate:0
|
||||||
|
@ -7286,7 +7290,7 @@ msgstr "Върху множество документи"
|
||||||
#: view:res.users:0
|
#: view:res.users:0
|
||||||
#: view:wizard.ir.model.menu.create:0
|
#: view:wizard.ir.model.menu.create:0
|
||||||
msgid "or"
|
msgid "or"
|
||||||
msgstr ""
|
msgstr "или"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
#: model:ir.module.module,shortdesc:base.module_account_accountant
|
#: model:ir.module.module,shortdesc:base.module_account_accountant
|
||||||
|
@ -7296,7 +7300,7 @@ msgstr ""
|
||||||
#. module: base
|
#. module: base
|
||||||
#: view:ir.module.module:0
|
#: view:ir.module.module:0
|
||||||
msgid "Upgrade"
|
msgid "Upgrade"
|
||||||
msgstr ""
|
msgstr "Надгради"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
#: model:ir.module.module,description:base.module_base_action_rule
|
#: model:ir.module.module,description:base.module_base_action_rule
|
||||||
|
@ -7334,7 +7338,7 @@ msgstr "Фарьорски острови"
|
||||||
#. module: base
|
#. module: base
|
||||||
#: field:ir.mail_server,smtp_encryption:0
|
#: field:ir.mail_server,smtp_encryption:0
|
||||||
msgid "Connection Security"
|
msgid "Connection Security"
|
||||||
msgstr ""
|
msgstr "Сигурност на връзката"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
#: code:addons/base/ir/ir_actions.py:606
|
#: code:addons/base/ir/ir_actions.py:606
|
||||||
|
@ -7437,7 +7441,7 @@ msgstr ""
|
||||||
#. module: base
|
#. module: base
|
||||||
#: model:res.partner.category,name:base.res_partner_category_14
|
#: model:res.partner.category,name:base.res_partner_category_14
|
||||||
msgid "Manufacturer"
|
msgid "Manufacturer"
|
||||||
msgstr ""
|
msgstr "Производител"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
#: help:res.users,company_id:0
|
#: help:res.users,company_id:0
|
||||||
|
@ -7724,7 +7728,7 @@ msgstr ""
|
||||||
#. module: base
|
#. module: base
|
||||||
#: view:ir.mail_server:0
|
#: view:ir.mail_server:0
|
||||||
msgid "Test Connection"
|
msgid "Test Connection"
|
||||||
msgstr ""
|
msgstr "Тестване на връзка"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
#: model:res.country,name:base.mm
|
#: model:res.country,name:base.mm
|
||||||
|
@ -8251,7 +8255,7 @@ msgstr "ir.ui.menu"
|
||||||
#. module: base
|
#. module: base
|
||||||
#: model:ir.module.module,shortdesc:base.module_project
|
#: model:ir.module.module,shortdesc:base.module_project
|
||||||
msgid "Project Management"
|
msgid "Project Management"
|
||||||
msgstr ""
|
msgstr "Управление на проекти"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
#: view:ir.module.module:0
|
#: view:ir.module.module:0
|
||||||
|
@ -8965,7 +8969,7 @@ msgstr ""
|
||||||
#. module: base
|
#. module: base
|
||||||
#: field:res.partner.title,shortcut:0
|
#: field:res.partner.title,shortcut:0
|
||||||
msgid "Abbreviation"
|
msgid "Abbreviation"
|
||||||
msgstr ""
|
msgstr "Абревиатура"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
#: model:ir.ui.menu,name:base.menu_crm_case_job_req_main
|
#: model:ir.ui.menu,name:base.menu_crm_case_job_req_main
|
||||||
|
@ -9209,7 +9213,7 @@ msgstr "Справка"
|
||||||
#. module: base
|
#. module: base
|
||||||
#: model:res.partner.title,shortcut:base.res_partner_title_prof
|
#: model:res.partner.title,shortcut:base.res_partner_title_prof
|
||||||
msgid "Prof."
|
msgid "Prof."
|
||||||
msgstr ""
|
msgstr "Проф."
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
#: code:addons/base/ir/ir_mail_server.py:241
|
#: code:addons/base/ir/ir_mail_server.py:241
|
||||||
|
@ -9237,7 +9241,7 @@ msgstr "Уеб-страница"
|
||||||
#. module: base
|
#. module: base
|
||||||
#: selection:ir.mail_server,smtp_encryption:0
|
#: selection:ir.mail_server,smtp_encryption:0
|
||||||
msgid "None"
|
msgid "None"
|
||||||
msgstr ""
|
msgstr "Няма"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
#: model:ir.module.module,shortdesc:base.module_hr_holidays
|
#: model:ir.module.module,shortdesc:base.module_hr_holidays
|
||||||
|
@ -10243,7 +10247,7 @@ msgstr "Питкерн"
|
||||||
#. module: base
|
#. module: base
|
||||||
#: field:res.partner,category_id:0
|
#: field:res.partner,category_id:0
|
||||||
msgid "Tags"
|
msgid "Tags"
|
||||||
msgstr ""
|
msgstr "Етикети"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
#: view:base.module.upgrade:0
|
#: view:base.module.upgrade:0
|
||||||
|
@ -15371,7 +15375,7 @@ msgstr "Съдържание"
|
||||||
#. module: base
|
#. module: base
|
||||||
#: model:ir.module.module,shortdesc:base.module_sale_mrp
|
#: model:ir.module.module,shortdesc:base.module_sale_mrp
|
||||||
msgid "Sales and MRP Management"
|
msgid "Sales and MRP Management"
|
||||||
msgstr ""
|
msgstr "Продажби и MRP управление"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
#: model:ir.actions.act_window,help:base.action_partner_form
|
#: model:ir.actions.act_window,help:base.action_partner_form
|
||||||
|
|
|
@ -14,7 +14,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-04-17 05:39+0000\n"
|
"X-Launchpad-Export-Date: 2014-04-24 05:44+0000\n"
|
||||||
"X-Generator: Launchpad (build 16985)\n"
|
"X-Generator: Launchpad (build 16985)\n"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
|
|
|
@ -13,7 +13,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-04-17 05:39+0000\n"
|
"X-Launchpad-Export-Date: 2014-04-24 05:44+0000\n"
|
||||||
"X-Generator: Launchpad (build 16985)\n"
|
"X-Generator: Launchpad (build 16985)\n"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
|
|
|
@ -13,7 +13,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-04-17 05:39+0000\n"
|
"X-Launchpad-Export-Date: 2014-04-24 05:45+0000\n"
|
||||||
"X-Generator: Launchpad (build 16985)\n"
|
"X-Generator: Launchpad (build 16985)\n"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
|
|
|
@ -13,7 +13,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-04-17 05:40+0000\n"
|
"X-Launchpad-Export-Date: 2014-04-24 05:45+0000\n"
|
||||||
"X-Generator: Launchpad (build 16985)\n"
|
"X-Generator: Launchpad (build 16985)\n"
|
||||||
"X-Poedit-Language: Czech\n"
|
"X-Poedit-Language: Czech\n"
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-04-17 05:40+0000\n"
|
"X-Launchpad-Export-Date: 2014-04-24 05:46+0000\n"
|
||||||
"X-Generator: Launchpad (build 16985)\n"
|
"X-Generator: Launchpad (build 16985)\n"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
|
|
|
@ -14,7 +14,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-04-17 05:42+0000\n"
|
"X-Launchpad-Export-Date: 2014-04-24 05:48+0000\n"
|
||||||
"X-Generator: Launchpad (build 16985)\n"
|
"X-Generator: Launchpad (build 16985)\n"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
|
@ -8669,7 +8669,7 @@ msgstr ""
|
||||||
#. module: base
|
#. module: base
|
||||||
#: field:ir.ui.menu,needaction_enabled:0
|
#: field:ir.ui.menu,needaction_enabled:0
|
||||||
msgid "Target model uses the need action mechanism"
|
msgid "Target model uses the need action mechanism"
|
||||||
msgstr ""
|
msgstr "Ziel-Modell nutzt den need_action Mechanismus"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
#: help:ir.model.fields,relation:0
|
#: help:ir.model.fields,relation:0
|
||||||
|
@ -17357,7 +17357,7 @@ msgstr "Helpdesk"
|
||||||
#. module: base
|
#. module: base
|
||||||
#: field:ir.rule,perm_write:0
|
#: field:ir.rule,perm_write:0
|
||||||
msgid "Apply for Write"
|
msgid "Apply for Write"
|
||||||
msgstr ""
|
msgstr "Zum Schreiben anwenden"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
#: field:ir.ui.menu,parent_left:0
|
#: field:ir.ui.menu,parent_left:0
|
||||||
|
@ -18812,7 +18812,7 @@ msgstr "Funktion"
|
||||||
#. module: base
|
#. module: base
|
||||||
#: field:ir.ui.menu,parent_right:0
|
#: field:ir.ui.menu,parent_right:0
|
||||||
msgid "Parent Right"
|
msgid "Parent Right"
|
||||||
msgstr ""
|
msgstr "Oberkonto Rechts"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
#: model:ir.module.category,description:base.module_category_customer_relationship_management
|
#: model:ir.module.category,description:base.module_category_customer_relationship_management
|
||||||
|
@ -18887,7 +18887,7 @@ msgstr "Bedarfsmeldungen"
|
||||||
#. module: base
|
#. module: base
|
||||||
#: selection:ir.actions.act_window,target:0
|
#: selection:ir.actions.act_window,target:0
|
||||||
msgid "Inline Edit"
|
msgid "Inline Edit"
|
||||||
msgstr ""
|
msgstr "Eingebettet Bearbeiten"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
#: selection:ir.cron,interval_type:0
|
#: selection:ir.cron,interval_type:0
|
||||||
|
|
|
@ -12,7 +12,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-04-17 05:42+0000\n"
|
"X-Launchpad-Export-Date: 2014-04-24 05:49+0000\n"
|
||||||
"X-Generator: Launchpad (build 16985)\n"
|
"X-Generator: Launchpad (build 16985)\n"
|
||||||
"X-Poedit-Country: GREECE\n"
|
"X-Poedit-Country: GREECE\n"
|
||||||
"X-Poedit-Language: Greek\n"
|
"X-Poedit-Language: Greek\n"
|
||||||
|
|
|
@ -14,7 +14,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-04-17 05:52+0000\n"
|
"X-Launchpad-Export-Date: 2014-04-24 05:58+0000\n"
|
||||||
"X-Generator: Launchpad (build 16985)\n"
|
"X-Generator: Launchpad (build 16985)\n"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
|
|
|
@ -13,7 +13,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-04-17 05:49+0000\n"
|
"X-Launchpad-Export-Date: 2014-04-24 05:55+0000\n"
|
||||||
"X-Generator: Launchpad (build 16985)\n"
|
"X-Generator: Launchpad (build 16985)\n"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
|
|
|
@ -14,7 +14,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-04-17 05:52+0000\n"
|
"X-Launchpad-Export-Date: 2014-04-24 05:58+0000\n"
|
||||||
"X-Generator: Launchpad (build 16985)\n"
|
"X-Generator: Launchpad (build 16985)\n"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
|
|
|
@ -14,7 +14,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-04-17 05:53+0000\n"
|
"X-Launchpad-Export-Date: 2014-04-24 05:59+0000\n"
|
||||||
"X-Generator: Launchpad (build 16985)\n"
|
"X-Generator: Launchpad (build 16985)\n"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
|
|
|
@ -13,7 +13,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-04-17 05:52+0000\n"
|
"X-Launchpad-Export-Date: 2014-04-24 05:58+0000\n"
|
||||||
"X-Generator: Launchpad (build 16985)\n"
|
"X-Generator: Launchpad (build 16985)\n"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
|
|
|
@ -14,7 +14,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-04-17 05:53+0000\n"
|
"X-Launchpad-Export-Date: 2014-04-24 05:59+0000\n"
|
||||||
"X-Generator: Launchpad (build 16985)\n"
|
"X-Generator: Launchpad (build 16985)\n"
|
||||||
"Language: \n"
|
"Language: \n"
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-04-17 05:52+0000\n"
|
"X-Launchpad-Export-Date: 2014-04-24 05:58+0000\n"
|
||||||
"X-Generator: Launchpad (build 16985)\n"
|
"X-Generator: Launchpad (build 16985)\n"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
|
|
|
@ -13,7 +13,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-04-17 05:54+0000\n"
|
"X-Launchpad-Export-Date: 2014-04-24 06:00+0000\n"
|
||||||
"X-Generator: Launchpad (build 16985)\n"
|
"X-Generator: Launchpad (build 16985)\n"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
|
|
|
@ -14,7 +14,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-04-17 05:54+0000\n"
|
"X-Launchpad-Export-Date: 2014-04-24 06:00+0000\n"
|
||||||
"X-Generator: Launchpad (build 16985)\n"
|
"X-Generator: Launchpad (build 16985)\n"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
|
|
|
@ -14,7 +14,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-04-17 05:54+0000\n"
|
"X-Launchpad-Export-Date: 2014-04-24 06:01+0000\n"
|
||||||
"X-Generator: Launchpad (build 16985)\n"
|
"X-Generator: Launchpad (build 16985)\n"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
|
|
|
@ -14,7 +14,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-04-17 05:51+0000\n"
|
"X-Launchpad-Export-Date: 2014-04-24 05:57+0000\n"
|
||||||
"X-Generator: Launchpad (build 16985)\n"
|
"X-Generator: Launchpad (build 16985)\n"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
|
|
|
@ -13,7 +13,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-04-17 05:40+0000\n"
|
"X-Launchpad-Export-Date: 2014-04-24 05:47+0000\n"
|
||||||
"X-Generator: Launchpad (build 16985)\n"
|
"X-Generator: Launchpad (build 16985)\n"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
|
|
|
@ -14,7 +14,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-04-17 05:39+0000\n"
|
"X-Launchpad-Export-Date: 2014-04-24 05:44+0000\n"
|
||||||
"X-Generator: Launchpad (build 16985)\n"
|
"X-Generator: Launchpad (build 16985)\n"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
|
|
|
@ -9,7 +9,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-04-17 05:46+0000\n"
|
"X-Launchpad-Export-Date: 2014-04-24 05:53+0000\n"
|
||||||
"X-Generator: Launchpad (build 16985)\n"
|
"X-Generator: Launchpad (build 16985)\n"
|
||||||
"X-Poedit-Country: IRAN, ISLAMIC REPUBLIC OF\n"
|
"X-Poedit-Country: IRAN, ISLAMIC REPUBLIC OF\n"
|
||||||
"X-Poedit-Language: Persian\n"
|
"X-Poedit-Language: Persian\n"
|
||||||
|
|
|
@ -14,7 +14,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-04-17 05:55+0000\n"
|
"X-Launchpad-Export-Date: 2014-04-24 06:01+0000\n"
|
||||||
"X-Generator: Launchpad (build 16985)\n"
|
"X-Generator: Launchpad (build 16985)\n"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
|
|
|
@ -13,7 +13,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-04-17 05:41+0000\n"
|
"X-Launchpad-Export-Date: 2014-04-24 05:47+0000\n"
|
||||||
"X-Generator: Launchpad (build 16985)\n"
|
"X-Generator: Launchpad (build 16985)\n"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
|
|
|
@ -13,7 +13,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-04-17 05:41+0000\n"
|
"X-Launchpad-Export-Date: 2014-04-24 05:48+0000\n"
|
||||||
"X-Generator: Launchpad (build 16985)\n"
|
"X-Generator: Launchpad (build 16985)\n"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
|
|
|
@ -14,7 +14,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-04-17 05:53+0000\n"
|
"X-Launchpad-Export-Date: 2014-04-24 05:58+0000\n"
|
||||||
"X-Generator: Launchpad (build 16985)\n"
|
"X-Generator: Launchpad (build 16985)\n"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
|
|
|
@ -14,7 +14,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-04-17 05:42+0000\n"
|
"X-Launchpad-Export-Date: 2014-04-24 05:49+0000\n"
|
||||||
"X-Generator: Launchpad (build 16985)\n"
|
"X-Generator: Launchpad (build 16985)\n"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
|
|
|
@ -14,7 +14,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-04-17 05:42+0000\n"
|
"X-Launchpad-Export-Date: 2014-04-24 05:49+0000\n"
|
||||||
"X-Generator: Launchpad (build 16985)\n"
|
"X-Generator: Launchpad (build 16985)\n"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
|
|
|
@ -14,7 +14,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-04-17 05:43+0000\n"
|
"X-Launchpad-Export-Date: 2014-04-24 05:49+0000\n"
|
||||||
"X-Generator: Launchpad (build 16985)\n"
|
"X-Generator: Launchpad (build 16985)\n"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
|
|
|
@ -14,7 +14,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-04-17 05:43+0000\n"
|
"X-Launchpad-Export-Date: 2014-04-24 05:50+0000\n"
|
||||||
"X-Generator: Launchpad (build 16985)\n"
|
"X-Generator: Launchpad (build 16985)\n"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
|
@ -25,6 +25,9 @@ msgid ""
|
||||||
"================================================\n"
|
"================================================\n"
|
||||||
" "
|
" "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"\n"
|
||||||
|
"धनादेश लेखन और मुद्रण मापांक.\n"
|
||||||
|
" "
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
#: model:res.country,name:base.sh
|
#: model:res.country,name:base.sh
|
||||||
|
@ -34,12 +37,12 @@ msgstr "सैंट हेलेना"
|
||||||
#. module: base
|
#. module: base
|
||||||
#: view:ir.actions.report.xml:0
|
#: view:ir.actions.report.xml:0
|
||||||
msgid "Other Configuration"
|
msgid "Other Configuration"
|
||||||
msgstr ""
|
msgstr "इतर समाकृति"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
#: selection:ir.property,type:0
|
#: selection:ir.property,type:0
|
||||||
msgid "DateTime"
|
msgid "DateTime"
|
||||||
msgstr "वेड"
|
msgstr "तारीखवक़्त"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
#: code:addons/fields.py:652
|
#: code:addons/fields.py:652
|
||||||
|
@ -53,17 +56,17 @@ msgstr ""
|
||||||
#: field:ir.ui.view,arch:0
|
#: field:ir.ui.view,arch:0
|
||||||
#: field:ir.ui.view.custom,arch:0
|
#: field:ir.ui.view.custom,arch:0
|
||||||
msgid "View Architecture"
|
msgid "View Architecture"
|
||||||
msgstr ""
|
msgstr "आर्किटेक्चर"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
#: model:ir.module.module,summary:base.module_sale_stock
|
#: model:ir.module.module,summary:base.module_sale_stock
|
||||||
msgid "Quotation, Sale Orders, Delivery & Invoicing Control"
|
msgid "Quotation, Sale Orders, Delivery & Invoicing Control"
|
||||||
msgstr ""
|
msgstr "उद्धरण, बिक्री आदेश, वितरण और चालान नियंत्रण"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
#: selection:ir.sequence,implementation:0
|
#: selection:ir.sequence,implementation:0
|
||||||
msgid "No gap"
|
msgid "No gap"
|
||||||
msgstr ""
|
msgstr "कोई अंतर नहीं"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
#: selection:base.language.install,lang:0
|
#: selection:base.language.install,lang:0
|
||||||
|
|
|
@ -13,7 +13,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-04-17 05:48+0000\n"
|
"X-Launchpad-Export-Date: 2014-04-24 05:54+0000\n"
|
||||||
"X-Generator: Launchpad (build 16985)\n"
|
"X-Generator: Launchpad (build 16985)\n"
|
||||||
"Language: hr\n"
|
"Language: hr\n"
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-04-17 05:43+0000\n"
|
"X-Launchpad-Export-Date: 2014-04-24 05:50+0000\n"
|
||||||
"X-Generator: Launchpad (build 16985)\n"
|
"X-Generator: Launchpad (build 16985)\n"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
|
|
|
@ -9,7 +9,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-04-17 05:38+0000\n"
|
"X-Launchpad-Export-Date: 2014-04-24 05:44+0000\n"
|
||||||
"X-Generator: Launchpad (build 16985)\n"
|
"X-Generator: Launchpad (build 16985)\n"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
|
|
|
@ -14,7 +14,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-04-17 05:43+0000\n"
|
"X-Launchpad-Export-Date: 2014-04-24 05:50+0000\n"
|
||||||
"X-Generator: Launchpad (build 16985)\n"
|
"X-Generator: Launchpad (build 16985)\n"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
|
|
|
@ -14,7 +14,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-04-17 05:43+0000\n"
|
"X-Launchpad-Export-Date: 2014-04-24 05:50+0000\n"
|
||||||
"X-Generator: Launchpad (build 16985)\n"
|
"X-Generator: Launchpad (build 16985)\n"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
|
|
|
@ -13,7 +13,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-04-17 05:44+0000\n"
|
"X-Launchpad-Export-Date: 2014-04-24 05:51+0000\n"
|
||||||
"X-Generator: Launchpad (build 16985)\n"
|
"X-Generator: Launchpad (build 16985)\n"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
|
|
|
@ -14,7 +14,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-04-17 05:44+0000\n"
|
"X-Launchpad-Export-Date: 2014-04-24 05:51+0000\n"
|
||||||
"X-Generator: Launchpad (build 16985)\n"
|
"X-Generator: Launchpad (build 16985)\n"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
|
|
|
@ -14,7 +14,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-04-17 05:41+0000\n"
|
"X-Launchpad-Export-Date: 2014-04-24 05:48+0000\n"
|
||||||
"X-Generator: Launchpad (build 16985)\n"
|
"X-Generator: Launchpad (build 16985)\n"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
|
|
|
@ -14,7 +14,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-04-17 05:44+0000\n"
|
"X-Launchpad-Export-Date: 2014-04-24 05:51+0000\n"
|
||||||
"X-Generator: Launchpad (build 16985)\n"
|
"X-Generator: Launchpad (build 16985)\n"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
|
|
|
@ -14,7 +14,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-04-17 05:44+0000\n"
|
"X-Launchpad-Export-Date: 2014-04-24 05:51+0000\n"
|
||||||
"X-Generator: Launchpad (build 16985)\n"
|
"X-Generator: Launchpad (build 16985)\n"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
|
|
|
@ -13,7 +13,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-04-17 05:45+0000\n"
|
"X-Launchpad-Export-Date: 2014-04-24 05:52+0000\n"
|
||||||
"X-Generator: Launchpad (build 16985)\n"
|
"X-Generator: Launchpad (build 16985)\n"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
|
|
|
@ -14,7 +14,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-04-17 05:45+0000\n"
|
"X-Launchpad-Export-Date: 2014-04-24 05:52+0000\n"
|
||||||
"X-Generator: Launchpad (build 16985)\n"
|
"X-Generator: Launchpad (build 16985)\n"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
|
|
|
@ -14,7 +14,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-04-17 05:45+0000\n"
|
"X-Launchpad-Export-Date: 2014-04-24 05:52+0000\n"
|
||||||
"X-Generator: Launchpad (build 16985)\n"
|
"X-Generator: Launchpad (build 16985)\n"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
|
|
|
@ -13,7 +13,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-04-17 05:46+0000\n"
|
"X-Launchpad-Export-Date: 2014-04-24 05:52+0000\n"
|
||||||
"X-Generator: Launchpad (build 16985)\n"
|
"X-Generator: Launchpad (build 16985)\n"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
|
|
|
@ -14,7 +14,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-04-17 05:46+0000\n"
|
"X-Launchpad-Export-Date: 2014-04-24 05:53+0000\n"
|
||||||
"X-Generator: Launchpad (build 16985)\n"
|
"X-Generator: Launchpad (build 16985)\n"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
|
|
|
@ -13,7 +13,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-04-17 05:40+0000\n"
|
"X-Launchpad-Export-Date: 2014-04-24 05:46+0000\n"
|
||||||
"X-Generator: Launchpad (build 16985)\n"
|
"X-Generator: Launchpad (build 16985)\n"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
|
|
|
@ -14,7 +14,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-04-17 05:53+0000\n"
|
"X-Launchpad-Export-Date: 2014-04-24 05:59+0000\n"
|
||||||
"X-Generator: Launchpad (build 16985)\n"
|
"X-Generator: Launchpad (build 16985)\n"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
|
|
|
@ -13,7 +13,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-04-17 05:47+0000\n"
|
"X-Launchpad-Export-Date: 2014-04-24 05:53+0000\n"
|
||||||
"X-Generator: Launchpad (build 16985)\n"
|
"X-Generator: Launchpad (build 16985)\n"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
|
|
|
@ -13,7 +13,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-04-17 05:47+0000\n"
|
"X-Launchpad-Export-Date: 2014-04-24 05:53+0000\n"
|
||||||
"X-Generator: Launchpad (build 16985)\n"
|
"X-Generator: Launchpad (build 16985)\n"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
|
|
|
@ -14,7 +14,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-04-17 05:51+0000\n"
|
"X-Launchpad-Export-Date: 2014-04-24 05:57+0000\n"
|
||||||
"X-Generator: Launchpad (build 16985)\n"
|
"X-Generator: Launchpad (build 16985)\n"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
|
|
|
@ -13,7 +13,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-04-17 05:47+0000\n"
|
"X-Launchpad-Export-Date: 2014-04-24 05:54+0000\n"
|
||||||
"X-Generator: Launchpad (build 16985)\n"
|
"X-Generator: Launchpad (build 16985)\n"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
|
|
|
@ -13,7 +13,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-04-17 05:48+0000\n"
|
"X-Launchpad-Export-Date: 2014-04-24 05:54+0000\n"
|
||||||
"X-Generator: Launchpad (build 16985)\n"
|
"X-Generator: Launchpad (build 16985)\n"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
|
|
|
@ -14,7 +14,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-04-17 05:49+0000\n"
|
"X-Launchpad-Export-Date: 2014-04-24 05:55+0000\n"
|
||||||
"X-Generator: Launchpad (build 16985)\n"
|
"X-Generator: Launchpad (build 16985)\n"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
|
|
|
@ -13,7 +13,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-04-17 05:49+0000\n"
|
"X-Launchpad-Export-Date: 2014-04-24 05:55+0000\n"
|
||||||
"X-Generator: Launchpad (build 16985)\n"
|
"X-Generator: Launchpad (build 16985)\n"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
|
|
|
@ -13,7 +13,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-04-17 05:38+0000\n"
|
"X-Launchpad-Export-Date: 2014-04-24 05:43+0000\n"
|
||||||
"X-Generator: Launchpad (build 16985)\n"
|
"X-Generator: Launchpad (build 16985)\n"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
|
|
|
@ -14,7 +14,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-04-17 05:48+0000\n"
|
"X-Launchpad-Export-Date: 2014-04-24 05:54+0000\n"
|
||||||
"X-Generator: Launchpad (build 16985)\n"
|
"X-Generator: Launchpad (build 16985)\n"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
|
|
|
@ -14,7 +14,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-04-17 05:55+0000\n"
|
"X-Launchpad-Export-Date: 2014-04-24 06:01+0000\n"
|
||||||
"X-Generator: Launchpad (build 16985)\n"
|
"X-Generator: Launchpad (build 16985)\n"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
|
|
|
@ -13,7 +13,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-04-17 05:49+0000\n"
|
"X-Launchpad-Export-Date: 2014-04-24 05:55+0000\n"
|
||||||
"X-Generator: Launchpad (build 16985)\n"
|
"X-Generator: Launchpad (build 16985)\n"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
|
|
|
@ -14,7 +14,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-04-17 05:50+0000\n"
|
"X-Launchpad-Export-Date: 2014-04-24 05:56+0000\n"
|
||||||
"X-Generator: Launchpad (build 16985)\n"
|
"X-Generator: Launchpad (build 16985)\n"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
|
|
|
@ -13,7 +13,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-04-17 05:50+0000\n"
|
"X-Launchpad-Export-Date: 2014-04-24 05:56+0000\n"
|
||||||
"X-Generator: Launchpad (build 16985)\n"
|
"X-Generator: Launchpad (build 16985)\n"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
|
|
|
@ -13,7 +13,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-04-17 05:50+0000\n"
|
"X-Launchpad-Export-Date: 2014-04-24 05:56+0000\n"
|
||||||
"X-Generator: Launchpad (build 16985)\n"
|
"X-Generator: Launchpad (build 16985)\n"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
|
|
|
@ -13,7 +13,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-04-17 05:50+0000\n"
|
"X-Launchpad-Export-Date: 2014-04-24 05:56+0000\n"
|
||||||
"X-Generator: Launchpad (build 16985)\n"
|
"X-Generator: Launchpad (build 16985)\n"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
|
|
|
@ -14,7 +14,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-04-17 05:50+0000\n"
|
"X-Launchpad-Export-Date: 2014-04-24 05:57+0000\n"
|
||||||
"X-Generator: Launchpad (build 16985)\n"
|
"X-Generator: Launchpad (build 16985)\n"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
|
|
|
@ -14,7 +14,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-04-17 05:51+0000\n"
|
"X-Launchpad-Export-Date: 2014-04-24 05:57+0000\n"
|
||||||
"X-Generator: Launchpad (build 16985)\n"
|
"X-Generator: Launchpad (build 16985)\n"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
|
|
|
@ -13,7 +13,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-04-17 05:54+0000\n"
|
"X-Launchpad-Export-Date: 2014-04-24 05:59+0000\n"
|
||||||
"X-Generator: Launchpad (build 16985)\n"
|
"X-Generator: Launchpad (build 16985)\n"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
|
|
|
@ -14,7 +14,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-04-17 05:51+0000\n"
|
"X-Launchpad-Export-Date: 2014-04-24 05:57+0000\n"
|
||||||
"X-Generator: Launchpad (build 16985)\n"
|
"X-Generator: Launchpad (build 16985)\n"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
|
|
|
@ -13,7 +13,7 @@ msgstr ""
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2014-04-17 05:53+0000\n"
|
"X-Launchpad-Export-Date: 2014-04-24 05:59+0000\n"
|
||||||
"X-Generator: Launchpad (build 16985)\n"
|
"X-Generator: Launchpad (build 16985)\n"
|
||||||
|
|
||||||
#. module: base
|
#. module: base
|
||||||
|
|
|
@ -43,7 +43,5 @@ class ir_default(osv.osv):
|
||||||
_defaults = {
|
_defaults = {
|
||||||
'company_id': _get_company_id,
|
'company_id': _get_company_id,
|
||||||
}
|
}
|
||||||
ir_default()
|
|
||||||
|
|
||||||
|
|
||||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||||
|
|
|
@ -31,7 +31,6 @@ class ir_exports(osv.osv):
|
||||||
'export_fields': fields.one2many('ir.exports.line', 'export_id',
|
'export_fields': fields.one2many('ir.exports.line', 'export_id',
|
||||||
'Export ID'),
|
'Export ID'),
|
||||||
}
|
}
|
||||||
ir_exports()
|
|
||||||
|
|
||||||
|
|
||||||
class ir_exports_line(osv.osv):
|
class ir_exports_line(osv.osv):
|
||||||
|
@ -41,7 +40,6 @@ class ir_exports_line(osv.osv):
|
||||||
'name': fields.char('Field Name', size=64),
|
'name': fields.char('Field Name', size=64),
|
||||||
'export_id': fields.many2one('ir.exports', 'Export', select=True, ondelete='cascade'),
|
'export_id': fields.many2one('ir.exports', 'Export', select=True, ondelete='cascade'),
|
||||||
}
|
}
|
||||||
ir_exports_line()
|
|
||||||
|
|
||||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||||
|
|
||||||
|
|
|
@ -142,6 +142,4 @@ class ir_filters(osv.osv):
|
||||||
'is_default': False
|
'is_default': False
|
||||||
}
|
}
|
||||||
|
|
||||||
ir_filters()
|
|
||||||
|
|
||||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||||
|
|
|
@ -2,19 +2,27 @@
|
||||||
import collections
|
import collections
|
||||||
import cStringIO
|
import cStringIO
|
||||||
import datetime
|
import datetime
|
||||||
|
import hashlib
|
||||||
import json
|
import json
|
||||||
import logging
|
import logging
|
||||||
import math
|
import math
|
||||||
|
import os
|
||||||
import re
|
import re
|
||||||
import sys
|
import sys
|
||||||
import xml # FIXME use lxml and etree
|
import xml # FIXME use lxml and etree
|
||||||
|
import itertools
|
||||||
|
import lxml.html
|
||||||
|
from urlparse import urlparse
|
||||||
|
|
||||||
import babel
|
import babel
|
||||||
import babel.dates
|
import babel.dates
|
||||||
import werkzeug.utils
|
import werkzeug
|
||||||
from PIL import Image
|
from PIL import Image
|
||||||
|
|
||||||
|
import openerp.http
|
||||||
import openerp.tools
|
import openerp.tools
|
||||||
|
import openerp.tools.func
|
||||||
|
import openerp.tools.lru
|
||||||
from openerp.tools.safe_eval import safe_eval as eval
|
from openerp.tools.safe_eval import safe_eval as eval
|
||||||
from openerp.osv import osv, orm, fields
|
from openerp.osv import osv, orm, fields
|
||||||
from openerp.tools.translate import _
|
from openerp.tools.translate import _
|
||||||
|
@ -396,6 +404,22 @@ class QWeb(orm.AbstractModel):
|
||||||
pass
|
pass
|
||||||
return self.render(cr, uid, template, d)
|
return self.render(cr, uid, template, d)
|
||||||
|
|
||||||
|
def render_tag_call_assets(self, element, template_attributes, generated_attributes, qwebcontext):
|
||||||
|
""" This special 't-call' tag can be used in order to aggregate/minify javascript and css assets"""
|
||||||
|
name = template_attributes['call-assets']
|
||||||
|
|
||||||
|
# Backward compatibility hack for manifest usage
|
||||||
|
qwebcontext['manifest_list'] = openerp.addons.web.controllers.main.manifest_list
|
||||||
|
|
||||||
|
d = qwebcontext.copy()
|
||||||
|
d.context['inherit_branding'] = False
|
||||||
|
content = self.render_tag_call(
|
||||||
|
element, {'call': name}, generated_attributes, d)
|
||||||
|
if qwebcontext.get('debug'):
|
||||||
|
return content
|
||||||
|
bundle = AssetsBundle(name, html=content)
|
||||||
|
return bundle.to_html()
|
||||||
|
|
||||||
def render_tag_set(self, element, template_attributes, generated_attributes, qwebcontext):
|
def render_tag_set(self, element, template_attributes, generated_attributes, qwebcontext):
|
||||||
if "value" in template_attributes:
|
if "value" in template_attributes:
|
||||||
qwebcontext[template_attributes["set"]] = self.eval_object(template_attributes["value"], qwebcontext)
|
qwebcontext[template_attributes["set"]] = self.eval_object(template_attributes["value"], qwebcontext)
|
||||||
|
@ -821,7 +845,6 @@ class RelativeDatetimeConverter(osv.AbstractModel):
|
||||||
return babel.dates.format_timedelta(
|
return babel.dates.format_timedelta(
|
||||||
value - reference, add_direction=True, locale=locale)
|
value - reference, add_direction=True, locale=locale)
|
||||||
|
|
||||||
|
|
||||||
class Contact(orm.AbstractModel):
|
class Contact(orm.AbstractModel):
|
||||||
_name = 'ir.qweb.field.contact'
|
_name = 'ir.qweb.field.contact'
|
||||||
_inherit = 'ir.qweb.field.many2one'
|
_inherit = 'ir.qweb.field.many2one'
|
||||||
|
@ -836,7 +859,7 @@ class Contact(orm.AbstractModel):
|
||||||
|
|
||||||
id = getattr(record, field_name).id
|
id = getattr(record, field_name).id
|
||||||
field_browse = self.pool[column._obj].browse(cr, openerp.SUPERUSER_ID, id, context={"show_address": True})
|
field_browse = self.pool[column._obj].browse(cr, openerp.SUPERUSER_ID, id, context={"show_address": True})
|
||||||
value = werkzeug.utils.escape( field_browse.name_get()[0][1] )
|
value = field_browse.name_get()[0][1]
|
||||||
|
|
||||||
val = {
|
val = {
|
||||||
'name': value.split("\n")[0],
|
'name': value.split("\n")[0],
|
||||||
|
@ -951,4 +974,237 @@ def get_field_type(column, options):
|
||||||
"""
|
"""
|
||||||
return options.get('widget', column._type)
|
return options.get('widget', column._type)
|
||||||
|
|
||||||
|
class AssetsBundle(object):
|
||||||
|
cache = openerp.tools.lru.LRU(32)
|
||||||
|
rx_css_import = re.compile("(@import[^;{]+;?)", re.M)
|
||||||
|
|
||||||
|
def __init__(self, xmlid, html=None, debug=False):
|
||||||
|
self.debug = debug
|
||||||
|
self.xmlid = xmlid
|
||||||
|
self.javascripts = []
|
||||||
|
self.stylesheets = []
|
||||||
|
self.remains = []
|
||||||
|
self._checksum = None
|
||||||
|
if html:
|
||||||
|
self.parse(html)
|
||||||
|
|
||||||
|
def parse(self, html):
|
||||||
|
fragments = lxml.html.fragments_fromstring(html)
|
||||||
|
for el in fragments:
|
||||||
|
if isinstance(el, basestring):
|
||||||
|
self.remains.append(el)
|
||||||
|
elif isinstance(el, lxml.html.HtmlElement):
|
||||||
|
src = el.get('src')
|
||||||
|
href = el.get('href')
|
||||||
|
if el.tag == 'style':
|
||||||
|
self.stylesheets.append(StylesheetAsset(source=el.text))
|
||||||
|
elif el.tag == 'link' and el.get('rel') == 'stylesheet' and self.can_aggregate(href):
|
||||||
|
self.stylesheets.append(StylesheetAsset(url=href))
|
||||||
|
elif el.tag == 'script' and not src:
|
||||||
|
self.javascripts.append(JavascriptAsset(source=el.text))
|
||||||
|
elif el.tag == 'script' and self.can_aggregate(src):
|
||||||
|
self.javascripts.append(JavascriptAsset(url=src))
|
||||||
|
else:
|
||||||
|
self.remains.append(lxml.html.tostring(el))
|
||||||
|
else:
|
||||||
|
try:
|
||||||
|
self.remains.append(lxml.html.tostring(el))
|
||||||
|
except Exception:
|
||||||
|
# notYETimplementederror
|
||||||
|
raise NotImplementedError
|
||||||
|
|
||||||
|
def can_aggregate(self, url):
|
||||||
|
return not urlparse(url).netloc and not url.startswith(('/web/css', '/web/js'))
|
||||||
|
|
||||||
|
def to_html(self, sep='\n'):
|
||||||
|
response = []
|
||||||
|
if self.stylesheets:
|
||||||
|
response.append('<link href="/web/css/%s" rel="stylesheet"/>' % self.xmlid)
|
||||||
|
if self.javascripts:
|
||||||
|
response.append('<script type="text/javascript" src="/web/js/%s"></script>' % self.xmlid)
|
||||||
|
response.extend(self.remains)
|
||||||
|
|
||||||
|
return sep.join(response)
|
||||||
|
|
||||||
|
@openerp.tools.func.lazy_property
|
||||||
|
def last_modified(self):
|
||||||
|
return max(itertools.chain(
|
||||||
|
(asset.last_modified for asset in self.javascripts),
|
||||||
|
(asset.last_modified for asset in self.stylesheets),
|
||||||
|
[datetime.datetime(1970, 1, 1)],
|
||||||
|
))
|
||||||
|
|
||||||
|
@openerp.tools.func.lazy_property
|
||||||
|
def checksum(self):
|
||||||
|
checksum = hashlib.new('sha1')
|
||||||
|
for asset in itertools.chain(self.javascripts, self.stylesheets):
|
||||||
|
checksum.update(asset.content.encode("utf-8"))
|
||||||
|
return checksum.hexdigest()
|
||||||
|
|
||||||
|
def js(self):
|
||||||
|
key = 'js_' + self.checksum
|
||||||
|
if key not in self.cache:
|
||||||
|
content =';\n'.join(asset.minify() for asset in self.javascripts)
|
||||||
|
self.cache[key] = content
|
||||||
|
if self.debug:
|
||||||
|
return "/*\n%s\n*/\n" % '\n'.join(
|
||||||
|
[asset.filename for asset in self.javascripts if asset.filename]) + self.cache[key]
|
||||||
|
return self.cache[key]
|
||||||
|
|
||||||
|
def css(self):
|
||||||
|
key = 'css_' + self.checksum
|
||||||
|
if key not in self.cache:
|
||||||
|
content = '\n'.join(asset.minify() for asset in self.stylesheets)
|
||||||
|
# move up all @import rules to the top
|
||||||
|
matches = []
|
||||||
|
def push(matchobj):
|
||||||
|
matches.append(matchobj.group(0))
|
||||||
|
return ''
|
||||||
|
|
||||||
|
content = re.sub(self.rx_css_import, push, content)
|
||||||
|
|
||||||
|
matches.append(content)
|
||||||
|
content = u'\n'.join(matches)
|
||||||
|
self.cache[key] = content
|
||||||
|
if self.debug:
|
||||||
|
return "/*\n%s\n*/\n" % '\n'.join(
|
||||||
|
[asset.filename for asset in self.javascripts if asset.filename]) + self.cache[key]
|
||||||
|
return self.cache[key]
|
||||||
|
|
||||||
|
class WebAsset(object):
|
||||||
|
def __init__(self, source=None, url=None):
|
||||||
|
self.source = source
|
||||||
|
self.url = url
|
||||||
|
self._filename = None
|
||||||
|
self._content = None
|
||||||
|
|
||||||
|
@property
|
||||||
|
def filename(self):
|
||||||
|
if self._filename is None and self.url:
|
||||||
|
module = filter(None, self.url.split('/'))[0]
|
||||||
|
try:
|
||||||
|
mpath = openerp.http.addons_manifest[module]['addons_path']
|
||||||
|
except Exception:
|
||||||
|
raise KeyError("Could not find asset '%s' for '%s' addon" % (self.url, module))
|
||||||
|
self._filename = mpath + self.url.replace('/', os.path.sep)
|
||||||
|
return self._filename
|
||||||
|
|
||||||
|
@property
|
||||||
|
def content(self):
|
||||||
|
if self._content is None:
|
||||||
|
self._content = self.get_content()
|
||||||
|
return self._content
|
||||||
|
|
||||||
|
def get_content(self):
|
||||||
|
if self.source:
|
||||||
|
return self.source
|
||||||
|
|
||||||
|
with open(self.filename, 'rb') as fp:
|
||||||
|
return fp.read().decode('utf-8')
|
||||||
|
|
||||||
|
def minify(self):
|
||||||
|
return self.content
|
||||||
|
|
||||||
|
@property
|
||||||
|
def last_modified(self):
|
||||||
|
if self.source:
|
||||||
|
# TODO: return last_update of bundle's ir.ui.view
|
||||||
|
return datetime.datetime(1970, 1, 1)
|
||||||
|
return datetime.datetime.fromtimestamp(os.path.getmtime(self.filename))
|
||||||
|
|
||||||
|
class JavascriptAsset(WebAsset):
|
||||||
|
def minify(self):
|
||||||
|
return rjsmin(self.content)
|
||||||
|
|
||||||
|
class StylesheetAsset(WebAsset):
|
||||||
|
rx_import = re.compile(r"""@import\s+('|")(?!'|"|/|https?://)""", re.U)
|
||||||
|
rx_url = re.compile(r"""url\s*\(\s*('|"|)(?!'|"|/|https?://|data:)""", re.U)
|
||||||
|
rx_sourceMap = re.compile(r'(/\*# sourceMappingURL=.*)', re.U)
|
||||||
|
|
||||||
|
def _get_content(self):
|
||||||
|
if self.source:
|
||||||
|
return self.source
|
||||||
|
|
||||||
|
with open(self.filename, 'rb') as fp:
|
||||||
|
firstline = fp.readline()
|
||||||
|
m = re.match(r'@charset "([^"]+)";', firstline)
|
||||||
|
if m:
|
||||||
|
encoding = m.group(1)
|
||||||
|
else:
|
||||||
|
encoding = "utf-8"
|
||||||
|
# "reinject" first line as it's not @charset
|
||||||
|
fp.seek(0)
|
||||||
|
|
||||||
|
return fp.read().decode(encoding)
|
||||||
|
|
||||||
|
def get_content(self):
|
||||||
|
content = self._get_content()
|
||||||
|
if self.url:
|
||||||
|
web_dir = os.path.dirname(self.url)
|
||||||
|
|
||||||
|
content = self.rx_import.sub(
|
||||||
|
r"""@import \1%s/""" % (web_dir,),
|
||||||
|
content,
|
||||||
|
)
|
||||||
|
|
||||||
|
content = self.rx_url.sub(
|
||||||
|
r"url(\1%s/" % (web_dir,),
|
||||||
|
content,
|
||||||
|
)
|
||||||
|
return content
|
||||||
|
|
||||||
|
def minify(self):
|
||||||
|
# remove existing sourcemaps, make no sense after re-mini
|
||||||
|
content = self.rx_sourceMap.sub('', self.content)
|
||||||
|
# comments
|
||||||
|
content = re.sub(r'/\*.*?\*/', '', content, flags=re.S)
|
||||||
|
# space
|
||||||
|
content = re.sub(r'\s+', ' ', content)
|
||||||
|
content = re.sub(r' *([{}]) *', r'\1', content)
|
||||||
|
return content
|
||||||
|
|
||||||
|
def rjsmin(script):
|
||||||
|
""" Minify js with a clever regex.
|
||||||
|
Taken from http://opensource.perlig.de/rjsmin
|
||||||
|
Apache License, Version 2.0 """
|
||||||
|
def subber(match):
|
||||||
|
""" Substitution callback """
|
||||||
|
groups = match.groups()
|
||||||
|
return (
|
||||||
|
groups[0] or
|
||||||
|
groups[1] or
|
||||||
|
groups[2] or
|
||||||
|
groups[3] or
|
||||||
|
(groups[4] and '\n') or
|
||||||
|
(groups[5] and ' ') or
|
||||||
|
(groups[6] and ' ') or
|
||||||
|
(groups[7] and ' ') or
|
||||||
|
''
|
||||||
|
)
|
||||||
|
|
||||||
|
result = re.sub(
|
||||||
|
r'([^\047"/\000-\040]+)|((?:(?:\047[^\047\\\r\n]*(?:\\(?:[^\r\n]|\r?'
|
||||||
|
r'\n|\r)[^\047\\\r\n]*)*\047)|(?:"[^"\\\r\n]*(?:\\(?:[^\r\n]|\r?\n|'
|
||||||
|
r'\r)[^"\\\r\n]*)*"))[^\047"/\000-\040]*)|(?:(?<=[(,=:\[!&|?{};\r\n]'
|
||||||
|
r')(?:[\000-\011\013\014\016-\040]|(?:/\*[^*]*\*+(?:[^/*][^*]*\*+)*/'
|
||||||
|
r'))*((?:/(?![\r\n/*])[^/\\\[\r\n]*(?:(?:\\[^\r\n]|(?:\[[^\\\]\r\n]*'
|
||||||
|
r'(?:\\[^\r\n][^\\\]\r\n]*)*\]))[^/\\\[\r\n]*)*/)[^\047"/\000-\040]*'
|
||||||
|
r'))|(?:(?<=[\000-#%-,./:-@\[-^`{-~-]return)(?:[\000-\011\013\014\01'
|
||||||
|
r'6-\040]|(?:/\*[^*]*\*+(?:[^/*][^*]*\*+)*/))*((?:/(?![\r\n/*])[^/'
|
||||||
|
r'\\\[\r\n]*(?:(?:\\[^\r\n]|(?:\[[^\\\]\r\n]*(?:\\[^\r\n][^\\\]\r\n]'
|
||||||
|
r'*)*\]))[^/\\\[\r\n]*)*/)[^\047"/\000-\040]*))|(?<=[^\000-!#%&(*,./'
|
||||||
|
r':-@\[\\^`{|~])(?:[\000-\011\013\014\016-\040]|(?:/\*[^*]*\*+(?:[^/'
|
||||||
|
r'*][^*]*\*+)*/))*(?:((?:(?://[^\r\n]*)?[\r\n]))(?:[\000-\011\013\01'
|
||||||
|
r'4\016-\040]|(?:/\*[^*]*\*+(?:[^/*][^*]*\*+)*/))*)+(?=[^\000-\040"#'
|
||||||
|
r'%-\047)*,./:-@\\-^`|-~])|(?<=[^\000-#%-,./:-@\[-^`{-~-])((?:[\000-'
|
||||||
|
r'\011\013\014\016-\040]|(?:/\*[^*]*\*+(?:[^/*][^*]*\*+)*/)))+(?=[^'
|
||||||
|
r'\000-#%-,./:-@\[-^`{-~-])|(?<=\+)((?:[\000-\011\013\014\016-\040]|'
|
||||||
|
r'(?:/\*[^*]*\*+(?:[^/*][^*]*\*+)*/)))+(?=\+)|(?<=-)((?:[\000-\011\0'
|
||||||
|
r'13\014\016-\040]|(?:/\*[^*]*\*+(?:[^/*][^*]*\*+)*/)))+(?=-)|(?:[\0'
|
||||||
|
r'00-\011\013\014\016-\040]|(?:/\*[^*]*\*+(?:[^/*][^*]*\*+)*/))+|(?:'
|
||||||
|
r'(?:(?://[^\r\n]*)?[\r\n])(?:[\000-\011\013\014\016-\040]|(?:/\*[^*'
|
||||||
|
r']*\*+(?:[^/*][^*]*\*+)*/))*)+', subber, '\n%s\n' % script
|
||||||
|
).strip()
|
||||||
|
return result
|
||||||
|
|
||||||
# vim:et:
|
# vim:et:
|
||||||
|
|
|
@ -172,7 +172,4 @@ class ir_rule(osv.osv):
|
||||||
self.clear_cache(cr,uid)
|
self.clear_cache(cr,uid)
|
||||||
return res
|
return res
|
||||||
|
|
||||||
ir_rule()
|
|
||||||
|
|
||||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||||
|
|
||||||
|
|
|
@ -20,15 +20,19 @@
|
||||||
##############################################################################
|
##############################################################################
|
||||||
import collections
|
import collections
|
||||||
import copy
|
import copy
|
||||||
|
import datetime
|
||||||
|
import dateutil
|
||||||
|
from dateutil.relativedelta import relativedelta
|
||||||
import fnmatch
|
import fnmatch
|
||||||
import logging
|
import logging
|
||||||
from lxml import etree
|
|
||||||
from operator import itemgetter
|
|
||||||
import os
|
import os
|
||||||
|
import time
|
||||||
|
from operator import itemgetter
|
||||||
|
|
||||||
import simplejson
|
import simplejson
|
||||||
import werkzeug
|
import werkzeug
|
||||||
|
|
||||||
import HTMLParser
|
import HTMLParser
|
||||||
|
from lxml import etree
|
||||||
|
|
||||||
import openerp
|
import openerp
|
||||||
from openerp import tools
|
from openerp import tools
|
||||||
|
@ -873,9 +877,13 @@ class view(osv.osv):
|
||||||
values = dict()
|
values = dict()
|
||||||
qcontext = dict(
|
qcontext = dict(
|
||||||
keep_query=keep_query,
|
keep_query=keep_query,
|
||||||
request=request,
|
request=request, # might be unbound if we're not in an httprequest context
|
||||||
|
debug=request.debug if request else False,
|
||||||
json=simplejson,
|
json=simplejson,
|
||||||
quote_plus=werkzeug.url_quote_plus,
|
quote_plus=werkzeug.url_quote_plus,
|
||||||
|
time=time,
|
||||||
|
datetime=datetime,
|
||||||
|
relativedelta=relativedelta,
|
||||||
)
|
)
|
||||||
qcontext.update(values)
|
qcontext.update(values)
|
||||||
|
|
||||||
|
@ -973,12 +981,23 @@ class view(osv.osv):
|
||||||
def _validate_module_views(self, cr, uid, module):
|
def _validate_module_views(self, cr, uid, module):
|
||||||
"""Validate architecture of all the views of a given module"""
|
"""Validate architecture of all the views of a given module"""
|
||||||
assert not self.pool._init or module in self.pool._init_modules
|
assert not self.pool._init or module in self.pool._init_modules
|
||||||
|
xmlid_filter = ''
|
||||||
|
params = (module,)
|
||||||
|
if self.pool._init:
|
||||||
|
# only validate the views that are still existing...
|
||||||
|
xmlid_filter = "AND md.name IN %s"
|
||||||
|
names = tuple(name for (xmod, name), (model, res_id) in self.pool.model_data_reference_ids.items() if xmod == module and model == self._name)
|
||||||
|
if not names:
|
||||||
|
# no views for this module, nothing to validate
|
||||||
|
return
|
||||||
|
params += (names,)
|
||||||
cr.execute("""SELECT max(v.id)
|
cr.execute("""SELECT max(v.id)
|
||||||
FROM ir_ui_view v
|
FROM ir_ui_view v
|
||||||
LEFT JOIN ir_model_data md ON (md.model = 'ir.ui.view' AND md.res_id = v.id)
|
LEFT JOIN ir_model_data md ON (md.model = 'ir.ui.view' AND md.res_id = v.id)
|
||||||
WHERE md.module = %s
|
WHERE md.module = %s
|
||||||
|
{0}
|
||||||
GROUP BY coalesce(v.inherit_id, v.id)
|
GROUP BY coalesce(v.inherit_id, v.id)
|
||||||
""", (module,))
|
""".format(xmlid_filter), params)
|
||||||
|
|
||||||
for vid, in cr.fetchall():
|
for vid, in cr.fetchall():
|
||||||
if not self._check_xml(cr, uid, [vid]):
|
if not self._check_xml(cr, uid, [vid]):
|
||||||
|
|
|
@ -59,6 +59,7 @@
|
||||||
<field name="model"/>
|
<field name="model"/>
|
||||||
<field name="inherit_id"/>
|
<field name="inherit_id"/>
|
||||||
<field name="type"/>
|
<field name="type"/>
|
||||||
|
<field name="arch"/>
|
||||||
<group expand="0" string="Group By...">
|
<group expand="0" string="Group By...">
|
||||||
<filter string="Object" domain="[]" context="{'group_by':'model'}"/>
|
<filter string="Object" domain="[]" context="{'group_by':'model'}"/>
|
||||||
<filter string="Type" domain="[]" context="{'group_by':'type'}"/>
|
<filter string="Type" domain="[]" context="{'group_by':'type'}"/>
|
||||||
|
|
|
@ -182,9 +182,4 @@ class ir_property(osv.osv):
|
||||||
'|', ('company_id', '=', cid), ('company_id', '=', False)]
|
'|', ('company_id', '=', cid), ('company_id', '=', False)]
|
||||||
return domain
|
return domain
|
||||||
|
|
||||||
ir_property()
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||||
|
|
||||||
|
|
|
@ -51,9 +51,6 @@ class Bank(osv.osv):
|
||||||
result.append((bank.id, (bank.bic and (bank.bic + ' - ') or '') + bank.name))
|
result.append((bank.id, (bank.bic and (bank.bic + ' - ') or '') + bank.name))
|
||||||
return result
|
return result
|
||||||
|
|
||||||
Bank()
|
|
||||||
|
|
||||||
|
|
||||||
class res_partner_bank_type(osv.osv):
|
class res_partner_bank_type(osv.osv):
|
||||||
_description='Bank Account Type'
|
_description='Bank Account Type'
|
||||||
_name = 'res.partner.bank.type'
|
_name = 'res.partner.bank.type'
|
||||||
|
@ -67,7 +64,6 @@ class res_partner_bank_type(osv.osv):
|
||||||
_defaults = {
|
_defaults = {
|
||||||
'format_layout': lambda *args: "%(bank_name)s: %(acc_number)s"
|
'format_layout': lambda *args: "%(bank_name)s: %(acc_number)s"
|
||||||
}
|
}
|
||||||
res_partner_bank_type()
|
|
||||||
|
|
||||||
class res_partner_bank_type_fields(osv.osv):
|
class res_partner_bank_type_fields(osv.osv):
|
||||||
_description='Bank type fields'
|
_description='Bank type fields'
|
||||||
|
@ -80,8 +76,6 @@ class res_partner_bank_type_fields(osv.osv):
|
||||||
'readonly': fields.boolean('Readonly'),
|
'readonly': fields.boolean('Readonly'),
|
||||||
'size': fields.integer('Max. Size'),
|
'size': fields.integer('Max. Size'),
|
||||||
}
|
}
|
||||||
res_partner_bank_type_fields()
|
|
||||||
|
|
||||||
|
|
||||||
class res_partner_bank(osv.osv):
|
class res_partner_bank(osv.osv):
|
||||||
'''Bank Accounts'''
|
'''Bank Accounts'''
|
||||||
|
@ -234,6 +228,4 @@ class res_partner_bank(osv.osv):
|
||||||
result['state_id'] = part.state_id.id
|
result['state_id'] = part.state_id.id
|
||||||
return {'value': result}
|
return {'value': result}
|
||||||
|
|
||||||
res_partner_bank()
|
|
||||||
|
|
||||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||||
|
|
|
@ -80,33 +80,30 @@
|
||||||
</group>
|
</group>
|
||||||
</group>
|
</group>
|
||||||
</page>
|
</page>
|
||||||
<page string="Reports Configuration">
|
<page string="Report Configuration">
|
||||||
<group string="Footer Configuration">
|
<group string="Configuration">
|
||||||
<field name="custom_footer" on_change="onchange_footer(custom_footer, phone, fax, email, website, vat, company_registry, bank_ids)"/>
|
<field name="custom_footer" on_change="onchange_footer(custom_footer, phone, fax, email, website, vat, company_registry, bank_ids)"/>
|
||||||
<field name="rml_footer" attrs="{'invisible': [('custom_footer','=',False)]}"/>
|
<field name="rml_footer" attrs="{'invisible': [('custom_footer','=',False)]}"/>
|
||||||
<field name="rml_footer_readonly" attrs="{'invisible': [('custom_footer','=',True)]}"/>
|
<field name="rml_footer_readonly" attrs="{'invisible': [('custom_footer','=',True)]}"/>
|
||||||
</group>
|
</group>
|
||||||
<group string="RML Configuration">
|
|
||||||
|
<group string="Configuration (RML)" col="2" groups="base.group_no_one">
|
||||||
<field name="rml_paper_format" on_change="onchange_rml_paper_format(rml_paper_format)"/>
|
<field name="rml_paper_format" on_change="onchange_rml_paper_format(rml_paper_format)"/>
|
||||||
</group>
|
|
||||||
<group>
|
|
||||||
<label for="font" />
|
<label for="font" />
|
||||||
<div>
|
<div>
|
||||||
<div>
|
<field name="font" class="oe_inline" on_change="onchange_font_name(font, rml_header, rml_header2, rml_header3)" />
|
||||||
<field name="font" class="oe_inline" colspan="2" on_change="onchange_font_name(font, rml_header, rml_header2, rml_header3)" />
|
<button string="(reload fonts)" name="act_discover_fonts" type="object" class="oe_link" colspan="1"/>
|
||||||
<button string="(reload fonts)" name="act_discover_fonts" type="object" class="oe_link" colspan="1"/>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
<div class="oe_right oe_button_box" name="button_box" colspan="2">
|
||||||
|
<button name="%(preview_report)d" string="Preview Header/Footer" type="action"/>
|
||||||
|
</div>
|
||||||
|
<group col="1" colspan="2">
|
||||||
|
<field name="rml_header"/>
|
||||||
|
<field name="rml_header2"/>
|
||||||
|
<field name="rml_header3"/>
|
||||||
|
</group>
|
||||||
</group>
|
</group>
|
||||||
<div class="oe_right oe_button_box" name="button_box" groups="base.group_no_one" >
|
|
||||||
<button name="%(preview_report)d" string="Preview Header/Footer" type="action"/>
|
|
||||||
</div>
|
|
||||||
<label for="rml_header" groups="base.group_no_one" />
|
|
||||||
<field name="rml_header" groups="base.group_no_one" />
|
|
||||||
<label for="rml_header2" groups="base.group_no_one" />
|
|
||||||
<field name="rml_header2" groups="base.group_no_one" />
|
|
||||||
<label for="rml_header3" groups="base.group_no_one" />
|
|
||||||
<field name="rml_header3" groups="base.group_no_one" />
|
|
||||||
</page>
|
</page>
|
||||||
</notebook>
|
</notebook>
|
||||||
</sheet>
|
</sheet>
|
||||||
|
|
|
@ -235,8 +235,6 @@ class res_currency(osv.osv):
|
||||||
else:
|
else:
|
||||||
return from_amount * rate
|
return from_amount * rate
|
||||||
|
|
||||||
res_currency()
|
|
||||||
|
|
||||||
class res_currency_rate_type(osv.osv):
|
class res_currency_rate_type(osv.osv):
|
||||||
_name = "res.currency.rate.type"
|
_name = "res.currency.rate.type"
|
||||||
_description = "Currency Rate Type"
|
_description = "Currency Rate Type"
|
||||||
|
@ -244,8 +242,6 @@ class res_currency_rate_type(osv.osv):
|
||||||
'name': fields.char('Name', size=64, required=True, translate=True),
|
'name': fields.char('Name', size=64, required=True, translate=True),
|
||||||
}
|
}
|
||||||
|
|
||||||
res_currency_rate_type()
|
|
||||||
|
|
||||||
class res_currency_rate(osv.osv):
|
class res_currency_rate(osv.osv):
|
||||||
_name = "res.currency.rate"
|
_name = "res.currency.rate"
|
||||||
_description = "Currency Rate"
|
_description = "Currency Rate"
|
||||||
|
@ -261,7 +257,5 @@ class res_currency_rate(osv.osv):
|
||||||
}
|
}
|
||||||
_order = "name desc"
|
_order = "name desc"
|
||||||
|
|
||||||
res_currency_rate()
|
|
||||||
|
|
||||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||||
|
|
||||||
|
|
|
@ -340,7 +340,7 @@
|
||||||
<separator/>
|
<separator/>
|
||||||
<field name="category_id" string="Tag" filter_domain="[('category_id','ilike', self)]"/>
|
<field name="category_id" string="Tag" filter_domain="[('category_id','ilike', self)]"/>
|
||||||
<field name="user_id"/>
|
<field name="user_id"/>
|
||||||
<field name="parent_id" domain="[('is_company','=',1)]" filter_domain="[('parent_id','child_of',[self])]"/>
|
<field name="parent_id" domain="[('is_company','=',1)]" operator="child_of"/>
|
||||||
<group expand="0" string="Group By...">
|
<group expand="0" string="Group By...">
|
||||||
<filter string="Salesperson" icon="terp-personal" domain="[]" context="{'group_by' : 'user_id'}" />
|
<filter string="Salesperson" icon="terp-personal" domain="[]" context="{'group_by' : 'user_id'}" />
|
||||||
<filter string="Company" context="{'group_by': 'parent_id'}"/>
|
<filter string="Company" context="{'group_by': 'parent_id'}"/>
|
||||||
|
|
|
@ -7,9 +7,11 @@
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record model="ir.ui.menu" id="menu_config_address_book">
|
<record model="ir.ui.menu" id="menu_config_address_book">
|
||||||
|
<field name="name">Address Book</field>
|
||||||
<field eval="[(6,0,[ref('group_system'), ref('group_partner_manager')])]" name="groups_id"/>
|
<field eval="[(6,0,[ref('group_system'), ref('group_partner_manager')])]" name="groups_id"/>
|
||||||
</record>
|
</record>
|
||||||
<record model="ir.ui.menu" id="menu_base_config">
|
<record model="ir.ui.menu" id="menu_base_config">
|
||||||
|
<field name="name">Configuration</field>
|
||||||
<field eval="[(6,0,[ref('group_system'), ref('group_partner_manager')])]" name="groups_id"/>
|
<field eval="[(6,0,[ref('group_system'), ref('group_partner_manager')])]" name="groups_id"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
|
|
|
@ -28,7 +28,7 @@ import openerp
|
||||||
from openerp import SUPERUSER_ID
|
from openerp import SUPERUSER_ID
|
||||||
from openerp import tools
|
from openerp import tools
|
||||||
import openerp.exceptions
|
import openerp.exceptions
|
||||||
from openerp.osv import fields,osv
|
from openerp.osv import fields,osv, expression
|
||||||
from openerp.osv.orm import browse_record
|
from openerp.osv.orm import browse_record
|
||||||
from openerp.tools.translate import _
|
from openerp.tools.translate import _
|
||||||
|
|
||||||
|
@ -56,13 +56,33 @@ class res_groups(osv.osv):
|
||||||
def _search_group(self, cr, uid, obj, name, args, context=None):
|
def _search_group(self, cr, uid, obj, name, args, context=None):
|
||||||
operand = args[0][2]
|
operand = args[0][2]
|
||||||
operator = args[0][1]
|
operator = args[0][1]
|
||||||
values = operand.split('/')
|
lst = True
|
||||||
group_name = values[0]
|
if isinstance(operand, bool):
|
||||||
where = [('name', operator, group_name)]
|
domains = [[('name', operator, operand)], [('category_id.name', operator, operand)]]
|
||||||
if len(values) > 1:
|
if operator in expression.NEGATIVE_TERM_OPERATORS == (not operand):
|
||||||
application_name = values[0]
|
return expression.AND(domains)
|
||||||
group_name = values[1]
|
else:
|
||||||
where = ['|',('category_id.name', operator, application_name)] + where
|
return expression.OR(domains)
|
||||||
|
if isinstance(operand, basestring):
|
||||||
|
lst = False
|
||||||
|
operand = [operand]
|
||||||
|
where = []
|
||||||
|
for group in operand:
|
||||||
|
values = filter(bool, group.split('/'))
|
||||||
|
group_name = values.pop().strip()
|
||||||
|
category_name = values and '/'.join(values).strip() or group_name
|
||||||
|
group_domain = [('name', operator, lst and [group_name] or group_name)]
|
||||||
|
category_domain = [('category_id.name', operator, lst and [category_name] or category_name)]
|
||||||
|
if operator in expression.NEGATIVE_TERM_OPERATORS and not values:
|
||||||
|
category_domain = expression.OR([category_domain, [('category_id', '=', False)]])
|
||||||
|
if (operator in expression.NEGATIVE_TERM_OPERATORS) == (not values):
|
||||||
|
sub_where = expression.AND([group_domain, category_domain])
|
||||||
|
else:
|
||||||
|
sub_where = expression.OR([group_domain, category_domain])
|
||||||
|
if operator in expression.NEGATIVE_TERM_OPERATORS:
|
||||||
|
where = expression.AND([where, sub_where])
|
||||||
|
else:
|
||||||
|
where = expression.OR([where, sub_where])
|
||||||
return where
|
return where
|
||||||
|
|
||||||
_columns = {
|
_columns = {
|
||||||
|
@ -154,8 +174,7 @@ class res_users(osv.osv):
|
||||||
"a change of password, the user has to login again."),
|
"a change of password, the user has to login again."),
|
||||||
'signature': fields.text('Signature'),
|
'signature': fields.text('Signature'),
|
||||||
'active': fields.boolean('Active'),
|
'active': fields.boolean('Active'),
|
||||||
'action_id': fields.many2one('ir.actions.actions', 'Home Action', help="If specified, this action will be opened at logon for this user, in addition to the standard menu."),
|
'action_id': fields.many2one('ir.actions.actions', 'Home Action', help="If specified, this action will be opened at log on for this user, in addition to the standard menu."),
|
||||||
'menu_id': fields.many2one('ir.actions.actions', 'Menu Action', help="If specified, the action will replace the standard menu for this user."),
|
|
||||||
'groups_id': fields.many2many('res.groups', 'res_groups_users_rel', 'uid', 'gid', 'Groups'),
|
'groups_id': fields.many2many('res.groups', 'res_groups_users_rel', 'uid', 'gid', 'Groups'),
|
||||||
# Special behavior for this field: res.company.search() will only return the companies
|
# Special behavior for this field: res.company.search() will only return the companies
|
||||||
# available to the current user (should be the user's companies?), when the user_preference
|
# available to the current user (should be the user's companies?), when the user_preference
|
||||||
|
@ -217,16 +236,6 @@ class res_users(osv.osv):
|
||||||
return [c]
|
return [c]
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def _get_menu(self,cr, uid, context=None):
|
|
||||||
dataobj = self.pool.get('ir.model.data')
|
|
||||||
try:
|
|
||||||
model, res_id = dataobj.get_object_reference(cr, uid, 'base', 'action_menu_admin')
|
|
||||||
if model != 'ir.actions.act_window':
|
|
||||||
return False
|
|
||||||
return res_id
|
|
||||||
except ValueError:
|
|
||||||
return False
|
|
||||||
|
|
||||||
def _get_group(self,cr, uid, context=None):
|
def _get_group(self,cr, uid, context=None):
|
||||||
dataobj = self.pool.get('ir.model.data')
|
dataobj = self.pool.get('ir.model.data')
|
||||||
result = []
|
result = []
|
||||||
|
@ -244,7 +253,6 @@ class res_users(osv.osv):
|
||||||
'password': '',
|
'password': '',
|
||||||
'active': True,
|
'active': True,
|
||||||
'customer': False,
|
'customer': False,
|
||||||
'menu_id': _get_menu,
|
|
||||||
'company_id': _get_company,
|
'company_id': _get_company,
|
||||||
'company_ids': _get_companies,
|
'company_ids': _get_companies,
|
||||||
'groups_id': _get_group,
|
'groups_id': _get_group,
|
||||||
|
|
|
@ -201,7 +201,6 @@
|
||||||
</group>
|
</group>
|
||||||
<group string="Menus Customization" groups="base.group_no_one">
|
<group string="Menus Customization" groups="base.group_no_one">
|
||||||
<field name="action_id"/>
|
<field name="action_id"/>
|
||||||
<field domain="[('usage','=','menu')]" name="menu_id" required="True"/>
|
|
||||||
</group>
|
</group>
|
||||||
</group>
|
</group>
|
||||||
<group string="Messaging and Social" name="messaging">
|
<group string="Messaging and Social" name="messaging">
|
||||||
|
|
|
@ -652,6 +652,7 @@
|
||||||
<rng:optional><rng:attribute name="event_open_popup" /></rng:optional>
|
<rng:optional><rng:attribute name="event_open_popup" /></rng:optional>
|
||||||
<rng:optional><rng:attribute name="attendee" /></rng:optional>
|
<rng:optional><rng:attribute name="attendee" /></rng:optional>
|
||||||
<rng:optional><rng:attribute name="color_is_attendee" /></rng:optional>
|
<rng:optional><rng:attribute name="color_is_attendee" /></rng:optional>
|
||||||
|
<rng:optional><rng:attribute name="avatar_filter" /></rng:optional>
|
||||||
<rng:optional><rng:attribute name="avatar_model" /></rng:optional>
|
<rng:optional><rng:attribute name="avatar_model" /></rng:optional>
|
||||||
<rng:optional><rng:attribute name="avatar_title" /></rng:optional>
|
<rng:optional><rng:attribute name="avatar_title" /></rng:optional>
|
||||||
<rng:optional><rng:attribute name="use_contacts" /></rng:optional>
|
<rng:optional><rng:attribute name="use_contacts" /></rng:optional>
|
||||||
|
|
|
@ -43,6 +43,7 @@
|
||||||
|
|
||||||
<!-- Set accesses to menu -->
|
<!-- Set accesses to menu -->
|
||||||
<record model="ir.ui.menu" id="base.menu_administration">
|
<record model="ir.ui.menu" id="base.menu_administration">
|
||||||
|
<field name="name">Administration</field>
|
||||||
<field name="groups_id" eval="[(6,0, [ref('group_system'), ref('group_erp_manager')])]"/>
|
<field name="groups_id" eval="[(6,0, [ref('group_system'), ref('group_erp_manager')])]"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
|
|
|
@ -1,73 +0,0 @@
|
||||||
-
|
|
||||||
I will now stress the authentication layer of the ORM
|
|
||||||
-
|
|
||||||
I create a test user.
|
|
||||||
-
|
|
||||||
!record {model: res.users, id: res_user_test_a1}:
|
|
||||||
name: Test Auth User 1
|
|
||||||
login: test_base_a1
|
|
||||||
password: 'base-test-passwd'
|
|
||||||
active: True
|
|
||||||
-
|
|
||||||
I will prepare the context
|
|
||||||
-
|
|
||||||
!python {model: res.users }: |
|
|
||||||
from openerp.tools import config
|
|
||||||
host = config.get_misc('httpd', 'interface')
|
|
||||||
port = config.get_misc('httpd', 'port', 8069)
|
|
||||||
if not host:
|
|
||||||
host = config.get('xmlrpc_interface')
|
|
||||||
port = config.get('xmlrpc_port') or self.port
|
|
||||||
if host == '0.0.0.0' or not host:
|
|
||||||
host = '127.0.0.1'
|
|
||||||
port = int(port)
|
|
||||||
context['test_xmlrpc_url'] = 'http://%s:%d/xmlrpc/' % (host, port)
|
|
||||||
-
|
|
||||||
I will commit the cursor and try to login.
|
|
||||||
-
|
|
||||||
!python {model: res.users }: |
|
|
||||||
from xmlrpclib import ServerProxy
|
|
||||||
cr.commit()
|
|
||||||
try:
|
|
||||||
logsock = ServerProxy(context['test_xmlrpc_url']+'common')
|
|
||||||
luid = logsock.login(cr.dbname, 'test_base_a1', 'base-test-passwd')
|
|
||||||
assert luid, "User is not activated after res.users commit!"
|
|
||||||
except Exception:
|
|
||||||
raise
|
|
||||||
-
|
|
||||||
I will just try to read something as that user
|
|
||||||
-
|
|
||||||
!python {model: res.users }: |
|
|
||||||
from xmlrpclib import ServerProxy
|
|
||||||
cr.commit()
|
|
||||||
try:
|
|
||||||
logsock = ServerProxy(context['test_xmlrpc_url']+'object')
|
|
||||||
luid = ref('res_user_test_a1')
|
|
||||||
res = logsock.execute(cr.dbname, luid, 'base-test-passwd', 'res.users', 'read', luid, ['name',])
|
|
||||||
assert res and res['name'], "User cannot read its name!"
|
|
||||||
except Exception:
|
|
||||||
raise
|
|
||||||
-
|
|
||||||
I will now disable the user.
|
|
||||||
-
|
|
||||||
!record {model: res.users, id: res_user_test_a1}:
|
|
||||||
active: False
|
|
||||||
-
|
|
||||||
I will commit the cursor.
|
|
||||||
-
|
|
||||||
!python {model: res.users }: |
|
|
||||||
cr.commit()
|
|
||||||
-
|
|
||||||
I will try to read again, connecting as the disabled user.
|
|
||||||
-
|
|
||||||
!python {model: res.users }: |
|
|
||||||
from xmlrpclib import ServerProxy
|
|
||||||
cr.commit()
|
|
||||||
try:
|
|
||||||
logsock = ServerProxy(context['test_xmlrpc_url']+'object')
|
|
||||||
luid = ref('res_user_test_a1')
|
|
||||||
res = logsock.execute(cr.dbname, luid, 'base-test-passwd', 'res.users', 'read', luid, ['name',])
|
|
||||||
raise AssertionError("User should not be enabled!")
|
|
||||||
except Fault, e:
|
|
||||||
if e.faultCode != 'AccessDenied':
|
|
||||||
raise
|
|
|
@ -302,3 +302,17 @@
|
||||||
float_round(0.01, precision_digits=3, precision_rounding=0.01)
|
float_round(0.01, precision_digits=3, precision_rounding=0.01)
|
||||||
except AssertionError:
|
except AssertionError:
|
||||||
pass
|
pass
|
||||||
|
-
|
||||||
|
Test res.groups name search
|
||||||
|
-
|
||||||
|
!python {model: res.groups}: |
|
||||||
|
all_groups = self.search(cr, uid, [])
|
||||||
|
full_names = [(group.id, group.full_name) for group in self.browse(cr, uid, all_groups)]
|
||||||
|
group_ids = self.search(cr, uid, [('full_name', 'like', '%Sale%')])
|
||||||
|
assert set(group_ids) == set([id for (id, full_name) in full_names if 'Sale' in full_name]), "did not match search for 'Sale'"
|
||||||
|
group_ids = self.search(cr, uid, [('full_name', 'like', '%Technical%')])
|
||||||
|
assert set(group_ids) == set([id for (id, full_name) in full_names if 'Technical' in full_name]), "did not match search for 'Technical'"
|
||||||
|
group_ids = self.search(cr, uid, [('full_name', 'like', '%Sales /%')])
|
||||||
|
assert set(group_ids) == set([id for (id, full_name) in full_names if 'Sales /' in full_name]), "did not match search for 'Sales /'"
|
||||||
|
group_ids = self.search(cr, uid, [('full_name', 'in', ['Administration / Access Rights','Contact Creation'])])
|
||||||
|
assert group_ids, "did not match search for 'Administration / Access Rights' and 'Contact Creation'"
|
|
@ -2,7 +2,7 @@
|
||||||
##############################################################################
|
##############################################################################
|
||||||
#
|
#
|
||||||
# OpenERP, Open Source Business Applications
|
# OpenERP, Open Source Business Applications
|
||||||
# Copyright (C) 2004-2012 OpenERP S.A. (<http://openerp.com>).
|
# Copyright (C) 2004-2014 OpenERP S.A. (<http://openerp.com>).
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as
|
# it under the terms of the GNU Affero General Public License as
|
||||||
|
@ -137,10 +137,12 @@ class wkf_instance(osv.osv):
|
||||||
_rec_name = 'res_type'
|
_rec_name = 'res_type'
|
||||||
_log_access = False
|
_log_access = False
|
||||||
_columns = {
|
_columns = {
|
||||||
|
'uid': fields.integer('User'), # FIXME no constraint??
|
||||||
'wkf_id': fields.many2one('workflow', 'Workflow', ondelete='cascade', select=True),
|
'wkf_id': fields.many2one('workflow', 'Workflow', ondelete='cascade', select=True),
|
||||||
'res_id': fields.integer('Resource ID'),
|
'res_id': fields.integer('Resource ID'),
|
||||||
'res_type': fields.char('Resource Object', size=64),
|
'res_type': fields.char('Resource Object', size=64),
|
||||||
'state': fields.char('Status', size=32),
|
'state': fields.char('Status', size=32),
|
||||||
|
'transition_ids': fields.many2many('workflow.transition', 'wkf_witm_trans', 'inst_id', 'trans_id'),
|
||||||
}
|
}
|
||||||
def _auto_init(self, cr, context=None):
|
def _auto_init(self, cr, context=None):
|
||||||
super(wkf_instance, self)._auto_init(cr, context)
|
super(wkf_instance, self)._auto_init(cr, context)
|
||||||
|
|
|
@ -81,8 +81,11 @@ def report_configuration():
|
||||||
|
|
||||||
def rm_pid_file():
|
def rm_pid_file():
|
||||||
config = openerp.tools.config
|
config = openerp.tools.config
|
||||||
if not openerp.evented and os.path.exists(config['pidfile']):
|
if not openerp.evented and config['pidfile']:
|
||||||
os.unlink(config['pidfile'])
|
try:
|
||||||
|
os.unlink(config['pidfile'])
|
||||||
|
except OSError:
|
||||||
|
pass
|
||||||
|
|
||||||
def setup_pid_file():
|
def setup_pid_file():
|
||||||
""" Create a file with the process id written in it.
|
""" Create a file with the process id written in it.
|
||||||
|
|
|
@ -559,7 +559,7 @@ class HttpRequest(WebRequest):
|
||||||
response.set_cookie(k, v)
|
response.set_cookie(k, v)
|
||||||
return response
|
return response
|
||||||
|
|
||||||
def render(self, template, qcontext=None, **kw):
|
def render(self, template, qcontext=None, lazy=True, **kw):
|
||||||
""" Lazy render of QWeb template.
|
""" Lazy render of QWeb template.
|
||||||
|
|
||||||
The actual rendering of the given template will occur at then end of
|
The actual rendering of the given template will occur at then end of
|
||||||
|
@ -568,8 +568,12 @@ class HttpRequest(WebRequest):
|
||||||
|
|
||||||
:param basestring template: template to render
|
:param basestring template: template to render
|
||||||
:param dict qcontext: Rendering context to use
|
:param dict qcontext: Rendering context to use
|
||||||
|
:param dict lazy: Lazy rendering is processed later in wsgi response layer (default True)
|
||||||
"""
|
"""
|
||||||
return Response(template=template, qcontext=qcontext, **kw)
|
response = Response(template=template, qcontext=qcontext, **kw)
|
||||||
|
if not lazy:
|
||||||
|
return response.render()
|
||||||
|
return response
|
||||||
|
|
||||||
def not_found(self, description=None):
|
def not_found(self, description=None):
|
||||||
""" Helper for 404 response, return its result from the method
|
""" Helper for 404 response, return its result from the method
|
||||||
|
@ -601,6 +605,16 @@ class ControllerType(type):
|
||||||
# flag old-style methods with req as first argument
|
# flag old-style methods with req as first argument
|
||||||
for k, v in attrs.items():
|
for k, v in attrs.items():
|
||||||
if inspect.isfunction(v) and hasattr(v, 'original_func'):
|
if inspect.isfunction(v) and hasattr(v, 'original_func'):
|
||||||
|
# Set routing type on original functions
|
||||||
|
routing_type = v.routing.get('type')
|
||||||
|
parent = [claz for claz in bases if isinstance(claz, ControllerType) and hasattr(claz, k)]
|
||||||
|
parent_routing_type = getattr(parent[0], k).original_func.routing_type if parent else routing_type or 'http'
|
||||||
|
if routing_type is not None and routing_type is not parent_routing_type:
|
||||||
|
routing_type = parent_routing_type
|
||||||
|
_logger.warn("Subclass re-defines <function %s.%s.%s> with different type than original."
|
||||||
|
" Will use original type: %r" % (cls.__module__, cls.__name__, k, parent_routing_type))
|
||||||
|
v.original_func.routing_type = routing_type or parent_routing_type
|
||||||
|
|
||||||
spec = inspect.getargspec(v.original_func)
|
spec = inspect.getargspec(v.original_func)
|
||||||
first_arg = spec.args[1] if len(spec.args) >= 2 else None
|
first_arg = spec.args[1] if len(spec.args) >= 2 else None
|
||||||
if first_arg in ["req", "request"]:
|
if first_arg in ["req", "request"]:
|
||||||
|
@ -660,15 +674,6 @@ def routing_map(modules, nodb_only, converters=None):
|
||||||
for claz in reversed(mv.im_class.mro()):
|
for claz in reversed(mv.im_class.mro()):
|
||||||
fn = getattr(claz, mv.func_name, None)
|
fn = getattr(claz, mv.func_name, None)
|
||||||
if fn and hasattr(fn, 'routing') and fn not in methods_done:
|
if fn and hasattr(fn, 'routing') and fn not in methods_done:
|
||||||
fn_type = fn.routing.get('type')
|
|
||||||
if not routing_type:
|
|
||||||
routing_type = fn_type
|
|
||||||
else:
|
|
||||||
if fn_type and routing_type != fn_type:
|
|
||||||
_logger.warn("Subclass re-defines <function %s.%s> with different type than original."
|
|
||||||
" Will use original type: %r", fn.__module__, fn.__name__, routing_type)
|
|
||||||
fn.routing['type'] = routing_type
|
|
||||||
fn.original_func.routing_type = routing_type
|
|
||||||
methods_done.append(fn)
|
methods_done.append(fn)
|
||||||
routing.update(fn.routing)
|
routing.update(fn.routing)
|
||||||
if not nodb_only or nodb_only == (routing['auth'] == "none"):
|
if not nodb_only or nodb_only == (routing['auth'] == "none"):
|
||||||
|
@ -1224,10 +1229,11 @@ class Root(object):
|
||||||
try:
|
try:
|
||||||
with openerp.tools.mute_logger('openerp.sql_db'):
|
with openerp.tools.mute_logger('openerp.sql_db'):
|
||||||
ir_http = request.registry['ir.http']
|
ir_http = request.registry['ir.http']
|
||||||
except psycopg2.OperationalError:
|
except (AttributeError, psycopg2.OperationalError):
|
||||||
# psycopg2 error. At this point, that means the
|
# psycopg2 error or attribute error while constructing
|
||||||
# database probably does not exists anymore. Log the
|
# the registry. That means the database probably does
|
||||||
# user out and fall back to nodb
|
# not exists anymore or the code doesnt match the db.
|
||||||
|
# Log the user out and fall back to nodb
|
||||||
request.session.logout()
|
request.session.logout()
|
||||||
result = _dispatch_nodb()
|
result = _dispatch_nodb()
|
||||||
else:
|
else:
|
||||||
|
@ -1295,6 +1301,11 @@ class CommonController(Controller):
|
||||||
""" Method used by client APIs to contact OpenERP. """
|
""" Method used by client APIs to contact OpenERP. """
|
||||||
return dispatch_rpc(service, method, args)
|
return dispatch_rpc(service, method, args)
|
||||||
|
|
||||||
|
@route('/gen_session_id', type='json', auth="none")
|
||||||
|
def gen_session_id(self):
|
||||||
|
nsession = root.session_store.new()
|
||||||
|
return nsession.sid
|
||||||
|
|
||||||
# register main wsgi handler
|
# register main wsgi handler
|
||||||
root = Root()
|
root = Root()
|
||||||
openerp.service.wsgi_server.register_wsgi_handler(root)
|
openerp.service.wsgi_server.register_wsgi_handler(root)
|
||||||
|
|
|
@ -30,7 +30,7 @@ RELEASE_LEVELS_DISPLAY = {ALPHA: ALPHA,
|
||||||
# properly comparable using normal operarors, for example:
|
# properly comparable using normal operarors, for example:
|
||||||
# (6,1,0,'beta',0) < (6,1,0,'candidate',1) < (6,1,0,'candidate',2)
|
# (6,1,0,'beta',0) < (6,1,0,'candidate',1) < (6,1,0,'candidate',2)
|
||||||
# (6,1,0,'candidate',2) < (6,1,0,'final',0) < (6,1,2,'final',0)
|
# (6,1,0,'candidate',2) < (6,1,0,'final',0) < (6,1,2,'final',0)
|
||||||
version_info = (7, 'saas~4', 0, FINAL, 0)
|
version_info = (8, 0, 0, ALPHA, 1)
|
||||||
version = '.'.join(map(str, version_info[:2])) + RELEASE_LEVELS_DISPLAY[version_info[3]] + str(version_info[4] or '')
|
version = '.'.join(map(str, version_info[:2])) + RELEASE_LEVELS_DISPLAY[version_info[3]] + str(version_info[4] or '')
|
||||||
series = serie = major_version = '.'.join(map(str, version_info[:2]))
|
series = serie = major_version = '.'.join(map(str, version_info[:2]))
|
||||||
|
|
||||||
|
|
|
@ -229,6 +229,7 @@ class HttpCase(TransactionCase):
|
||||||
# kill phantomjs if phantom.exit() wasn't called in the test
|
# kill phantomjs if phantom.exit() wasn't called in the test
|
||||||
if phantom.poll() is None:
|
if phantom.poll() is None:
|
||||||
phantom.terminate()
|
phantom.terminate()
|
||||||
|
phantom.wait()
|
||||||
self._wait_remaining_requests()
|
self._wait_remaining_requests()
|
||||||
_logger.info("phantom_run execution finished")
|
_logger.info("phantom_run execution finished")
|
||||||
|
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue