~azzar1/unity/add-show-desktop-key

« back to all changes in this revision

Viewing changes to userdb/migrations/20090406-01.sql

  • Committer: mattgiuca
  • Date: 2008-04-16 16:18:58 UTC
  • Revision ID: svn-v3-trunk0:2b9c9e99-6f39-0410-b283-7f802c844ae2:trunk:734
tutorial: BEHAVIOUR CHANGE
    Now assessable="true" is an attribute of the <worksheet> element of the
    subject.xml file, NOT the worksheet XML file!

    Reason: This allows you to quickly see at a glance for your subject which
    worksheets are assessable, all in the one place.
    Also, the worksheet XML files are being auto-generated and it's much
    easier to set the assessability in the subject XML file.
    Also, the subject XML file is under control of the subject coordinator,
    while the worksheet files may be written by other people.
    All around a Good Decision(TM).

This involved:
* No longer reads "assessable" in present_worksheet.
* Now the Worksheet class has an assessable attribute.
* In present_subject, every time it runs, it will check the assessable
  attribute of each worksheet against the DB to see if it has changed, and if
  so, it will update the db. It DOES NOT update the mtime in the DB when it
  does this (to make sure the worksheet XML still has a chance to update the
  DB).

All above claims are tested and work.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
BEGIN;
2
 
 
3
 
ALTER TABLE project_set ALTER COLUMN max_students_per_group DROP NOT NULL;
4
 
ALTER TABLE project_set ALTER COLUMN max_students_per_group DROP DEFAULT;
5
 
 
6
 
ALTER TABLE project ALTER COLUMN synopsis TYPE TEXT;
7
 
ALTER TABLE project ALTER COLUMN url TYPE TEXT;
8
 
ALTER TABLE project ADD COLUMN short_name TEXT NOT NULL;
9
 
ALTER TABLE project ADD COLUMN name TEXT NOT NULL;
10
 
 
11
 
CREATE OR REPLACE FUNCTION check_project_namespacing_insertupdate()
12
 
RETURNS trigger AS '
13
 
    DECLARE
14
 
        oid INTEGER;
15
 
    BEGIN
16
 
        IF TG_OP = ''UPDATE'' THEN
17
 
            IF NEW.projectsetid = OLD.projectsetid AND NEW.short_name = OLD.short_name THEN
18
 
                RETURN NEW;
19
 
            END IF;
20
 
        END IF;
21
 
        SELECT offeringid INTO oid FROM project_set WHERE project_set.projectsetid = NEW.projectsetid;
22
 
        PERFORM 1 FROM project, project_set
23
 
        WHERE project_set.offeringid = oid AND
24
 
              project.projectsetid = project_set.projectsetid AND
25
 
              project.short_name = NEW.short_name;
26
 
        IF found THEN
27
 
            RAISE EXCEPTION ''a project named % already exists in offering ID %'', NEW.short_name, oid;
28
 
        END IF;
29
 
        RETURN NEW;
30
 
    END;
31
 
' LANGUAGE 'plpgsql';
32
 
 
33
 
CREATE TRIGGER check_project_namespacing
34
 
    BEFORE INSERT OR UPDATE ON project
35
 
    FOR EACH ROW EXECUTE PROCEDURE check_project_namespacing_insertupdate();
36
 
 
37
 
ALTER TABLE project_extension ADD COLUMN extensionid SERIAL PRIMARY KEY;
38
 
 
39
 
ALTER TABLE project_submission ADD COLUMN submissionid SERIAL PRIMARY KEY;
40
 
ALTER TABLE project_submission ADD COLUMN date_submitted TIMESTAMP NOT NULL;
41
 
ALTER TABLE project_submission ADD COLUMN submitter INT4 REFERENCES login (loginid) NOT NULL;
42
 
 
43
 
COMMIT;