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("/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)