Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
main.py 2.35 KiB
from flask import Flask, request, render_template
import database
import json
import re

app = Flask(__name__)

@app.route("/", methods = ["GET"])
def home():
	if request.method == "GET":
		workspaces = database.get_workspaces()
		return render_template("home.html", workspaces = workspaces)

@app.route("/about", methods = ["GET"])
def about():
	return render_template("about.html")

@app.route("/Locations", methods = ["GET"])
def Locations():
	return render_template("Locations.html")

@app.route("/contact-us", methods = ["GET"])
def contact():
	return render_template("contact-us.html")


@app.route("/map", methods = ["GET"])
def map():
	if request.method == "GET":
		workspaces = database.get_workspaces()
		data = [{"id": x.id, "name": x.name, "address": x.address, "phoneNumber": x.phone_number, "email": x.email, "website": x.website, "latlong": database.lookup_address(x.address)} for x in workspaces]
		dumped = json.dumps(data)
		return render_template("map.html", json = re.sub(r"(?i)\</script\>", "<\/script>", dumped)) # escape </script>

@app.route("/admin/add-workspace", methods = ["GET", "POST"])
def add_workspace():
	if request.method == "GET":
		return render_template("add-workspace.html")

	if request.method == "POST":
		additional_photos = request.form["additional_photos"]
		additional_photos = [x.strip() for x in additional_photos.split("\n")] if len(additional_photos) > 0 else []
		workspace = database.Workspace(
			request.form["name"],
			request.form["address"],
			request.form["main_photo"],
			additional_photos,
			request.form["description"],
			request.form["website"],
			request.form["email"],
			request.form["phone_number"],
			request.form["opening_hours"],
			request.form["checkin_instructions"]
		)

		errors = workspace.validate()
		try:
			latitude = float(request.form["latitude"])
		except ValueError:
			errors.append("Latitude must be a number")
		try:
			longitude = float(request.form["longitude"])
		except ValueError:
			errors.append("Longitude must be a number")

		if len(errors) > 0:
			messages = ["Errors were found:"]
			messages.extend(errors)
		else:
			database.set_address_latlong(workspace.address, (latitude, longitude))
			database.add_workspace(workspace)
			messages = ["Workspace added successfully"]

		return render_template("add-workspace-result.html", messages = messages)

if __name__ == "__main__":
	app.run(debug = True)