def confirm_payment(): start_route() if (startCardSessionFlag.getFlag() == False): return redirect(url_for('kiosk_mode.home')) # Rest the card session flag startCardSessionFlag.resetFlag() # This is where the payments will happen # Once they are passed, They will be redirected to make a session # If they fail, then they are redirected back to home # For now, it passes only devi_id_number = Device_ID.query.first().id_number # Grab the settings try: payload = requests.get(service_ip + '/device/get_settings/' + devi_id_number) except: flash("Unable to Connect to Server!", "danger") return redirect(url_for('error.register')) setting = payload.json() # Check if registered if not setting["registered"]: return redirect(url_for('register.home')) toggle_pay = setting["toggle_pay"] price = setting["price"] minutes, seconds = get_min_sec(seconds=setting["charge_time"]) charge_time_min = minutes charge_time_sec = seconds time_zone = setting["time_offset"] location = setting["location"] aspect_ratio = str( int(setting["aspect_ratio_width"]) if (setting["aspect_ratio_width"]).is_integer() else setting["aspect_ratio_width"] ) \ + ":" + str( int(setting["aspect_ratio_height"]) if (setting["aspect_ratio_height"]).is_integer() else setting["aspect_ratio_height"] ) # Check to see if toggle pay is on if toggle_pay: # Start the web socket to make get a payment cardTerminal.startPayment(price) return render_template('kiosk_mode/confirm_payment.html', title='Confirm Payment', service_ip=service_ip, devi_id_number=devi_id_number, toggle_pay=toggle_pay, price=price, minutes=minutes, seconds=seconds, charge_time_min=charge_time_min, charge_time_sec=charge_time_sec, time_zone=time_zone, location=location, aspect_ratio=aspect_ratio) else: return redirect(url_for('kiosk_mode.make_session'))
def cancleTransaction(): start_route() # Rest the card session flag startCardSessionFlag.resetFlag() cardTerminal.cancelTransaction() return redirect(url_for('kiosk_mode.home'))
def transaction_timeout(): start_route() # Rest the card session flag startCardSessionFlag.resetFlag() cardTerminal.confirmTransactionTimedOut() return redirect(url_for('kiosk_mode.home'))
def payment_error(): start_route() # Rest the card session flag startCardSessionFlag.resetFlag() cardTerminal.confirmPaymentError() flash('Sorry there was an error with the payment') return redirect(url_for('kiosk_mode.home'))
def payment_declined(): start_route() # Rest the card session flag startCardSessionFlag.resetFlag() cardTerminal.confirmPaymentDeclined() flash('Sorry your card was declined') return redirect(url_for('kiosk_mode.home'))
def home(): start_route() # Rest the card session flag startCardSessionFlag.resetFlag() devi_id_number = Device_ID.query.first().id_number # Grab the number of images the service has, also settings try: payload = requests.get(service_ip + '/device/img_count/' + devi_id_number) except: flash("Unable to Connect to Server!", "danger") return redirect(url_for('error.register')) pl_json = payload.json() # Check if registered if not pl_json["registered"]: return redirect(url_for('register.home')) img_count = pl_json["image_count"] setting = pl_json["settings"] sessions = current_sessions.local_sessions.values() date_strings = get_offset_dates_initiated( sessions=sessions, time_offset=setting["time_offset"]) date_end_str = get_offset_dates_end(sessions=sessions, time_offset=setting["time_offset"]) sessions_and_dates = zip(sessions, date_strings, date_end_str) # Get the total hours, minutes, seconds for the session time # hours, minutes, seconds = split_seconds(setting.charge_time) hours, minutes, seconds = split_seconds(setting["charge_time"]) # Random hex, used in the url of the images in order to reset the cache of the browser random_hex = secrets.token_hex(8) return render_template('kiosk_mode/homeV2.html', title='Kiosk Mode', current_sessions=current_sessions, sessions_and_dates=sessions_and_dates, service_ip=service_ip, devi_id_number=devi_id_number, img_count=img_count, random_hex=random_hex, setting=setting, hours=hours, minutes=minutes, seconds=seconds)
def make_session(): start_route() # Rest the card session flag startCardSessionFlag.resetFlag() # Only make a session if there is no session currently available if not current_sessions.has_sessions( ) and cardTerminal.checkPaymentSuccess(): cardTerminal.confirmPaymentSuccess() devi_id_number = Device_ID.query.first().id_number # Grab the number of images the service has, also settings try: payload = requests.get(service_ip + '/device/img_count/' + devi_id_number) except Exception as e: print(e) flash("Unable to Connect to Server!", "danger") return redirect(url_for('error.register')) pl_json = payload.json() # Check if registered if not pl_json["registered"]: return redirect(url_for('register.home')) # img_count = pl_json["image_count"] setting = pl_json["settings"] current_sessions.add_session(amount_paid=setting["price"], location=setting["location"], port="", increment_size=setting["charge_time"], increments=1) flash('Session Added Successfully! You may start charging now.') return redirect(url_for('kiosk_mode.home'))