Course Materials Module - Course Members
authorKyle Huckins <khuckins@catalyte.io>
Fri, 18 Oct 2019 21:43:31 +0000 (21:43 +0000)
committerKyle Huckins <khuckins@catalyte.io>
Mon, 21 Oct 2019 20:47:24 +0000 (20:47 +0000)
- Add IDL Class and asset table to map actor.usr and
asset.course_module_course, along with an optional
string value for the user's role in the course. If
desired, this can later be fleshed out into a separate
course role table.

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 cf23f18..cf9cd66 100644 (file)
@@ -3048,9 +3048,11 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
             <field reporter:label="Course Number" name="course_number" reporter:datatype="text" />
             <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" />
         </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" />
         </links>
         <permacrud xmlns="http://open-ils.org/spec/opensrf/IDL/permacrud/v1">
             <actions>
@@ -3061,6 +3063,32 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
             </actions>
         </permacrud>
     </class>
+    <class id="acmcu" controller="open-ils.cstore open-ils.pcrud" oils_obj:fieldmapper="asset::course_module_course_users" oils_persist:tablename="asset.course_module_course_users" reporter:label="Course Users">
+        <fields oils_persist:primary="id" oils_persist:sequence="asset.course_module_course_users_id_seq">
+            <field reporter:label="ID" name="id" reporter:datatype="id" />
+            <field reporter:label="Course" name="course" reporter:datatype="link" />
+            <field reporter:label="User" name="usr" reporter:datatype="link" />
+            <field reporter:label="User Role" name="user_role" reporter:datatype="text" />
+        </fields>
+        <links>
+            <link field="course" reltype="has_a" key="id" map="" class="acmc" />
+            <link field="usr" reltype="has_a" key="id" map="" class="au" />
+        </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 01459cb..10c5b88 100644 (file)
@@ -1113,5 +1113,12 @@ CREATE TABLE asset.course_module_course (
     owning_lib      INT REFERENCES actor.org_unit (id)
 );
 
+CREATE TABLE asset.course_module_course_users (
+    id              SERIAL PRIMARY KEY,
+    course          INT NOT NULL REFERENCES asset.course_module_course (id),
+    usr             INT NOT NULL REFERENCES actor.usr (id),
+    usr_role        TEXT
+);
+
 COMMIT;
 
index f11df99..e1d2c66 100644 (file)
@@ -10,6 +10,13 @@ CREATE TABLE asset.course_module_course (
     owning_lib      INT REFERENCES actor.org_unit (id)
 );
 
+CREATE TABLE asset.course_module_course_users (
+    id              SERIAL PRIMARY KEY,
+    course          INT NOT NULL REFERENCES asset.course_module_course (id),
+    usr             INT NOT NULL REFERENCES actor.usr (id),
+    usr_role        TEXT
+);
+
 INSERT INTO permission.perm_list(id, code, description)
     VALUES (
         620,