예제 #1
0
파일: flask.py 프로젝트: zedoax/conditional
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)
예제 #2
0
def slideshow_spring_review(user_dict=None):
    log = logger.new(request=request, auth_dict=user_dict)

    if not ldap_is_eval_director(user_dict['account']):
        return redirect("/dashboard", code=302)

    post_data = request.get_json()
    uid = post_data['uid']
    status = post_data['status']

    log.info('Spring Eval for {}: {}'.format(uid, status))

    SpringEval.query.filter(
        SpringEval.uid == uid and
        SpringEval.active). \
        update(
        {
            'status': status
        })

    db.session.flush()
    db.session.commit()

    # Automate ldap group organizing
    account = ldap_get_member(uid)

    if status == "Passed":
        if ldap_is_intromember(account):
            ldap_set_not_intro_member(account)
    elif status == "Failed":
        if ldap_is_intromember(account):
            ldap_set_failed(account)
            ldap_set_inactive(account)
        else:
            ldap_set_bad_standing(account)

    return jsonify({"success": True}), 200
예제 #3
0
def display_intro_evals_form(user_dict=None):
    log = logger.new(request=request, auth_dict=user_dict)
    log.info('Display Intro Evals Form')

    if not ldap_is_intromember(user_dict['account']):
        return redirect("/dashboard")
    eval_data = FreshmanEvalData.query.filter(
        FreshmanEvalData.uid == user_dict['username']).first()

    is_open = EvalSettings.query.first().intro_form_active
    # return names in 'first last (username)' format
    return render_template('intro_evals_form.html',
                           username=user_dict['username'],
                           social_events=eval_data.social_events,
                           other_notes=eval_data.other_notes,
                           is_open=is_open)
예제 #4
0
파일: flask.py 프로젝트: zthart/conditional
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)
예제 #5
0
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)
예제 #6
0
def display_intro_evals_form():
    log = logger.new(request=request)
    log.info('Display Intro Evals Form')

    # get user data
    user_name = request.headers.get('x-webauth-user')
    account = ldap_get_member(user_name)
    if not ldap_is_intromember(account):
        return redirect("/dashboard")
    eval_data = FreshmanEvalData.query.filter(
        FreshmanEvalData.uid == user_name).first()

    is_open = EvalSettings.query.first().intro_form_active
    # return names in 'first last (username)' format
    return render_template(request,
                           'intro_evals_form.html',
                           username=user_name,
                           social_events=eval_data.social_events,
                           other_notes=eval_data.other_notes,
                           is_open=is_open)
예제 #7
0
def display_intro_evals_form():
    log = logger.new(user_name=request.headers.get("x-webauth-user"),
                     request_id=str(uuid.uuid4()))
    log.info('frontend', action='display intro evals form')

    # get user data
    user_name = request.headers.get('x-webauth-user')

    if not ldap_is_intromember(user_name):
        return redirect("/dashboard")
    eval_data = FreshmanEvalData.query.filter(
        FreshmanEvalData.uid == user_name).first()

    is_open = EvalSettings.query.first().intro_form_active
    # return names in 'first last (username)' format
    return render_template(request,
                           'intro_evals_form.html',
                           username=user_name,
                           social_events=eval_data.social_events,
                           other_notes=eval_data.other_notes,
                           is_open=is_open)
예제 #8
0
def display_dashboard():
    log = logger.new(user_name=request.headers.get("x-webauth-user"),
                     request_id=str(uuid.uuid4()))
    log.info('frontend', action='display dashboard')

    # get user data

    user_name = request.headers.get('x-webauth-user')

    can_vote = get_voting_members()
    data = dict()
    data['username'] = user_name
    data['name'] = ldap_get_name(user_name)
    # Member Status
    data['active'] = ldap_is_active(user_name)
    # On-Floor Status
    data['onfloor'] = ldap_is_onfloor(user_name)
    # Voting Status
    data['voting'] = bool(user_name in can_vote)

    # freshman shit
    if ldap_is_intromember(user_name):
        data['freshman'] = get_freshman_data(user_name)
    else:
        data['freshman'] = False

    spring = {}
    c_meetings = [
        m.meeting_id for m in MemberCommitteeAttendance.query.filter(
            MemberCommitteeAttendance.uid == user_name)
    ]
    spring['committee_meetings'] = len(c_meetings)
    h_meetings = [(m.meeting_id, m.attendance_status)
                  for m in MemberHouseMeetingAttendance.query.filter(
                      MemberHouseMeetingAttendance.uid == user_name)]
    spring['hm_missed'] = len([h for h in h_meetings if h[1] == "Absent"])

    data['spring'] = spring

    # only show housing if member has onfloor status
    if ldap_is_onfloor(user_name):
        housing = dict()
        housing['points'] = ldap_get_housing_points(user_name)
        housing['room'] = ldap_get_room_number(user_name)
        if housing['room'] == "N/A":
            housing['queue_pos'] = "%s / %s" % (get_queue_position(user_name),
                                                get_queue_length())
        else:
            housing['queue_pos'] = "N/A"
    else:
        housing = None

    data['housing'] = housing

    data['major_projects'] = [{
        'id': p.id,
        'name': p.name,
        'status': p.status,
        'description': p.description
    } for p in MajorProject.query.filter(MajorProject.uid == user_name)]

    data['major_projects_count'] = len(data['major_projects'])

    spring['mp_status'] = "Failed"
    for mp in data['major_projects']:
        if mp['status'] == "Pending":
            spring['mp_status'] = 'Pending'
            continue
        if mp['status'] == "Passed":
            spring['mp_status'] = 'Passed'
            break

    conditionals = [{
        'date_created': c.date_created,
        'date_due': c.date_due,
        'description': c.description,
        'status': c.status
    } for c in Conditional.query.filter(Conditional.uid == user_name)]
    data['conditionals'] = conditionals
    data['conditionals_len'] = len(conditionals)

    cm_attendance = [{
        'type': m.committee,
        'datetime': m.timestamp.date()
    } for m in CommitteeMeeting.query.filter(
        CommitteeMeeting.id.in_(c_meetings))]

    hm_attendance = [{
        'reason':
        m.excuse,
        'datetime':
        HouseMeeting.query.filter(HouseMeeting.id == m.meeting_id).first().date
    } for m in MemberHouseMeetingAttendance.query.filter(
        MemberHouseMeetingAttendance.uid == user_name).filter(
            MemberHouseMeetingAttendance.attendance_status == "Absent")]

    data['cm_attendance'] = cm_attendance
    data['cm_attendance_len'] = len(cm_attendance)
    data['hm_attendance'] = hm_attendance
    data['hm_attendance_len'] = len(hm_attendance)

    return render_template(request, 'dashboard.html', **data)
