def get_activity(activity_external_id): activity = ActivitiesFinder.get_from_external_id(activity_external_id) companies = CompaniesFinder.get_all() speakers = SpeakersFinder.get_all() tags = TagsFinder.get_all() rewards = RewardsFinder.get_all_rewards() event = EventsFinder.get_from_parameters({"default": True}) if event is None or len(event) == 0: 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) activity_types = event[0].activity_types company_activities = ActivitiesFinder.get_company_activities_from_activity_id( activity_external_id) speaker_activities = ActivitiesFinder.get_speaker_activities_from_activity_id( activity_external_id) activity_tags = TagsFinder.get_activity_tags_from_activity_id( activity_external_id) try: minDate = datetime.strptime(event[0].start_date, '%d %b %Y, %a').strftime("%Y,%m,%d") maxDate = datetime.strptime(event[0].end_date, '%d %b %Y, %a').strftime("%Y,%m,%d") except: minDate = None maxDate = None companies_zoom_url = {} for company in company_activities: companies_zoom_url[company.company_id] = company.zoom_link return render_template('admin/activities/update_activity.html', \ activity=activity, \ activity_types=activity_types, \ companies=companies, \ speakers=speakers, \ tags=tags, \ rewards=rewards, \ company_activities=[company.company_id for company in company_activities], \ speaker_activities=[speaker.speaker_id for speaker in speaker_activities], \ companies_zoom_url=companies_zoom_url, \ activity_tags=[tag.tag_id for tag in activity_tags], \ minDate=minDate, \ maxDate=maxDate, \ error=None)
def events_dashboard(): search_parameters = request.args name = request.args.get('name') # handle search bar requests if name is not None: search = name events_list = EventsFinder.search_by_name(name) # handle parameter requests elif len(search_parameters) != 0: search_parameters = request.args search = 'search name' events_list = EventsFinder.get_from_parameters(search_parameters) # request endpoint with no parameters should return all events else: search = None events_list = EventsFinder.get_all() if events_list is None or len(events_list) == 0: error = 'No results found' return render_template('admin/events/events_dashboard.html', events=None, error=error, search=search, role=current_user.role.name) now = datetime.utcnow() for event in events_list: if event.cvs_access_end: try: cvs_access_end = datetime.strptime(event.cvs_access_end, '%d %b %Y, %a') except: break event.cvs_purgeable = (now > cvs_access_end) else: event.cvs_purgeable = False return render_template('admin/events/events_dashboard.html', events=events_list, error=None, search=search, role=current_user.role.name)
def create_event(): name = request.form.get('name') start_date = request.form.get('start_date') end_date = request.form.get('end_date') cvs_submission_start = request.form.get('cvs_submission_start') cvs_submission_end = request.form.get('cvs_submission_end') cvs_access_start = request.form.get('cvs_access_start') cvs_access_end = request.form.get('cvs_access_end') email = request.form.get('email') location = request.form.get('location') default = request.form.get('default') facebook_event_link = request.form.get('facebook_event_link') facebook_link = request.form.get('facebook_link') youtube_link = request.form.get('youtube_link') instagram_link = request.form.get('instagram_link') show_schedule = request.form.get('show_schedule') show_registrations = request.form.get('show_registrations') if default == 'True': default = True else: default = False if show_schedule == 'True': show_schedule = True else: show_schedule = False if show_registrations == 'True': show_registrations = True else: show_registrations = False event = EventsHandler.create_event( name=name, start_date=start_date, end_date=end_date, default=default, email=email, location=location, facebook_link=facebook_link, facebook_event_link=facebook_event_link, youtube_link=youtube_link, instagram_link=instagram_link, show_schedule=show_schedule, show_registrations=show_registrations, cvs_submission_start=cvs_submission_start, cvs_submission_end=cvs_submission_end, cvs_access_start=cvs_access_start, cvs_access_end=cvs_access_end) if event is None: return render_template('admin/events/add_event.html', error="Failed to create event!") # there can only be one default if default: default_events = EventsFinder.get_from_parameters({"default": True}) for default_event in default_events: if default_event is not event: EventsHandler.update_event(event=default_event, default=False) if request.files: image_file = request.files.get('event_image', None) mobile_image_file = request.files.get('event_mobile_image', None) blueprint_file = request.files.get('event_blueprint', None) schedule_file = request.files.get('event_schedule', None) if image_file: result, msg = EventsHandler.upload_image(image_file, str(event.external_id)) if result == False: EventsHandler.delete_event(event) return render_template('admin/events/add_event.html', error=msg) if mobile_image_file: image_name = f'{event.external_id}_mobile' result, msg = EventsHandler.upload_image(mobile_image_file, image_name) if result == False: EventsHandler.delete_event(event) return render_template('admin/events/add_event.html', error=msg) if blueprint_file: image_name = f'{event.external_id}_blueprint' result, msg = EventsHandler.upload_image(blueprint_file, image_name) if result == False: EventsHandler.delete_event(event) return render_template('admin/events/add_event.html', error=msg) if schedule_file: image_name = f'{event.external_id}_schedule' result, msg = EventsHandler.upload_image(blueprint_file, image_name) if result == False: EventsHandler.delete_event(event) return render_template('admin/events/add_event.html', error=msg) return redirect(url_for('admin_api.events_dashboard'))
def update_event(event_external_id): event = EventsFinder.get_from_external_id(event_external_id) if event is None: return APIErrorValue('Couldnt find event').json(500) name = request.form.get('name') start_date = request.form.get('start_date') end_date = request.form.get('end_date') cvs_submission_start = request.form.get('cvs_submission_start') cvs_submission_end = request.form.get('cvs_submission_end') cvs_access_start = request.form.get('cvs_access_start') cvs_access_end = request.form.get('cvs_access_end') default = request.form.get('default') email = request.form.get('email') location = request.form.get('location') facebook_event_link = request.form.get('facebook_event_link') facebook_link = request.form.get('facebook_link') youtube_link = request.form.get('youtube_link') instagram_link = request.form.get('instagram_link') show_schedule = request.form.get('show_schedule') show_registrations = request.form.get('show_registrations') if default == 'True': default = True else: default = False if show_schedule == 'True': show_schedule = True else: show_schedule = False if show_registrations == 'True': show_registrations = True else: show_registrations = False updated_event = EventsHandler.update_event( event=event, name=name, start_date=start_date, end_date=end_date, default=default, email=email, location=location, facebook_link=facebook_link, facebook_event_link=facebook_event_link, youtube_link=youtube_link, instagram_link=instagram_link, show_schedule=show_schedule, show_registrations=show_registrations, cvs_submission_start=cvs_submission_start, cvs_submission_end=cvs_submission_end, cvs_access_start=cvs_access_start, cvs_access_end=cvs_access_end) logo = EventsHandler.find_image(image_name=str(event.external_id)) mobile_image_name = f'{event.external_id}_mobile' logo_mobile = EventsHandler.find_image(image_name=mobile_image_name) schedule_name = f'{event.external_id}_schedule' schedule = EventsHandler.find_image(image_name=schedule_name) blueprint_name = f'{event.external_id}_blueprint' blueprint = EventsHandler.find_image(image_name=blueprint_name) if updated_event is None: return render_template('admin/events/update_event.html', event=event, logo=logo, logo_mobile=logo_mobile, schedule=schedule, blueprint=blueprint, error=msg) # there can only be one default if default: default_events = EventsFinder.get_from_parameters({"default": True}) for default_event in default_events: if default_event is not updated_event: EventsHandler.update_event(event=default_event, default=False) current_app.logger.error(request.files) if request.files: image_file = request.files.get('event_image', None) mobile_image_file = request.files.get('event_mobile_image', None) blueprint_file = request.files.get('event_blueprint', None) schedule_file = request.files.get('event_schedule', None) if image_file: result, msg = EventsHandler.upload_image( image_file, str(updated_event.external_id)) if result == False: return render_template('admin/events/update_event.html', event=event, logo=logo, logo_mobile=logo_mobile, schedule=schedule, blueprint=blueprint, error=msg) if mobile_image_file: image_name = f'{updated_event.external_id}_mobile' result, msg = EventsHandler.upload_image(mobile_image_file, image_name) if result == False: return render_template('admin/events/update_event.html', event=event, logo=logo, logo_mobile=logo_mobile, schedule=schedule, blueprint=blueprint, error=msg) if blueprint_file: image_name = f'{updated_event.external_id}_blueprint' result, msg = EventsHandler.upload_image(blueprint_file, image_name) if result == False: return render_template('admin/events/update_event.html', event=event, logo=logo, logo_mobile=logo_mobile, schedule=schedule, blueprint=blueprint, error=msg) if schedule_file: image_name = f'{updated_event.external_id}_schedule' result, msg = EventsHandler.upload_image(schedule_file, image_name) if result == False: return render_template('admin/events/update_event.html', event=event, logo=logo, logo_mobile=logo_mobile, schedule=schedule, blueprint=blueprint, error=msg) return redirect(url_for('admin_api.events_dashboard'))
def update_activity(activity_external_id): activity = ActivitiesFinder.get_from_external_id(activity_external_id) company_activities = ActivitiesFinder.get_company_activities_from_activity_id( activity_external_id) speaker_activities = ActivitiesFinder.get_speaker_activities_from_activity_id( activity_external_id) activity_tags = TagsFinder.get_activity_tags_from_activity_id( activity_external_id) if activity is None: return APIErrorValue('Couldnt find activity').json(500) name = request.form.get('name') description = request.form.get('description') location = request.form.get('location') day = request.form.get('day') time = request.form.get('time') end_time = request.form.get('end_time') registration_link = request.form.get('registration_link') registration_open = request.form.get('registration_open') points = request.form.get('points') or None quest = request.form.get('quest') chat = request.form.get('chat') zoom_link = request.form.get('zoom_url') reward_id = request.form.get('reward') or None moderator = request.form.get('moderator') or None if time > end_time is None: return APIErrorValue('Activity starting time after ending time').json( 500) if registration_open == 'True': registration_open = True else: registration_open = False if quest == 'True': quest = True else: quest = False chat_type = ActivityChatEnum[chat] if chat else None activity_type_external_id = request.form.get('type') activity_type = ActivityTypesFinder.get_from_external_id( uuid.UUID(activity_type_external_id)) updated_activity = ActivitiesHandler.update_activity( activity=activity, activity_type=activity_type, name=name, description=description, location=location, day=day, time=time, end_time=end_time, registration_link=registration_link, registration_open=registration_open, points=points, quest=quest, zoom_link=zoom_link, chat_type=chat_type, chat=(chat == 'general'), reward_id=reward_id) if company_activities: for company_activity in company_activities: ActivitiesHandler.delete_company_activities(company_activity) if speaker_activities: for speaker_activity in speaker_activities: ActivitiesHandler.delete_speaker_activities(speaker_activity) if activity_tags: for activity_tag in activity_tags: TagsHandler.delete_activity_tag(activity_tag) # extract company names and speaker names from parameters companies = request.form.getlist('company') zoom_urls = request.form.getlist('url') speakers = request.form.getlist('speaker') tags = request.form.getlist('tag') # if company names where provided if companies: for index, name in enumerate(companies): company = CompaniesFinder.get_from_name(name) if company is None: return APIErrorValue('Couldnt find company').json(500) company_activity = ActivitiesHandler.add_company_activity( company, activity, zoom_urls[index]) if company_activity is None: return APIErrorValue('Failed to create company activity').json( 500) if activity_type.name == 'Job Fair': job_fair_booth = ActivityTypesFinder.get_from_name( 'Job Fair Booth') if not ActivitiesFinder.get_from_parameters( { 'name': company.name + " Booth", 'day': day }): job_fair_booth_activity = ActivitiesHandler.create_activity( name=company.name + " Booth", description="Visit " + company.name + " booth to earn extra points", activity_type=job_fair_booth, event=activity.event, location="Job Fair", day=day, time='10:30', end_time='16:30', points=40, quest=False) ActivitiesHandler.add_company_activity( company, job_fair_booth_activity) if speakers: for name in speakers: speaker = SpeakersFinder.get_from_name(name) if speaker is None: return APIErrorValue('Couldnt find speaker').json(500) speaker_activity = ActivitiesHandler.add_speaker_activity( speaker, activity) if speaker_activity is None: return APIErrorValue('Failed to create speaker activity').json( 500) if (moderator and moderator in speakers): moderator = SpeakersFinder.get_from_name(moderator) if moderator is None: return APIErrorValue('Couldnt find moderator').json(500) ActivitiesHandler.update_activity(activity, activity_type, moderator_id=moderator.id) elif (not moderator): ActivitiesHandler.update_activity(activity, activity_type, moderator_id=None) if tags: for name in tags: tag = TagsFinder.get_by_name(name) if tag is None: return APIErrorValue('Couldnt find tag').json(500) activity_tag = TagsHandler.add_activity_tag(activity, tag) if activity_tag is None: return APIErrorValue('Failed to create activity tag').json(500) if updated_activity is None: event = EventsFinder.get_from_parameters({"default": True}) if event is None or len(event) == 0: 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) activity_types = event[0].activity_types try: minDate = datetime.strptime(event[0].start_date, '%d %b %Y, %a').strftime("%Y,%m,%d") maxDate = datetime.strptime(event[0].end_date, '%d %b %Y, %a').strftime("%Y,%m,%d") except: minDate = None maxDate = None return render_template('admin/activities/update_activity.html', \ activity=activity, \ types=activity_types, \ companies=CompaniesFinder.get_all(), \ speakers=SpeakersFinder.get_all(), \ tags=TagsFinder.get_all(), \ rewards=RewardsFinder.get_all_rewards(), \ minDate=minDate, \ maxDate=maxDate, \ error="Failed to update activity!") return redirect(url_for('admin_api.activities_dashboard'))