From 9b10877f455ba8ec96aa9b0e87905dc7d116a2ff Mon Sep 17 00:00:00 2001 From: Remy Moll Date: Sun, 31 Oct 2021 03:30:21 +0100 Subject: [PATCH] Booking? --- dummy_data.py | 37 ++++-- models/event.py | 21 +++- server.py | 53 +++++---- static/custom-bootstrap-override.css | 2 +- static/index.js | 4 +- .../travelhistorymap_customer239842123.html | 108 +++++++++--------- templates/base.html | 4 +- templates/event_card.html | 46 ++++---- templates/event_detail.html | 38 ++++++ 9 files changed, 198 insertions(+), 115 deletions(-) diff --git a/dummy_data.py b/dummy_data.py index 90b25dd..f0d15e0 100644 --- a/dummy_data.py +++ b/dummy_data.py @@ -1,41 +1,54 @@ import datetime +import random def populate_data(Users, Events): Events.add_event( - id = 1, + id = 1, + name = "a", location_name = 'Center of Switzerland', location_coordinates = [46.8132, 8.2242], - date = datetime.date.today() - datetime.timedelta(days=100) + date = datetime.date.today() - datetime.timedelta(days=100), + description = "slkjfslkdfjsldkfjsd" ) Events.add_event( - id = 2, + id = 2, + name = "b", location_name = 'Center of Switzerland', location_coordinates = [46, 8], - date = datetime.date.today() - datetime.timedelta(days=1) + date = datetime.date.today() - datetime.timedelta(days=1), + description = "slkjfslkdfjsldkfjsd" ) Events.add_event( - id = 3, + id = 3, + name = "kfkslkjdf", location_name = 'Center of Switzerland', location_coordinates = [46.8132, 9], - date = datetime.date.today() - datetime.timedelta(days=2) + date = datetime.date.today() - datetime.timedelta(days=2), + description = "slkjfslkdfjsldkfjsd" ) Events.add_event( - id = 4, + id = 4, + name = "s", location_name = 'Center of Switzerland', location_coordinates = [47, 8.2242], - date = datetime.date.today() - datetime.timedelta(days=3) + date = datetime.date.today() - datetime.timedelta(days=3), + description = "slkjfslkdfjsldkfjsd" ) Events.add_event( - id = 5, + id = 5, + name = "d", location_name = 'Center of Switzerland', location_coordinates = [40.8132, 8.2242], - date = datetime.date.today() - datetime.timedelta(days=56) + date = datetime.date.today() - datetime.timedelta(days=56), + description = "slkjfslkdfjsldkfjsd" ) Events.add_event( id = 6, + name = "kfkslkjdf", location_name = 'Zermatt', location_coordinates = [46.11654, 10.445683], - date = datetime.date.today() + date = datetime.date.today(), + description = "slkjfslkdfjsldkfjsd" ) Users.add_user( @@ -49,6 +62,8 @@ def populate_data(Users, Events): max_age=20, ) u = Users.get_by_id(239842123) + for e in Events: + e.add_review(text="Nice view, good weather. Would recommend.", rating=random.randint(0,5)) u.travel_history.append(e) diff --git a/models/event.py b/models/event.py index 8305bd1..62373ae 100644 --- a/models/event.py +++ b/models/event.py @@ -1,25 +1,34 @@ class Event: id = 0 + name = "" location_name = [] location_coordinates = [] + description = "" reviews = [] category = [] weather_requirements = 0 date = "" - + image_path = "fallback.jpg" duration = "" # datetime object trip_to = "" # Trip object trip_back = "" def __init__(self, **kwargs): self.id = kwargs.pop("id") + self.name = kwargs.pop("name") self.location_name = kwargs.pop("location_name") self.location_coordinates = kwargs.pop("location_coordinates") self.date = kwargs.pop("date") + self.description = kwargs.pop("description") + def find_optimal_trip(self): pass + + def add_review(self, **kwargs): + self.reviews.append(Review(**kwargs)) + @property def trip_is_good(self): @@ -31,6 +40,13 @@ class Event: return self.trip_to.co2_savings + self.trip_back.co2_savings except: return 5 + @property + def rating(self): + return int(sum([r.rating for r in self.reviews]) / len(self.reviews)) + + @property + def nreviews(self): + return len(self.reviews) class Review: @@ -54,9 +70,10 @@ class Events: self._events.append(Event(**kwargs)) def get_by_id(self, id): - for e in self.events: + for e in self._events: if e.id == id: return e + return None def __iter__(self): return iter(self._events) \ No newline at end of file diff --git a/server.py b/server.py index 4e24174..efc2d55 100644 --- a/server.py +++ b/server.py @@ -1,18 +1,22 @@ -from flask import Flask, render_template, request, request, session -import random - -from apis.interactive_maps import SwissMap -from models.user import Users -from models.event import Events +from flask import Flask, render_template, request, request, session, abort import plotly.graph_objects as go from plotly.offline import plot + +from apis.interactive_maps import SwissMap +from apis.weather import WeatherScoreCalculator +from models.user import Users +from models.event import Events + USERBASE = Users() MAP = SwissMap() EVENTBASE = Events() - +WEATHERCALCULATOR = WeatherScoreCalculator() import dummy_data dummy_data.populate_data(USERBASE, EVENTBASE) + + + app = Flask(__name__) app.secret_key = 'A0Zr98j/3yX R~XHH!jmN]LWX/,?RT' @@ -20,17 +24,16 @@ app.secret_key = 'A0Zr98j/3yX R~XHH!jmN]LWX/,?RT' @app.route("/") def index(): session["user_id"] = 239842123 # a perfectly safe login, hem hem + wscore = WEATHERCALCULATOR.calc_weather_score(EVENTBASE.get_by_id(1)) + print(wscore) + weather_icon = ["☀️","🌥️","🌧️","⛈️"][int(wscore/25)] + print(weather_icon) context = { - "title" : f"Event title {id}", - "image_name" : "fallback.jpg", - "star_rating" : random.randint(1,4), - "reviews" : random.randint(10,30), "user" : USERBASE.get_by_id(session["user_id"]).name } return render_template("event_overview.html", context=context) - @app.route("/profile") def profile(): uid = session["user_id"] @@ -61,19 +64,25 @@ def profile(): return render_template("user_detail.html", context=context, user=user) - @app.route("/get_event") def get_event(): - id = request.args.get("id", type = int) - context = { - "title" : f"Event title {id}", - "image_name" : "fallback.jpg", - "star_rating" : random.randint(1,4), - "reviews" : random.randint(10,30), - "user" : "Remy" - } - return render_template("event_card.html", context=context) + eid = request.args.get("id", type = int) + event = EVENTBASE.get_by_id(eid) + if event: + return render_template("event_card.html", event=event) + else: + abort(404) +@app.route("/event/") +def event_detail(event_id): + event = EVENTBASE.get_by_id(int(event_id)) + if event: + return render_template("event_detail.html", event=event) + else: + abort(404) + +############################# +## And, liftoff! app.run(port=8000, debug=True) \ No newline at end of file diff --git a/static/custom-bootstrap-override.css b/static/custom-bootstrap-override.css index a0616a5..12d9304 100644 --- a/static/custom-bootstrap-override.css +++ b/static/custom-bootstrap-override.css @@ -1,4 +1,4 @@ -.bg-primary .btn-primary .btn-primary:hover{ +.bg-primary, .btn-primary, .btn-primary:hover{ border-color: #D50505; background-color: #D50505 !important; diff --git a/static/index.js b/static/index.js index 63a22f5..2bfc774 100644 --- a/static/index.js +++ b/static/index.js @@ -28,6 +28,8 @@ function callData(counter) { //alert(result[0]); $(result).appendTo('.list'); }, - error: function (result) {} + error: function (result) { + return; + } }); } diff --git a/static/travelhistorymap_customer239842123.html b/static/travelhistorymap_customer239842123.html index 87e5eec..8e4ab46 100644 --- a/static/travelhistorymap_customer239842123.html +++ b/static/travelhistorymap_customer239842123.html @@ -23,7 +23,7 @@