-
Zak Demetriades authoredZak Demetriades authored
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)