Course Modules - Course Materials Asset
authorKyle Huckins <khuckins@catalyte.io>
Mon, 21 Oct 2019 19:55:38 +0000 (19:55 +0000)
committerJane Sandberg <sandbej@linnbenton.edu>
Sat, 8 Aug 2020 15:20:32 +0000 (08:20 -0700)
- Create IDL Class & Table for Course Materials
- Create IDL Class & Table for Non-Cataloged Course Materials

Signed-off-by: Kyle Huckins <khuckins@catalyte.io>
 Changes to be committed:
modified:   Open-ILS/examples/fm_IDL.xml
modified:   Open-ILS/src/sql/Pg/040.schema.asset.sql
modified:   Open-ILS/src/sql/Pg/upgrade/XXXX.schema.course-materials-module.sql

Open-ILS/examples/fm_IDL.xml
Open-ILS/src/sql/Pg/040.schema.asset.sql
Open-ILS/src/sql/Pg/upgrade/XXXX.schema.course-materials-module.sql

index 01c72ca..c4985a0 100644 (file)
@@ -3057,10 +3057,14 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
             <field reporter:label="Section Number" name="section_number" reporter:datatype="text" />
             <field reporter:label="Owning Library" name="owning_lib" reporter:datatype="link" />
             <field reporter:label="Course Members" name="members" oils_persist:virtual="true" reporter:datatype="link" />
+            <field reporter:label="Course Materials" name="materials" oils_persist:virtual="true" reporter:datatype="link" />
+            <field reporter:label="Non-Cataloged Course Materials" name="non_cat_materials" oils_persist:virtual="true" reporter:datatype="link" />
         </fields>
         <links>
             <link field="owning_lib" reltype="has_a" key="id" map="" class="aou" />
             <link field="members" reltype="has_many" key="course" map="" class="acmcu" />
+            <link field="materials" reltype="has_many" key="course" map="" class="acmcm" />
+            <link field="non_cat_materials" reltype="has_many" key="course" map="" class="acmncm" />
         </links>
         <permacrud xmlns="http://open-ils.org/spec/opensrf/IDL/permacrud/v1">
             <actions>
@@ -3097,6 +3101,58 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
             </actions>
         </permacrud>
     </class>
+    <class id="acmcm" controller="open-ils.cstore open-ils.pcrud" oils_obj:fieldmapper="asset::course_module_course_materials" oils_persist:tablename="asset.course_module_course_materials" reporter:label="Course Materials">
+        <fields oils_persist:primary="id" oils_persist:sequence="asset.course_module_course_materials_id_seq">
+            <field reporter:label="ID" name="id" reporter:datatype="id" />
+            <field reporter:label="Course" name="course" reporter:datatype="link" />
+            <field reporter:label="Item" name="item" reporter:datatype="link" />
+            <field reporter:label="Item Relationship" name="relationship" reporter:datatype="text" />
+        </fields>
+        <links>
+            <link field="course" reltype="has_a" key="id" map="" class="acmc" />
+            <link field="item" reltype="has_a" key="id" map="" class="acp" />
+        </links>
+        <permacrud xmlns="http://open-ils.org/spec/opensrf/IDL/permacrud/v1">
+            <actions>
+                <create permission="MANAGE_RESERVES">
+                                       <context link="course" field="owning_lib" />
+                </create>
+                <retrieve/>
+                <update permission="MANAGE_RESERVES">
+                                       <context link="course" field="owning_lib" />
+                </update>
+                <delete permission="MANAGE_RESERVES">
+                                       <context link="course" field="owning_lib" />
+                </delete>
+            </actions>
+        </permacrud>
+    </class>
+    <class id="acmncm" controller="open-ils.cstore open-ils.pcrud" oils_obj:fieldmapper="asset::course_module_course_materials" oils_persist:tablename="asset.course_module_non-cat-course_materials" reporter:label="Non-Cataloged Course Materials">
+        <fields oils_persist:primary="id" oils_persist:sequence="asset.course_module_course_materials_id_seq">
+            <field reporter:label="ID" name="id" reporter:datatype="id" />
+            <field reporter:label="Course" name="course" reporter:datatype="link" />
+            <field reporter:label="Title" name="title" reporter:datatype="text" />
+            <field reporter:label="URL" name="url" reporter:datatype="text" />
+            <field reporter:label="Item Relationship" name="relationship" reporter:datatype="text" />
+        </fields>
+        <links>
+            <link field="course" reltype="has_a" key="id" map="" class="acmc" />
+        </links>
+        <permacrud xmlns="http://open-ils.org/spec/opensrf/IDL/permacrud/v1">
+            <actions>
+                <create permission="MANAGE_RESERVES">
+                                       <context link="course" field="owning_lib" />
+                </create>
+                <retrieve/>
+                <update permission="MANAGE_RESERVES">
+                                       <context link="course" field="owning_lib" />
+                </update>
+                <delete permission="MANAGE_RESERVES">
+                                       <context link="course" field="owning_lib" />
+                </delete>
+            </actions>
+        </permacrud>
+    </class>
     <class id="acnc" controller="open-ils.cstore open-ils.pcrud" oils_obj:fieldmapper="asset::call_number_class" oils_persist:tablename="asset.call_number_class" reporter:label="Call number classification scheme">
         <fields oils_persist:primary="id" oils_persist:sequence="asset.call_number_class_id_seq">
             <field reporter:label="Call number class ID" name="id" reporter:datatype="id"/>
index 10c5b88..2d21799 100644 (file)
@@ -1120,5 +1120,20 @@ CREATE TABLE asset.course_module_course_users (
     usr_role        TEXT
 );
 
+CREATE TABLE asset.course_module_course_materials (
+    id              SERIAL PRIMARY KEY,
+    course          INT NOT NULL REFERENCES asset.course_module_course (id),
+    item            INT NOT NULL REFERENCES asset.copy (id),
+    relationship    TEXT
+);
+
+CREATE TABLE asset.course_module_non_cat_course_materials (
+    id              SERIAL PRIMARY KEY,
+    course          INT NOT NULL REFERENCES asset.course_module_course (id),
+    item            TEXT NOT NULL,
+    url             TEXT,
+    relationship    TEXT
+);
+
 COMMIT;
 
index e1d2c66..c0afb84 100644 (file)
@@ -17,6 +17,21 @@ CREATE TABLE asset.course_module_course_users (
     usr_role        TEXT
 );
 
+CREATE TABLE asset.course_module_course_materials (
+    id              SERIAL PRIMARY KEY,
+    course          INT NOT NULL REFERENCES asset.course_module_course (id),
+    item            INT NOT NULL REFERENCES asset.copy (id),
+    relationship    TEXT
+);
+
+CREATE TABLE asset.course_module_non_cat_course_materials (
+    id              SERIAL PRIMARY KEY,
+    course          INT NOT NULL REFERENCES asset.course_module_course (id),
+    item            TEXT NOT NULL,
+    url             TEXT,
+    relationship    TEXT
+);
+
 INSERT INTO permission.perm_list(id, code, description)
     VALUES (
         620,