beginnings
authorChris Sharp <csharp@georgialibraries.org>
Mon, 9 Nov 2020 14:30:02 +0000 (09:30 -0500)
committerChris Sharp <csharp@georgialibraries.org>
Sat, 19 Nov 2022 20:04:38 +0000 (15:04 -0500)
Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
Open-ILS/examples/fm_IDL.xml
Open-ILS/src/sql/Pg/600.schema.student_card.sql [new file with mode: 0644]

index e3026e3..04cbb0e 100644 (file)
@@ -15644,6 +15644,35 @@ SELECT  usr,
                </permacrud>
        </class>
 
+       <class id="scd" controller="open-ils.cstore open-ils.pcrud" oils_obj:fieldmapper="student_card::district" oils_persist:tablename="student_card.district" reporter:label="Student Card School District">
+               <fields oils_persist:primary="id">
+                       <field name="id"                reporter:datatype="id"       reporter:label="District ID"/>
+                       <field name="code"              reporter:datatype="text"     reporter:label="District Code"/>
+                       <field name="name"              reporter:datatype="text"     reporter:label="District Name"/>
+                       <field name="context_org"       reporter:datatype="org_unit" reporter:label="Context Org" oils_obj:required="true"/>
+                       <field name="enabled"           reporter:datatype="bool"     reporter:label="Enabled"/>
+                       <field name="perm"              reporter:datatype="link"     reporter:label="Permission Required by User" oils_obj:required="true"/>
+                       <field name="restrict_to_org"   reporter:datatype="bool"     reporter:label="Restrict by Home Library"/>
+                       <field name="allow_inactive"    reporter:datatype="bool"     reporter:label="Allow Inactive Users"/>
+                       <field name="allow_expired"     reporter:datatype="bool"     reporter:label="Allow Expired Users"/>
+                       <field name="block_list"        reporter:datatype="text"     reporter:label="Block List"/>
+                       <field name="usr_activity_type" reporter:datatype="link"     reporter:label="User Activity Type"/>
+               </fields>
+               <links>
+                       <link field="context_org" reltype="has_a" key="id" map="" class="aou"/>
+                       <link field="perm" reltype="has_a" key="id" map="" class="ppl"/>
+                       <link field="usr_activity_type" reltype="has_a" key="id" map="" class="cuat"/>
+               </links>
+               <permacrud xmlns="http://open-ils.org/spec/opensrf/IDL/permacrud/v1">
+                       <actions>
+                               <create permission="ADMIN_REMOTEAUTH" context_field="context_org"/>
+                               <retrieve permission="STAFF_LOGIN" context_field="context_org"/>
+                               <update permission="ADMIN_REMOTEAUTH" context_field="context_org"/>
+                               <delete permission="ADMIN_REMOTEAUTH" context_field="context_org"/>
+                       </actions>
+               </permacrud>
+       </class>
+
     <class id="qred" controller="open-ils.cstore open-ils.pcrud" oils_obj:fieldmapper="quick_reports::executive_reports_data" oils_persist:tablename="quick_reports.executive_reports_data" reporter:label="Quick Reports Executive Data">
         <fields oils_persist:primary="id">
             <field reporter:label="ID" name="id" reporter:datatype="id"/>
diff --git a/Open-ILS/src/sql/Pg/600.schema.student_card.sql b/Open-ILS/src/sql/Pg/600.schema.student_card.sql
new file mode 100644 (file)
index 0000000..73f93be
--- /dev/null
@@ -0,0 +1,44 @@
+BEGIN;
+
+CREATE SCHEMA student_card;
+
+CREATE TABLE student_card.district (
+    id                  SERIAL PRIMARY KEY,
+    code                TEXT NOT NULL UNIQUE,
+    name                TEXT NOT NULL UNIQUE,
+    state_id            INTEGER NOT NULL UNIQUE,
+    contact_name        TEXT,
+    contact_email       TEXT,
+    remote_host         TEXT NOT NULL,
+    remote_user         TEXT,
+    remote_pass         VARCHAR(255), --TODO: encrypt this data with PGP?
+    remote_remote_dir   TEXT,
+    exceptions_dir      TEXT
+);
+
+CREATE TABLE student_card.school (
+    id                  SERIAL PRIMARY KEY,
+    district_id         INTEGER NOT NULL REFERENCES student_card.district (id),
+    name                TEXT NOT NULL UNIQUE,
+    state_id            INTEGER NOT NULL,
+    grades              TEXT,
+    addr_street_1       TEXT,
+    addr_street_2       TEXT,
+    addr_city           TEXT,
+    addr_county         TEXT,
+    addr_state          TEXT,
+    addr_post_code      TEXT,
+    eg_perm_group       INTEGER NOT NULL REFERENCES permission.grp_tree (id),
+    home_ou             INTEGER NOT NULL REFERENCES actor.org_unit (id)
+);
+CREATE UNIQUE INDEX student_card_school_state_id_idx ON student_card.school (district_id, state_id);
+
+CREATE TABLE student_card.import (
+    id                  SERIAL PRIMARY KEY,
+    import_time         TIMESTAMPTZ NOT NULL DEFAULT NOW(),
+    district_id         INTEGER NOT NULL REFERENCES student_card.district (id),
+    filename            TEXT,
+    error_message       TEXT
+);
+
+COMMIT;