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

« back to all changes in this revision

Viewing changes to userdb/users.sql

  • Committer: mattgiuca
  • Date: 2008-08-18 12:15:25 UTC
  • Revision ID: svn-v3-trunk0:2b9c9e99-6f39-0410-b283-7f802c844ae2:trunk:1027
Tutorial: Added new feature - previous attempt viewing. Allows users to see
    code they have previously submitted to tutorials.
    A new button ("View previous attempts") appears on each exercise box.
    This uses the getattempts and getattempt Ajax services checked in
    previously.
Note once again: Students are not (for the moment) able to see deactivated
attempts (this is a conservative approach - the ability to see deactivated
attempts can be turned on by setting HISTORY_ALLOW_INACTIVE = True in
tutorialservice).

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
BEGIN;
2
1
CREATE SEQUENCE login_unixid_seq MINVALUE 1000 MAXVALUE 29999 START WITH 5000;
3
2
 
4
3
CREATE TABLE login (
6
5
    login       VARCHAR UNIQUE NOT NULL,
7
6
    passhash    VARCHAR,
8
7
    state       VARCHAR NOT NULL CHECK (state in ('no_agreement', 'pending',
9
 
                                              'enabled', 'disabled'))
10
 
                                 DEFAULT 'no_agreement',
 
8
                                              'enabled', 'disabled')),
11
9
    rolenm      VARCHAR NOT NULL CHECK (rolenm in ('anyone', 'student',
12
10
                                                   'marker', 'tutor',
13
11
                                                   'lecturer', 'admin')),
99
97
        oid INTEGER;
100
98
    BEGIN
101
99
        SELECT offeringid INTO oid FROM project_set WHERE project_set.projectsetid = NEW.projectsetid;
102
 
        PERFORM 1 FROM project_group, project_set WHERE project_set.offeringid = oid AND project_group.projectsetid = project_set.projectsetid AND project_group.groupnm = NEW.groupnm;
 
100
        PERFORM 1 FROM project_group, project_set WHERE project_group.projectsetid = project_set.projectsetid AND project_group.groupnm = NEW.groupnm;
103
101
        IF found THEN
104
102
            RAISE EXCEPTION ''a project group named % already exists in offering ID %'', NEW.groupnm, oid;
105
103
        END IF;
190
188
 
191
189
-- Worksheets
192
190
-- ----------
 
191
 
193
192
CREATE TABLE problem (
194
 
    identifier  TEXT PRIMARY KEY,
195
 
    name        TEXT,
196
 
    description TEXT,
197
 
    partial     TEXT,
198
 
    solution    TEXT,
199
 
    include     TEXT,
200
 
    num_rows    INT4
 
193
    problemid   SERIAL PRIMARY KEY NOT NULL,
 
194
    identifier  VARCHAR UNIQUE NOT NULL,
 
195
    spec        VARCHAR
201
196
);
202
197
 
203
198
CREATE TABLE worksheet (
204
 
    worksheetid SERIAL PRIMARY KEY,
205
 
    offeringid  INT4 REFERENCES offering (offeringid) NOT NULL,
 
199
    worksheetid SERIAL PRIMARY KEY NOT NULL,
 
200
    subject     VARCHAR NOT NULL,
206
201
    identifier  VARCHAR NOT NULL,
207
202
    assessable  BOOLEAN,
208
203
    mtime       TIMESTAMP,
209
 
    UNIQUE (offeringid, identifier)
 
204
    UNIQUE (subject, identifier)
210
205
);
211
206
 
212
207
CREATE TABLE worksheet_problem (
213
208
    worksheetid INT4 REFERENCES worksheet (worksheetid) NOT NULL,
214
 
    problemid   TEXT REFERENCES problem (identifier) NOT NULL,
 
209
    problemid   INT4 REFERENCES problem (problemid) NOT NULL,
215
210
    optional    BOOLEAN,
216
211
    PRIMARY KEY (worksheetid, problemid)
217
212
);
218
213
 
 
214
CREATE TABLE problem_tag (
 
215
    problemid   INT4 REFERENCES problem (problemid),
 
216
    tag         VARCHAR NOT NULL,
 
217
    description VARCHAR,
 
218
    standard    BOOLEAN NOT NULL,
 
219
    added_by    INT4 REFERENCES login (loginid) NOT NULL,
 
220
    date        TIMESTAMP NOT NULL,
 
221
    PRIMARY KEY (problemid,added_by,tag)
 
222
);
 
223
 
 
224
CREATE TABLE problem_test_case (
 
225
    problemid   INT4 REFERENCES problem (problemid) NOT NULL,
 
226
    testcaseid  SERIAL UNIQUE NOT NULL,
 
227
    testcase    VARCHAR,
 
228
    description VARCHAR,
 
229
    visibility  VARCHAR CHECK (visibility in ('public', 'protected', 'private'))
 
230
);
 
