Skip to content

Commit fc88abf

Browse files
committed
Added Flask-Migrate / Flask-SQLAlchemy
1 parent ffb9d0f commit fc88abf

32 files changed

+850
-584
lines changed

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ target/
6969
/.c9
7070

7171
# Sensitive project files
72-
/config.json
72+
/config.py
7373
/data.db
7474

7575
# Frontend dependencies

app.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import os
2+
from conditional import app
3+
from conditional.util.ldap import ldap_init
4+
5+
app.config.from_pyfile(os.path.join(os.getcwd(), "config.py"))
6+
app.templates_folder = os.path.join(os.getcwd(), "conditional/templates")
7+
app.config['SERVER_NAME'] = "{}:{}".format(app.config['IP'], app.config['PORT'])
8+
9+
ldap_init(app.config['LDAP_RO'],
10+
app.config['LDAP_URL'],
11+
app.config['LDAP_BIND_DN'],
12+
app.config['LDAP_BIND_PW'],
13+
app.config['LDAP_USER_OU'],
14+
app.config['LDAP_GROUP_OU'],
15+
app.config['LDAP_COMMITTEE_OU'])
16+
17+
if __name__ == "__main__":
18+
app.run()

conditional/__init__.py

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
from flask import Flask
2+
from flask import redirect
3+
from flask_sqlalchemy import SQLAlchemy
4+
from flask_migrate import Migrate
5+
import structlog
6+
7+
app = Flask(__name__)
8+
9+
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
10+
11+
db = SQLAlchemy(app)
12+
migrate = Migrate(app, db)
13+
logger = structlog.get_logger()
14+
15+
from conditional.blueprints.dashboard import dashboard_bp
16+
from conditional.blueprints.attendance import attendance_bp
17+
from conditional.blueprints.major_project_submission import major_project_bp
18+
from conditional.blueprints.intro_evals import intro_evals_bp
19+
from conditional.blueprints.intro_evals_form import intro_evals_form_bp
20+
from conditional.blueprints.housing import housing_bp
21+
from conditional.blueprints.spring_evals import spring_evals_bp
22+
from conditional.blueprints.conditional import conditionals_bp
23+
from conditional.blueprints.member_management import member_management_bp
24+
from conditional.blueprints.slideshow import slideshow_bp
25+
26+
app.register_blueprint(dashboard_bp)
27+
app.register_blueprint(attendance_bp)
28+
app.register_blueprint(major_project_bp)
29+
app.register_blueprint(intro_evals_bp)
30+
app.register_blueprint(intro_evals_form_bp)
31+
app.register_blueprint(housing_bp)
32+
app.register_blueprint(spring_evals_bp)
33+
app.register_blueprint(conditionals_bp)
34+
app.register_blueprint(member_management_bp)
35+
app.register_blueprint(slideshow_bp)
36+
37+
logger.info('conditional started')
38+
39+
40+
@app.route('/<path:path>')
41+
def static_proxy(path):
42+
# send_static_file will guess the correct MIME type
43+
return app.send_static_file(path)
44+
45+
46+
@app.route('/')
47+
def default_route():
48+
return redirect('/dashboard')
49+
50+
51+
@app.cli.command()
52+
def zoo():
53+
from conditional.models.migrate import free_the_zoo
54+
free_the_zoo(app.config['ZOO_DATABASE_URI'])

conditional/__main__.py

Lines changed: 0 additions & 91 deletions
This file was deleted.

conditional/blueprints/attendance.py

