Python CSC Electronic Office
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

30 lines
918 B

-- PL/Python trigger to verify student ids for validity
-- Dedicated to office staff who can't type student ids.
-- To (re)install:
-- su postgres
-- psql ceo < verify_studentid.sql
-- To uninstall:
-- su postgres
-- echo 'DROP FUNCTION verify_studentid() CASCADE' | psql ceo
DROP FUNCTION verify_studentid() CASCADE;
CREATE FUNCTION verify_studentid() RETURNS trigger AS '
import re
# update this line if the student id format changes
STUDENTID_REGEX = "^[0-9]{8}$"
studentid = TD["new"]["studentid"]
if studentid and not re.match(STUDENTID_REGEX, studentid):
plpy.error("student id is invalid (%s)" % studentid)
' LANGUAGE plpythonu;
CREATE TRIGGER verify_studentid_insert BEFORE INSERT on members
FOR ROW EXECUTE PROCEDURE verify_studentid();
CREATE TRIGGER verify_studentid_update BEFORE UPDATE ON members
FOR ROW EXECUTE PROCEDURE verify_studentid();