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)
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)
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)
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)
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()
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()
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)
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)
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)
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)
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)
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)
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)
def get_event_info(student): event = EventsFinder.get_default_event() return StudentEventInfoValue(event).json(200)
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)
def get_event(): event = EventsFinder.get_default_event() return EventsValue(event).json(200)
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)
def get_activity_dates(student): event = EventsFinder.get_default_event() dates = EventsHandler.get_event_dates(event) return jsonify(dates)