diff --git a/partitioncloud/__init__.py b/partitioncloud/__init__.py index 6a756dd..a86de9c 100644 --- a/partitioncloud/__init__.py +++ b/partitioncloud/__init__.py @@ -7,9 +7,9 @@ import os from flask import Flask, g, redirect, render_template, request, send_file, flash from werkzeug.security import generate_password_hash -from . import albums, auth, partition -from .auth import admin_required -from .db import get_db +from .modules import albums, auth, partition, admin +from .modules.auth import admin_required +from .modules.db import get_db app = Flask(__name__) @@ -23,6 +23,7 @@ else: print("[WARNING] Using default config") app.register_blueprint(auth.bp) +app.register_blueprint(admin.bp) app.register_blueprint(albums.bp) app.register_blueprint(partition.bp) diff --git a/partitioncloud/modules/admin.py b/partitioncloud/modules/admin.py new file mode 100644 index 0000000..ae4888c --- /dev/null +++ b/partitioncloud/modules/admin.py @@ -0,0 +1,31 @@ +#!/usr/bin/python3 +""" +Admin Panel +""" +import os +from flask import Blueprint, abort, send_file, render_template + +from .db import get_db +from .auth import admin_required +from .utils import User + + +bp = Blueprint("admin", __name__, url_prefix="/admin") + +@bp.route("/") +@admin_required +def index(): + db = get_db() + users_id = db.execute( + """ + SELECT id FROM user + """ + ) + users = [User(u["id"]) for u in users_id] + for u in users: + u.albums = u.get_albums() + db.close() + return render_template( + "admin/index.html", + users=users + ) \ No newline at end of file diff --git a/partitioncloud/albums.py b/partitioncloud/modules/albums.py similarity index 99% rename from partitioncloud/albums.py rename to partitioncloud/modules/albums.py index 2e7174e..df1fcf3 100644 --- a/partitioncloud/albums.py +++ b/partitioncloud/modules/albums.py @@ -70,8 +70,7 @@ def album(uuid): "albums/album.html", album=album, partitions=partitions, - not_participant=not_participant, - user=user + not_participant=not_participant ) except LookupError: diff --git a/partitioncloud/auth.py b/partitioncloud/modules/auth.py similarity index 100% rename from partitioncloud/auth.py rename to partitioncloud/modules/auth.py diff --git a/partitioncloud/db.py b/partitioncloud/modules/db.py similarity index 100% rename from partitioncloud/db.py rename to partitioncloud/modules/db.py diff --git a/partitioncloud/partition.py b/partitioncloud/modules/partition.py similarity index 93% rename from partitioncloud/partition.py rename to partitioncloud/modules/partition.py index 8cc4d21..44c82cb 100644 --- a/partitioncloud/partition.py +++ b/partitioncloud/modules/partition.py @@ -50,4 +50,4 @@ def partition_search(uuid): @admin_required def index(): partitions = get_all_partitions().fetchall() - return render_template("partitions/view-all.html", partitions=partitions) \ No newline at end of file + return render_template("admin/partitions.html", partitions=partitions) \ No newline at end of file diff --git a/partitioncloud/search.py b/partitioncloud/modules/search.py similarity index 100% rename from partitioncloud/search.py rename to partitioncloud/modules/search.py diff --git a/partitioncloud/utils.py b/partitioncloud/modules/utils.py similarity index 99% rename from partitioncloud/utils.py rename to partitioncloud/modules/utils.py index 33e172e..cc5e21e 100644 --- a/partitioncloud/utils.py +++ b/partitioncloud/modules/utils.py @@ -5,6 +5,7 @@ from .db import get_db class User(): def __init__(self, user_id): self.id = user_id + self.albums = None db = get_db() if self.id is None: diff --git a/partitioncloud/static/style.css b/partitioncloud/static/style.css index 47761b3..af575aa 100644 --- a/partitioncloud/static/style.css +++ b/partitioncloud/static/style.css @@ -215,13 +215,12 @@ input[type=submit] { height: 22px; text-align: center; padding-top: 3px; - border-radius: 20px; - border-width: 1px; - border-color: black; + border-radius: 50%; margin: 1px; color: white; text-shadow: 1px 1px 4px #000000; font-size: 18px; + border: 1px solid black; } #users-list { @@ -239,6 +238,13 @@ input[type=submit] { border-radius: 3px; } +.userdropbtn { + background-color: lightgray; + height: 30px; + border: none; + border-radius: 3px; +} + .dropdown { position: relative; float: right; @@ -276,4 +282,26 @@ input[type=submit] { background-color: #c61918; border-radius: 5px; color: whitesmoke; +} + +table { + border: medium solid #b9c6dd; + border-collapse: collapse; + text-align: center; + width: 80%; + margin: 10%; +} + +.user-profile { + display: inline-flex; + width: 80%; +} + +.table-username { + margin-left: 10px; +} + +td { + border-color: black; + border: thin solid; } \ No newline at end of file diff --git a/partitioncloud/templates/admin/index.html b/partitioncloud/templates/admin/index.html new file mode 100644 index 0000000..42ac920 --- /dev/null +++ b/partitioncloud/templates/admin/index.html @@ -0,0 +1,36 @@ +{% extends 'base.html' %} + +{% block header %} +

Panneau d'administration

+{% endblock %} + +{% block header_actions %} +{% endblock %} + +{% block content %} + + + + + + + + + + {% for user in users %} + + + + + + {% endfor %} + +
UtilisateurAlbumsPrivilèges
+ + {{ user.albums | length }}{% if user.access_level != 1 %}❌{% else %}✅{% endif %}
+{% endblock %} \ No newline at end of file diff --git a/partitioncloud/templates/partitions/view-all.html b/partitioncloud/templates/admin/partitions.html similarity index 100% rename from partitioncloud/templates/partitions/view-all.html rename to partitioncloud/templates/admin/partitions.html diff --git a/partitioncloud/templates/albums/album.html b/partitioncloud/templates/albums/album.html index 85c6979..995f9e5 100644 --- a/partitioncloud/templates/albums/album.html +++ b/partitioncloud/templates/albums/album.html @@ -23,7 +23,7 @@ {% else %} Quitter {% endif %} - {% if user.access_level == 1 %} + {% if g.user.access_level == 1 %} Supprimer {% endif %} diff --git a/partitioncloud/templates/base.html b/partitioncloud/templates/base.html index 8701681..3f2f7f7 100644 --- a/partitioncloud/templates/base.html +++ b/partitioncloud/templates/base.html @@ -10,15 +10,23 @@