]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Open-ILS/src/sql/Pg/upgrade/1232.schema.course-materials-module.sql
LP2061136 - Stamping 1405 DB upgrade script
[working/Evergreen.git] / Open-ILS / src / sql / Pg / upgrade / 1232.schema.course-materials-module.sql
1 BEGIN;
2
3 SELECT evergreen.upgrade_deps_block_check('1232', :eg_version);
4
5 CREATE TABLE asset.course_module_course (
6     id              SERIAL PRIMARY KEY,
7     name            TEXT NOT NULL,
8     course_number   TEXT NOT NULL,
9     section_number  TEXT,
10     owning_lib      INT REFERENCES actor.org_unit (id),
11     is_archived        BOOLEAN NOT NULL DEFAULT false
12 );
13
14 CREATE TABLE asset.course_module_role (
15     id              SERIAL  PRIMARY KEY,
16     name            TEXT    UNIQUE NOT NULL,
17     is_public       BOOLEAN NOT NULL DEFAULT false
18 );
19
20 CREATE TABLE asset.course_module_course_users (
21     id              SERIAL PRIMARY KEY,
22     course          INT NOT NULL REFERENCES asset.course_module_course (id),
23     usr             INT NOT NULL REFERENCES actor.usr (id),
24     usr_role        INT REFERENCES asset.course_module_role (id) ON UPDATE CASCADE ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED
25 );
26
27 CREATE TABLE asset.course_module_course_materials (
28     id              SERIAL PRIMARY KEY,
29     course          INT NOT NULL REFERENCES asset.course_module_course (id),
30     item            INT REFERENCES asset.copy (id),
31     relationship    TEXT,
32     record          INT REFERENCES biblio.record_entry (id),
33     temporary_record       BOOLEAN,
34     original_location      INT REFERENCES asset.copy_location,
35     original_status        INT REFERENCES config.copy_status,
36     original_circ_modifier TEXT, --REFERENCES config.circ_modifier
37     original_callnumber    INT REFERENCES asset.call_number,
38     unique (course, item, record)
39 );
40
41 CREATE TABLE asset.course_module_term (
42     id              SERIAL  PRIMARY KEY,
43     name            TEXT    UNIQUE NOT NULL,
44     owning_lib      INT REFERENCES actor.org_unit (id),
45     start_date      TIMESTAMP WITH TIME ZONE,
46     end_date        TIMESTAMP WITH TIME ZONE
47 );
48
49 INSERT INTO asset.course_module_role (id, name, is_public) VALUES
50 (1, oils_i18n_gettext(1, 'Instructor', 'acmr', 'name'), true),
51 (2, oils_i18n_gettext(2, 'Teaching assistant', 'acmr', 'name'), true),
52 (3, oils_i18n_gettext(2, 'Student', 'acmr', 'name'), false);
53
54 SELECT SETVAL('asset.course_module_role_id_seq'::TEXT, 100);
55
56 CREATE TABLE asset.course_module_term_course_map (
57     id              BIGSERIAL  PRIMARY KEY,
58     term            INT     NOT NULL REFERENCES asset.course_module_term (id) ON UPDATE CASCADE ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED,
59     course          INT     NOT NULL REFERENCES asset.course_module_course (id) ON UPDATE CASCADE ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED
60 );
61
62 INSERT INTO permission.perm_list(id, code, description)
63     VALUES (
64         624,
65         'MANAGE_RESERVES',
66         oils_i18n_gettext(
67             624,
68             'Allows user to manage Courses, Course Materials, and associate Users with Courses.',
69             'ppl',
70             'description'
71         )
72     );
73
74 INSERT INTO permission.grp_perm_map (grp, perm, depth, grantable)
75     SELECT
76         pgt.id, perm.id, aout.depth, TRUE
77     FROM
78         permission.grp_tree pgt,
79         permission.perm_list perm,
80         actor.org_unit_type aout
81     WHERE
82         pgt.name = 'Circulation Administrator' AND
83         aout.name = 'Consortium' AND
84         perm.code = 'MANAGE_RESERVES'
85 ;
86
87 INSERT INTO config.org_unit_setting_type 
88     (grp, name, datatype, label, description, fm_class)
89 VALUES (
90     'circ',
91     'circ.course_materials_opt_in', 'bool',
92     oils_i18n_gettext(
93         'circ.course_materials_opt_in',
94         'Opt Org Unit into the Course Materials Module',
95         'coust',
96         'label'
97     ),
98     oils_i18n_gettext(
99         'circ.course_materials_opt_in',
100         'If enabled, the Org Unit will utilize Course Material functionality.',
101         'coust',
102         'description'
103     ), null
104 ), (
105     'circ',
106     'circ.course_materials_browse_by_instructor', 'bool',
107     oils_i18n_gettext(
108         'circ.course_materials_browse_by_instructor',
109         'Allow users to browse Courses by Instructor',
110         'coust',
111         'label'
112     ),
113     oils_i18n_gettext(
114         'circ.course_materials_browse_by_instructor',
115         'If enabled, the Org Unit will allow OPAC users to browse Courses by instructor name.',
116         'coust',
117         'description'
118     ), null
119 ), (
120     'circ',
121     'circ.course_materials_brief_record_bib_source', 'link',
122     oils_i18n_gettext(
123         'circ.course_materials_brief_record_bib_source',
124         'Bib source for brief records created in the course materials module',
125         'coust', 'label'
126     ),
127     oils_i18n_gettext(
128         'circ.course_materials_brief_record_bib_source',
129         'The course materials module will use this bib source for any new brief bibliographic records made inside that module. For best results, use a transcendant bib source.',
130         'coust', 'description'
131     ), 'cbs'
132
133 );
134
135 INSERT INTO config.bib_source (quality, source, transcendant) VALUES
136     (1, oils_i18n_gettext(4, 'Course materials module', 'cbs', 'source'), TRUE);
137
138 INSERT INTO actor.org_unit_setting (org_unit, name, value)
139     SELECT 1, 'circ.course_materials_brief_record_bib_source', id
140     FROM config.bib_source
141     WHERE source='Course materials module';
142
143 COMMIT;