Example #1
0
def get_speakers():
    search_parameters = request.args.to_dict()
    search_parameters.pop('event', None)
    if 'spotlight' in search_parameters:
        if search_parameters['spotlight'] == 'True':
            search_parameters['spotlight'] = True
        elif search_parameters['spotlight'] == 'False':
            search_parameters['spotlight'] = False

    event_name = request.args.get('event')
    if event_name is None:
        event = EventsFinder.get_default_event()
    else:
        event = EventsFinder.get_from_name(event_name)

    if event is None:
        return APIErrorValue("Event not found!").json(404)

    speakers_list = SpeakersFinder.get_website_speakers(
        event, search_parameters)

    if speakers_list is None:
        return APIErrorValue('No results found').json(400)

    return SpeakersValue(speakers_list).json(200)
Example #2
0
def resumes_dashboard(company_user):
    if company_user.company.cvs_access:
        event = EventsFinder.get_default_event()
        today = datetime.now()
        cvs_access_start = datetime.strptime(event.cvs_access_start,
                                             '%d %b %Y, %a')
        cvs_access_end = datetime.strptime(event.cvs_access_end,
                                           '%d %b %Y, %a')

        if today < cvs_access_start or today > cvs_access_end:
            return render_template('companies/resumes/resumes_dashboard.html',
                                   cv_students=None,
                                   interested_students=None,
                                   error="Out of access date")
    else:
        return render_template('companies/resumes/resumes_dashboard.html',
                               cv_students=None,
                               interested_students=None,
                               error="Not authorized")

    company_students = StudentsFinder.get_company_students(
        company_user.company)

    return render_template('companies/resumes/resumes_dashboard.html',
                           company_students=company_students,
                           error=None)
Example #3
0
def dashboard(company_user):
    if not company_user.user.accepted_terms:
        return render_template('companies/terms_conditions.html', user=company_user.user)

    if company_user.company.cvs_access:
        event = EventsFinder.get_default_event()
        today = datetime.now()
        cvs_access_start = datetime.strptime(event.cvs_access_start, '%d %b %Y, %a')
        cvs_access_end = datetime.strptime(event.cvs_access_end, '%d %b %Y, %a')
        if today < cvs_access_start or today > cvs_access_end:
            cvs_enabled = False
        else:
            cvs_enabled = True
    else:
        cvs_enabled = False

    company_auctions = CompaniesFinder.get_company_auctions(company_user.company)

    company_logo = CompaniesHandler.find_image(company_user.company.name)

    job_fair = False
    activity_types = []
    for activity in ActivitiesFinder.get_current_company_activities(company_user.company):
        if (activity.activity_type not in activity_types) and (activity.activity_type.name not in ['Job Fair','Job Fair Booth']):
            activity_types.append(activity.activity_type)

        if (activity.activity_type.name in ['Job Fair','Job Fair Booth']):
            job_fair = True

    return render_template('companies/dashboard.html', auctions=company_auctions, job_fair=job_fair, company_logo=company_logo, activity_types=activity_types, user=company_user, cvs_enabled=cvs_enabled)
Example #4
0
def squad_rewards_dashboard():
    squad_rewards = RewardsFinder.get_all_squad_rewards()
    rewards = RewardsFinder.get_all_rewards()
    event = EventsFinder.get_default_event()
    if (event is None or event.start_date is None or event.end_date is None):
        return render_template(
            'admin/students_app/rewards/rewards_dashboard.html',
            search=None,
            error='Please select a default event and its date',
            rewards=rewards,
            current_user=current_user)

    event_dates = EventsHandler.get_event_dates(event)

    for squad_reward in squad_rewards:
        if (squad_reward.date not in event_dates):
            RewardsHandler.delete_squad_reward(squad_reward)

    rewards_dates = [squad_reward.date for squad_reward in squad_rewards]

    for date in event_dates:
        if (not date in rewards_dates):
            RewardsHandler.create_squad_reward(reward_id=None, date=date)

    rewards = RewardsFinder.get_all_rewards()
    squad_rewards = RewardsFinder.get_all_squad_rewards()

    return render_template(
        'admin/students_app/rewards/squad_rewards_dashboard.html',
        error=None,
        squad_rewards=squad_rewards,
        rewards=rewards,
        current_user=current_user)
Example #5
0
    def get_all_from_type_and_event(cls, activity_type, event=None):
        if (event is None):
            event = EventsFinder.get_default_event()

        return Activities.query.filter_by(activity_type=activity_type,
                                          event_id=event.id).order_by(
                                              Activities.day,
                                              Activities.time).all()
Example #6
0
    def search_by_name_and_event(cls, name, event=None):
        search = "%{}%".format(name)

        if (event is None):
            event = EventsFinder.get_default_event()

        return Activities.query.filter(
            Activities.name.ilike(search)
            & (Activities.event_id == event.id)).order_by(
                Activities.day, Activities.time,
                Activities.activity_type_id).all()