Lines changed: 46 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -1,57 +1,53 @@
1-
from flask import Blueprint
2-
from flask import jsonify
3-
from flask import redirect
4-
from flask import request
5-
6-
from util.ldap import ldap_get_non_alumni_members
7-
from util.ldap import ldap_get_name
8-
from util.ldap import ldap_get_current_students
9-
from util.ldap import ldap_is_eboard
10-
from util.ldap import ldap_is_eval_director
11-
from util.ldap import ldap_get_active_members
12-
13-
from db.models import CurrentCoops
14-
from db.models import CommitteeMeeting
15-
from db.models import FreshmanCommitteeAttendance
16-
from db.models import MemberCommitteeAttendance
17-
from db.models import TechnicalSeminar
18-
from db.models import FreshmanSeminarAttendance
19-
from db.models import MemberSeminarAttendance
20-
from db.models import HouseMeeting
21-
from db.models import FreshmanHouseMeetingAttendance
22-
from db.models import MemberHouseMeetingAttendance
23-
from db.models import FreshmanAccount
1+
from flask import Blueprint, jsonify, redirect, request
242
from datetime import datetime
25-
26-
from util.flask import render_template
27-
283
import structlog
294
import uuid
305

6+
from conditional.util.ldap import ldap_get_current_students
7+
from conditional.util.ldap import ldap_is_eboard
8+
from conditional.util.ldap import ldap_is_eval_director
9+
from conditional.util.ldap import ldap_get_active_members
10+
11+
from conditional.models.models import CurrentCoops
12+
from conditional.models.models import CommitteeMeeting
13+
from conditional.models.models import FreshmanCommitteeAttendance
14+
from conditional.models.models import MemberCommitteeAttendance
15+
from conditional.models.models import TechnicalSeminar
16+
from conditional.models.models import FreshmanSeminarAttendance
17+
from conditional.models.models import MemberSeminarAttendance
18+
from conditional.models.models import HouseMeeting
19+
from conditional.models.models import FreshmanHouseMeetingAttendance
20+
from conditional.models.models import MemberHouseMeetingAttendance
21+
from conditional.models.models import FreshmanAccount
22+
23+
from conditional.util.flask import render_template
24+
25+
from conditional import db
26+
3127
logger = structlog.get_logger()
3228

3329
attendance_bp = Blueprint('attendance_bp', __name__)
3430

3531

3632
def get_name(m):
37-
first = None
3833
if 'givenName' in m:
3934
first = m['givenName'][0].decode('utf-8')
4035
else:
4136
first = ""
42-
last = None
37+
4338
if 'sn' in m:
4439
last = m['sn'][0].decode('utf-8')
4540
else:
4641
last = ""
42+
4743
return "{first} {last}".format(first=first, last=last)
4844

4945

5046
@attendance_bp.route('/attendance/ts_members')
5147
def get_all_members():
5248
log = logger.new(user_name=request.headers.get("x-webauth-user"),
5349
request_id=str(uuid.uuid4()))
54-
log.info('api', action='retrieve techincal seminar attendance list')
50+
log.info('api', action='retrieve technical seminar attendance list')
5551

5652
members = ldap_get_current_students()
5753

@@ -200,8 +196,6 @@ def submit_committee_attendance():
200196
request_id=str(uuid.uuid4()))
201197
log.info('api', action='submit committee meeting attendance')
202198

203-
from db.database import db_session
204-
205199
user_name = request.headers.get('x-webauth-user')
206200

207201
if not ldap_is_eboard(user_name):
@@ -217,23 +211,23 @@ def submit_committee_attendance():
217211
timestamp = datetime.strptime(timestamp, "%Y-%m-%d")
218212
meeting = CommitteeMeeting(committee, timestamp)
219213

220-
db_session.add(meeting)
221-
db_session.flush()
222-
db_session.refresh(meeting)
214+
db.session.add(meeting)
215+
db.session.flush()
216+
db.session.refresh(meeting)
223217

224218
for m in m_attendees:
225219
logger.info('backend',
226220
action=("gave attendance to %s for %s" % (m, committee))
227221
)
228-
db_session.add(MemberCommitteeAttendance(m, meeting.id))
222+
db.session.add(MemberCommitteeAttendance(m, meeting.id))
229223

