LP1207396 DB / IDL for patron self-reg
authorBill Erickson <berick@esilibrary.com>
Thu, 1 Aug 2013 17:30:52 +0000 (13:30 -0400)
committerDan Wells <dbw2@calvin.edu>
Fri, 23 Aug 2013 23:09:27 +0000 (19:09 -0400)
Updating pending addr tables to track requesting user and address county.

Adding org settings:

* opac.allow_pending_user -- allow self-registration
* opac.pending_user_expire_interval - delete pending user interval
* ui.patron.edit.aua.county.require - indicate if county is required

Signed-off-by: Bill Erickson <berick@esilibrary.com>
Signed-off-by: Dan Wells <dbw2@calvin.edu>
Open-ILS/examples/fm_IDL.xml
Open-ILS/src/sql/Pg/015.schema.staging.sql
Open-ILS/src/sql/Pg/950.data.seed-values.sql
Open-ILS/src/sql/Pg/upgrade/XXXX.schema.patron-self-reg.sql [new file with mode: 0644]

index d270341..656f1d1 100644 (file)
@@ -8956,7 +8956,11 @@ SELECT  usr,
             <field reporter:label="Home Library" name="home_ou" reporter:datatype="int"/>
             <field reporter:label="Date of Birth" name="dob" reporter:datatype="text"/>
             <field reporter:label="Complete" name="complete" reporter:datatype="bool"/>
+            <field reporter:label="Requesting User" name="requesting_usr" reporter:datatype="link"/>
         </fields>
+               <links>
+                       <link field="requesting_usr" reltype="has_a" key="id" map="" class="au"/>
+               </links>
     </class>
 
     <class id="stgc" controller="open-ils.cstore open-ils.pcrud" oils_obj:fieldmapper="staging::card_stage" oils_persist:tablename="staging.card_stage" reporter:label="Card Stage">
@@ -8977,6 +8981,7 @@ SELECT  usr,
             <field reporter:label="Street (1)" name="street1" reporter:datatype="text"/>
             <field reporter:label="Street (2)" name="street2" reporter:datatype="text"/>
             <field reporter:label="City" name="city" reporter:datatype="text"/>
+                       <field reporter:label="County" name="county"  reporter:datatype="text"/>
             <field reporter:label="State" name="state" reporter:datatype="text"/>
             <field reporter:label="Country" name="country" reporter:datatype="text"/>
             <field reporter:label="Postal Code" name="post_code" reporter:datatype="text"/>
@@ -8992,6 +8997,7 @@ SELECT  usr,
             <field reporter:label="Street (1)" name="street1" reporter:datatype="text"/>
             <field reporter:label="Street (2)" name="street2" reporter:datatype="text"/>
             <field reporter:label="City" name="city" reporter:datatype="text"/>
+                       <field reporter:label="County" name="county"  reporter:datatype="text"/>
             <field reporter:label="State" name="state" reporter:datatype="text"/>
             <field reporter:label="Country" name="country" reporter:datatype="text"/>
             <field reporter:label="Postal Code" name="post_code" reporter:datatype="text"/>