Example #7
0
def get_activities(student):
    event = EventsFinder.get_default_event()
    date = request.args.get('date', None)
    if date is None:
        activities = event.activities
    else:
        activities = ActivitiesFinder.get_from_parameters({
            "event_id": event.id,
            "day": date
        })

    return StudentActivitiesValue(activities, student).json(200)
Example #8
0
def dashboard():
    event = EventsFinder.get_default_event()
    if (event is None):
        return render_template('admin/dashboard.html',
                               event=None,
                               logo=None,
                               user=current_user)

    logo = EventsHandler.find_image(image_name=str(event.external_id))
    return render_template('admin/dashboard.html',
                           event=event,
                           logo=logo,
                           user=current_user)
Example #9
0
def today_login(student):
    now = datetime.utcnow()
    date = now.strftime('%d %b %Y, %a')
    event = EventsFinder.get_default_event()
    dates = EventsHandler.get_event_dates(event)

    if date in dates:
        student_login = StudentsFinder.get_student_login(student, date)
        if student_login is None:
            StudentsHandler.add_student_login(student, date)
            StudentsHandler.add_points(student, int(Config.REWARD_LOGIN))
        else:
            return APIErrorValue("Already loggedin today").json(409)
    else:
        return APIErrorValue("Date out of event").json(409)

    return StudentsValue(student, details=True).json(200)
Example #10
0
def get_companies():
    search_parameters = request.args.to_dict()
    search_parameters.pop('event', None)
    event_name = request.args.get('event', None)

    if event_name is None:
        event = EventsFinder.get_default_event()
    else:
        event = EventsFinder.get_from_name(event_name)

    if event is None:
        return APIErrorValue("Event not found!").json(404)

    companies_list = CompaniesFinder.get_website_companies(
        event, search_parameters)

    if companies_list is None:
        return APIErrorValue('No results found').json(404)

    return CompaniesValue(companies_list, True).json(200)
Example #11
0
def activity_types_dashboard():
    events = EventsFinder.get_all()

    event_id = request.args.get('event', None)
    if (event_id is None):
        event = EventsFinder.get_default_event()
    else:
        event = EventsFinder.get_from_external_id(event_id)

    if event is None:
        error = 'No default event found! Please set a default event in the menu "Events"'
        return render_template('admin/activities/activities_dashboard.html',
                               event=None,
                               events=events,
                               error=error,
                               role=current_user.role.name)

    return render_template('admin/activities/activity_types_dashboard.html',
                           event=event,
                           events=events,
                           error=None,
                           role=current_user.role.name)
Example #12
0
def add_activity_dashboard():
    companies = CompaniesFinder.get_all()
    speakers = SpeakersFinder.get_all()
    tags = TagsFinder.get_all()
    rewards = RewardsFinder.get_all_rewards()

    event_id = request.args.get('event', None)
    if (event_id is None):
        event = EventsFinder.get_default_event()
    else:
        event = EventsFinder.get_from_external_id(event_id)

    if event is None:
        error = 'No default event found! Please set a default event in the menu "Events"'
        return render_template('admin/activities/activities_dashboard.html',
                               event=None,
                               error=error,
                               role=current_user.role.name)

    try:
        minDate = datetime.strptime(event.start_date,
                                    '%d %b %Y, %a').strftime("%Y,%m,%d")
        maxDate = datetime.strptime(event.end_date,
                                    '%d %b %Y, %a').strftime("%Y,%m,%d")
    except:
        minDate = None
        maxDate = None

    return render_template('admin/activities/add_activity.html', \
        companies=companies, \
        speakers=speakers, \
        tags=tags, \
        minDate=minDate, \
        maxDate=maxDate, \
        event=event, \
        rewards=rewards, \
        error=None)
Example #13
0
def activities_dashboard():
    search_parameters = request.args
    name = request.args.get('name')

    # get event
    event_id = request.args.get('event', None)

    if (event_id is None):
        event = EventsFinder.get_default_event()
    else:
        event = EventsFinder.get_from_external_id(event_id)

    events = EventsFinder.get_all()

    if event is None:
        error = 'No default event found! Please set a default event in the menu "Events"'
        return render_template('admin/activities/activities_dashboard.html',
                               event=None,
                               events=events,
                               activities=None,
                               error=error,
                               search=None,
                               role=current_user.role.name)

    # handle search bar requests
    if name is not None:
        search = name
        activities_list = ActivitiesFinder.search_by_name_and_event(
            name, event)

    # handle parameter requests
    elif len(search_parameters) != 0:
        search_parameters = request.args
        search = 'search name'

        if 'type' in search_parameters:
            type_external_id = search_parameters['type']
            activity_type = ActivityTypesFinder.get_from_external_id(
                uuid.UUID(type_external_id))
            activities_list = ActivitiesFinder.get_all_from_type_and_event(
                activity_type)
        else:
            activities_list = event.activities

    # request endpoint with no parameters should return all activities
    else:
        search = None
        activities_list = event.activities

    if not activities_list:
        error = 'No results found'
        return render_template('admin/activities/activities_dashboard.html',
                               event=event,
                               events=events,
                               activities=None,
                               error=error,
                               search=search,
                               role=current_user.role.name)

    return render_template('admin/activities/activities_dashboard.html',
                           event=event,
                           events=events,
                           activities=activities_list,
                           error=None,
                           search=search,
                           role=current_user.role.name)
