Files
Inventarsystem/Web/modules/terminplaner/blueprint.py
T

96 lines
3.5 KiB
Python

from flask import Blueprint, render_template, request, session, url_for, redirect, flash
import Web.modules.terminplaner.backend_server as appointment_service
import Web.modules.database.settings as cfg
# Create a blueprint instance
appoint_bp = Blueprint('terminplaner', __name__)
def _require_module_enabled():
if not cfg.MODULES.is_enabled('terminplan'):
flash('Der Terminplaner ist deaktiviert.', 'info')
return redirect(url_for('home'))
return None
@appoint_bp.route('/client/<appointment_id>', methods=['POST', 'GET'])
def client(appointment_id):
"""
The Route for the terminplaner to work with the client
"""
guard = _require_module_enabled()
if guard:
return guard
available = appointment_service.get_available(appointment_id)
if not available:
flash('Der Termin wurde nicht gefunden.', 'error')
return redirect(url_for('terminplan'))
if request.method == 'POST':
start_daytime = request.form.get('start_day_time')
username = request.form.get('client_name')
if not start_daytime or not username:
flash('Bitte Name und gewünschte Uhrzeit angeben.', 'error')
return render_template(
'termin_client.html',
appointment_id=appointment_id,
available=available,
current_user=session.get('username', ''),
)
if appointment_service.book_slot(appointment_id, start_daytime, username):
flash('Der Termin wurde gespeichert.', 'success')
return redirect(url_for('terminplaner.client', appointment_id=appointment_id))
flash('Der Termin konnte nicht gespeichert werden.', 'error')
return render_template(
'termin_client.html',
appointment_id=appointment_id,
available=available,
current_user=session.get('username', ''),
)
@appoint_bp.route('/configure', methods=['GET', 'POST'])
def configure():
"""
Route for authenticated persons to configure a new appointment for them
"""
guard = _require_module_enabled()
if guard:
return guard
if 'username' not in session:
flash('Bitte mit einem Konto anmelden.', 'error')
return redirect(url_for('login'))
if request.method == "POST":
start = request.form.get('start_date')
end = request.form.get('end_date')
time = request.form.get('time_frame')
slots_amount = request.form.get('slots_amounts')
slot_lenght = request.form.get('slot_lenght')
mail = request.form.get('mail', '')
note = request.form.get('note', '')
if not start or not end or not time or not slots_amount or not slot_lenght:
flash('Bitte alle Pflichtfelder ausfüllen.', 'error')
return render_template('termin_configure.html', school_periods=cfg.SCHOOL_PERIODS, generated_link=None)
link = appointment_service.new(start, end, time, slots_amount, slot_lenght, session["username"], mail, note)
flash('Der Terminplan wurde angelegt.', 'success')
return render_template('termin_configure.html', school_periods=cfg.SCHOOL_PERIODS, generated_link=link)
elif request.method == "GET":
return render_template('termin_configure.html', school_periods=cfg.SCHOOL_PERIODS, generated_link=None)
@appoint_bp.route('/')
def main():
guard = _require_module_enabled()
if guard:
return guard
return render_template(
'terminplaner.html',
school_periods=cfg.SCHOOL_PERIODS,
current_user=session.get('username', ''),
)