[FIX] base.sql: added a partner_id integer field on res.users, to avoid the ORM being...
[odoo/odoo.git] / openerp / addons / base / base.sql
1 -------------------------------------------------------------------------
2 -- Pure SQL
3 -------------------------------------------------------------------------
4
5 -------------------------------------------------------------------------
6 -- IR dictionary
7 -------------------------------------------------------------------------
8
9 create table ir_values
10 (
11     id serial,
12     name varchar(128) not null,
13     key varchar(128) not null,
14     key2 varchar(256) not null,
15     model varchar(128) not null,
16     value text,
17     meta text default NULL,
18     res_id integer default null,
19     primary key (id)
20 );
21
22 -------------------------------------------------------------------------
23 -- Modules Description
24 -------------------------------------------------------------------------
25
26 CREATE TABLE ir_model (
27   id serial,
28   model varchar(64) DEFAULT ''::varchar NOT NULL,
29   name varchar(64),
30   state varchar(16),
31   info text,
32   primary key(id)
33 );
34
35 CREATE TABLE ir_model_fields (
36   id serial,
37   model varchar(64) DEFAULT ''::varchar NOT NULL,
38   model_id int references ir_model on delete cascade,
39   name varchar(64) DEFAULT ''::varchar NOT NULL,
40   relation varchar(64),
41   select_level varchar(4),
42   field_description varchar(256),
43   ttype varchar(64),
44   state varchar(64) default 'base',
45   view_load boolean,
46   relate boolean default False,
47   relation_field varchar(128),
48   translate boolean default False,
49   primary key(id)
50 );
51
52 ALTER TABLE ir_model_fields ADD column serialization_field_id int references ir_model_fields on delete cascade;
53
54
55 -------------------------------------------------------------------------
56 -- Actions
57 -------------------------------------------------------------------------
58
59 CREATE TABLE ir_actions (
60     id serial NOT NULL,
61     name varchar(64) DEFAULT ''::varchar NOT NULL,
62     "type" varchar(32) NOT NULL,
63     usage varchar(32) DEFAULT null,
64     primary key(id)
65 );
66
67 CREATE TABLE ir_act_window (
68     view_id integer,
69     res_model varchar(64),
70     view_type varchar(16),
71     "domain" varchar(250),
72     primary key(id)
73 )
74 INHERITS (ir_actions);
75
76 CREATE TABLE ir_act_report_xml (
77     model varchar(64) NOT NULL,
78     report_name varchar(64) NOT NULL,
79     report_xsl varchar(256),
80     report_xml varchar(256),
81     auto boolean default true,
82     primary key(id)
83 )
84 INHERITS (ir_actions);
85
86 create table ir_act_report_custom (
87     report_id int,
88 --  report_id int references ir_report_custom
89     primary key(id)
90 )
91 INHERITS (ir_actions);
92
93 CREATE TABLE ir_act_wizard (
94     wiz_name varchar(64) NOT NULL,
95     primary key(id)
96 )
97 INHERITS (ir_actions);
98
99 CREATE TABLE ir_act_url (
100     url text NOT NULL,
101     target varchar(64) NOT NULL,
102     primary key(id)
103 )
104 INHERITS (ir_actions);
105
106 CREATE TABLE ir_act_server (
107     primary key(id)
108 )
109 INHERITS (ir_actions);
110
111 CREATE TABLE ir_act_client (
112     primary key(id)
113 )
114 INHERITS (ir_actions);
115
116
117 CREATE TABLE ir_ui_view (
118     id serial NOT NULL,
119     name varchar(64) DEFAULT ''::varchar NOT NULL,
120     model varchar(64) DEFAULT ''::varchar NOT NULL,
121     "type" varchar(64) DEFAULT 'form'::varchar NOT NULL,
122     arch text NOT NULL,
123     field_parent varchar(64),
124     priority integer DEFAULT 5 NOT NULL,
125     primary key(id)
126 );
127
128 CREATE TABLE ir_ui_menu (
129     id serial NOT NULL,
130     parent_id int references ir_ui_menu on delete set null,
131     name varchar(64) DEFAULT ''::varchar NOT NULL,
132     icon varchar(64) DEFAULT ''::varchar,
133     primary key (id)
134 );
135
136 select setval('ir_ui_menu_id_seq', 2);
137
138 ---------------------------------
139 -- Res users
140 ---------------------------------
141
142 -- level:
143 --   0  RESTRICT TO USER
144 --   1  RESTRICT TO GROUP
145 --   2  PUBLIC
146
147 CREATE TABLE res_users (
148     id serial NOT NULL,
149     name varchar(64) not null,
150     active boolean default True,
151     login varchar(64) NOT NULL UNIQUE,
152     password varchar(64) default null,
153     tz varchar(64) default null,
154     lang varchar(64) default '',
155     -- No FK references below, will be added later by ORM
156     -- (when the destination rows exist)
157     company_id int,
158     partner_id int,
159     primary key(id)
160 );
161 alter table res_users add constraint res_users_login_uniq unique (login);
162
163 CREATE TABLE res_groups (
164     id serial NOT NULL,
165     name varchar(64) NOT NULL,
166     primary key(id)
167 );
168
169 CREATE TABLE res_groups_users_rel (
170     uid integer NOT NULL references res_users on delete cascade,
171     gid integer NOT NULL references res_groups on delete cascade,
172     UNIQUE("uid","gid")
173 );
174
175 create index res_groups_users_rel_uid_idx on res_groups_users_rel (uid);
176 create index res_groups_users_rel_gid_idx on res_groups_users_rel (gid);
177
178
179 ---------------------------------
180 -- Workflows
181 ---------------------------------
182
183 create table wkf
184 (
185     id serial,
186     name varchar(64),
187     osv varchar(64),
188     on_create bool default False,
189     primary key(id)
190 );
191
192 create table wkf_activity
193 (
194     id serial,
195     wkf_id int references wkf on delete cascade,
196     subflow_id int references wkf on delete set null,
197     split_mode varchar(3) default 'XOR',
198     join_mode varchar(3) default 'XOR',
199     kind varchar(16) not null default 'dummy',
200     name varchar(64),
201     signal_send varchar(32) default null,
202     flow_start boolean default False,
203     flow_stop boolean default False,
204     action text default null,
205     primary key(id)
206 );
207
208 create table wkf_transition
209 (
210     id serial,
211     act_from int references wkf_activity on delete cascade,
212     act_to int references wkf_activity on delete cascade,
213     condition varchar(128) default NULL,
214
215     trigger_type varchar(128) default NULL,
216     trigger_expr_id varchar(128) default NULL,
217
218     signal varchar(64) default null,
219     group_id int references res_groups on delete set null,
220
221     primary key(id)
222 );
223
224 create table wkf_instance
225 (
226     id serial,
227     wkf_id int references wkf on delete restrict,
228     uid int default null,
229     res_id int not null,
230     res_type varchar(64) not null,
231     state varchar(32) not null default 'active',
232     primary key(id)
233 );
234
235 create table wkf_workitem
236 (
237     id serial,
238     act_id int not null references wkf_activity on delete cascade,
239     inst_id int not null references wkf_instance on delete cascade,
240     subflow_id int references wkf_instance on delete cascade,
241     state varchar(64) default 'blocked',
242     primary key(id)
243 );
244
245 create table wkf_witm_trans
246 (
247     trans_id int not null references wkf_transition on delete cascade,
248     inst_id int not null references wkf_instance on delete cascade
249 );
250
251 create index wkf_witm_trans_inst_idx on wkf_witm_trans (inst_id);
252
253 create table wkf_logs
254 (
255     id serial,
256     res_type varchar(128) not null,
257     res_id int not null,
258     uid int references res_users on delete set null,
259     act_id int references wkf_activity on delete set null,
260     time time not null,
261     info varchar(128) default NULL,
262     primary key(id)
263 );
264
265 ---------------------------------
266 -- Modules
267 ---------------------------------
268
269 CREATE TABLE ir_module_category (
270     id serial NOT NULL,
271     create_uid integer references res_users on delete set null,
272     create_date timestamp without time zone,
273     write_date timestamp without time zone,
274     write_uid integer references res_users on delete set null,
275     parent_id integer REFERENCES ir_module_category ON DELETE SET NULL,
276     name character varying(128) NOT NULL,
277     primary key(id)
278 );
279
280
281 CREATE TABLE ir_module_module (
282     id serial NOT NULL,
283     create_uid integer references res_users on delete set null,
284     create_date timestamp without time zone,
285     write_date timestamp without time zone,
286     write_uid integer references res_users on delete set null,
287     website character varying(256),
288     summary character varying(256),
289     name character varying(128) NOT NULL,
290     author character varying(128),
291     url character varying(128),
292     icon character varying(64),
293     state character varying(16),
294     latest_version character varying(64),
295     shortdesc character varying(256),
296     complexity character varying(32),
297     category_id integer REFERENCES ir_module_category ON DELETE SET NULL,
298     certificate character varying(64),
299     description text,
300     application boolean default False,
301     demo boolean default False,
302     web boolean DEFAULT FALSE,
303     license character varying(32),
304     sequence integer DEFAULT 100,
305     auto_install boolean default False,
306     primary key(id)
307 );
308 ALTER TABLE ir_module_module add constraint name_uniq unique (name);
309
310 CREATE TABLE ir_module_module_dependency (
311     id serial NOT NULL,
312     create_uid integer references res_users on delete set null,
313     create_date timestamp without time zone,
314     write_date timestamp without time zone,
315     write_uid integer references res_users on delete set null,
316     name character varying(128),
317     version_pattern character varying(128) default NULL,
318     module_id integer REFERENCES ir_module_module ON DELETE cascade,
319     primary key(id)
320 );
321
322 CREATE TABLE res_company (
323     id serial NOT NULL,
324     name character varying(64) not null,
325     parent_id integer references res_company on delete set null,
326     primary key(id)
327 );
328
329 CREATE TABLE res_lang (
330     id serial PRIMARY KEY,
331     name VARCHAR(64) NOT NULL UNIQUE,
332     code VARCHAR(16) NOT NULL UNIQUE
333 );
334
335 CREATE TABLE ir_model_data (
336     id serial NOT NULL,
337     create_uid integer,
338     create_date timestamp without time zone,
339     write_date timestamp without time zone,
340     write_uid integer,
341     noupdate boolean,
342     name character varying(128) NOT NULL,
343     date_init timestamp without time zone,
344     date_update timestamp without time zone,
345     module character varying(64) NOT NULL,
346     model character varying(64) NOT NULL,
347     res_id integer, primary key(id)
348 );
349
350 -- Records foreign keys and constraints installed by a module (so they can be
351 -- removed when the module is uninstalled):
352 --   - for a foreign key: type is 'f',
353 --   - for a constraint: type is 'u' (this is the convention PostgreSQL uses).
354 CREATE TABLE ir_model_constraint (
355     id serial NOT NULL,
356     create_uid integer,
357     create_date timestamp without time zone,
358     write_date timestamp without time zone,
359     write_uid integer,
360     date_init timestamp without time zone,
361     date_update timestamp without time zone,
362     module integer NOT NULL references ir_module_module on delete restrict,
363     model integer NOT NULL references ir_model on delete restrict,
364     type character varying(1) NOT NULL,
365     name character varying(128) NOT NULL
366 );
367
368 -- Records relation tables (i.e. implementing many2many) installed by a module
369 -- (so they can be removed when the module is uninstalled).
370 CREATE TABLE ir_model_relation (
371     id serial NOT NULL,
372     create_uid integer,
373     create_date timestamp without time zone,
374     write_date timestamp without time zone,
375     write_uid integer,
376     date_init timestamp without time zone,
377     date_update timestamp without time zone,
378     module integer NOT NULL references ir_module_module on delete restrict,
379     model integer NOT NULL references ir_model on delete restrict,
380     name character varying(128) NOT NULL
381 );
382
383 ---------------------------------
384 -- Users
385 ---------------------------------
386
387 insert into res_users (id,login,password,name,active,company_id,partner_id,lang) values (1,'admin','admin','Administrator',True,1,1,'en_US');
388 insert into ir_model_data (name,module,model,noupdate,res_id) values ('user_root','base','res.users',True,1);
389
390 -- Compatibility purpose, to remove V6.0
391 insert into ir_model_data (name,module,model,noupdate,res_id) values ('user_admin','base','res.users',True,1);
392
393 select setval('res_users_id_seq', 2);