예제 #9
0
def display_dashboard(user_dict=None):
    log = logger.new(request=request, auth_dict=user_dict)
    log.info('display dashboard')

    # Get the list of voting members.
    can_vote = get_voting_members()

    data = dict()
    data['username'] = user_dict['account'].uid
    data['active'] = ldap_is_active(user_dict['account'])
    data['bad_standing'] = ldap_is_bad_standing(user_dict['account'])
    data['onfloor'] = ldap_is_onfloor(user_dict['account'])
    data['voting'] = bool(user_dict['account'].uid in can_vote)

    data['voting_count'] = {
        "Voting Members": len(can_vote),
        "Active Members": len(ldap_get_active_members())
    }
    # freshman shit
    if ldap_is_intromember(user_dict['account']):
        data['freshman'] = get_freshman_data(user_dict['account'].uid)
    else:
        data['freshman'] = False

    spring = {}
    c_meetings = get_cm(user_dict['account'])
    spring['committee_meetings'] = len(c_meetings)
    spring['req_meetings'] = req_cm(user_dict['account'])
    h_meetings = [(m.meeting_id, m.attendance_status)
                  for m in get_hm(user_dict['account'])]
    spring['hm_missed'] = len([h for h in h_meetings if h[1] == "Absent"])
    eval_entry = SpringEval.query.filter(
        SpringEval.uid == user_dict['account'].uid,
        SpringEval.date_created > start_of_year(),
        SpringEval.active == True).first()  # pylint: disable=singleton-comparison
    if eval_entry is not None:
        spring['status'] = eval_entry.status
    else:
        spring['status'] = None

    data['spring'] = spring

    # only show housing if member has onfloor status
    if ldap_is_onfloor(user_dict['account']):
        housing = dict()
        housing['points'] = user_dict['account'].housingPoints
        housing['room'] = user_dict['account'].roomNumber
        housing['queue_pos'] = get_queue_position(user_dict['account'].uid)
    else:
        housing = None

    data['housing'] = housing

    data['major_projects'] = [{
        'id': p.id,
        'name': p.name,
        'status': p.status,
        'description': p.description
    } for p in MajorProject.query.filter(
        MajorProject.uid == user_dict['account'].uid,
        MajorProject.date > start_of_year())]

    data['major_projects_count'] = len(data['major_projects'])

    spring['mp_status'] = "Failed"
    for mp in data['major_projects']:
        if mp['status'] == "Pending":
            spring['mp_status'] = 'Pending'
            continue
        if mp['status'] == "Passed":
            spring['mp_status'] = 'Passed'
            break

    conditionals = [{
        'date_created': c.date_created,
        'date_due': c.date_due,
        'description': c.description,
        'status': c.status
    } for c in Conditional.query.filter(
        Conditional.uid == user_dict['account'].uid,
        Conditional.date_due > start_of_year())]
    data['conditionals'] = conditionals
    data['conditionals_len'] = len(conditionals)

    hm_attendance = [{
        'reason': m.excuse,
        'datetime': m.date
    } for m in MemberHouseMeetingAttendance.query.outerjoin(
        HouseMeeting, MemberHouseMeetingAttendance.meeting_id ==
        HouseMeeting.id).with_entities(
            MemberHouseMeetingAttendance.excuse, HouseMeeting.date).filter(
                MemberHouseMeetingAttendance.uid == user_dict['account'].uid,
                MemberHouseMeetingAttendance.attendance_status == "Absent",
                HouseMeeting.date > start_of_year())]

    data['cm_attendance'] = c_meetings
    data['cm_attendance_len'] = len(c_meetings)
    data['hm_attendance'] = hm_attendance
    data['hm_attendance_len'] = len(hm_attendance)

    return render_template('dashboard.html', **data)