diff --git a/database.db b/database.db new file mode 100644 index 0000000000000000000000000000000000000000..d64d2deacb19a21923fe2e73e565fe9c410ddf5d Binary files /dev/null and b/database.db differ diff --git a/database.py b/database.py new file mode 100644 index 0000000000000000000000000000000000000000..156ef956bc3c1291c3afad7a97588bc118f9efb3 --- /dev/null +++ b/database.py @@ -0,0 +1,100 @@ +import os +import sqlite3 +from typing import List + +DATABASE = os.path.join(os.path.dirname(os.path.abspath(__file__)), "database.db") + +class Connection: + def __init__(self): + self.connection = sqlite3.connect(DATABASE) + self.cursor = self.connection.cursor() + self.do_rollback = False + + def commit(self): + self.connection.commit() + self.do_rollback = False + + def execute(self, sql: str, tuple = ()): + self.do_rollback = True + self.cursor.execute(sql, tuple) + + def fetch_all(self): + return self.cursor.fetchall() + + def close(self): + if self.do_rollback: + self.connection.rollback() + + self.connection.close() + + def __enter__(self): + return self + + def __exit__(self, *args): + self.close() + +with Connection() as conn: + conn.execute('''CREATE TABLE IF NOT EXISTS Workspaces ( + id integer NOT NULL PRIMARY KEY AUTOINCREMENT, + name text NOT NULL, + address text NOT NULL, + main_photo text NOT NULL, + description text NOT NULL, + website text NOT NULL, + email text NOT NULL, + phone_number text NOT NULL, + opening_hours text, + checkin_instructions text)''') + conn.execute('''CREATE TABLE IF NOT EXISTS AdditionalPhotos ( + id integer NOT NULL PRIMARY KEY AUTOINCREMENT, + url text NOT NULL, + workspace_id integer NOT NULL, + FOREIGN KEY (workspace_id) REFERENCES Workspaces(id))''') + conn.commit() + +class Workspace: + def __init__(self, name: str, + address: str, main_photo: str, additional_photos: List[str], description: str, + website: str, email: str, phone_number: str, opening_hours: str, checkin_instructions: str): + self.id = None + self.name = name + self.address = address + self.main_photo = main_photo + self.additional_photos = additional_photos + self.description = description + self.website = website + self.email = email + self.phone_number = phone_number + self.opening_hours = opening_hours + self.checkin_instructions = checkin_instructions + + def from_query(conn, tuple): + (id, name, address, main_photo, description, website, email, phone_number, opening_hours, checkin_instructions) = tuple + additional_photos = [] + + conn.execute("SELECT url FROM AdditionalPhotos WHERE workspace_id = ?", (str(id))) + for x in conn.cursor.fetchall(): + additional_photos.append(x[0]) + + workspace = Workspace(name, address, main_photo, additional_photos, description, website, email, phone_number, opening_hours, checkin_instructions) + workspace.id = id + return workspace + +def add_workspace(workspace: Workspace): + with Connection() as conn: + conn.execute( + "INSERT INTO Workspaces (name, address, main_photo, description, website, email, phone_number, opening_hours, checkin_instructions) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)", + (workspace.name, workspace.address, workspace.main_photo, workspace.description, workspace.website, workspace.email, workspace.phone_number, workspace.opening_hours, workspace.checkin_instructions) + ) + id = conn.cursor.lastrowid + for url in workspace.additional_photos: + conn.execute("INSERT INTO AdditionalPhotos (url, workspace_id) VALUES (?, ?)", (url, id)) + conn.commit() + return id + +def get_workspaces(): + with Connection() as conn: + conn.execute("SELECT * FROM Workspaces") + return [Workspace.from_query(conn, x) for x in conn.cursor.fetchall()] + +print(get_workspaces()) diff --git a/login.html b/login.html new file mode 100644 index 0000000000000000000000000000000000000000..439e7d014cab39624b6a9171219258b7a8e94828 --- /dev/null +++ b/login.html @@ -0,0 +1,36 @@ +<!DOCTYPE html> +<html lang="en"> +<head> + + <link rel="stylesheet" href="static/style.css"> + + <!-- Bootstrap CSS --> + <link rel="stylesheet" href= +"https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" + integrity= +"sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" + crossorigin="anonymous"> + + <title>{% block title %}{% endblock %} - Tramshed Workspaces</title> +</head> +<form class='myForm' method="POST" action=""> + <p>Enter Username: </p> + <br> +<input type = "text" name = "username" placeholder="Username.." ><br> +<button type = "submit" id='mySubmit'> Submit </button> +</form> +<!-- <div class="parallax"> +<body class="body"> + <!--<img src="static/Tramshed_Logo.jpg" alt="Logo" height="50" width="100">--> +<!-- navigation --> --> + <nav> +<ul> + <li><a href="#home">Home</a></li> + <li><a href="#Map">Map</a></li> + <li><a href="#contactUs">Contact Us</a></li> + <li style="float:right"><a class="active" href="#about">About</a></li> +</ul> + </nav> +<!--{% block mainBlock %}{% endblock %}--> + </body> +</html> diff --git a/main.py b/main.py new file mode 100644 index 0000000000000000000000000000000000000000..e3e3e93d0130445b4a350d5898444b52af9ac7c0 --- /dev/null +++ b/main.py @@ -0,0 +1,22 @@ +from flask import Flask, request, render_template +import database + +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('/login.html', methods = ["post"]) +def login(): + username = request.form.get('username') + if username == "admin": + return redirect("/templates/home.html") + else: + message = "Wrong Username" + return redirect("/login.html") + +if __name__ == "__main__": + app.run(debug = True)