def index(): if not configuration.verify_config_item_bool("modules", "module_core"): return "Core module not enabled. Enable it by adding under the [modules] section in {}, module_core = true.".format( configuration.config_file_location) cookie = request.cookies.get('jam_order_id') if cookie and len(cookie) == 9 and database.verify_attendee_id( cookie, database.get_current_jam_id()): return redirect("workshops") form = forms.GetOrderIDForm(request.form) if request.method == 'POST' and form.validate(): if database.verify_attendee_id( form.order_id.data, database.get_current_jam_id( )) and form.day_password.data == day_password: resp = make_response(redirect("workshops")) resp.set_cookie('jam_order_id', str(form.order_id.data), expires=(datetime.now() + timedelta(hours=6))) resp.set_cookie('jam_id', str(database.get_current_jam_id())) return resp else: flash( "Error, no order with that ID found or Jam password is wrong. Please try again.", "danger") return render_template('index.html', form=form) return render_template('index.html', form=form)
def manage_attendees(): # Getting names of users and also volunteers that are down as attending this Jam jam_attendees = database.get_all_attendees_for_jam( database.get_current_jam_id()) volunteer_attendances = database.get_attending_volunteers( database.get_current_jam_id(), only_attending_volunteers=True) for volunteer_attendee in volunteer_attendances: for volunteer_attendee_record in volunteer_attendee.attending: if volunteer_attendee_record.jam_id == database.get_current_jam_id( ): volunteer_attendee.current_jam = volunteer_attendee_record break volunteer_attendee.current_location = volunteer_attendee.current_jam.current_location volunteer_attendee.attendee_id = volunteer_attendee.user_id volunteer_attendee.order_id = "Volunteer" jam_attendees.append(volunteer_attendee) for attendee in jam_attendees: if attendee.current_location == "Checked in": attendee.bg_colour = database.green elif attendee.current_location == "Checked out": attendee.bg_colour = database.yellow elif attendee.current_location == "Not arrived": attendee.bg_colour = database.light_grey #jam_attendees = sorted(jam_attendees, key=lambda x: x.order_id, reverse=False) jam_attendees = sorted(jam_attendees, key=lambda x: x.current_location, reverse=False) return render_template("admin/manage_attendees.html", attendees=jam_attendees)
def display_workshops(): if database.verify_attendee_id(request.cookies.get('jam_order_id'), database.get_current_jam_id()): workshop_attendees = database.get_attendees_in_order( request.cookies.get("jam_order_id")) attendees = [] if workshop_attendees: for attendee in workshop_attendees: if attendee.ticket_type == "General Jam Attendee" or attendee.ticket_type == "First-timer": #attendees.append({"name":"{} {} - {}".format(attendee.first_name, attendee.surname, attendee.ticket_type), "id":attendee.attendee_id}) attendees.append({ "name": "{} {}".format(attendee.first_name, attendee.surname), "id": attendee.attendee_id }) return render_template( "workshops.html", workshop_slots=database.get_time_slots_to_select( database.get_current_jam_id(), request.cookies.get('jam_order_id')), jam_attendees=attendees) return render_template( "workshops.html", workshop_slots=database.get_time_slots_to_select( database.get_current_jam_id(), request.cookies.get('jam_order_id'))) else: flash( "You must enter your Eventbrite Order ID and the day password to access the workshop booking system.", "danger") return redirect("/")
def delete_jam(): jam_id = request.form["jam_id"] if int(jam_id) == database.get_current_jam_id(): print("Error, unable to remove Jam as is the current selected Jam {}".format(database.get_current_jam_id())) return print("Jam being deleted {}.".format(jam_id)) database.remove_jam(jam_id) return " "
def volunteer_attendance(): volunteer_attendances = database.get_attending_volunteers(database.get_current_jam_id()) form = forms.VolunteerAttendance(request.form) if request.method == 'POST' and form.validate(): database.add_volunteer_attendance(database.get_current_jam_id(), request.logged_in_user.user_id, int(literal_eval(form.attending_jam.data)), int(literal_eval(form.attending_setup.data)), int(literal_eval(form.attending_packdown.data)), int(literal_eval(form.attending_food.data)), form.notes.data) return redirect(("/admin/volunteer_attendance"), code=302) return render_template("admin/volunteer_attendance.html", form=form, volunteer_attendances=volunteer_attendances, user_id=request.logged_in_user.user_id, eventbrite_event_name = database.get_jam_details(database.get_current_jam_id()).name)
def select_jam(): jam_id = request.form["jam_id"] if int(jam_id) == database.get_current_jam_id(): print( "Error, unable to select Jam as is the current selected Jam - {}". format(database.get_current_jam_id())) return print("Jam being selected {}.".format(jam_id)) database.select_jam(int(jam_id)) return " "
def public_schedule(): time_slots, workshop_rooms_in_use = database.get_workshop_timetable_data( database.get_current_jam_id()) return render_template("public_schedule.html", time_slots=time_slots, workshop_rooms_in_use=workshop_rooms_in_use, total_workshop_rooms=len(workshop_rooms_in_use), container_name=" ", jam_title=database.get_jam_details( database.get_current_jam_id()).name)
def attendee_qr_login(order_id, password): if database.verify_attendee_id( order_id, database.get_current_jam_id()) and password == day_password: resp = make_response(redirect("/workshops")) resp.set_cookie('jam_order_id', str(order_id), expires=(datetime.now() + timedelta(hours=6))) resp.set_cookie('jam_id', str(database.get_current_jam_id())) return resp else: return "Invalid data from QR code..."
def add_workshop_to_jam(): form = forms.AddWorkshopToJam(request.form) if request.method == 'POST': # and form.validate(): database.add_workshop_to_jam_from_catalog( database.get_current_jam_id(), form.workshop.data, form.volunteer.data, form.slot.data, form.room.data, int(literal_eval(form.pilot.data))) return redirect("/admin/add_workshop_to_jam", code=302) return render_template('admin/add_workshop_to_jam_form.html', form=form, workshop_slots=database.get_time_slots_to_select( database.get_current_jam_id(), 0, admin_mode=True))
def get_jam_info(token): if token in api_keys: jam = eventbrite_interactions.get_eventbrite_event_by_id(database.get_current_jam_id()) to_return = [jam["name"]["text"], (database.convert_to_python_datetime(jam["start"]["local"].replace("T", " ")) - datetime.now()).days] return json.dumps(to_return) else: return "[]"
def fire_list(): jam_attendees = database.get_all_attendees_for_jam(database.get_current_jam_id()) volunteer_attendances = database.get_attending_volunteers(database.get_current_jam_id(), only_attending_volunteers=True) for volunteer_attendee in volunteer_attendances: for volunteer_attendee_record in volunteer_attendee.attending: if volunteer_attendee_record.jam_id == database.get_current_jam_id(): volunteer_attendee.current_jam = volunteer_attendee_record break if volunteer_attendee.current_jam.current_location != "Checked in": continue # If volunteer is not marked as checked in, ignore them volunteer_attendee.current_location = volunteer_attendee.current_jam.current_location volunteer_attendee.attendee_id = volunteer_attendee.user_id volunteer_attendee.order_id = "Volunteer" jam_attendees.append(volunteer_attendee) return render_template("admin/fire_list.html", attendees=jam_attendees)
def update_volunteer(): new_sessions = request.json sessions = [] for session in new_sessions: if len(session) > 0: sessions.append(int(session)) if database.set_user_workshop_runs_from_ids(request.logged_in_user, database.get_current_jam_id(), sessions): return "True"
def get_users_not_responded_to_attendance(token): if token in api_keys: users_not_responded = database.get_users_not_responded_to_attendance(database.get_current_jam_id()) email_addresses = [] for user in users_not_responded: email_addresses.append(user.email) return json.dumps(email_addresses) else: return "[]"
def volunteer(): time_slots, workshop_rooms_in_use = database.get_volunteer_data( database.get_current_jam_id(), request.logged_in_user) return render_template("admin/volunteer_signup.html", time_slots=time_slots, workshop_rooms_in_use=workshop_rooms_in_use, current_selected=",".join( str(x.workshop_run_id) for x in request.logged_in_user.workshop_runs) + ",")
def public_schedule(jam_id=None): if not jam_id: jam_id = database.get_current_jam_id() jams = database.get_jams_in_db() time_slots, workshop_rooms_in_use = database.get_workshop_timetable_data( jam_id) return render_template("public_schedule.html", time_slots=time_slots, workshop_rooms_in_use=workshop_rooms_in_use, total_workshop_rooms=len(workshop_rooms_in_use), container_name=" ", selected_jam=database.get_jam_details(jam_id), jams=jams)
def check_allowed(request, group_required): valid_cookie, cookie = validate_cookie(request.cookies.get('jam_login')) if not valid_cookie: if cookie: flash("Cookie expired, please log in again.", "danger") login_user = None selected_user_group_level = 1 order_id = request.cookies.get('jam_order_id') if order_id and database.verify_attendee_id( order_id, database.get_current_jam_id()): selected_user_group_level = 2 else: selected_user_group_level = cookie.user.group_id login_user = cookie.user print("Current user group level {} - Trying to access {} - {}".format( selected_user_group_level, group_required, request.path)) if selected_user_group_level >= group_required: return True, login_user return False, login_user
def update_attendee_info(): current_jam = database.get_current_jam_id() database.update_attendees_from_eventbrite(current_jam) return " "
def add_jam(): return render_template( "admin/add_jam.html", jams=eventbrite_interactions.get_eventbrite_events_name_id(), jams_in_db=database.get_jams_dict(), current_jam_id=database.get_current_jam_id())
def modify_workshop_ajax(): workshop_id = request.form['workshop_id'] attendee_id = request.form['attendee_id'] if database.add_attendee_to_workshop(database.get_current_jam_id(), attendee_id, workshop_id): return ("")
def admin_home(): return render_template("admin/admin_home.html", eventbrite_event_name=database.get_jam_details( database.get_current_jam_id()).name)
def attendee_list(): jam_attendees = database.get_all_attendees_for_jam( database.get_current_jam_id()) return render_template("admin/attendee_list.html", attendees=jam_attendees)
def wrangler_overview_equipment(): return render_template("admin/wrangler_overview_equipment.html", jam_id=database.get_current_jam_id(), raspberry_jam=database.get_jam_details(database.get_current_jam_id()).name, slots=database.get_wrangler_overview(database.get_current_jam_id()))
def remove_workshop_bookings_ajax(): workshop_id = request.form['workshop_id'] attendee_id = request.form['attendee_id'] if database.remove_attendee_to_workshop(database.get_current_jam_id(), attendee_id, workshop_id): return ("")