[IMP] res_users: removed hack about redirecting the fields view get. Added a simplifi...
[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     active boolean default True,
150     login varchar(64) NOT NULL UNIQUE,
151     password varchar(64) default null,
152     tz varchar(64) default null,
153     lang varchar(64) default '',
154     -- No FK references below, will be added later by ORM
155     -- (when the destination rows exist)
156     company_id int,
157     partner_id int,
158     primary key(id)
159 );
160 alter table res_users add constraint res_users_login_uniq unique (login);
161
162 CREATE TABLE res_groups (
163     id serial NOT NULL,
164     name varchar(64) NOT NULL,
165     primary key(id)
166 );
167
168 CREATE TABLE res_groups_users_rel (
169     uid integer NOT NULL references res_users on delete cascade,
170     gid integer NOT NULL references res_groups on delete cascade,
171     UNIQUE("uid","gid")
172 );
173
174 create index res_groups_users_rel_uid_idx on res_groups_users_rel (uid);
175 create index res_groups_users_rel_gid_idx on res_groups_users_rel (gid);
176
177
178 ---------------------------------
179 -- Workflows
180 ---------------------------------
181
182 create table wkf
183 (
184     id serial,
185     name varchar(64),
186     osv varchar(64),
187     on_create bool default False,
188     primary key(id)
189 );
190
191 create table wkf_activity
192 (
193     id serial,
194     wkf_id int references wkf on delete cascade,
195     subflow_id int references wkf on delete set null,
196     split_mode varchar(3) default 'XOR',
197     join_mode varchar(3) default 'XOR',
198     kind varchar(16) not null default 'dummy',
199     name varchar(64),
200     signal_send varchar(32) default null,
201     flow_start boolean default False,
202     flow_stop boolean default False,
203     action text default null,
204     primary key(id)
205 );
206
207 create table wkf_transition
208 (
209     id serial,
210     act_from int references wkf_activity on delete cascade,
211     act_to int references wkf_activity on delete cascade,
212     condition varchar(128) default NULL,
213
214     trigger_type varchar(128) default NULL,
215     trigger_expr_id varchar(128) default NULL,
216
217     signal varchar(64) default null,
218     group_id int references res_groups on delete set null,
219
220     primary key(id)
221 );
222
223 create table wkf_instance
224 (
225     id serial,
226     wkf_id int references wkf on delete restrict,
227     uid int default null,
228     res_id int not null,
229     res_type varchar(64) not null,
230     state varchar(32) not null default 'active',
231     primary key(id)
232 );
233
234 create table wkf_workitem
235 (
236     id serial,
237     act_id int not null references wkf_activity on delete cascade,
238     inst_id int not null references wkf_instance on delete cascade,
239     subflow_id int references wkf_instance on delete cascade,
240     state varchar(64) default 'blocked',
241     primary key(id)
242 );
243
244 create table wkf_witm_trans
245 (
246     trans_id int not null references wkf_transition on delete cascade,
247     inst_id int not null references wkf_instance on delete cascade
248 );
249
250 create index wkf_witm_trans_inst_idx on wkf_witm_trans (inst_id);
251
252 create table wkf_logs
253 (
254     id serial,
255     res_type varchar(128) not null,
256     res_id int not null,
257     uid int references res_users on delete set null,
258     act_id int references wkf_activity on delete set null,
259     time time not null,
260     info varchar(128) default NULL,
261     primary key(id)
262 );
263
264 ---------------------------------
265 -- Modules
266 ---------------------------------
267
268 CREATE TABLE ir_module_category (
269     id serial NOT NULL,
270     create_uid integer references res_users on delete set null,
271     create_date timestamp without time zone,
272     write_date timestamp without time zone,
273     write_uid integer references res_users on delete set null,
274     parent_id integer REFERENCES ir_module_category ON DELETE SET NULL,
275     name character varying(128) NOT NULL,
276     primary key(id)
277 );
278
279
280 CREATE TABLE ir_module_module (
281     id serial NOT NULL,
282     create_uid integer references res_users on delete set null,
283     create_date timestamp without time zone,
284     write_date timestamp without time zone,
285     write_uid integer references res_users on delete set null,
286     website character varying(256),
287     summary character varying(256),
288     name character varying(128) NOT NULL,
289     author character varying(128),
290     url character varying(128),
291     icon character varying(64),
292     state character varying(16),
293     latest_version character varying(64),
294     shortdesc character varying(256),
295     complexity character varying(32),
296     category_id integer REFERENCES ir_module_category ON DELETE SET NULL,
297     description text,
298     application boolean default False,
299     demo boolean default False,
300     web boolean DEFAULT FALSE,
301     license character varying(32),
302     sequence integer DEFAULT 100,
303     auto_install boolean default False,
304     primary key(id)
305 );
306 ALTER TABLE ir_module_module add constraint name_uniq unique (name);
307
308 CREATE TABLE ir_module_module_dependency (
309     id serial NOT NULL,
310     create_uid integer references res_users on delete set null,
311     create_date timestamp without time zone,
312     write_date timestamp without time zone,
313     write_uid integer references res_users on delete set null,
314     name character varying(128),
315     version_pattern character varying(128) default NULL,
316     module_id integer REFERENCES ir_module_module ON DELETE cascade,
317     primary key(id)
318 );
319
320 CREATE TABLE res_company (
321     id serial NOT NULL,
322     name character varying(64) not null,
323     parent_id integer references res_company on delete set null,
324     primary key(id)
325 );
326
327 CREATE TABLE res_lang (
328     id serial PRIMARY KEY,
329     name VARCHAR(64) NOT NULL UNIQUE,
330     code VARCHAR(16) NOT NULL UNIQUE
331 );
332
333 CREATE TABLE ir_model_data (
334     id serial NOT NULL,
335     create_uid integer,
336     create_date timestamp without time zone,
337     write_date timestamp without time zone,
338     write_uid integer,
339     noupdate boolean,
340     name character varying(128) NOT NULL,
341     date_init timestamp without time zone,
342     date_update timestamp without time zone,
343     module character varying(64) NOT NULL,
344     model character varying(64) NOT NULL,
345     res_id integer, primary key(id)
346 );
347
348 -- Records foreign keys and constraints installed by a module (so they can be
349 -- removed when the module is uninstalled):
350 --   - for a foreign key: type is 'f',
351 --   - for a constraint: type is 'u' (this is the convention PostgreSQL uses).
352 CREATE TABLE ir_model_constraint (
353     id serial NOT NULL,
354     create_uid integer,
355     create_date timestamp without time zone,
356     write_date timestamp without time zone,
357     write_uid integer,
358     date_init timestamp without time zone,
359     date_update timestamp without time zone,
360     module integer NOT NULL references ir_module_module on delete restrict,
361     model integer NOT NULL references ir_model on delete restrict,
362     type character varying(1) NOT NULL,
363     name character varying(128) NOT NULL
364 );
365
366 -- Records relation tables (i.e. implementing many2many) installed by a module
367 -- (so they can be removed when the module is uninstalled).
368 CREATE TABLE ir_model_relation (
369     id serial NOT NULL,
370     create_uid integer,
371     create_date timestamp without time zone,
372     write_date timestamp without time zone,
373     write_uid integer,
374     date_init timestamp without time zone,
375     date_update timestamp without time zone,
376     module integer NOT NULL references ir_module_module on delete restrict,
377     model integer NOT NULL references ir_model on delete restrict,
378     name character varying(128) NOT NULL
379 );
380
381 ---------------------------------
382 -- Users
383 ---------------------------------
384
385 insert into res_users (id,login,password,active,company_id,partner_id,lang) values (1,'admin','admin',True,1,1,'en_US');
386 insert into ir_model_data (name,module,model,noupdate,res_id) values ('user_root','base','res.users',True,1);
387
388 -- Compatibility purpose, to remove V6.0
389 insert into ir_model_data (name,module,model,noupdate,res_id) values ('user_admin','base','res.users',True,1);
390
391 select setval('res_users_id_seq', 2);