From 38ed4c292d0a5ffd2e48d19d38df02ea821be26c Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Wed, 3 Oct 2018 19:43:56 +0200 Subject: [PATCH] more spooky stuff --- db.py | 222 +++++++++----------------------- static/lamorteaspettasolote.ogg | Bin 0 -> 54468 bytes static/spoopy.less | 33 ++--- templates/main.html | 10 +- templates/minis/halloween.html | 12 +- webserver.py | 44 +++++-- 6 files changed, 128 insertions(+), 193 deletions(-) create mode 100644 static/lamorteaspettasolote.ogg diff --git a/db.py b/db.py index bccbd204..1fb5fbd7 100644 --- a/db.py +++ b/db.py @@ -1,6 +1,8 @@ import datetime import logging import os +import typing + import coloredlogs from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker, relationship, joinedload @@ -902,172 +904,76 @@ class Halloween(Base): boss_battle = Column(DateTime) + def __getitem__(self, item): + if not isinstance(item, int): + raise TypeError("The index should be an int") + if item == 1: + return self.puzzle_piece_a + elif item == 2: + return self.puzzle_piece_b + elif item == 3: + return self.puzzle_piece_c + elif item == 4: + return self.puzzle_piece_d + elif item == 5: + return self.puzzle_piece_e + elif item == 6: + return self.puzzle_piece_f + elif item == 7: + return self.puzzle_piece_g + elif item == 8: + return self.puzzle_piece_h + elif item == 9: + return self.puzzle_piece_i + elif item == 10: + return self.puzzle_piece_j + else: + raise ValueError("No such puzzle piece") + + def __setitem__(self, key, value): + if not isinstance(key, int): + raise TypeError("The index should be an int") + if key == 1: + self.puzzle_piece_a = value + elif key == 2: + self.puzzle_piece_b = value + elif key == 3: + self.puzzle_piece_c = value + elif key == 4: + self.puzzle_piece_d = value + elif key == 5: + self.puzzle_piece_e = value + elif key == 6: + self.puzzle_piece_f = value + elif key == 7: + self.puzzle_piece_g = value + elif key == 8: + self.puzzle_piece_h = value + elif key == 9: + self.puzzle_piece_i = value + elif key == 10: + self.puzzle_piece_j = value + else: + raise ValueError("No such puzzle piece") + def pieces_completed(self) -> int: count = 0 - if self.puzzle_piece_a is not None: - count += 1 - if self.puzzle_piece_b is not None: - count += 1 - if self.puzzle_piece_c is not None: - count += 1 - if self.puzzle_piece_d is not None: - count += 1 - if self.puzzle_piece_e is not None: - count += 1 - if self.puzzle_piece_f is not None: - count += 1 - if self.puzzle_piece_g is not None: - count += 1 - if self.puzzle_piece_h is not None: - count += 1 - if self.puzzle_piece_i is not None: - count += 1 - if self.puzzle_piece_j is not None: - count += 1 + for i in range(1, 11): + if self[i]: + count += 1 return count @staticmethod - def puzzle_is_complete() -> bool: + def puzzle_status() -> typing.List[bool]: session = Session() halloweens = session.query(Halloween).all() session.close() - completed_a = False - completed_b = False - completed_c = False - completed_d = False - completed_e = False - completed_f = False - completed_g = False - completed_h = False - completed_i = False - completed_j = False - for halloween in halloweens: - if halloween.puzzle_piece_a is not None: - completed_a = True - if halloween.puzzle_piece_b is not None: - completed_b = True - if halloween.puzzle_piece_c is not None: - completed_c = True - if halloween.puzzle_piece_d is not None: - completed_d = True - if halloween.puzzle_piece_d is not None: - completed_d = True - if halloween.puzzle_piece_e is not None: - completed_e = True - if halloween.puzzle_piece_f is not None: - completed_f = True - if halloween.puzzle_piece_g is not None: - completed_g = True - if halloween.puzzle_piece_h is not None: - completed_h = True - if halloween.puzzle_piece_i is not None: - completed_i = True - if halloween.puzzle_piece_j is not None: - completed_j = True - return (completed_a and completed_b and completed_c and completed_d and completed_e - and completed_f and completed_g and completed_h and completed_i and completed_j) - - @staticmethod - def puzzle_piece_a_complete() -> bool: - session = Session() - halloweens = session.query(Halloween).all() - session.close() - for halloween in halloweens: - if halloween.puzzle_piece_a is not None: - return True - return False - - @staticmethod - def puzzle_piece_b_complete() -> bool: - session = Session() - halloweens = session.query(Halloween).all() - session.close() - for halloween in halloweens: - if halloween.puzzle_piece_b is not None: - return True - return False - - @staticmethod - def puzzle_piece_c_complete() -> bool: - session = Session() - halloweens = session.query(Halloween).all() - session.close() - for halloween in halloweens: - if halloween.puzzle_piece_c is not None: - return True - return False - - - @staticmethod - def puzzle_piece_d_complete() -> bool: - session = Session() - halloweens = session.query(Halloween).all() - session.close() - for halloween in halloweens: - if halloween.puzzle_piece_d is not None: - return True - return False - - @staticmethod - def puzzle_piece_e_complete() -> bool: - session = Session() - halloweens = session.query(Halloween).all() - session.close() - for halloween in halloweens: - if halloween.puzzle_piece_e is not None: - return True - return False - - @staticmethod - def puzzle_piece_f_complete() -> bool: - session = Session() - halloweens = session.query(Halloween).all() - session.close() - for halloween in halloweens: - if halloween.puzzle_piece_f is not None: - return True - return False - - @staticmethod - def puzzle_piece_g_complete() -> bool: - session = Session() - halloweens = session.query(Halloween).all() - session.close() - for halloween in halloweens: - if halloween.puzzle_piece_g is not None: - return True - return False - - @staticmethod - def puzzle_piece_h_complete() -> bool: - session = Session() - halloweens = session.query(Halloween).all() - session.close() - for halloween in halloweens: - if halloween.puzzle_piece_h is not None: - return True - return False - - @staticmethod - def puzzle_piece_i_complete() -> bool: - session = Session() - halloweens = session.query(Halloween).all() - session.close() - for halloween in halloweens: - if halloween.puzzle_piece_i is not None: - return True - return False - - @staticmethod - def puzzle_piece_j_complete() -> bool: - session = Session() - halloweens = session.query(Halloween).all() - session.close() - for halloween in halloweens: - if halloween.puzzle_piece_j is not None: - return True - return False - + completed = [False for _ in range(10)] + for h in halloweens: + for i in range(10): + if h[i+1]: + completed[i] = True + return completed # If run as script, create all the tables in the db if __name__ == "__main__": diff --git a/static/lamorteaspettasolote.ogg b/static/lamorteaspettasolote.ogg new file mode 100644 index 0000000000000000000000000000000000000000..313da60173cbad59d7a4c47651dad5002c6c0120 GIT binary patch literal 54468 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

