roundabout,
created on Tuesday, 16 April 2024, 18:17:41 (1713291461),
received on Wednesday, 31 July 2024, 06:54:45 (1722408885)
Author identity: vlad <vlad.muntoiu@gmail.com>
5e10dc030affe87ad8aa118138d42f994ec8560a
app.py
@@ -190,6 +190,35 @@ def favourites():
return flask.render_template("favourites.html", favourites=relationships) @app.route("/favourites/<int:id>", methods=["POST"]) def favourite_edit(id): if not flask.session.get("username"): flask.abort(401) favourite = db.session.get(RepoFavourite, id) if favourite.user_username != flask.session.get("username"): flask.abort(403) data = flask.request.form print(data) favourite.notify_commit = js_to_bool(data.get("commit")) favourite.notify_forum = js_to_bool(data.get("forum")) favourite.notify_pr = js_to_bool(data.get("pull_request")) favourite.notify_admin = js_to_bool(data.get("administrative")) print(favourite.notify_commit, favourite.notify_forum, favourite.notify_pr, favourite.notify_admin) db.session.commit() return flask.render_template_string( """ <tr hx-post="/favourites/{{ favourite.id }}" hx-trigger="change" hx-include="#commit-{{ favourite.id }}, #forum-{{ favourite.id }}, #pull_request-{{ favourite.id }}, #administrative-{{ favourite.id }}" hx-headers='{"Content-Type": "application/json"}' hx-swap="outerHTML"> <td><a href="{{ favourite.repo.route }}">{{ favourite.repo.owner.username }}/{{ favourite.repo.name }}</a></td> <td style="text-align: center;"><input type="checkbox" name="commit" id="commit-{{ favourite.id }}" value="true" {% if favourite.notify_commit %}checked{% endif %}></td> <td style="text-align: center;"><input type="checkbox" name="forum" id="forum-{{ favourite.id }}" value="true" {% if favourite.notify_forum %}checked{% endif %}></td> <td style="text-align: center;"><input type="checkbox" name="pull_request" id="pull_request-{{ favourite.id }}" value="true" {% if favourite.notify_pr %}checked{% endif %}></td> <td style="text-align: center;"><input type="checkbox" name="administrative" id="administrative-{{ favourite.id }}" value="true" {% if favourite.notify_admin %}checked{% endif %}></td> </tr> """, favourite=favourite ) @app.route("/notifications/", methods=["GET", "POST"]) def notifications(): if not flask.session.get("username"):
misc_utils.py
@@ -90,3 +90,7 @@ def convert_to_html(path):
with open(path, "r") as f: contents = f.read() return contents def js_to_bool(js): return js.lower() == "true" if isinstance(js, str) else bool(js)
models.py
@@ -48,10 +48,10 @@ with (app.app_context()):
user_username = db.Column(db.String(32), db.ForeignKey("user.username"), nullable=False) repo_route = db.Column(db.String(98), db.ForeignKey("repo.route"), nullable=False) notify_commit = db.Column(db.Boolean)notify_forum = db.Column(db.Boolean)notify_pr = db.Column(db.Boolean)notify_admin = db.Column(db.Boolean)notify_commit = db.Column(db.Boolean, default=False, nullable=False) notify_forum = db.Column(db.Boolean, default=False, nullable=False) notify_pr = db.Column(db.Boolean, default=False, nullable=False) notify_admin = db.Column(db.Boolean, default=False, nullable=False)user = db.relationship("User", back_populates="favourites") repo = db.relationship("Repo", back_populates="favourites")
static/efficient-ui/THEME.css
@@ -648,13 +648,8 @@ th, ol.table > li.list-header {
border: none; } tbody th {text-align: end;}thead th {vertical-align: bottom;text-align: center;th, td { text-align: start;} .chat-bubble::before {
templates/favourites.html
@@ -10,13 +10,24 @@
<x-frame style="--width: 896px;" class="flexible-space"> <x-vbox> {% if favourites.count() > 0 %} {% for favourite in favourites %}<article class="card card-horizontal"><section class="card-main flexible-space"><h3><a href="{{ favourite.repo.route }}">{{ favourite.repo.owner.username }}/{{ favourite.repo.name }}</a></h3></section></article>{% endfor %}<table> <tr style="text-align: start;"> <th>{% trans %}Repository{% endtrans %}</th> <th style="text-align: center;">{% trans %}Commit{% endtrans %}</th> <th style="text-align: center;">{% trans %}Forum{% endtrans %}</th> <th style="text-align: center;">{% trans %}Pull request{% endtrans %}</th> <th style="text-align: center;">{% trans %}Administrative{% endtrans %}</th> </tr> {% for favourite in favourites %} <tr hx-post="/favourites/{{ favourite.id }}" hx-trigger="change" hx-include="#commit-{{ favourite.id }}, #forum-{{ favourite.id }}, #pull_request-{{ favourite.id }}, #administrative-{{ favourite.id }}" hx-headers='{"Content-Type": "application/json"}' hx-swap="outerHTML"> <td><a href="{{ favourite.repo.route }}">{{ favourite.repo.owner.username }}/{{ favourite.repo.name }}</a></td> <td style="text-align: center;"><input type="checkbox" name="commit" id="commit-{{ favourite.id }}" value="true" {% if favourite.notify_commit %}checked{% endif %}></td> <td style="text-align: center;"><input type="checkbox" name="forum" id="forum-{{ favourite.id }}" value="true" {% if favourite.notify_forum %}checked{% endif %}></td> <td style="text-align: center;"><input type="checkbox" name="pull_request" id="pull_request-{{ favourite.id }}" value="true" {% if favourite.notify_pr %}checked{% endif %}></td> <td style="text-align: center;"><input type="checkbox" name="administrative" id="administrative-{{ favourite.id }}" value="true" {% if favourite.notify_admin %}checked{% endif %}></td> </tr> {% endfor %} </table>{% else %} <p>{% trans %}When you add favourite repositories, you can manage them from here.{% endtrans %}</p> {% endif %}