-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathmodels.py
More file actions
115 lines (105 loc) · 6.37 KB
/
models.py
File metadata and controls
115 lines (105 loc) · 6.37 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
from loader import db
# For reference:
# http://docs.sqlalchemy.org/en/latest/core/metadata.html
# http://docs.sqlalchemy.org/en/latest/core/type_basics.html
# http://docs.sqlalchemy.org/en/latest/dialects/postgresql.html
# http://www.pythoncentral.io/sqlalchemy-orm-examples/
''' This table is already defined by util.sessions.py, but this is what it looks like
class Sessions(db.Model):
__tablename__ = 'sessions'
key = db.Column(db.String(length=250), nullable=False, primary_key=True)
value = db.Column(db.LargeBinary, nullable=False)'''
class Club(db.Model):
__tablename__ = 'club'
id = db.Column(db.Integer, primary_key=True)
shortname = db.Column(db.Text, nullable=False)
longname = db.Column(db.Text, nullable=False)
class Member(db.Model):
__tablename__ = 'member'
id = db.Column(db.Integer, primary_key=True)
student_id = db.Column(db.CHAR(length=9), unique=True)
primary_club = db.Column(db.Integer, db.ForeignKey('club.id'), nullable=False)
assigned_team = db.Column(db.Integer)
priv_level = db.Column(db.Integer, nullable=False) # -2 officer, -1 admin, 0 member, 1 alumni, 2 associate
pw_hash = db.Column(db.Text)
pin_hash = db.Column(db.Text)
name_first = db.Column(db.Text, nullable=False)
name_middle = db.Column(db.Text, nullable=False)
name_last = db.Column(db.Text, nullable=False)
phone = db.Column(db.Text)
texting_ok = db.Column(db.Boolean)
email1 = db.Column(db.Text, unique=True, nullable=False)
email2 = db.Column(db.Text, unique=True)
picture = db.Column(db.Text)
gender = db.Column(db.Text)
acad_standing = db.Column(db.Text)
acad_major = db.Column(db.Text)
acad_minor = db.Column(db.Text)
acad_conc = db.Column(db.Text)
acad_grad_qtr = db.Column(db.Text)
signup_date = db.Column(db.DateTime(timezone=False), nullable=False)
paid_amount = db.Column(db.Numeric(precision=5, scale=2))
paid_date = db.Column(db.DateTime(timezone=False))
paid_until_date = db.Column(db.DateTime(timezone=False))
receipt_date = db.Column(db.DateTime(timezone=False))
badge_type = db.Column(db.Integer)
shirt_size = db.Column(db.Text)
shirt_received_date = db.Column(db.DateTime(timezone=False))
class Content(db.Model):
__tablename__ = 'content'
id = db.Column(db.Integer, primary_key=True)
content_type = db.Column(db.Text, nullable=False) # html, markdown, none
url = db.Column(db.Text) # Which url to expose and respond to
render_template = db.Column(db.Text) # Which template to render it against, if any
title = db.Column(db.Text)
created_on = db.Column(db.DateTime(timezone=True))
created_by = db.Column(db.Integer, db.ForeignKey('member.id'))
edited_on = db.Column(db.DateTime(timezone=True))
edited_by = db.Column(db.Integer, db.ForeignKey('member.id'))
required_priv_level = db.Column(db.Integer, nullable=False) # 2 = officer, 1 = member, 0 = public
show_in_nav = db.Column(db.Integer, nullable=False) # 0 = none, 1 = main nav menu, 2 = sub menu
data_blob = db.Column(db.Text, nullable=False)
class Event(db.Model):
__tablename__ = 'event'
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.Text, nullable=False)
hosting_club = db.Column(db.Integer, db.ForeignKey('club.id'))
presenter = db.Column(db.Text)
picture = db.Column(db.Text)
shorturl = db.Column(db.Text, unique=True)
start_time = db.Column(db.DateTime(timezone=True))
end_time = db.Column(db.DateTime(timezone=True))
location = db.Column(db.Text)
location_type = db.Column(db.Integer)
contact_info = db.Column(db.Text)
content_block_id = db.Column(db.Integer, db.ForeignKey('content.id'))
rsvp_max_replies = db.Column(db.Integer)
rsvp_allow_maybe = db.Column(db.Boolean, nullable=False)
rsvp_allow_comments = db.Column(db.Boolean, nullable=False)
rsvp_public_view = db.Column(db.Boolean, nullable=False)
rsvp_send_reminder = db.Column(db.Boolean, nullable=False)
class Attendance(db.Model):
__tablename__ = 'attendance'
id = db.Column(db.Integer, primary_key=True)
member = db.Column(db.Integer, db.ForeignKey('member.id'))
event = db.Column(db.Integer, db.ForeignKey('event.id'), nullable=False)
comment = db.Column(db.Text)
class RSVP(db.Model):
__tablename__ = 'rsvp'
id = db.Column(db.Integer, primary_key=True)
member = db.Column(db.Integer, db.ForeignKey('member.id'), nullable=False)
event = db.Column(db.Integer, db.ForeignKey('event.id'), nullable=False)
reply = db.Column(db.Integer, nullable=False) #0 No, 1 Yes, 2 Maybe
comment = db.Column(db.Text)
class Project(db.Model):
__tablename__ = 'project'
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.Text, nullable=False)
content_block_id = db.Column(db.Integer, db.ForeignKey('content.id'))
leader = db.Column(db.Integer, db.ForeignKey('member.id'))
class ProjectMembership(db.Model):
__tablename__ = 'projectmembership'
id = db.Column(db.Integer, primary_key=True)
project = db.Column(db.Integer, db.ForeignKey('project.id'), nullable=False)
member = db.Column(db.Integer, db.ForeignKey('member.id'), nullable=False)
add_date = db.Column(db.DateTime(timezone=True))