Example #14
0
def get_event_info(student):
    event = EventsFinder.get_default_event()

    return StudentEventInfoValue(event).json(200)
Example #15
0
def statistics_dashboard(company_user):
    event = EventsFinder.get_default_event()
    company_user = UsersFinder.get_company_user_from_user(current_user)
    interested_students = StudentsFinder.get_company_students(
        company_user.company)
    company_activities = ActivitiesFinder.get_activities_from_company_and_event(
        company_user.company, event)
    company = company_user.company

    interactions = db_session.query(Logs) \
                     .join(Activities, Logs.entrypoint.contains(Activities.name)) \
                     .join(Users, Users.username == Logs.user_id) \
                     .join(Students, Users.id == Students.user_id) \
                     .with_entities(Activities.name, Students.course, Students.entry_year, func.count(Activities.name)) \
                     .filter((Events.id == event.id) & (Events.id == Activities.event_id) & (CompanyActivities.activity_id == Activities.id) & (CompanyActivities.company_id == company.id)) \
                     .group_by(Activities.name, Students.course, Students.entry_year) \
                     .all()

    total_interactions = 0
    total_interactions_by_activity = {}
    total_interactions_by_course = {}
    total_interactions_by_year = {}
    interactions_by_course = {}
    interactions_by_year = {}
    for interaction_type in interactions:
        total_interactions += interaction_type[3]

        if "Job Fair" in interaction_type[0]:
            interaction_type = list(interaction_type)
            interaction_type[0] = interaction_type[0].rsplit(" ", 1)[0]

        if interaction_type[0] not in total_interactions_by_activity:
            total_interactions_by_activity[
                interaction_type[0]] = interaction_type[3]

            interactions_by_course[interaction_type[0]] = {}
            interactions_by_course[interaction_type[0]][
                interaction_type[1]] = interaction_type[3]

            interactions_by_year[interaction_type[0]] = {}
            interactions_by_year[interaction_type[0]][
                interaction_type[2]] = interaction_type[3]
        else:
            total_interactions_by_activity[
                interaction_type[0]] += interaction_type[3]

            if interaction_type[1] not in interactions_by_course[
                    interaction_type[0]]:
                interactions_by_course[interaction_type[0]][
                    interaction_type[1]] = interaction_type[3]
            else:
                interactions_by_course[interaction_type[0]][
                    interaction_type[1]] += interaction_type[3]

            if interaction_type[2] not in interactions_by_year[
                    interaction_type[0]]:
                interactions_by_year[interaction_type[0]][
                    interaction_type[2]] = interaction_type[3]
            else:
                interactions_by_year[interaction_type[0]][
                    interaction_type[2]] += interaction_type[3]

        if interaction_type[1] not in total_interactions_by_course:
            total_interactions_by_course[
                interaction_type[1]] = interaction_type[3]
        else:
            total_interactions_by_course[
                interaction_type[1]] += interaction_type[3]

        if interaction_type[2] not in total_interactions_by_year:
            total_interactions_by_year[
                interaction_type[2]] = interaction_type[3]
        else:
            total_interactions_by_year[
                interaction_type[2]] += interaction_type[3]

    participations = StudentActivities \
        .query \
        .join(Activities, StudentActivities.activity_id == Activities.id) \
        .join(Students, StudentActivities.student_id == Students.id) \
        .with_entities(Activities.name, Students.course, Students.entry_year, func.count(Activities.name), Activities.day) \
        .filter((Events.id == event.id) & (Events.id == Activities.event_id) & (CompanyActivities.activity_id == Activities.id) & (CompanyActivities.company_id == company.id)) \
        .group_by(Activities.name, Students.course, Students.entry_year, Activities.day) \
        .all()

    total_participations = 0
    total_participations_by_activity = {}
    total_participations_by_course = {}
    total_participations_by_year = {}
    participations_by_course = {}
    participations_by_year = {}
    for participation_type in participations:
        total_participations += participation_type[3]

        if "Booth" in participation_type[0]:
            week_day = participation_type[4][-3:]
            participation_type = list(participation_type)
            if week_day == "Mon":
                participation_type[0] = "Job Fair Monday"
            elif week_day == "Tue":
                participation_type[0] = "Job Fair Tuesday"
            elif week_day == "Wed":
                participation_type[0] = "Job Fair Wednesday"
            elif week_day == "Thu":
                participation_type[0] = "Job Fair Thursday"
            elif week_day == "Fri":
                participation_type[0] = "Job Fair Friday"

        if participation_type[0] not in total_participations_by_activity:
            total_participations_by_activity[
                participation_type[0]] = participation_type[3]

            participations_by_course[participation_type[0]] = {}
            participations_by_course[participation_type[0]][
                participation_type[1]] = participation_type[3]

            participations_by_year[participation_type[0]] = {}
            participations_by_year[participation_type[0]][
                participation_type[2]] = participation_type[3]
        else:
            total_participations_by_activity[
                participation_type[0]] += participation_type[3]

            if participation_type[1] not in participations_by_course[
                    participation_type[0]]:
                participations_by_course[participation_type[0]][
                    participation_type[1]] = participation_type[3]
            else:
                participations_by_course[participation_type[0]][
                    participation_type[1]] += participation_type[3]

            if participation_type[2] not in participations_by_year[
                    participation_type[0]]:
                participations_by_year[participation_type[0]][
                    participation_type[2]] = participation_type[3]
            else:
                participations_by_year[participation_type[0]][
                    participation_type[2]] += participation_type[3]

        if participation_type[1] not in total_participations_by_course:
            total_participations_by_course[
                participation_type[1]] = participation_type[3]
        else:
            total_participations_by_course[
                participation_type[1]] += participation_type[3]

        if participation_type[2] not in total_participations_by_year:
            total_participations_by_year[
                participation_type[2]] = participation_type[3]
        else:
            total_participations_by_year[
                participation_type[2]] += participation_type[3]

    interactions_by_course["Total"] = total_interactions_by_course
    interactions_by_year["Total"] = total_interactions_by_year

    participations_by_course["Total"] = total_participations_by_course
    participations_by_year["Total"] = total_participations_by_year

    return render_template('companies/statistics/statistics_dashboard.html', \
                           participations_by_course=participations_by_course, \
                           participations_by_year=participations_by_year, \
                           interactions_by_course=interactions_by_course, \
                           interactions_by_year=interactions_by_year, \
                           total_participations_by_year=total_participations_by_year,\
                           total_participations=total_participations,\
                           total_participations_by_activity=total_participations_by_activity,\
                           total_participations_by_course=total_participations_by_course,\
                           total_interactions_by_year=total_interactions_by_year,\
                           total_interactions=total_interactions,\
                           total_interactions_by_course=total_interactions_by_course,\
                           total_interactions_by_activity=total_interactions_by_activity,\
                           activity="Total",\
                           company_activities=company_activities,\
                           interactions=interactions,\
                           participations=participations,\
                           error=None)
