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

« back to all changes in this revision

Viewing changes to userdb/users.sql

  • Committer: mattgiuca
  • Date: 2008-02-01 07:46:26 UTC
  • Revision ID: svn-v3-trunk0:2b9c9e99-6f39-0410-b283-7f802c844ae2:trunk:375
www/common/makeuser.py:
    Now accepts a large number of arguments for all the fields of the user.
    (password, full name, nick name, student id, role)
    Creates a new user in the DB.
    Creates a Unix account for the user on the current machine. (This will
    need to change to create one on the central machine to be propagated).
makeuser script: Accepts all the arguments as above and passes them along to
    www/common/makeuser.py.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
 
2
 
DROP TABLE roles;
3
 
DROP TABLE enrolment;
4
 
DROP TABLE group_members;
5
 
DROP TABLE users;
6
 
DROP TABLE groups;
7
 
 
8
 
CREATE TABLE users (
 
1
CREATE TABLE login (
9
2
    login       VARCHAR UNIQUE NOT NULL,
10
3
    loginid     SERIAL PRIMARY KEY NOT NULL,
 
4
    passhash    VARCHAR,
11
5
    nick        VARCHAR,
12
6
    fullname    VARCHAR,
13
 
    studentid   VARCHAR, -- may be null
14
 
);
15
 
 
16
 
CREATE TABLE groups (
17
 
    group       VARCHAR NOT NULL,
 
7
    rolenm      VARCHAR,
 
8
    studentid   VARCHAR -- may be null
 
9
);
 
10
 
 
11
CREATE TABLE offering (
 
12
    offeringid  SERIAL PRIMARY KEY NOT NULL,
 
13
    subj_name   VARCHAR NOT NULL,
 
14
    subj_code   VARCHAR NOT NULL,
 
15
    year        CHAR(4) NOT NULL,
 
16
    semester    CHAR(1) NOT NULL,
 
17
    url         VARCHAR
 
18
);
 
19
 
 
20
CREATE TABLE project (
 
21
    projectid   SERIAL PRIMARY KEY NOT NULL,
 
22
    synopsis    VARCHAR,
 
23
    url         VARCHAR,
 
24
    offeringid  INT4 REFERENCES offering (offeringid) NOT NULL,
 
25
    deadline    TIMESTAMP
 
26
);
 
27
 
 
28
CREATE TABLE project_group (
 
29
    groupnm     VARCHAR NOT NULL,
18
30
    groupid     SERIAL PRIMARY KEY NOT NULL,
19
 
    offeringid  INT4 REFERENCES offerings (offeringid),
 
31
    offeringid  INT4 REFERENCES offering (offeringid),
20
32
    nick        VARCHAR,
21
 
    UNIQUE (offeringid, group)
 
33
    createdby   INT4 REFERENCES login (loginid) NOT NULL,
 
34
    epoch       TIMESTAMP NOT NULL,
 
35
    UNIQUE (offeringid, groupnm)
22
36
);
23
37
 
24
 
CREATE TABLE group_invitations (
25
 
    loginid     INT4 REFERENCES users (loginid),
26
 
    groupid     INT4 REFERENCES groups (groupid),
 
38
CREATE TABLE group_invitation (
 
39
    loginid     INT4 REFERENCES login (loginid) NOT NULL,
 
40
    groupid     INT4 REFERENCES project_group (groupid) NOT NULL,
 
41
    inviter     INT4 REFERENCES login (loginid) NOT NULL,
 
42
    invited     TIMESTAMP NOT NULL,
 
43
    accepted    TIMESTAMP,
27
44
    UNIQUE (loginid,groupid)
28
45
);
29
46
 
30
 
CREATE TABLE group_members (
31
 
    loginid     INT4 REFERENCES users (loginid),
32
 
    groupid     INT4 REFERENCES groups (groupid),
33
 
    projectid   INT4 REFERENCES projects (projectid),
 
47
CREATE TABLE group_member (
 
48
    loginid     INT4 REFERENCES login (loginid),
 
49
    groupid     INT4 REFERENCES project_group (groupid),
 
50
    projectid   INT4 REFERENCES project (projectid),
34
51
    UNIQUE (loginid,projectid),
35
52
    PRIMARY KEY (loginid,groupid)
36
53
);
37
54
 
38
55
CREATE TABLE enrolment (
39
 
    loginid     INT4 REFERENCES users (loginid),
40
 
    offeringid  INT4 REFERENCES offerings (offeringid),
 
56
    loginid     INT4 REFERENCES login (loginid),
 
57
    offeringid  INT4 REFERENCES offering (offeringid),
41
58
    result      INT,
 
59
    special_result VARCHAR,
42
60
    supp_result INT,
 
61
    special_supp_result VARCHAR,
43
62
    notes       VARCHAR,
44
63
    PRIMARY KEY (loginid,offeringid)
45
64
);
46
65
 
47
 
CREATE TABLE roles (
48
 
    loginid     INT4 PRIMARY KEY REFERENCES users (loginid),
49
 
    role        VARCHAR
50
 
);
51
 
 
52
 
CREATE TABLE projects (
53
 
    projectid   SERIAL PRIMARY KEY NOT NULL,
54
 
    synopsis    VARCHAR,
55
 
    url         VARCHAR,
56
 
    offeringid  INT4 REFERENCES offerings (offeringid) NOT NULL,
57
 
    deadline    TIMESTAMP
 
66
CREATE TABLE assessed (
 
67
    assessedid  SERIAL PRIMARY KEY NOT NULL,
 
68
    loginid     INT4 REFERENCES login (loginid),
 
69
    groupid     INT4 REFERENCES project_group (groupid),
 
70
    -- exactly one of loginid and groupid must be non-null
 
71
    CHECK ((loginid IS NOT NULL AND groupid IS NULL)
 
72
        OR (loginid IS NULL AND groupid IS NOT NULL))
58
73
);
59
74
 
60
75
CREATE TABLE project_extension (
61
 
    login or groupid
62
 
    projectid   INT4 REFERENCES projects (projectid) NOT NULL,
 
76
    assessedid  INT4 REFERENCES assessed (assesedid) NOT NULL,
 
77
    projectid   INT4 REFERENCES project (projectid) NOT NULL,
63
78
    deadline    TIMESTAMP NOT NULL,
64
 
    approver    INT4 REFERENCES users (loginid) NOT NULL,
 
79
    approver    INT4 REFERENCES login (loginid) NOT NULL,
65
80
    notes       VARCHAR
66
81
);
67
82
 
68
83
CREATE TABLE project_mark (
69
 
    loginid or groupid
70
 
    projectid   INT4 REFERENCES projects (projectid) NOT NULL,
 
84
    assessedid  INT4 REFERENCES assessed (assesedid) NOT NULL,
 
85
    projectid   INT4 REFERENCES project (projectid) NOT NULL,
71
86
    componentid INT4,
72
 
    marker      INT4 REFERENCES users (loginid) NOT NULL,
 
87
    marker      INT4 REFERENCES login (loginid) NOT NULL,
73
88
    mark        INT,
74
89
    marked      TIMESTAMP,
75
90
    feedback    VARCHAR,
76
 
    notes       VARCHAR,
77
 
    PRIMARY KEY (loginid/groupid, projectid, componentid)
 
91
    notes       VARCHAR
78
92
);
79
93
 
80
94
CREATE TABLE problem (
84
96
    spec        VARCHAR
85
97
);
86
98
 
87
 
CREATE TABLE problem_tags (
 
99
CREATE TABLE problem_tag (
88
100
    problemid   INT4 REFERENCES tutorial_problem (problemid),
89
101
    tag         VARCHAR NOT NULL,
90
 
    added_by    INT4 REFERENCES users (loginid) NOT NULL,
91
 
    when        TIMESTAMP NOT NULL,
 
102
    description VARCHAR,
 
103
    standard    BOOLEAN NOT NULL,
 
104
    added_by    INT4 REFERENCES login (loginid) NOT NULL,
 
105
    date        TIMESTAMP NOT NULL,
92
106
    PRIMARY KEY (problemid,added_by,tag)
93
107
);
94
108
 
100
114
    visibility  VARCHAR CHECK (visibility in ('public', 'protected', 'private'))
101
115
);
102
116
 
103
 
CREATE TABLE problem_test_case_tags (
 
117
CREATE TABLE problem_test_case_tag (
104
118
    testcaseid  INT4 REFERENCES problem_test_case (testcaseid) NOT NULL,
105
119
    tag         VARCHAR NOT NULL,
106
120
    description VARCHAR,
107
 
    added_by    INT4 REFERENCES users (loginid) NOT NULL,
108
 
    when        TIMESTAMP NOT NULL,
 
121
    standard    BOOLEAN NOT NULL,
 
122
    added_by    INT4 REFERENCES login (loginid) NOT NULL,
 
123
    date        TIMESTAMP NOT NULL,
109
124
    PRIMARY KEY (testcaseid,added_by,tag)
110
125
);
111
126
 
112
127
CREATE TABLE problem_attempt (
113
128
    problemid   INT4 REFERENCES problem (problemid) NOT NULL,
114
 
    loginid     INT4 REFERENCES users (loginid) NOT NULL,
115
 
    when        TIMESTAMP NOT NULL,
 
129
    loginid     INT4 REFERENCES login (loginid) NOT NULL,
 
130
    date        TIMESTAMP NOT NULL,
116
131
    attempt     VARCHAR NOT NULL,
117
132
    complete    BOOLEAN NOT NULL,
118
 
    PRIMARY KEY (problemid,loginid,when)
 
133
    PRIMARY KEY (problemid,loginid,date)
119
134
);
120
135
 
121
 
CREATE INDEX indexname ON problem_attempt (problemid, login);
 
136
CREATE INDEX problem_attempt_index ON problem_attempt (problemid, loginid);
122
137
 
123
138
CREATE TABLE problem_attempt_breakdown (
124
139
    problemid   INT4 REFERENCES problem (problemid) NOT NULL,
125
140
    testcaseid  INT4 REFERENCES problem_test_case (testcaseid) NOT NULL,
126
 
    loginid     INT4 REFERENCES users (loginid) NOT NULL,
127
 
    when        TIMESTAMP NOT NULL,
 
141
    loginid     INT4 REFERENCES login (loginid) NOT NULL,
 
142
    date        TIMESTAMP NOT NULL,
128
143
    result      BOOLEAN
129
144
);
130
145
 
131
 
CREATE TABLE problem_prerequisites (
 
146
CREATE TABLE problem_prerequisite (
132
147
    parent      INT4 REFERENCES problem (problemid) NOT NULL,
133
148
    child       INT4 REFERENCES problem (problemid) NOT NULL,
134
149
    PRIMARY KEY (parent,child)