VqRs9EES3CVUZBN2#tR*K}*k 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 literal 0 HcmV?d00001 diff --git a/static/spoopy.less b/static/spoopy.less index 0bf354c2..1fa39e5f 100644 --- a/static/spoopy.less +++ b/static/spoopy.less @@ -755,12 +755,11 @@ table { padding: 18px; grid-template-columns: 100%; - .stars { - grid-column: 1; + .moons.game-score { + font-size: 0; i { - color: yellow; - font-size: 30px; + font-size: 34px; } } } @@ -863,20 +862,12 @@ ntry { .lower-box { text-align: center; - .stars a { - color: @text-color; + .time-left { font-size: 64px; - - &:hover { - color: @highlight-color; - } - - .fas { - color: yellow; - } + font-family: monospace; } - .time-left { + .moons { font-size: 64px; } } @@ -930,6 +921,18 @@ ntry { } } +.moons a { + color: @text-color; + + &:hover { + color: @highlight-color; + } + + .fas { + color: yellow; + } +} + #debug-mode { color: red; font-weight: bold; diff --git a/templates/main.html b/templates/main.html index 7a9a9f80..57960310 100644 --- a/templates/main.html +++ b/templates/main.html @@ -36,12 +36,12 @@

Lune raccolte: -
+
{% for index, star in halloween %} {% if star %} - + {% else %} - + {% endif %} {% endfor %}
@@ -97,6 +97,9 @@
diff --git a/templates/minis/halloween.html b/templates/minis/halloween.html index a026ae39..ed2292d6 100644 --- a/templates/minis/halloween.html +++ b/templates/minis/halloween.html @@ -3,12 +3,16 @@
Rituale di Halloween
-
+
Lune ottenute
-
- {% for index in range(record.pieces_completed()) %} - +
+ {% for index in range(10) %} + {% if halloween[index] %} + + {% else %} + + {% endif %} {% endfor %}
diff --git a/webserver.py b/webserver.py index 2aa9274c..55ad3df0 100644 --- a/webserver.py +++ b/webserver.py @@ -66,18 +66,7 @@ def page_main(): random_diario = db_session.query(db.Diario).order_by(db.func.random()).first() next_events = db_session.query(db.Event).filter(db.Event.time > datetime.datetime.now()).order_by( db.Event.time).all() - halloween = [ - db.Halloween.puzzle_piece_a_complete(), - db.Halloween.puzzle_piece_b_complete(), - db.Halloween.puzzle_piece_c_complete(), - db.Halloween.puzzle_piece_d_complete(), - db.Halloween.puzzle_piece_e_complete(), - db.Halloween.puzzle_piece_f_complete(), - db.Halloween.puzzle_piece_g_complete(), - db.Halloween.puzzle_piece_h_complete(), - db.Halloween.puzzle_piece_i_complete(), - db.Halloween.puzzle_piece_j_complete() - ] + halloween = db.Halloween.puzzle_status() db_session.close() return render_template("main.html", royals=royals, wiki_pages=wiki_pages, entry=random_diario, next_events=next_events, rygconf=config, escape=escape, halloween=enumerate(halloween)) @@ -343,6 +332,37 @@ def page_diario(): return render_template("diario.html", rygconf=config, entries=diario_entries) +@app.route("/ritual/", methods=["GET", "POST"]) +def page_ritual(n: int): + user_id = fl_session.get("user_id") + if not user_id: + return redirect(url_for("page_login")) + if request.method == "GET": + return render_template("ritual.html", rygconf=config, n=n) + elif request.method == "POST": + if n == 1: + pass + elif n == 2: + pass + elif n == 3: + pass + elif n == 4: + pass + elif n == 5: + pass + elif n == 6: + pass + elif n == 7: + pass + elif n == 8: + pass + elif n == 9: + pass + elif n == 10: + pass + return redirect(url_for("page_ritual", n=n)) + + if __name__ == "__main__": try: app.run(host="0.0.0.0", port=1235, debug=__debug__)