230224
for f in f_attendees:
231225
logger.info('backend',
232226
action=("gave attendance to freshman-%s for %s" % (f, committee))
233227
)
234-
db_session.add(FreshmanCommitteeAttendance(f, meeting.id))
228+
db.session.add(FreshmanCommitteeAttendance(f, meeting.id))
235229

236-
db_session.commit()
230+
db.session.commit()
237231
return jsonify({"success": True}), 200
238232

239233

@@ -243,8 +237,6 @@ def submit_seminar_attendance():
243237
request_id=str(uuid.uuid4()))
244238
log.info('api', action='submit technical seminar attendance')
245239

246-
from db.database import db_session
247-
248240
user_name = request.headers.get('x-webauth-user')
249241

250242
if not ldap_is_eboard(user_name):
@@ -260,23 +252,23 @@ def submit_seminar_attendance():
260252
timestamp = datetime.strptime(timestamp, "%Y-%m-%d")
261253
seminar = TechnicalSeminar(seminar_name, timestamp)
262254

263-
db_session.add(seminar)
264-
db_session.flush()
265-
db_session.refresh(seminar)
255+
db.session.add(seminar)
256+
db.session.flush()
257+
db.session.refresh(seminar)
266258

267259
for m in m_attendees:
268260
logger.info('backend',
269261
action=("gave attendance to %s for %s" % (m, seminar_name))
270262
)
271-
db_session.add(MemberSeminarAttendance(m, seminar.id))
263+
db.session.add(MemberSeminarAttendance(m, seminar.id))
272264

273265
for f in f_attendees:
274266
logger.info('backend',
275267
action=("gave attendance to freshman-%s for %s" % (f, seminar_name))
276268
)
277-
db_session.add(FreshmanSeminarAttendance(f, seminar.id))
269+
db.session.add(FreshmanSeminarAttendance(f, seminar.id))
278270

279-
db_session.commit()
271+
db.session.commit()
280272
return jsonify({"success": True}), 200
281273

282274

@@ -286,8 +278,6 @@ def submit_house_attendance():
286278
request_id=str(uuid.uuid4()))
287279
log.info('api', action='submit house meeting attendance')
288280

289-
from db.database import db_session
290-
291281
# status: Attended | Excused | Absent
292282

293283
user_name = request.headers.get('x-webauth-user')
@@ -301,17 +291,18 @@ def submit_house_attendance():
301291

302292
meeting = HouseMeeting(timestamp)
303293

304-
db_session.add(meeting)
305-
db_session.flush()
306-
db_session.refresh(meeting)
294+
db.session.add(meeting)
295+
db.session.flush()
296+
db.session.refresh(meeting)
307297

308298
if "members" in post_data:
309299
for m in post_data['members']:
310300
logger.info('backend',
311301
action=(
312-
"gave %s to %s for %s house meeting" % (m['status'], m['uid'], timestamp.strftime("%Y-%m-%d")))
302+
"gave %s to %s for %s house meeting" % (
303+
m['status'], m['uid'], timestamp.strftime("%Y-%m-%d")))
313304
)
314-
db_session.add(MemberHouseMeetingAttendance(
305+
db.session.add(MemberHouseMeetingAttendance(
315306
m['uid'],
316307
meeting.id,
317308
None,
@@ -321,13 +312,13 @@ def submit_house_attendance():
321312
for f in post_data['freshmen']:
322313
logger.info('backend',
323314
action=("gave %s to freshman-%s for %s house meeting" % (
324-
f['status'], f['id'], timestamp.strftime("%Y-%m-%d")))
315+
f['status'], f['id'], timestamp.strftime("%Y-%m-%d")))
325316
)
326-
db_session.add(FreshmanHouseMeetingAttendance(
317+
db.session.add(FreshmanHouseMeetingAttendance(
327318
f['id'],
328319
meeting.id,
329320
None,
330321
f['status']))
331322

332-
db_session.commit()
323+
db.session.commit()
333324
return jsonify({"success": True}), 200

0 commit comments

Comments
 (0)