From 26e197403523a06569e720f5dcee153a8fa629ae Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Thu, 11 Jul 2019 17:18:43 +0300 Subject: [PATCH] A lot of new stuff --- royalnet/royalgamesweb.py | 3 +- royalnet/web/royalprints/__init__.py | 4 +- .../diarioview/templates/diarioview_page.html | 2 +- royalnet/web/royalprints/login/__init__.py | 10 ++--- .../login/templates/login_index.html | 3 ++ .../login/templates/login_success.html | 2 +- .../mcstatus/templates/mcstatus.html | 2 +- .../web/royalprints/newaccount/__init__.py | 40 +++++++++++++++++++ .../templates/newaccount_index.html | 36 +++++++++++++++++ .../profile/templates/profile_index.html | 4 +- .../profile/templates/profile_page.html | 2 +- .../tglogin/templates/tglogin_success.html | 2 +- royalnet/web/royalprints/wikiedit/__init__.py | 15 +++---- .../wikiedit/templates/wikiedit_page.html | 2 +- .../wikiview/templates/wikiview_index.html | 4 +- .../wikiview/templates/wikiview_page.html | 6 +-- royalnet/web/templates/base.html | 8 ++-- 17 files changed, 114 insertions(+), 31 deletions(-) create mode 100644 royalnet/web/royalprints/newaccount/__init__.py create mode 100644 royalnet/web/royalprints/newaccount/templates/newaccount_index.html diff --git a/royalnet/royalgamesweb.py b/royalnet/royalgamesweb.py index 4a606527..93fd819a 100644 --- a/royalnet/royalgamesweb.py +++ b/royalnet/royalgamesweb.py @@ -8,10 +8,11 @@ from royalnet.web.royalprints import * class TestConfig: DB_PATH = os.environ["DB_PATH"] TG_AK = os.environ["TG_AK"] + SITE_NAME = "Royalnet" app = create_app(TestConfig, [rp_home, rp_wikiview, rp_tglogin, rp_docs, rp_wikiedit, rp_mcstatus, rp_diarioview, - rp_profile, rp_login]) + rp_profile, rp_login, rp_newaccount]) if __name__ == "__main__": diff --git a/royalnet/web/royalprints/__init__.py b/royalnet/web/royalprints/__init__.py index f298a935..d2dfd110 100644 --- a/royalnet/web/royalprints/__init__.py +++ b/royalnet/web/royalprints/__init__.py @@ -9,6 +9,7 @@ from . import mcstatus from . import diarioview from . import profile from . import login +from . import newaccount rp_home = home.rp rp_wikiview = wikiview.rp @@ -19,6 +20,7 @@ rp_mcstatus = mcstatus.rp rp_diarioview = diarioview.rp rp_profile = profile.rp rp_login = login.rp +rp_newaccount = newaccount.rp __all__ = ["rp_home", "rp_wikiview", "rp_tglogin", "rp_docs", "rp_wikiedit", "rp_mcstatus", "rp_diarioview", - "rp_profile", "rp_login"] + "rp_profile", "rp_login", "rp_newaccount"] diff --git a/royalnet/web/royalprints/diarioview/templates/diarioview_page.html b/royalnet/web/royalprints/diarioview/templates/diarioview_page.html index 414b4962..b8c09ead 100644 --- a/royalnet/web/royalprints/diarioview/templates/diarioview_page.html +++ b/royalnet/web/royalprints/diarioview/templates/diarioview_page.html @@ -1,7 +1,7 @@ {% extends "base.html" %} {% block title %} - Pagina {{ page }} - Diario RYG + Diario: Pagina {{ page }} {% endblock %} {% block content %} diff --git a/royalnet/web/royalprints/login/__init__.py b/royalnet/web/royalprints/login/__init__.py index 96c620da..0ee00573 100644 --- a/royalnet/web/royalprints/login/__init__.py +++ b/royalnet/web/royalprints/login/__init__.py @@ -22,15 +22,15 @@ def login_index(): @rp.route("/done", methods=["POST"]) def login_done(): alchemy, alchemy_session = f.current_app.config["ALCHEMY"], f.current_app.config["ALCHEMY_SESSION"] - data = f.request.form - if "username" not in data: + fd = f.request.form + if "username" not in fd: return error(400, "Nessun username inserito.") - royal_user = alchemy_session.query(alchemy.Royal).filter_by(username=data["username"]).one_or_none() + royal_user = alchemy_session.query(alchemy.Royal).filter_by(username=fd["username"]).one_or_none() if royal_user is None: return error(404, "L'username inserito non corrisponde a nessun account registrato.") - if "password" not in data: + if "password" not in fd: return error(400, "Nessuna password inserita.") - if not bcrypt.checkpw(bytes(data["password"], encoding="utf8"), royal_user.password): + if not bcrypt.checkpw(bytes(fd["password"], encoding="utf8"), royal_user.password): return error(400, "La password inserita non è valida.") f.session["royal"] = { "uid": royal_user.uid, diff --git a/royalnet/web/royalprints/login/templates/login_index.html b/royalnet/web/royalprints/login/templates/login_index.html index 31ac598a..974d666a 100644 --- a/royalnet/web/royalprints/login/templates/login_index.html +++ b/royalnet/web/royalprints/login/templates/login_index.html @@ -13,6 +13,9 @@
+

+ Non hai una password? Prova il Login con Telegram! +

Facendo il login su questo sito, acconsenti a ricevere due biscottini che memorizzino l'account con cui hai fatto il login.

diff --git a/royalnet/web/royalprints/login/templates/login_success.html b/royalnet/web/royalprints/login/templates/login_success.html index 2cf02b4a..d9005137 100644 --- a/royalnet/web/royalprints/login/templates/login_success.html +++ b/royalnet/web/royalprints/login/templates/login_success.html @@ -1,7 +1,7 @@ {% extends "base.html" %} {% block title %} - Successful Password Login + Password Login riuscito {% endblock %} {% block content %} diff --git a/royalnet/web/royalprints/mcstatus/templates/mcstatus.html b/royalnet/web/royalprints/mcstatus/templates/mcstatus.html index b90668a7..e6c3a560 100644 --- a/royalnet/web/royalprints/mcstatus/templates/mcstatus.html +++ b/royalnet/web/royalprints/mcstatus/templates/mcstatus.html @@ -1,7 +1,7 @@ {% extends "base.html" %} {% block title %} - {{ server_str }} - RYG MCstatus + Minecraft {{ server_str }} {% endblock %} {% block content %} diff --git a/royalnet/web/royalprints/newaccount/__init__.py b/royalnet/web/royalprints/newaccount/__init__.py new file mode 100644 index 00000000..20de4f34 --- /dev/null +++ b/royalnet/web/royalprints/newaccount/__init__.py @@ -0,0 +1,40 @@ +"""A :py:class:`royalnet.web.Royalprint` to create new Royals.""" +import flask as f +import os +import datetime +import bcrypt +from ...royalprint import Royalprint +from ...shortcuts import error +from ....database.tables import Royal, Alias + + +tmpl_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'templates') +rp = Royalprint("newaccount", __name__, url_prefix="/newaccount", required_tables={Royal, Alias}, + template_folder=tmpl_dir) + + +@rp.route("/", methods=["GET", "POST"]) +def login_index(): + if f.request.method == "GET": + return f.render_template("newaccount_index.html") + elif f.request.method == "POST": + alchemy, alchemy_session = f.current_app.config["ALCHEMY"], f.current_app.config["ALCHEMY_SESSION"] + fd = f.request.form + if "username" not in fd: + return error(400, "Non è stato inserito nessun username.") + if "password" not in fd: + return error(400, "Non è stata inserita nessuna password.") + royal = alchemy_session.query(alchemy.Royal).filter_by(username=fd["username"]).one_or_none() + if royal is not None: + return error(403, "Esiste già un utente con quell'username.") + alias = alchemy_session.query(alchemy.Alias).filter_by(alias=fd["username"]).one_or_none() + if alias is not None: + return error(403, "Esiste già un utente con quell'alias.") + royal = alchemy.Royal(username=fd["username"], + password=bcrypt.hashpw(bytes(fd["password"], encoding="utf8"), bcrypt.gensalt()), + role="Guest") + alchemy_session.add(royal) + alias = alchemy.Alias(royal=royal, alias=royal.username.lower()) + alchemy_session.add(alias) + alchemy_session.commit() + return f.redirect(f.url_for("login.login_index")) diff --git a/royalnet/web/royalprints/newaccount/templates/newaccount_index.html b/royalnet/web/royalprints/newaccount/templates/newaccount_index.html new file mode 100644 index 00000000..7d8e952b --- /dev/null +++ b/royalnet/web/royalprints/newaccount/templates/newaccount_index.html @@ -0,0 +1,36 @@ +{% extends "base.html" %} + +{% block title %} + Nuovo account +{% endblock %} + +{% block content %} + +{% endblock %} diff --git a/royalnet/web/royalprints/profile/templates/profile_index.html b/royalnet/web/royalprints/profile/templates/profile_index.html index 7f352243..9ef02607 100644 --- a/royalnet/web/royalprints/profile/templates/profile_index.html +++ b/royalnet/web/royalprints/profile/templates/profile_index.html @@ -1,14 +1,14 @@ {% extends "base.html" %} {% block title %} - Elenco Utenti + Elenco profili {% endblock %} {% block content %}
- Elenco Utenti + Elenco profili
diff --git a/royalnet/web/royalprints/profile/templates/profile_page.html b/royalnet/web/royalprints/profile/templates/profile_page.html index b9c549a8..b6d8ff65 100644 --- a/royalnet/web/royalprints/profile/templates/profile_page.html +++ b/royalnet/web/royalprints/profile/templates/profile_page.html @@ -1,7 +1,7 @@ {% extends "base.html" %} {% block title %} - {{ royal.username }} - Profilo RYG + Profilo: {{ royal.username }} {% endblock %} {% block content %} diff --git a/royalnet/web/royalprints/tglogin/templates/tglogin_success.html b/royalnet/web/royalprints/tglogin/templates/tglogin_success.html index 5eb5c050..1dba4f41 100644 --- a/royalnet/web/royalprints/tglogin/templates/tglogin_success.html +++ b/royalnet/web/royalprints/tglogin/templates/tglogin_success.html @@ -1,7 +1,7 @@ {% extends "base.html" %} {% block title %} - Successful Telegram Login + Telegram Login riuscito {% endblock %} {% block content %} diff --git a/royalnet/web/royalprints/wikiedit/__init__.py b/royalnet/web/royalprints/wikiedit/__init__.py index acaeea5c..3f1660e9 100644 --- a/royalnet/web/royalprints/wikiedit/__init__.py +++ b/royalnet/web/royalprints/wikiedit/__init__.py @@ -5,7 +5,7 @@ import os import datetime import difflib from ...royalprint import Royalprint -from ...shortcuts import error +from ...shortcuts import error, from_urluuid from ....database.tables import Royal, WikiPage, WikiRevision @@ -41,17 +41,18 @@ def wikiedit_newpage(): alchemy_session.add(page) alchemy_session.add(revision) alchemy_session.commit() - return f.redirect(f.url_for("wikiview.wikiview_by_id", page_id=page.page_id, title=page.title)) + return f.redirect(f.url_for("wikiview.wikiview_by_id", page_id=page.page_short_id, title=page.title)) -@rp.route("/", defaults={"title": ""}, methods=["GET", "POST"]) -@rp.route("//", methods=["GET", "POST"]) -def wikiedit_by_id(page_id: uuid.UUID, title: str): +@rp.route("/<page_id>", defaults={"title": ""}, methods=["GET", "POST"]) +@rp.route("/<page_id>/<title>", methods=["GET", "POST"]) +def wikiedit_by_id(page_id: str, title: str): + page_uuid = from_urluuid(page_id) if "royal" not in f.session: return error(403, "Devi aver effettuato il login per modificare pagine wiki.") alchemy, alchemy_session = f.current_app.config["ALCHEMY"], f.current_app.config["ALCHEMY_SESSION"] - page = alchemy_session.query(alchemy.WikiPage).filter(alchemy.WikiPage.page_id == page_id).one_or_none() + page = alchemy_session.query(alchemy.WikiPage).filter(alchemy.WikiPage.page_id == page_uuid).one_or_none() if page is None: return error(404, "La pagina che stai cercando di modificare non esiste.") @@ -75,4 +76,4 @@ def wikiedit_by_id(page_id: uuid.UUID, title: str): page.title = fd["title"] page.css = fd["css"] if fd["css"] != "None" else None alchemy_session.commit() - return f.redirect(f.url_for("wikiview.wikiview_by_id", page_id=page.page_id, title=page.title)) + return f.redirect(f.url_for("wikiview.wikiview_by_id", page_id=page.page_short_id, title=page.title)) diff --git a/royalnet/web/royalprints/wikiedit/templates/wikiedit_page.html b/royalnet/web/royalprints/wikiedit/templates/wikiedit_page.html index d017d767..90023d28 100644 --- a/royalnet/web/royalprints/wikiedit/templates/wikiedit_page.html +++ b/royalnet/web/royalprints/wikiedit/templates/wikiedit_page.html @@ -24,7 +24,7 @@ </label> <label for="wikiedit-format"> <span class="label-text">Formato</span> - <input id="wikiedit-format" type="text" name="format" disabled value="{{ page.format }}"> + <input id="wikiedit-format" type="text" name="format" disabled value="markdown"> </label> <!--suppress HtmlFormInputWithoutLabel --> <textarea id="wikiedit-content" name="content">{{ page.content }}</textarea> diff --git a/royalnet/web/royalprints/wikiview/templates/wikiview_index.html b/royalnet/web/royalprints/wikiview/templates/wikiview_index.html index fe8a9969..39b99cea 100644 --- a/royalnet/web/royalprints/wikiview/templates/wikiview_index.html +++ b/royalnet/web/royalprints/wikiview/templates/wikiview_index.html @@ -1,14 +1,14 @@ {% extends "base.html" %} {% block title %} - Indice RYGwiki + Wiki {% endblock %} {% block content %} <div class="doublebox"> <div class="top"> <span class="left"> - Pagine Wiki + Wiki </span> </div> <div class="bot"> diff --git a/royalnet/web/royalprints/wikiview/templates/wikiview_page.html b/royalnet/web/royalprints/wikiview/templates/wikiview_page.html index 4cb715d8..2aad57e0 100644 --- a/royalnet/web/royalprints/wikiview/templates/wikiview_page.html +++ b/royalnet/web/royalprints/wikiview/templates/wikiview_page.html @@ -1,7 +1,7 @@ {% extends "base.html" %} {% block title %} - {{ page.title }} - RYGwiki + Wiki: {{ page.title }} {% endblock %} {% block content %} @@ -12,12 +12,12 @@ </span> <span class="right"> {% if session.royal %} - <a class="edit no-icon" href="{{ url_for("wikiedit.wikiedit_by_id", page_id=page.page_id|string, title=page.title) }}">Modifica</a> + <a class="edit no-icon" href="{{ url_for("wikiedit.wikiedit_by_id", page_id=page.page_short_id, title=page.title) }}">Modifica</a> {% else %} <a class="edit no-icon faded" title="Devi fare il login per modificare pagine!">Modifica</a> {% endif %} | - <a class="permalink no-icon" href="{{ url_for("wikiview.wikiview_by_id", page_id=page.page_id|string, title=page.title) }}">Permalink</a> + <a class="permalink no-icon" href="{{ url_for("wikiview.wikiview_by_id", page_id=page.page_short_id, title=page.title) }}">Permalink</a> </span> </div> <div class="bot"> diff --git a/royalnet/web/templates/base.html b/royalnet/web/templates/base.html index aebe2b63..60ddafbc 100644 --- a/royalnet/web/templates/base.html +++ b/royalnet/web/templates/base.html @@ -8,7 +8,7 @@ <meta name="keywords" content="Royal Games,RYG,Gaming,Videogames,Community"> <meta name="description" content="Royal Games Community"> <meta property="og:site_name" content="Royal Games"> - <title>{% block title %}{% endblock %} + {% block title %}{% endblock %} - {{ config["SITE_NAME"] }} {% if css %} @@ -23,12 +23,12 @@