Skip to content

Commit cba1ab3

Browse files
authored
Merge pull request #75 from ComputerScienceHouse/develop
Conditional 1.1.0
2 parents aebc6eb + 820cbed commit cba1ab3

31 files changed

+512
-214
lines changed

.gitignore

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ docs/_build/
5656
# PyBuilder
5757
target/
5858

59-
#Ipython Notebook
59+
# Ipython Notebook
6060
.ipynb_checkpoints
6161

6262
# JetBrains IDEs
@@ -78,3 +78,6 @@ target/
7878

7979
# Built frontend files
8080
/conditional/static/*
81+
82+
# virtualenv
83+
/.conditionalenv

.pylintrc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ max-args = 10
8282
ignored-argument-names = _.*
8383
max-locals = 20
8484
max-returns = 6
85-
max-branches = 13
85+
max-branches = 15
8686
max-statements = 55
8787
max-parents = 7
8888
max-attributes = 10

conditional/blueprints/attendance.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ def display_attendance_cm():
146146
return render_template(request,
147147
'attendance_cm.html',
148148
username=user_name,
149-
date=datetime.utcnow().strftime("%Y-%m-%d"))
149+
date=datetime.now().strftime("%Y-%m-%d"))
150150

151151

152152
@attendance_bp.route('/attendance_ts')
@@ -162,7 +162,7 @@ def display_attendance_ts():
162162
return render_template(request,
163163
'attendance_ts.html',
164164
username=user_name,
165-
date=datetime.utcnow().strftime("%Y-%m-%d"))
165+
date=datetime.now().strftime("%Y-%m-%d"))
166166

167167

168168
@attendance_bp.route('/attendance_hm')
@@ -178,7 +178,7 @@ def display_attendance_hm():
178178
return render_template(request,
179179
'attendance_hm.html',
180180
username=user_name,
181-
date=datetime.utcnow().strftime("%Y-%m-%d"),
181+
date=datetime.now().strftime("%Y-%m-%d"),
182182
members=get_non_alumni_non_coop(internal=True))
183183

184184

conditional/blueprints/conditional.py

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ def create_conditional():
6161

6262
uid = post_data['uid']
6363
description = post_data['description']
64-
due_date = datetime.strptime(post_data['due_date'], "%Y-%m-%d")
64+
due_date = datetime.strptime(post_data['dueDate'], "%Y-%m-%d")
6565

6666
db.session.add(Conditional(uid, description, due_date))
6767
db.session.flush()
@@ -97,3 +97,21 @@ def conditional_review():
9797
db.session.flush()
9898
db.session.commit()
9999
return jsonify({"success": True}), 200
100+
101+
102+
@conditionals_bp.route('/conditionals/delete/<cid>', methods=['DELETE'])
103+
def conditional_delete(cid):
104+
log = logger.new(user_name=request.headers.get("x-webauth-user"),
105+
request_id=str(uuid.uuid4()))
106+
log.info('api', action='delete conditional')
107+
108+
user_name = request.headers.get('x-webauth-user')
109+
if ldap_is_eval_director(user_name):
110+
Conditional.query.filter(
111+
Conditional.id == cid
112+
).delete()
113+
db.session.flush()
114+
db.session.commit()
115+
return jsonify({"success": True}), 200
116+
else:
117+
return "Must be evals director to delete!", 401

conditional/blueprints/dashboard.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,6 @@ def display_dashboard():
9696
user_name = request.headers.get('x-webauth-user')
9797

9898
can_vote = get_voting_members()
99-
logger.info('backend', action=can_vote)
10099
data = dict()
101100
data['username'] = user_name
102101
data['name'] = ldap_get_name(user_name)
@@ -142,6 +141,7 @@ def display_dashboard():
142141

143142
data['major_projects'] = [
144143
{
144+
'id': p.id,
145145
'name': p.name,
146146
'status': p.status,
147147
'description': p.description
@@ -173,7 +173,7 @@ def display_dashboard():
173173
cm_attendance = [
174174
{
175175
'type': m.committee,
176-
'datetime': m.timestamp
176+
'datetime': m.timestamp.date()
177177
} for m in CommitteeMeeting.query.filter(
178178
CommitteeMeeting.id.in_(c_meetings)
179179
)]

conditional/blueprints/major_project_submission.py

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,8 @@ def display_major_project():
3434
'proj_name': p.name,
3535
'status': p.status,
3636
'description': p.description,
37-
'id': p.id
37+
'id': p.id,
38+
'is_owner': bool(user_name == p.uid)
3839
} for p in
3940
MajorProject.query]
4041

@@ -95,3 +96,27 @@ def major_project_review():
9596
db.session.flush()
9697
db.session.commit()
9798
return jsonify({"success": True}), 200
99+
100+
101+
@major_project_bp.route('/major_project/delete/<pid>', methods=['DELETE'])
102+
def major_project_delete(pid):
103+
log = logger.new(user_name=request.headers.get("x-webauth-user"),
104+
request_id=str(uuid.uuid4()))
105+
log.info('api', action='review major project')
106+
107+
# get user data
108+
user_name = request.headers.get('x-webauth-user')
109+
major_project = MajorProject.query.filter(
110+
MajorProject.id == pid
111+
).first()
112+
creator = major_project.uid
113+
114+
if creator == user_name or ldap_is_eval_director(user_name):
115+
MajorProject.query.filter(
116+
MajorProject.id == pid
117+
).delete()
118+
db.session.flush()
119+
db.session.commit()
120+
return jsonify({"success": True}), 200
121+
else:
122+
return "Must be project owner to delete!", 401

conditional/blueprints/member_management.py

Lines changed: 72 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -230,67 +230,85 @@ def member_management_edituser(uid):
230230
post_data = request.get_json()
231231

232232
if not uid.isdigit():
233-
active_member = post_data['activeMember']
234-
235-
if ldap_is_eval_director(user_name):
236-
logger.info('backend', action="edit %s room: %s onfloor: %s housepts %s" %
237-
(uid, post_data['roomNumber'], post_data['onfloorStatus'],
238-
post_data['housingPoints']))
239-
room_number = post_data['roomNumber']
240-
onfloor_status = post_data['onfloorStatus']
241-
housing_points = post_data['housingPoints']
242-
243-
ldap_set_roomnumber(uid, room_number)
244-
if onfloor_status:
245-
ldap_add_member_to_group(uid, "onfloor")
246-
else:
247-
ldap_remove_member_from_group(uid, "onfloor")
248-
ldap_set_housingpoints(uid, housing_points)
249-
250-
# Only update if there's a diff
251-
logger.info('backend', action="edit %s active: %s" % (uid, active_member))
252-
if ldap_is_active(uid) != active_member:
253-
if active_member:
254-
ldap_set_active(uid)
255-
else:
256-
ldap_set_inactive(uid)
257-
258-
if active_member:
259-
db.session.add(SpringEval(uid))
260-
else:
261-
SpringEval.query.filter(
262-
SpringEval.uid == uid and
263-
SpringEval.active).update(
264-
{
265-
'active': False
266-
})
267-
clear_active_members_cache()
233+
edit_uid(uid, user_name, post_data)
268234
else:
269-
logger.info('backend', action="edit freshman account %s room: %s onfloor: %s eval_date: %s sig_missed %s" %
270-
(uid, post_data['roomNumber'], post_data['onfloorStatus'],
271-
post_data['evalDate'], post_data['sigMissed']))
235+
edit_fid(uid, post_data)
236+
237+
db.session.flush()
238+
db.session.commit()
239+
return jsonify({"success": True}), 200
240+
241+
def edit_uid(uid, user_name, post_data):
242+
active_member = post_data['activeMember']
272243

273-
name = post_data['name']
244+
if ldap_is_eval_director(user_name):
245+
logger.info('backend', action="edit %s room: %s onfloor: %s housepts %s" %
246+
(uid, post_data['roomNumber'], post_data['onfloorStatus'],
247+
post_data['housingPoints']))
274248
room_number = post_data['roomNumber']
275249
onfloor_status = post_data['onfloorStatus']
276-
eval_date = post_data['evalDate']
250+
housing_points = post_data['housingPoints']
277251

278-
if post_data['sigMissed'] == "":
279-
sig_missed = None
252+
ldap_set_roomnumber(uid, room_number)
253+
if onfloor_status:
254+
db.session.add(OnFloorStatusAssigned(uid, datetime.now()))
255+
ldap_add_member_to_group(uid, "onfloor")
280256
else:
281-
sig_missed = post_data['sigMissed']
282-
283-
FreshmanAccount.query.filter(FreshmanAccount.id == uid).update({
284-
'name': name,
285-
'eval_date': datetime.strptime(eval_date, "%Y-%m-%d"),
286-
'onfloor_status': onfloor_status,
287-
'room_number': room_number,
288-
'signatures_missed': sig_missed
289-
})
257+
for ofs in OnFloorStatusAssigned.query.filter(OnFloorStatusAssigned.uid == uid):
258+
db.session.delete(ofs)
259+
db.session.flush()
260+
db.session.commit()
261+
262+
ldap_remove_member_from_group(uid, "onfloor")
263+
ldap_set_housingpoints(uid, housing_points)
264+
265+
# Only update if there's a diff
266+
logger.info('backend', action="edit %s active: %s" % (uid, active_member))
267+
if ldap_is_active(uid) != active_member:
268+
if active_member:
269+
ldap_set_active(uid)
270+
else:
271+
ldap_set_inactive(uid)
290272

291-
db.session.flush()
292-
db.session.commit()
293-
return jsonify({"success": True}), 200
273+
if active_member:
274+
db.session.add(SpringEval(uid))
275+
else:
276+
SpringEval.query.filter(
277+
SpringEval.uid == uid and
278+
SpringEval.active).update(
279+
{
280+
'active': False
281+
})
282+
clear_active_members_cache()
283+
284+
285+
def edit_fid(uid, post_data):
286+
logger.info('backend', action="edit freshman account %s room: %s onfloor: %s eval_date: %s sig_missed %s" %
287+
(uid, post_data['roomNumber'], post_data['onfloorStatus'],
288+
post_data['evalDate'], post_data['sigMissed']))
289+
290+
name = post_data['name']
291+
292+
if post_data['roomNumber'] == "":
293+
room_number = None
294+
else:
295+
room_number = post_data['roomNumber']
296+
297+
onfloor_status = post_data['onfloorStatus']
298+
eval_date = post_data['evalDate']
299+
300+
if post_data['sigMissed'] == "":
301+
sig_missed = None
302+
else:
303+
sig_missed = post_data['sigMissed']
304+
305+
FreshmanAccount.query.filter(FreshmanAccount.id == uid).update({
306+
'name': name,
307+
'eval_date': datetime.strptime(eval_date, "%Y-%m-%d"),
308+
'onfloor_status': onfloor_status,
309+
'room_number': room_number,
310+
'signatures_missed': sig_missed
311+
})
294312

295313

296314
@member_management_bp.route('/manage/user/<uid>', methods=['GET'])

conditional/blueprints/slideshow.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ def slideshow_intro_display():
3737
return render_template(request,
3838
'intro_eval_slideshow.html',
3939
username=user_name,
40-
date=datetime.utcnow().strftime("%Y-%m-%d"),
40+
date=datetime.now().strftime("%Y-%m-%d"),
4141
members=display_intro_evals(internal=True))
4242

4343

@@ -96,7 +96,7 @@ def slideshow_spring_display():
9696
return render_template(request,
9797
'spring_eval_slideshow.html',
9898
username=user_name,
99-
date=datetime.utcnow().strftime("%Y-%m-%d"),
99+
date=datetime.now().strftime("%Y-%m-%d"),
100100
members=display_spring_evals(internal=True))
101101

102102

conditional/models/migrate.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -307,7 +307,7 @@ def migrate_models():
307307
from datetime import datetime
308308
members = [m['uid'][0].decode('utf-8') for m in ldap.ldap_get_onfloor_members()]
309309
for m in members:
310-
db.session.add(models.OnFloorStatusAssigned(m, datetime.utcnow()))
310+
db.session.add(models.OnFloorStatusAssigned(m, datetime.now()))
311311
print("END: ON FLOOR")
312312

313313
print("BEGIN: SPRING EVALS")

conditional/models/models.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,7 @@ def __init__(self, uid, description, due):
220220
self.uid = uid
221221
self.description = description
222222
self.date_due = due
223-
self.date_created = datetime.utcnow()
223+
self.date_created = datetime.now()
224224
self.status = "Pending"
225225
self.active = True
226226

0 commit comments

Comments
 (0)