Example #16
0
def get_event():
    event = EventsFinder.get_default_event()

    return EventsValue(event).json(200)
Example #17
0
def get_activities():
    search_parameters = request.args
    name = request.args.get('name')
    speaker = request.args.get('speaker')
    company = request.args.get('company')

    event = request.args.get('event')
    if event is None:
        event = EventsFinder.get_default_event()
    else:
        event = EventsFinder.get_from_name(event)

    if event is None:
        return APIErrorValue("Event no found!").json(404)

    activities_list = []

    # handle search bar requests
    if name is not None:
        search = name
        activities_list = ActivitiesFinder.search_by_name_and_event(
            search, event)

    # handle parameter requests
    elif speaker is not None:
        search = speaker
        speaker = SpeakersFinder.get_from_name(search)

        if speaker:
            activities_list = ActivitiesFinder.get_activities_from_speaker_and_event(
                speaker, event)

    elif company is not None:
        search = company
        company = CompaniesFinder.get_from_name(search)

        if company:
            activities_list = ActivitiesFinder.get_activities_from_company_and_event(
                company, event)

    elif len(search_parameters) != 0:
        search = 'search name'

        try:
            search_parameters = request.args.to_dict()
            search_parameters['type'] = ActivityTypesFinder.get_from_name(
                search_parameters['type']).id
            search_parameters['activity_type_id'] = search_parameters.pop(
                'type')
        except:
            pass

        activities_list = ActivitiesFinder.get_from_parameters(
            search_parameters)

    # request endpoint with no parameters should return all activities
    else:
        search = None
        activities_list = ActivitiesFinder.get_activities_from_event(event)

    if activities_list is None:
        return APIErrorValue('No results found').json(400)

    return ActivitiesValue(activities_list).json(200)
Example #18
0
def get_activity_dates(student):
    event = EventsFinder.get_default_event()
    dates = EventsHandler.get_event_dates(event)

    return jsonify(dates)