source: trunk/jpdd/sql/db.sql @ 591

Last change on this file since 591 was 591, checked in by dkg, 6 years ago

JPDD: allow retrieval of e-mail broadcasts (fixed SQL permissions).

File size: 24.5 KB
Line 
1--
2-- PostgreSQL database dump
3--
4
5SET client_encoding = 'UTF8';
6SET check_function_bodies = false;
7SET client_min_messages = warning;
8
9--
10-- Name: SCHEMA public; Type: COMMENT; Schema: -; Owner: postgres
11--
12
13COMMENT ON SCHEMA public IS 'Standard public schema';
14
15
16SET search_path = public, pg_catalog;
17
18SET default_tablespace = '';
19
20SET default_with_oids = false;
21
22--
23-- Name: affiliation; Type: TABLE; Schema: public; Owner: dkg; Tablespace:
24--
25
26CREATE TABLE affiliation (
27    id serial NOT NULL,
28    person_id integer NOT NULL,
29    organization_id integer NOT NULL
30);
31
32
33ALTER TABLE public.affiliation OWNER TO dkg;
34
35--
36-- Name: attendance; Type: TABLE; Schema: public; Owner: dkg; Tablespace:
37--
38
39CREATE TABLE attendance (
40    id serial NOT NULL,
41    workshop_id integer NOT NULL,
42    person_id integer NOT NULL,
43    flavor character varying NOT NULL,
44    CONSTRAINT attendance_flavor_check CHECK ((((flavor)::text = 'presenter'::text) OR ((flavor)::text = 'audience'::text)))
45);
46
47
48ALTER TABLE public.attendance OWNER TO dkg;
49
50--
51-- Name: audience; Type: VIEW; Schema: public; Owner: dkg
52--
53
54CREATE VIEW audience AS
55    SELECT attendance.workshop_id, attendance.person_id FROM attendance WHERE ((attendance.flavor)::text = 'audience'::text);
56
57
58ALTER TABLE public.audience OWNER TO dkg;
59
60--
61-- Name: organization; Type: TABLE; Schema: public; Owner: dkg; Tablespace:
62--
63
64CREATE TABLE organization (
65    id serial NOT NULL,
66    title character varying NOT NULL,
67    description text,
68    website character varying
69);
70
71
72ALTER TABLE public.organization OWNER TO dkg;
73
74--
75-- Name: audience_by_organization; Type: VIEW; Schema: public; Owner: dkg
76--
77
78CREATE VIEW audience_by_organization AS
79    SELECT affiliation.organization_id, count(*) AS count FROM ((audience LEFT JOIN affiliation ON ((audience.person_id = affiliation.person_id))) LEFT JOIN organization ON ((affiliation.organization_id = organization.id))) GROUP BY affiliation.organization_id;
80
81
82ALTER TABLE public.audience_by_organization OWNER TO dkg;
83
84--
85-- Name: broadcast; Type: TABLE; Schema: public; Owner: dkg; Tablespace:
86--
87
88CREATE TABLE broadcast (
89    id serial NOT NULL,
90    subj character varying NOT NULL,
91    body text NOT NULL,
92    selector character varying NOT NULL,
93    sender_id integer NOT NULL
94);
95
96
97ALTER TABLE public.broadcast OWNER TO dkg;
98
99--
100-- Name: category; Type: TABLE; Schema: public; Owner: dkg; Tablespace:
101--
102
103CREATE TABLE category (
104    id serial NOT NULL,
105    title character varying NOT NULL,
106    description text
107);
108
109
110ALTER TABLE public.category OWNER TO dkg;
111
112--
113-- Name: log; Type: TABLE; Schema: public; Owner: dkg; Tablespace:
114--
115
116CREATE TABLE log (
117    id serial NOT NULL,
118    date timestamp with time zone DEFAULT now() NOT NULL,
119    data text,
120    backtrace text,
121    servervars text
122);
123
124
125ALTER TABLE public.log OWNER TO dkg;
126
127--
128-- Name: mail_log; Type: TABLE; Schema: public; Owner: dkg; Tablespace:
129--
130
131CREATE TABLE mail_log (
132    id serial NOT NULL,
133    mail_from character varying NOT NULL,
134    mail_to character varying NOT NULL,
135    subject character varying NOT NULL,
136    body text NOT NULL,
137    extra_headers character varying,
138    whattime timestamp with time zone DEFAULT now() NOT NULL,
139    actually_sent boolean DEFAULT true NOT NULL,
140    message_type character varying DEFAULT 'newacct'::character varying NOT NULL,
141    broadcast_id integer
142);
143
144
145ALTER TABLE public.mail_log OWNER TO dkg;
146
147--
148-- Name: person; Type: TABLE; Schema: public; Owner: dkg; Tablespace:
149--
150
151CREATE TABLE person (
152    id serial NOT NULL,
153    first_name character varying,
154    last_name character varying,
155    email character varying,
156    middle_name character varying,
157    pass character(40),
158    session_value character(30),
159    session_touched timestamp with time zone,
160    session_created timestamp with time zone,
161    resetpass character varying(30),
162    resetpass_created timestamp with time zone,
163    CONSTRAINT person_email_check CHECK (((email)::text <> ''::text)),
164    CONSTRAINT person_first_name_check CHECK (((first_name)::text <> ''::text)),
165    CONSTRAINT person_last_name_check CHECK (((last_name)::text <> ''::text)),
166    CONSTRAINT person_middle_name_check CHECK (((middle_name)::text <> ''::text))
167);
168
169
170ALTER TABLE public.person OWNER TO dkg;
171
172--
173-- Name: person_privilege; Type: TABLE; Schema: public; Owner: dkg; Tablespace:
174--
175
176CREATE TABLE person_privilege (
177    person_id integer NOT NULL,
178    privilege_id integer NOT NULL
179);
180
181
182ALTER TABLE public.person_privilege OWNER TO dkg;
183
184--
185-- Name: post_log; Type: TABLE; Schema: public; Owner: dkg; Tablespace:
186--
187
188CREATE TABLE post_log (
189    id serial NOT NULL,
190    person_id integer,
191    whattime timestamp with time zone DEFAULT now() NOT NULL,
192    from_ip inet NOT NULL,
193    request character varying NOT NULL,
194    "action" character varying,
195    "type" character varying
196);
197
198
199ALTER TABLE public.post_log OWNER TO dkg;
200
201--
202-- Name: presenter; Type: VIEW; Schema: public; Owner: dkg
203--
204
205CREATE VIEW presenter AS
206    SELECT attendance.workshop_id, attendance.person_id FROM attendance WHERE ((attendance.flavor)::text = 'presenter'::text);
207
208
209ALTER TABLE public.presenter OWNER TO dkg;
210
211--
212-- Name: privilege; Type: TABLE; Schema: public; Owner: dkg; Tablespace:
213--
214
215CREATE TABLE privilege (
216    id serial NOT NULL,
217    title character varying NOT NULL,
218    description text
219);
220
221
222ALTER TABLE public.privilege OWNER TO dkg;
223
224--
225-- Name: room; Type: TABLE; Schema: public; Owner: dkg; Tablespace:
226--
227
228CREATE TABLE room (
229    id serial NOT NULL,
230    title character varying(20) NOT NULL,
231    description text,
232    capacity integer,
233    CONSTRAINT room_title_check CHECK (((title)::text <> ''::text))
234);
235
236
237ALTER TABLE public.room OWNER TO dkg;
238
239--
240-- Name: workshop; Type: TABLE; Schema: public; Owner: dkg; Tablespace:
241--
242
243CREATE TABLE workshop (
244    id serial NOT NULL,
245    title character varying NOT NULL,
246    short_title character varying(35),
247    description text,
248    min_attendees integer DEFAULT 5 NOT NULL,
249    max_attendees integer DEFAULT 25 NOT NULL,
250    room_id integer,
251    private_notes text,
252    CONSTRAINT workshop_check CHECK (((char_length((title)::text) <= 35) OR (short_title IS NOT NULL))),
253    CONSTRAINT workshop_check1 CHECK ((max_attendees >= min_attendees)),
254    CONSTRAINT workshop_min_attendees_check CHECK ((min_attendees >= 0)),
255    CONSTRAINT workshop_title_check CHECK (((title)::text <> ''::text))
256);
257
258
259ALTER TABLE public.workshop OWNER TO dkg;
260
261--
262-- Name: workshop_category; Type: TABLE; Schema: public; Owner: dkg; Tablespace:
263--
264
265CREATE TABLE workshop_category (
266    workshop_id integer NOT NULL,
267    category_id integer NOT NULL
268);
269
270
271ALTER TABLE public.workshop_category OWNER TO dkg;
272
273--
274-- Name: affiliation_pkey; Type: CONSTRAINT; Schema: public; Owner: dkg; Tablespace:
275--
276
277ALTER TABLE ONLY affiliation
278    ADD CONSTRAINT affiliation_pkey PRIMARY KEY (id);
279
280
281--
282-- Name: attendance_pkey; Type: CONSTRAINT; Schema: public; Owner: dkg; Tablespace:
283--
284
285ALTER TABLE ONLY attendance
286    ADD CONSTRAINT attendance_pkey PRIMARY KEY (id);
287
288
289--
290-- Name: broadcast_pkey; Type: CONSTRAINT; Schema: public; Owner: dkg; Tablespace:
291--
292
293ALTER TABLE ONLY broadcast
294    ADD CONSTRAINT broadcast_pkey PRIMARY KEY (id);
295
296
297--
298-- Name: category_pkey; Type: CONSTRAINT; Schema: public; Owner: dkg; Tablespace:
299--
300
301ALTER TABLE ONLY category
302    ADD CONSTRAINT category_pkey PRIMARY KEY (id);
303
304
305--
306-- Name: category_title_key; Type: CONSTRAINT; Schema: public; Owner: dkg; Tablespace:
307--
308
309ALTER TABLE ONLY category
310    ADD CONSTRAINT category_title_key UNIQUE (title);
311
312
313--
314-- Name: log_pkey; Type: CONSTRAINT; Schema: public; Owner: dkg; Tablespace:
315--
316
317ALTER TABLE ONLY log
318    ADD CONSTRAINT log_pkey PRIMARY KEY (id);
319
320
321--
322-- Name: mail_log_pkey; Type: CONSTRAINT; Schema: public; Owner: dkg; Tablespace:
323--
324
325ALTER TABLE ONLY mail_log
326    ADD CONSTRAINT mail_log_pkey PRIMARY KEY (id);
327
328
329--
330-- Name: no_double_attendance; Type: CONSTRAINT; Schema: public; Owner: dkg; Tablespace:
331--
332
333ALTER TABLE ONLY attendance
334    ADD CONSTRAINT no_double_attendance UNIQUE (workshop_id, person_id);
335
336
337--
338-- Name: no_double_category; Type: CONSTRAINT; Schema: public; Owner: dkg; Tablespace:
339--
340
341ALTER TABLE ONLY workshop_category
342    ADD CONSTRAINT no_double_category UNIQUE (workshop_id, category_id);
343
344
345--
346-- Name: no_double_privileges; Type: CONSTRAINT; Schema: public; Owner: dkg; Tablespace:
347--
348
349ALTER TABLE ONLY person_privilege
350    ADD CONSTRAINT no_double_privileges UNIQUE (person_id, privilege_id);
351
352
353--
354-- Name: organization_name_key; Type: CONSTRAINT; Schema: public; Owner: dkg; Tablespace:
355--
356
357ALTER TABLE ONLY organization
358    ADD CONSTRAINT organization_name_key UNIQUE (title);
359
360
361--
362-- Name: organization_pkey; Type: CONSTRAINT; Schema: public; Owner: dkg; Tablespace:
363--
364
365ALTER TABLE ONLY organization
366    ADD CONSTRAINT organization_pkey PRIMARY KEY (id);
367
368
369--
370-- Name: person_email_unique; Type: CONSTRAINT; Schema: public; Owner: dkg; Tablespace:
371--
372
373ALTER TABLE ONLY person
374    ADD CONSTRAINT person_email_unique UNIQUE (email);
375
376
377--
378-- Name: person_pkey; Type: CONSTRAINT; Schema: public; Owner: dkg; Tablespace:
379--
380
381ALTER TABLE ONLY person
382    ADD CONSTRAINT person_pkey PRIMARY KEY (id);
383
384
385--
386-- Name: post_log_pkey; Type: CONSTRAINT; Schema: public; Owner: dkg; Tablespace:
387--
388
389ALTER TABLE ONLY post_log
390    ADD CONSTRAINT post_log_pkey PRIMARY KEY (id);
391
392
393--
394-- Name: privilege_name_key; Type: CONSTRAINT; Schema: public; Owner: dkg; Tablespace:
395--
396
397ALTER TABLE ONLY privilege
398    ADD CONSTRAINT privilege_name_key UNIQUE (title);
399
400
401--
402-- Name: privilege_pkey; Type: CONSTRAINT; Schema: public; Owner: dkg; Tablespace:
403--
404
405ALTER TABLE ONLY privilege
406    ADD CONSTRAINT privilege_pkey PRIMARY KEY (id);
407
408
409--
410-- Name: room_pkey; Type: CONSTRAINT; Schema: public; Owner: dkg; Tablespace:
411--
412
413ALTER TABLE ONLY room
414    ADD CONSTRAINT room_pkey PRIMARY KEY (id);
415
416
417--
418-- Name: unique_room_title; Type: CONSTRAINT; Schema: public; Owner: dkg; Tablespace:
419--
420
421ALTER TABLE ONLY room
422    ADD CONSTRAINT unique_room_title UNIQUE (title);
423
424
425--
426-- Name: workshop_pkey; Type: CONSTRAINT; Schema: public; Owner: dkg; Tablespace:
427--
428
429ALTER TABLE ONLY workshop
430    ADD CONSTRAINT workshop_pkey PRIMARY KEY (id);
431
432
433--
434-- Name: workshop_room_id_key; Type: CONSTRAINT; Schema: public; Owner: dkg; Tablespace:
435--
436
437ALTER TABLE ONLY workshop
438    ADD CONSTRAINT workshop_room_id_key UNIQUE (room_id);
439
440
441--
442-- Name: workshop_title_key; Type: CONSTRAINT; Schema: public; Owner: dkg; Tablespace:
443--
444
445ALTER TABLE ONLY workshop
446    ADD CONSTRAINT workshop_title_key UNIQUE (title);
447
448
449--
450-- Name: audience_delete; Type: RULE; Schema: public; Owner: dkg
451--
452
453CREATE RULE audience_delete AS ON DELETE TO audience DO INSTEAD DELETE FROM attendance WHERE (((attendance.person_id = old.person_id) AND (attendance.workshop_id = old.workshop_id)) AND ((attendance.flavor)::text = 'audience'::text));
454
455
456--
457-- Name: audience_insert; Type: RULE; Schema: public; Owner: dkg
458--
459
460CREATE RULE audience_insert AS ON INSERT TO audience DO INSTEAD INSERT INTO attendance (person_id, workshop_id, flavor) VALUES (new.person_id, new.workshop_id, 'audience'::character varying);
461
462
463--
464-- Name: presenter_delete; Type: RULE; Schema: public; Owner: dkg
465--
466
467CREATE RULE presenter_delete AS ON DELETE TO presenter DO INSTEAD DELETE FROM attendance WHERE (((attendance.person_id = old.person_id) AND (attendance.workshop_id = old.workshop_id)) AND ((attendance.flavor)::text = 'presenter'::text));
468
469
470--
471-- Name: presenter_insert; Type: RULE; Schema: public; Owner: dkg
472--
473
474CREATE RULE presenter_insert AS ON INSERT TO presenter DO INSTEAD INSERT INTO attendance (person_id, workshop_id, flavor) VALUES (new.person_id, new.workshop_id, 'presenter'::character varying);
475
476
477--
478-- Name: affiliation_organization_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: dkg
479--
480
481ALTER TABLE ONLY affiliation
482    ADD CONSTRAINT affiliation_organization_id_fkey FOREIGN KEY (organization_id) REFERENCES organization(id);
483
484
485--
486-- Name: affiliation_person_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: dkg
487--
488
489ALTER TABLE ONLY affiliation
490    ADD CONSTRAINT affiliation_person_id_fkey FOREIGN KEY (person_id) REFERENCES person(id);
491
492
493--
494-- Name: attendance_person_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: dkg
495--
496
497ALTER TABLE ONLY attendance
498    ADD CONSTRAINT attendance_person_id_fkey FOREIGN KEY (person_id) REFERENCES person(id);
499
500
501--
502-- Name: attendance_workshop_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: dkg
503--
504
505ALTER TABLE ONLY attendance
506    ADD CONSTRAINT attendance_workshop_id_fkey FOREIGN KEY (workshop_id) REFERENCES workshop(id);
507
508
509--
510-- Name: broadcast_sender_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: dkg
511--
512
513ALTER TABLE ONLY broadcast
514    ADD CONSTRAINT broadcast_sender_id_fkey FOREIGN KEY (sender_id) REFERENCES person(id);
515
516
517--
518-- Name: mail_log_broadcast_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: dkg
519--
520
521ALTER TABLE ONLY mail_log
522    ADD CONSTRAINT mail_log_broadcast_id_fkey FOREIGN KEY (broadcast_id) REFERENCES broadcast(id);
523
524
525--
526-- Name: person_privilege_person_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: dkg
527--
528
529ALTER TABLE ONLY person_privilege
530    ADD CONSTRAINT person_privilege_person_id_fkey FOREIGN KEY (person_id) REFERENCES person(id);
531
532
533--
534-- Name: person_privilege_privilege_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: dkg
535--
536
537ALTER TABLE ONLY person_privilege
538    ADD CONSTRAINT person_privilege_privilege_id_fkey FOREIGN KEY (privilege_id) REFERENCES privilege(id);
539
540
541--
542-- Name: post_log_person_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: dkg
543--
544
545ALTER TABLE ONLY post_log
546    ADD CONSTRAINT post_log_person_id_fkey FOREIGN KEY (person_id) REFERENCES person(id);
547
548
549--
550-- Name: workshop_category_category_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: dkg
551--
552
553ALTER TABLE ONLY workshop_category
554    ADD CONSTRAINT workshop_category_category_id_fkey FOREIGN KEY (category_id) REFERENCES category(id);
555
556
557--
558-- Name: workshop_category_workshop_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: dkg
559--
560
561ALTER TABLE ONLY workshop_category
562    ADD CONSTRAINT workshop_category_workshop_id_fkey FOREIGN KEY (workshop_id) REFERENCES workshop(id);
563
564
565--
566-- Name: workshop_room_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: dkg
567--
568
569ALTER TABLE ONLY workshop
570    ADD CONSTRAINT workshop_room_id_fkey FOREIGN KEY (room_id) REFERENCES room(id);
571
572
573--
574-- Name: public; Type: ACL; Schema: -; Owner: postgres
575--
576
577REVOKE ALL ON SCHEMA public FROM PUBLIC;
578REVOKE ALL ON SCHEMA public FROM postgres;
579GRANT ALL ON SCHEMA public TO postgres;
580GRANT ALL ON SCHEMA public TO PUBLIC;
581
582
583--
584-- Name: affiliation; Type: ACL; Schema: public; Owner: dkg
585--
586
587REVOKE ALL ON TABLE affiliation FROM PUBLIC;
588REVOKE ALL ON TABLE affiliation FROM dkg;
589GRANT ALL ON TABLE affiliation TO dkg;
590GRANT INSERT,SELECT,DELETE ON TABLE affiliation TO "www-data";
591
592
593--
594-- Name: affiliation_id_seq; Type: ACL; Schema: public; Owner: dkg
595--
596
597REVOKE ALL ON TABLE affiliation_id_seq FROM PUBLIC;
598REVOKE ALL ON TABLE affiliation_id_seq FROM dkg;
599GRANT ALL ON TABLE affiliation_id_seq TO dkg;
600GRANT UPDATE ON TABLE affiliation_id_seq TO "www-data";
601
602
603--
604-- Name: attendance; Type: ACL; Schema: public; Owner: dkg
605--
606
607REVOKE ALL ON TABLE attendance FROM PUBLIC;
608REVOKE ALL ON TABLE attendance FROM dkg;
609GRANT ALL ON TABLE attendance TO dkg;
610GRANT INSERT,SELECT,DELETE ON TABLE attendance TO "www-data";
611
612
613--
614-- Name: attendance_id_seq; Type: ACL; Schema: public; Owner: dkg
615--
616
617REVOKE ALL ON TABLE attendance_id_seq FROM PUBLIC;
618REVOKE ALL ON TABLE attendance_id_seq FROM dkg;
619GRANT ALL ON TABLE attendance_id_seq TO dkg;
620GRANT SELECT,UPDATE ON TABLE attendance_id_seq TO "www-data";
621
622
623--
624-- Name: audience; Type: ACL; Schema: public; Owner: dkg
625--
626
627REVOKE ALL ON TABLE audience FROM PUBLIC;
628REVOKE ALL ON TABLE audience FROM dkg;
629GRANT ALL ON TABLE audience TO dkg;
630GRANT INSERT,SELECT,DELETE ON TABLE audience TO "www-data";
631
632
633--
634-- Name: organization; Type: ACL; Schema: public; Owner: dkg
635--
636
637REVOKE ALL ON TABLE organization FROM PUBLIC;
638REVOKE ALL ON TABLE organization FROM dkg;
639GRANT ALL ON TABLE organization TO dkg;
640GRANT INSERT,SELECT,UPDATE ON TABLE organization TO "www-data";
641
642
643--
644-- Name: broadcast; Type: ACL; Schema: public; Owner: dkg
645--
646
647REVOKE ALL ON TABLE broadcast FROM PUBLIC;
648REVOKE ALL ON TABLE broadcast FROM dkg;
649GRANT ALL ON TABLE broadcast TO dkg;
650GRANT INSERT ON TABLE broadcast TO "www-data";
651
652
653--
654-- Name: broadcast_id_seq; Type: ACL; Schema: public; Owner: dkg
655--
656
657REVOKE ALL ON TABLE broadcast_id_seq FROM PUBLIC;
658REVOKE ALL ON TABLE broadcast_id_seq FROM dkg;
659GRANT ALL ON TABLE broadcast_id_seq TO dkg;
660GRANT SELECT,UPDATE ON TABLE broadcast_id_seq TO "www-data";
661
662
663--
664-- Name: category; Type: ACL; Schema: public; Owner: dkg
665--
666
667REVOKE ALL ON TABLE category FROM PUBLIC;
668REVOKE ALL ON TABLE category FROM dkg;
669GRANT ALL ON TABLE category TO dkg;
670GRANT INSERT,SELECT,UPDATE ON TABLE category TO "www-data";
671
672
673--
674-- Name: category_id_seq; Type: ACL; Schema: public; Owner: dkg
675--
676
677REVOKE ALL ON TABLE category_id_seq FROM PUBLIC;
678REVOKE ALL ON TABLE category_id_seq FROM dkg;
679GRANT ALL ON TABLE category_id_seq TO dkg;
680GRANT SELECT,UPDATE ON TABLE category_id_seq TO "www-data";
681
682
683--
684-- Name: log; Type: ACL; Schema: public; Owner: dkg
685--
686
687REVOKE ALL ON TABLE log FROM PUBLIC;
688REVOKE ALL ON TABLE log FROM dkg;
689GRANT ALL ON TABLE log TO dkg;
690GRANT INSERT ON TABLE log TO "www-data";
691
692
693--
694-- Name: log_id_seq; Type: ACL; Schema: public; Owner: dkg
695--
696
697REVOKE ALL ON TABLE log_id_seq FROM PUBLIC;
698REVOKE ALL ON TABLE log_id_seq FROM dkg;
699GRANT ALL ON TABLE log_id_seq TO dkg;
700GRANT SELECT,UPDATE ON TABLE log_id_seq TO "www-data";
701
702
703--
704-- Name: mail_log; Type: ACL; Schema: public; Owner: dkg
705--
706
707REVOKE ALL ON TABLE mail_log FROM PUBLIC;
708REVOKE ALL ON TABLE mail_log FROM dkg;
709GRANT ALL ON TABLE mail_log TO dkg;
710GRANT INSERT ON TABLE mail_log TO "www-data";
711
712
713--
714-- Name: mail_log_id_seq; Type: ACL; Schema: public; Owner: dkg
715--
716
717REVOKE ALL ON TABLE mail_log_id_seq FROM PUBLIC;
718REVOKE ALL ON TABLE mail_log_id_seq FROM dkg;
719GRANT ALL ON TABLE mail_log_id_seq TO dkg;
720GRANT INSERT,UPDATE ON TABLE mail_log_id_seq TO "www-data";
721
722
723--
724-- Name: organization_id_seq; Type: ACL; Schema: public; Owner: dkg
725--
726
727REVOKE ALL ON TABLE organization_id_seq FROM PUBLIC;
728REVOKE ALL ON TABLE organization_id_seq FROM dkg;
729GRANT ALL ON TABLE organization_id_seq TO dkg;
730GRANT SELECT,UPDATE ON TABLE organization_id_seq TO "www-data";
731
732
733--
734-- Name: person; Type: ACL; Schema: public; Owner: dkg
735--
736
737REVOKE ALL ON TABLE person FROM PUBLIC;
738REVOKE ALL ON TABLE person FROM dkg;
739GRANT ALL ON TABLE person TO dkg;
740GRANT INSERT,SELECT,UPDATE ON TABLE person TO "www-data";
741
742
743--
744-- Name: person_id_seq; Type: ACL; Schema: public; Owner: dkg
745--
746
747REVOKE ALL ON TABLE person_id_seq FROM PUBLIC;
748REVOKE ALL ON TABLE person_id_seq FROM dkg;
749GRANT ALL ON TABLE person_id_seq TO dkg;
750GRANT SELECT,UPDATE ON TABLE person_id_seq TO "www-data";
751
752
753--
754-- Name: person_privilege; Type: ACL; Schema: public; Owner: dkg
755--
756
757REVOKE ALL ON TABLE person_privilege FROM PUBLIC;
758REVOKE ALL ON TABLE person_privilege FROM dkg;
759GRANT ALL ON TABLE person_privilege TO dkg;
760GRANT SELECT ON TABLE person_privilege TO "www-data";
761
762
763--
764-- Name: presenter; Type: ACL; Schema: public; Owner: dkg
765--
766
767REVOKE ALL ON TABLE presenter FROM PUBLIC;
768REVOKE ALL ON TABLE presenter FROM dkg;
769GRANT ALL ON TABLE presenter TO dkg;
770GRANT INSERT,SELECT,DELETE ON TABLE presenter TO "www-data";
771
772
773--
774-- Name: privilege; Type: ACL; Schema: public; Owner: dkg
775--
776
777REVOKE ALL ON TABLE privilege FROM PUBLIC;
778REVOKE ALL ON TABLE privilege FROM dkg;
779GRANT ALL ON TABLE privilege TO dkg;
780GRANT SELECT ON TABLE privilege TO "www-data";
781
782
783--
784-- Name: room; Type: ACL; Schema: public; Owner: dkg
785--
786
787REVOKE ALL ON TABLE room FROM PUBLIC;
788REVOKE ALL ON TABLE room FROM dkg;
789GRANT ALL ON TABLE room TO dkg;
790GRANT INSERT,SELECT,UPDATE,DELETE ON TABLE room TO "www-data";
791
792
793--
794-- Name: room_id_seq; Type: ACL; Schema: public; Owner: dkg
795--
796
797REVOKE ALL ON TABLE room_id_seq FROM PUBLIC;
798REVOKE ALL ON TABLE room_id_seq FROM dkg;
799GRANT ALL ON TABLE room_id_seq TO dkg;
800GRANT SELECT,UPDATE ON TABLE room_id_seq TO "www-data";
801
802
803--
804-- Name: workshop; Type: ACL; Schema: public; Owner: dkg
805--
806
807REVOKE ALL ON TABLE workshop FROM PUBLIC;
808REVOKE ALL ON TABLE workshop FROM dkg;
809GRANT ALL ON TABLE workshop TO dkg;
810GRANT INSERT,SELECT,UPDATE ON TABLE workshop TO "www-data";
811
812
813--
814-- Name: workshop_category; Type: ACL; Schema: public; Owner: dkg
815--
816
817REVOKE ALL ON TABLE workshop_category FROM PUBLIC;
818REVOKE ALL ON TABLE workshop_category FROM dkg;
819GRANT ALL ON TABLE workshop_category TO dkg;
820GRANT INSERT,SELECT,DELETE ON TABLE workshop_category TO "www-data";
821
822
823--
824-- Name: workshop_id_seq; Type: ACL; Schema: public; Owner: dkg
825--
826
827REVOKE ALL ON TABLE workshop_id_seq FROM PUBLIC;
828REVOKE ALL ON TABLE workshop_id_seq FROM dkg;
829GRANT ALL ON TABLE workshop_id_seq TO dkg;
830GRANT SELECT,UPDATE ON TABLE workshop_id_seq TO "www-data";
831
832
833--
834-- PostgreSQL database dump complete
835--
836
837
838
839CREATE OR REPLACE VIEW workshop_columns AS SELECT workshop_id,
840 SUM(CASE WHEN category_id IN(9) THEN 1 ELSE 0 END) > 0 AS math,
841 SUM(CASE WHEN category_id IN(15) THEN 1 ELSE 0 END) > 0 AS art,
842 SUM(CASE WHEN category_id IN(11) THEN 1 ELSE 0 END) > 0 AS science,
843 SUM(CASE WHEN category_id IN(12) THEN 1 ELSE 0 END) > 0 AS history,
844 SUM(CASE WHEN category_id IN(25) THEN 1 ELSE 0 END) > 0 AS english,
845 SUM(CASE WHEN category_id IN(30) THEN 1 ELSE 0 END) > 0 AS unione
846  FROM workshop_category GROUP BY workshop_id;
847
848CREATE OR REPLACE VIEW pommo_import AS SELECT first_name, middle_name, last_name, email, workshop_columns.*, organization.shortname AS school, organization.id = 31 as gates, organization.id = 9 as consortium from person LEFT JOIN attendance ON (person.id = person_id) LEFT JOIN workshop_columns USING (workshop_id) LEFT JOIN affiliation ON (person.id = affiliation.person_id) LEFT JOIN organization ON (organization_id = organization.id) ORDER BY last_name,first_name;
849
850
851CREATE VIEW pv AS select MAX(first) as first, MAX(mid) as mid, MAX(last) as last, email, MAX(school) as school, 
852 SUM(CASE WHEN lower(tag) LIKE '%math%' THEN 1 ELSE 0 END) > 0 AS math,
853 SUM(CASE WHEN lower(tag) LIKE '%history%' THEN 1 ELSE 0 END) > 0 AS history,
854 SUM(CASE WHEN lower(tag) LIKE '%science%' THEN 1 ELSE 0 END) > 0 AS science,
855 SUM(CASE WHEN lower(tag) LIKE '%art%' THEN 1 ELSE 0 END) > 0 AS art,
856 SUM(CASE WHEN lower(tag) LIKE '%english%' THEN 1 ELSE 0 END) > 0 AS english,
857 SUM(CASE WHEN lower(tag) LIKE '%gates%' THEN 1 ELSE 0 END) > 0 AS gates,
858 SUM(CASE WHEN lower(tag) LIKE '%empire%' THEN 1 ELSE 0 END) > 0 AS empire,
859 SUM(CASE WHEN lower(tag) LIKE '%admin%' THEN 1 ELSE 0 END) > 0 AS admin,
860 SUM(CASE WHEN lower(tag) LIKE '%amerhistgrant%' THEN 1 ELSE 0 END) > 0 AS amerhistgrant,
861 SUM(CASE WHEN lower(tag) LIKE '%network%' THEN 1 ELSE 0 END) > 0 AS network
862 from pp LEFT JOIN pt ON (pp.id = pp_id)  GROUP BY email;
863
864CREATE TABLE event (
865 id serial NOT NULL PRIMARY KEY,
866 title text NOT NULL,
867 start_time timestamp with time zone NOT NULL,
868 end_time timestamp with time zone NOT NULL
869);
870
871ALTER TABLE workshop ADD COLUMN event_id int;
872ALTER TABLE workshop ADD CONSTRAINT workshop_event_fkey FOREIGN KEY (event_id) REFERENCES event(id);
873
874-- fix existing columns here
875ALTER TABLE workshop ALTER COLUMN event_id SET NOT NULL;
876
877ALTER TABLE event ADD COLUMN description text;
878ALTER TABLE event ADD COLUMN motto text;
879
880CREATE TABLE role (id serial NOT NULL PRIMARY KEY, title text NOT NULL UNIQUE, description text, require_org bool NOT NULL DEFAULT true);
881
882CREATE TABLE person_role (
883id serial NOT NULL PRIMARY KEY, 
884event_id int NOT NULL REFERENCES event(id),
885person_id int NOT NULL REFERENCES person(id),
886organization_id int REFERENCES organization(id),
887role_id int NOT NULL REFERENCES role(id)
888);
889
890
891CREATE TABLE attendance_requirements (
892id serial NOT NULL PRIMARY KEY,
893category_id int NOT NULL REFERENCES category(id), 
894event_id int NOT NULL REFERENCES event(id),
895minimum int NOT NULL,
896maximum int NOT NULL,
897    CONSTRAINT attendence_requirements_reasonable_limits CHECK (minimum <= maximum)
898);
899
900CREATE TABLE application (
901id serial NOT NULL PRIMARY KEY,
902event_id int NOT NULL REFERENCES event(id),
903person_id int NOT NULL REFERENCES person(id),
904category_id int REFERENCES category(id)
905);
906
907-- record who created a person (if NULL, the account is most likely self-created):
908ALTER TABLE person ADD COLUMN created_by int REFERENCES person(id);
909
910-- fix up permissions:
911
912GRANT SELECT,INSERT,UPDATE ON event TO "www-data";
913GRANT SELECT,UPDATE ON event_id_seq TO "www-data";
914GRANT SELECT,INSERT,UPDATE ON role TO "www-data";
915GRANT SELECT,UPDATE ON role_id_seq TO "www-data";
916GRANT INSERT,UPDATE,DELETE ON person_role TO "www-data";
917GRANT SELECT,UPDATE ON person_role_id_seq TO "www-data";
918GRANT SELECT,INSERT,UPDATE,DELETE ON application TO "www-data";
919GRANT SELECT,UPDATE ON application_id_seq TO "www-data";
920GRANT SELECT ON attendance_requirements TO "www-data";
921GRANT SELECT ON broadcast TO "www-data";
922GRANT SELECT ON mail_log TO "www-data";
Note: See TracBrowser for help on using the repository browser.