231
 
 
232
CREATE TABLE problem_test_case_tag (
 
233
    testcaseid  INT4 REFERENCES problem_test_case (testcaseid) NOT NULL,
 
234
    tag         VARCHAR NOT NULL,
 
235
    description VARCHAR,
 
236
    standard    BOOLEAN NOT NULL,
 
237
    added_by    INT4 REFERENCES login (loginid) NOT NULL,
 
238
    date        TIMESTAMP NOT NULL,
 
239
    PRIMARY KEY (testcaseid,added_by,tag)
 
240
);
 
241
 
219
242
CREATE TABLE problem_attempt (
220
 
    problemid   TEXT REFERENCES problem (identifier) NOT NULL,
 
243
    problemid   INT4 REFERENCES problem (problemid) NOT NULL,
221
244
    loginid     INT4 REFERENCES login (loginid) NOT NULL,
222
 
    worksheetid INT4 REFERENCES worksheet (worksheetid) NOT NULL,
223
245
    date        TIMESTAMP NOT NULL,
224
246
    attempt     VARCHAR NOT NULL,
225
247
    complete    BOOLEAN NOT NULL,
226
248
    active      BOOLEAN NOT NULL DEFAULT true,
227
 
    PRIMARY KEY (problemid,loginid,worksheetid,date)
 
249
    PRIMARY KEY (problemid,loginid,date)
228
250
);
229
251
 
230
252
CREATE TABLE problem_save (
231
 
    problemid   TEXT REFERENCES problem (identifier) NOT NULL,
232
 
    loginid     INT4 REFERENCES login (loginid) NOT NULL,
233
 
    worksheetid INT4 REFERENCES worksheet (worksheetid) NOT NULL,
234
 
    date        TIMESTAMP NOT NULL,
235
 
    text        TEXT NOT NULL,
236
 
    PRIMARY KEY (problemid,loginid, worksheetid)
237
 
);
238
 
 
239
 
CREATE TABLE test_suite (
240
 
    suiteid     SERIAL PRIMARY KEY,
241
 
    problemid   TEXT REFERENCES problem (identifier) NOT NULL,
242
 
    description TEXT,
243
 
    seq_no      INT4,
244
 
    function    TEXT,
245
 
    stdin       TEXT
246
 
);
247
 
 
248
 
CREATE TABLE test_case (
249
 
    testid          SERIAL PRIMARY KEY,
250
 
    suiteid         INT4 REFERENCES test_suite (suiteid) NOT NULL,
251
 
    passmsg         TEXT,
252
 
    failmsg         TEXT,
253
 
    test_default    TEXT,
254
 
    seq_no          INT4
255
 
);
256
 
 
257
 
CREATE TABLE suite_variables (
258
 
    varid       SERIAL PRIMARY KEY,
259
 
    suiteid     INT4 REFERENCES test_suite (suiteid) NOT NULL,
260
 
    var_name    TEXT,
261
 
    var_value   TEXT,
262
 
    var_type    TEXT NOT NULL,
263
 
    arg_no      INT4
264
 
);
265
 
 
266
 
CREATE TABLE test_case_parts (
267
 
    partid          SERIAL PRIMARY KEY,
268
 
    testid          INT4 REFERENCES test_case (testid) NOT NULL,
269
 
    part_type       TEXT NOT NULL,
270
 
    test_type       TEXT,
271
 
    data            TEXT,
272
 
    filename        TEXT
273
 
);
274
 
COMMIT;
 
253
    problemid   INT4 REFERENCES problem (problemid) NOT NULL,
 
254
    loginid     INT4 REFERENCES login (loginid) NOT NULL,
 
255
    date        TIMESTAMP NOT NULL,
 
256
    text        VARCHAR NOT NULL,
 
257
    PRIMARY KEY (problemid,loginid)
 
258
);
 
259
 
 
260
CREATE INDEX problem_attempt_index ON problem_attempt (problemid, loginid);
 
261
 
 
262
CREATE TABLE problem_attempt_breakdown (
 
263
    problemid   INT4 REFERENCES problem (problemid) NOT NULL,
 
264
    testcaseid  INT4 REFERENCES problem_test_case (testcaseid) NOT NULL,
 
265
    loginid     INT4 REFERENCES login (loginid) NOT NULL,
 
266
    date        TIMESTAMP NOT NULL,
 
267
    result      BOOLEAN
 
268
);
 
269
 
 
270
CREATE TABLE problem_prerequisite (
 
271
    parent      INT4 REFERENCES problem (problemid) NOT NULL,
 
272
    child       INT4 REFERENCES problem (problemid) NOT NULL,
 
273
    PRIMARY KEY (parent,child)
 
274
);
 
275