def render_template(request, template_name, **kwargs): user_name = request.headers.get('x-webauth-user') # TODO maybe use the webauth request decorator if EvalSettings.query.first() is None: db.session.add(EvalSettings()) db.session.flush() db.session.commit() lockdown = EvalSettings.query.first().site_lockdown is_active = ldap_is_active(user_name) is_alumni = ldap_is_alumni(user_name) is_eboard = ldap_is_eboard(user_name) is_financial = ldap_is_financial_director(user_name) is_eval = ldap_is_eval_director(user_name) is_intromember = ldap_is_intromember(user_name) if is_eval: lockdown = False return flask_render_template(template_name, lockdown=lockdown, is_active=is_active, is_alumni=is_alumni, is_eboard=is_eboard, is_eval_director=is_eval, is_financial_director=is_financial, is_intromember=is_intromember, **kwargs)
def display_member_management(): log = logger.new(request=request) log.info('Display Member Management') username = request.headers.get('x-webauth-user') account = ldap_get_member(username) if not ldap_is_eval_director(account) and not ldap_is_financial_director( account): return "must be eval director", 403 member_list = get_members_info() onfloor_list = get_onfloor_members() co_op_list = [(ldap_get_member(member.uid).displayName, member.semester, member.uid) \ for member in CurrentCoops.query.filter( CurrentCoops.date_created > start_of_year(), CurrentCoops.semester != "Neither")] freshmen = FreshmanAccount.query freshmen_list = [] for freshman_user in freshmen: # pylint: disable=not-an-iterable freshmen_list.append({ "id": freshman_user.id, "name": freshman_user.name, "onfloor": freshman_user.onfloor_status, "room": "" if freshman_user.room_number is None else freshman_user.room_number, "eval_date": freshman_user.eval_date }) settings = EvalSettings.query.first() if settings: lockdown = settings.site_lockdown intro_form = settings.intro_form_active accept_dues_until = settings.accept_dues_until else: lockdown = False intro_form = False accept_dues_until = datetime.now() return render_template(request, "member_management.html", username=username, active=member_list, num_current=len(member_list), num_active=len(ldap_get_active_members()), num_fresh=len(freshmen_list), num_onfloor=len(onfloor_list), freshmen=freshmen_list, co_op=co_op_list, site_lockdown=lockdown, accept_dues_until=accept_dues_until, intro_form=intro_form)
def member_management_edituser(uid, user_dict=None): if not ldap_is_eval_director(user_dict['account']) and not ldap_is_financial_director(user_dict['account']): return "must be eval director", 403 if not uid.isdigit(): edit_uid(uid, request, user_dict['username']) else: edit_fid(uid, request) db.session.flush() db.session.commit() return jsonify({"success": True}), 200
def display_member_management(): log = logger.new(user_name=request.headers.get("x-webauth-user"), request_id=str(uuid.uuid4())) log.info('frontend', action='display member management') user_name = request.headers.get('x-webauth-user') if not ldap_is_eval_director(user_name) and not ldap_is_financial_director( user_name): return "must be eval director", 403 members = [m['uid'] for m in ldap_get_current_students()] member_list, onfloor_number = get_members_info(members) freshmen = FreshmanAccount.query freshmen_list = [] for freshman_user in freshmen: freshmen_list.append({ "id": freshman_user.id, "name": freshman_user.name, "onfloor": freshman_user.onfloor_status, "room": "" if freshman_user.room_number is None else freshman_user.room_number, "eval_date": freshman_user.eval_date }) settings = EvalSettings.query.first() if settings: lockdown = settings.site_lockdown intro_form = settings.intro_form_active else: lockdown = False intro_form = False return render_template(request, "member_management.html", username=user_name, active=member_list, num_current=len(member_list), num_active=len(ldap_get_active_members()), num_fresh=len(freshmen_list), num_onfloor=onfloor_number, freshmen=freshmen_list, site_lockdown=lockdown, intro_form=intro_form)
def display_member_management(user_dict=None): log = logger.new(request=request, auth_dict=user_dict) log.info('Display Member Management') if not ldap_is_eval_director( user_dict['account']) and not ldap_is_financial_director( user_dict['account']): return "must be eval director", 403 member_list = get_members_info() onfloor_list = get_onfloor_members() freshmen = FreshmanAccount.query freshmen_list = [] for freshman_user in freshmen: # pylint: disable=not-an-iterable freshmen_list.append({ "id": freshman_user.id, "name": freshman_user.name, "onfloor": freshman_user.onfloor_status, "room": "" if freshman_user.room_number is None else freshman_user.room_number, "eval_date": freshman_user.eval_date }) settings = EvalSettings.query.first() if settings: lockdown = settings.site_lockdown intro_form = settings.intro_form_active accept_dues_until = settings.accept_dues_until else: lockdown = False intro_form = False accept_dues_until = datetime.now() return render_template("member_management.html", username=user_dict['username'], active=member_list, num_current=len(member_list), num_active=len(ldap_get_active_members()), num_fresh=len(freshmen_list), num_onfloor=len(onfloor_list), freshmen=freshmen_list, site_lockdown=lockdown, accept_dues_until=accept_dues_until, intro_form=intro_form)
def wrapped_func(*args, **kwargs): user_name = request.headers.get('x-webauth-user') account = ldap_get_member(user_name) is_active = ldap_is_active(account) is_alumni = ldap_is_alumni(account) is_eboard = ldap_is_eboard(account) is_financial = ldap_is_financial_director(account) is_eval = ldap_is_eval_director(account) return func({"user_name": user_name, "is_active": is_active, "is_alumni": is_alumni, "is_eboard": is_eboard, "is_financial": is_financial, "is_eval": is_eval}, *args, **kwargs)
def member_management_financial(user_dict=None): log = logger.new(request=request, auth_dict=user_dict) if not ldap_is_financial_director(user_dict['account']): return "must be financial director", 403 post_data = request.get_json() if 'acceptDuesUntil' in post_data: date = datetime.strptime(post_data['acceptDuesUntil'], "%Y-%m-%d") log.info('Changed Dues Accepted Until: {}'.format(date)) EvalSettings.query.update({'accept_dues_until': date}) db.session.flush() db.session.commit() return jsonify({"success": True}), 200
def member_management_edituser(uid): username = request.headers.get('x-webauth-user') account = ldap_get_member(username) if not ldap_is_eval_director(account) and not ldap_is_financial_director( account): return "must be eval director", 403 if not uid.isdigit(): edit_uid(uid, request) else: edit_fid(uid, request) db.session.flush() db.session.commit() return jsonify({"success": True}), 200
def render_template(request, template_name, **kwargs): user_name = request.headers.get('x-webauth-user') # TODO maybe use the webauth request decorator if EvalSettings.query.first() is None: db.session.add(EvalSettings()) db.session.flush() db.session.commit() account = ldap_get_member(user_name) lockdown = EvalSettings.query.first().site_lockdown accepting_dues = EvalSettings.query.first().accept_dues_until > date.today() is_active = ldap_is_active(account) is_alumni = ldap_is_alumni(account) is_eboard = ldap_is_eboard(account) is_financial = ldap_is_financial_director(account) is_eval = ldap_is_eval_director(account) is_intromember = ldap_is_intromember(account) is_rtp = ldap_is_rtp(account) cm_review = len(CommitteeMeeting.query.filter( CommitteeMeeting.approved == False).all()) # pylint: disable=singleton-comparison ts_review = len(TechnicalSeminar.query.filter( TechnicalSeminar.approved == False).all()) # pylint: disable=singleton-comparison admin_warning = lockdown if is_eboard or is_rtp: lockdown = False return flask_render_template( template_name, lockdown=lockdown, admin_warning=admin_warning, accepting_dues=accepting_dues, is_active=is_active, is_alumni=is_alumni, is_eboard=is_eboard, is_eval_director=is_eval, is_financial_director=is_financial, is_intromember=is_intromember, is_rtp=is_rtp, pending_review=(cm_review + ts_review), **kwargs)
def render_template(template_name, user_dict=None, **kwargs): if EvalSettings.query.first() is None: db.session.add(EvalSettings()) db.session.flush() db.session.commit() lockdown = EvalSettings.query.first().site_lockdown accepting_dues = EvalSettings.query.first().accept_dues_until > date.today( ) is_active = ldap_is_active(user_dict['account']) is_alumni = ldap_is_alumni(user_dict['account']) is_eboard = ldap_is_eboard(user_dict['account']) is_financial = ldap_is_financial_director(user_dict['account']) is_eval = ldap_is_eval_director(user_dict['account']) is_intromember = ldap_is_intromember(user_dict['account']) is_rtp = ldap_is_rtp(user_dict['account']) cm_review = len( CommitteeMeeting.query.filter( CommitteeMeeting.approved == False).all()) # pylint: disable=singleton-comparison ts_review = len( TechnicalSeminar.query.filter( TechnicalSeminar.approved == False).all()) # pylint: disable=singleton-comparison admin_warning = lockdown if is_eboard or is_rtp: lockdown = False return flask_render_template(template_name, lockdown=lockdown, admin_warning=admin_warning, accepting_dues=accepting_dues, is_active=is_active, is_alumni=is_alumni, is_eboard=is_eboard, is_eval_director=is_eval, is_financial_director=is_financial, is_intromember=is_intromember, is_rtp=is_rtp, pending_review=(cm_review + ts_review), **kwargs)
def member_management_edituser(uid): log = logger.new(user_name=request.headers.get("x-webauth-user"), request_id=str(uuid.uuid4())) log.info('api', action='edit uid user') user_name = request.headers.get('x-webauth-user') if not ldap_is_eval_director(user_name) and not ldap_is_financial_director( user_name): return "must be eval director", 403 post_data = request.get_json() if not uid.isdigit(): edit_uid(uid, user_name, post_data) else: edit_fid(uid, post_data) db.session.flush() db.session.commit() return jsonify({"success": True}), 200
def member_management_getuserinfo(uid): log = logger.new(user_name=request.headers.get("x-webauth-user"), request_id=str(uuid.uuid4())) log.info('api', action='retrieve user info') user_name = request.headers.get('x-webauth-user') if not ldap_is_eval_director(user_name) and not ldap_is_financial_director( user_name): return "must be eval or financial director", 403 acct = None if uid.isnumeric(): acct = FreshmanAccount.query.filter(FreshmanAccount.id == uid).first() # missed hm def get_hm_date(hm_id): return HouseMeeting.query.filter( HouseMeeting.id == hm_id). \ first().date.strftime("%Y-%m-%d") # if fid if acct: missed_hm = [{ 'date': get_hm_date(hma.meeting_id), 'id': hma.meeting_id, 'excuse': hma.excuse, 'status': hma.attendance_status } for hma in FreshmanHouseMeetingAttendance.query.filter( FreshmanHouseMeetingAttendance.fid == acct.id and ( FreshmanHouseMeetingAttendance.attendance_status != attendance_enum.Attended))] hms_missed = [] for hm in missed_hm: if hm['status'] != "Attended": hms_missed.append(hm) return jsonify({ 'id': acct.id, 'name': acct.name, 'eval_date': acct.eval_date.strftime("%Y-%m-%d"), 'missed_hm': hms_missed, 'onfloor_status': acct.onfloor_status, 'room_number': acct.room_number, 'sig_missed': acct.signatures_missed }), 200 if ldap_is_eval_director(user_name): missed_hm = [{ 'date': get_hm_date(hma.meeting_id), 'id': hma.meeting_id, 'excuse': hma.excuse, 'status': hma.attendance_status } for hma in MemberHouseMeetingAttendance.query.filter( MemberHouseMeetingAttendance.uid == uid and ( MemberHouseMeetingAttendance.attendance_status != attendance_enum.Attended))] hms_missed = [] for hm in missed_hm: if hm['status'] != "Attended": hms_missed.append(hm) return jsonify({ 'name': ldap_get_name(uid), 'room_number': ldap_get_room_number(uid), 'onfloor_status': ldap_is_onfloor(uid), 'housing_points': ldap_get_housing_points(uid), 'active_member': ldap_is_active(uid), 'missed_hm': hms_missed, 'user': '******' }), 200 else: return jsonify({ 'name': ldap_get_name(uid), 'active_member': ldap_is_active(uid), 'user': '******' }), 200
def member_management_getuserinfo(uid, user_dict=None): log = logger.new(request=request, auth_dict=user_dict) log.info('Get {}\'s Information'.format(uid)) if not ldap_is_eval_director( user_dict['account']) and not ldap_is_financial_director( user_dict['account']): return "must be eval or financial director", 403 acct = None if uid.isnumeric(): acct = FreshmanAccount.query.filter(FreshmanAccount.id == uid).first() # missed hm def get_hm_date(hm_id): return HouseMeeting.query.filter( HouseMeeting.id == hm_id). \ first().date.strftime("%Y-%m-%d") # if fid if acct: missed_hm = [{ 'date': get_hm_date(hma.meeting_id), 'id': hma.meeting_id, 'excuse': hma.excuse, 'status': hma.attendance_status } for hma in FreshmanHouseMeetingAttendance.query.filter( FreshmanHouseMeetingAttendance.fid == acct.id and ( FreshmanHouseMeetingAttendance.attendance_status != attendance_enum.Attended))] hms_missed = [] for hm in missed_hm: if hm['status'] != "Attended": hms_missed.append(hm) return jsonify({ 'id': acct.id, 'name': acct.name, 'eval_date': acct.eval_date.strftime("%Y-%m-%d"), 'missed_hm': hms_missed, 'onfloor_status': acct.onfloor_status, 'room_number': acct.room_number, 'sig_missed': acct.signatures_missed }), 200 account = ldap_get_member(uid) if ldap_is_eval_director(ldap_get_member(user_dict['username'])): missed_hm = [{ 'date': get_hm_date(hma.meeting_id), 'id': hma.meeting_id, 'excuse': hma.excuse, 'status': hma.attendance_status } for hma in MemberHouseMeetingAttendance.query.filter( MemberHouseMeetingAttendance.uid == uid and ( MemberHouseMeetingAttendance.attendance_status != attendance_enum.Attended))] hms_missed = [] for hm in missed_hm: if hm['status'] != "Attended": hms_missed.append(hm) return jsonify({ 'name': account.cn, 'room_number': account.roomNumber, 'onfloor_status': ldap_is_onfloor(account), 'housing_points': account.housingPoints, 'active_member': ldap_is_active(account), 'missed_hm': hms_missed, 'user': '******' }), 200 return jsonify({ 'name': account.cn, 'active_member': ldap_is_active(account), 'user': '******' }), 200
def member_management_edituser(uid): log = logger.new(user_name=request.headers.get("x-webauth-user"), request_id=str(uuid.uuid4())) log.info('api', action='edit uid user') user_name = request.headers.get('x-webauth-user') if not ldap_is_eval_director(user_name) and not ldap_is_financial_director( user_name): return "must be eval director", 403 post_data = request.get_json() if not uid.isdigit(): active_member = post_data['activeMember'] if ldap_is_eval_director(user_name): logger.info( 'backend', action="edit %s room: %s onfloor: %s housepts %s" % (uid, post_data['roomNumber'], post_data['onfloorStatus'], post_data['housingPoints'])) room_number = post_data['roomNumber'] onfloor_status = post_data['onfloorStatus'] housing_points = post_data['housingPoints'] ldap_set_roomnumber(uid, room_number) if onfloor_status: ldap_add_member_to_group(uid, "onfloor") else: ldap_remove_member_from_group(uid, "onfloor") ldap_set_housingpoints(uid, housing_points) # Only update if there's a diff logger.info('backend', action="edit %s active: %s" % (uid, active_member)) if ldap_is_active(uid) != active_member: if active_member: ldap_set_active(uid) else: ldap_set_inactive(uid) if active_member: db.session.add(SpringEval(uid)) else: SpringEval.query.filter(SpringEval.uid == uid and SpringEval.active).update( {'active': False}) clear_active_members_cache() else: logger.info( 'backend', action="edit freshman account %s room: %s onfloor: %s eval_date: %s" % (uid, post_data['roomNumber'], post_data['onfloorStatus'], post_data['evalDate'])) name = post_data['name'] room_number = post_data['roomNumber'] onfloor_status = post_data['onfloorStatus'] eval_date = post_data['evalDate'] FreshmanAccount.query.filter(FreshmanAccount.id == uid).update({ 'name': name, 'eval_date': datetime.strptime(eval_date, "%Y-%m-%d"), 'onfloor_status': onfloor_status, 'room_number': room_number }) db.session.flush() db.session.commit() return jsonify({"success": True}), 200