index 893650d..83bc697 100644 (file)
@@ -6,7 +6,7 @@ CREATE SCHEMA staging;
 
 CREATE TABLE staging.user_stage (
         row_id                  BIGSERIAL PRIMARY KEY,
-        row_date                            TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
+        row_date                TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
         usrname                 TEXT NOT NULL,
         profile                 TEXT,
         email                   TEXT,
@@ -19,7 +19,8 @@ CREATE TABLE staging.user_stage (
         evening_phone           TEXT,
         home_ou                 INT DEFAULT 2,
         dob                     TEXT,
-        complete                BOOL DEFAULT FALSE
+        complete                BOOL DEFAULT FALSE,
+        requesting_usr          INT REFERENCES actor.usr(id) ON DELETE SET NULL
 );
 
 CREATE TABLE staging.card_stage ( -- for new library barcodes
@@ -32,12 +33,13 @@ CREATE TABLE staging.card_stage ( -- for new library barcodes
 
 CREATE TABLE staging.mailing_address_stage (
         row_id          BIGSERIAL PRIMARY KEY,
-        row_date            TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
+        row_date        TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
         usrname         TEXT NOT NULL,  -- user's SIS barcode, for linking
         street1         TEXT,
         street2         TEXT,
         city            TEXT NOT NULL DEFAULT '',
-        state           TEXT    NOT NULL DEFAULT 'OK',
+        county          TEXT,
+        state           TEXT,
         country         TEXT NOT NULL DEFAULT 'US',
         post_code       TEXT NOT NULL,
         complete        BOOL DEFAULT FALSE
index 1f046df..ae8a119 100644 (file)
@@ -13186,3 +13186,57 @@ INSERT INTO action_trigger.environment (event_def, path) VALUES
     (50, 'circ_lib.billing_address'),
     (50, 'target_copy.location');
 
+-- OUS's for patron self-reg
+INSERT INTO config.org_unit_setting_type
+    (name, grp, datatype, label, description)
+VALUES (
+    'opac.allow_pending_user',
+    'opac',
+    'bool',
+    oils_i18n_gettext(
+        'opac.allow_pending_user',
+        'Allow Patron Self-Registration',
+        'coust',
+        'label'
+    ),
+    oils_i18n_gettext(
+        'opac.allow_pending_user',
+        'Allow patrons to self-register, creating pending user accounts',
+        'coust',
+        'description'
+    )
+), (
+    'opac.pending_user_expire_interval',
+    'opac',
+    'interval',
+    oils_i18n_gettext(
+        'opac.pending_user_expire_interval',
+        'Patron Self-Reg. Expire Interval',
+        'coust',
+        'label'
+    ),
+    oils_i18n_gettext(
+        'opac.pending_user_expire_interval',
+        'If set, this is the amount of time a pending user account will ' ||
+        'be allowed to sit in the database.  After this time, the pending ' ||
+        'user information will be purged',
+        'coust',
+        'description'
+    )
+), (
+    'ui.patron.edit.aua.county.show',
+    'gui',
+    'bool',
+    oils_i18n_gettext(
+        'ui.patron.edit.aua.county.require',
+        'Show count field on patron registration',
+        'coust',
+        'label'
+    ),
+    oils_i18n_gettext(
+        'ui.patron.edit.aua.county.require',
+        'The county field will be shown on the patron registration screen',
+        'coust',
+        'description'
+    )
+);
diff --git a/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.patron-self-reg.sql b/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.patron-self-reg.sql
new file mode 100644 (file)
index 0000000..9f6a574
--- /dev/null
@@ -0,0 +1,75 @@
+
+BEGIN;
+
+-- Track the requesting user
+ALTER TABLE staging.user_stage
+    ADD COLUMN requesting_usr INTEGER 
+        REFERENCES actor.usr(id) ON DELETE SET NULL;
+
+-- add county column to staged address tables and 
+-- drop state requirement to match actor.usr_address
+ALTER TABLE staging.mailing_address_stage 
+    ADD COLUMN county TEXT,
+    ALTER COLUMN state DROP DEFAULT,
+    ALTER COLUMN state DROP NOT NULL;
+
+ALTER TABLE staging.billing_address_stage 
+    ADD COLUMN county TEXT,
+    ALTER COLUMN state DROP DEFAULT,
+    ALTER COLUMN state DROP NOT NULL;
+
+INSERT INTO config.org_unit_setting_type
+    (name, grp, datatype, label, description)
+VALUES (
+    'opac.allow_pending_user',
+    'opac',
+    'bool',
+    oils_i18n_gettext(
+        'opac.allow_pending_user',
+        'Allow Patron Self-Registration',
+        'coust',
+        'label'
+    ),
+    oils_i18n_gettext(
+        'opac.allow_pending_user',
+        'Allow patrons to self-register, creating pending user accounts',
+        'coust',
+        'description'
+    )
+), (
+    'opac.pending_user_expire_interval',
+    'opac',
+    'interval',
+    oils_i18n_gettext(
+        'opac.pending_user_expire_interval',
+        'Patron Self-Reg. Expire Interval',
+        'coust',
+        'label'
+    ),
+    oils_i18n_gettext(
+        'opac.pending_user_expire_interval',
+        'If set, this is the amount of time a pending user account will ' ||
+        'be allowed to sit in the database.  After this time, the pending ' ||
+        'user information will be purged',
+        'coust',
+        'description'
+    )
+), (
+    'ui.patron.edit.aua.county.show',
+    'gui',
+    'bool',
+    oils_i18n_gettext(
+        'ui.patron.edit.aua.county.require',
+        'Show count field on patron registration',
+        'coust',
+        'label'
+    ),
+    oils_i18n_gettext(
+        'ui.patron.edit.aua.county.require',
+        'The county field will be shown on the patron registration screen',
+        'coust',
+        'description'
+    )
+);
+
+COMMIT;