mirror of
https://github.com/partitioncloud/partitioncloud-server.git
synced 2025-01-23 09:16:25 +01:00
Add /settings
This commit is contained in:
parent
3f83f1c44a
commit
b9a5f92a56
@ -92,8 +92,9 @@ pybabel update -i partitioncloud/translations/messages.pot -d partitioncloud/tra
|
|||||||
```
|
```
|
||||||
|
|
||||||
## TODO
|
## TODO
|
||||||
- [ ] Modifier son mot de passe
|
- [x] Modifier son mot de passe
|
||||||
- [ ] Supprimer un utilisateur
|
- [x] Supprimer un utilisateur
|
||||||
- [ ] Ajouter config:DISABLE_DARK_MODE
|
- [ ] Ajouter config:DISABLE_DARK_MODE
|
||||||
- [x] Ajouter config:DISABLE_REGISTER
|
- [x] Ajouter config:DISABLE_REGISTER
|
||||||
- [ ] Ajouter config:ONLINE_SEARCH_BASE_QUERY pour la recherche google, actuellement 'filetype:pdf partition'
|
- [ ] Ajouter config:ONLINE_SEARCH_BASE_QUERY pour la recherche google, actuellement 'filetype:pdf partition'
|
||||||
|
- [ ] Ajouter un Dockerfile
|
||||||
|
@ -13,7 +13,7 @@ from werkzeug.security import generate_password_hash
|
|||||||
from flask_babel import Babel, _
|
from flask_babel import Babel, _
|
||||||
|
|
||||||
from .modules.utils import User, Album, get_all_albums, user_count, partition_count
|
from .modules.utils import User, Album, get_all_albums, user_count, partition_count
|
||||||
from .modules import albums, auth, partition, admin, groupe, thumbnails, logging
|
from .modules import albums, auth, partition, admin, groupe, thumbnails, logging, settings
|
||||||
from .modules.auth import admin_required, login_required
|
from .modules.auth import admin_required, login_required
|
||||||
from .modules.db import get_db
|
from .modules.db import get_db
|
||||||
|
|
||||||
@ -91,6 +91,7 @@ app.register_blueprint(auth.bp)
|
|||||||
app.register_blueprint(admin.bp)
|
app.register_blueprint(admin.bp)
|
||||||
app.register_blueprint(groupe.bp)
|
app.register_blueprint(groupe.bp)
|
||||||
app.register_blueprint(albums.bp)
|
app.register_blueprint(albums.bp)
|
||||||
|
app.register_blueprint(settings.bp)
|
||||||
app.register_blueprint(partition.bp)
|
app.register_blueprint(partition.bp)
|
||||||
app.register_blueprint(thumbnails.bp)
|
app.register_blueprint(thumbnails.bp)
|
||||||
|
|
||||||
|
@ -19,7 +19,6 @@ def index():
|
|||||||
Admin panel home page
|
Admin panel home page
|
||||||
"""
|
"""
|
||||||
current_user = User(user_id=session.get("user_id"))
|
current_user = User(user_id=session.get("user_id"))
|
||||||
current_user.get_albums() # We need to do that before we close the db
|
|
||||||
db = get_db()
|
db = get_db()
|
||||||
users_id = db.execute(
|
users_id = db.execute(
|
||||||
"""
|
"""
|
||||||
@ -37,6 +36,23 @@ def index():
|
|||||||
user=current_user
|
user=current_user
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@bp.route("/user/<user_id>")
|
||||||
|
@admin_required
|
||||||
|
def user_inspect(user_id):
|
||||||
|
"""
|
||||||
|
Inspect user
|
||||||
|
"""
|
||||||
|
current_user = User(user_id=session.get("user_id"))
|
||||||
|
db = get_db()
|
||||||
|
inspected_user = User(user_id=user_id)
|
||||||
|
|
||||||
|
return render_template(
|
||||||
|
"settings/index.html",
|
||||||
|
skip_old_password=True,
|
||||||
|
inspected_user=inspected_user,
|
||||||
|
user=current_user
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@bp.route("/logs")
|
@bp.route("/logs")
|
||||||
@admin_required
|
@admin_required
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
from flask import current_app
|
from flask import current_app
|
||||||
|
from werkzeug.security import generate_password_hash
|
||||||
|
|
||||||
from ..db import get_db
|
from ..db import get_db
|
||||||
from .album import Album
|
from .album import Album
|
||||||
@ -28,6 +29,7 @@ class User():
|
|||||||
def __init__(self, user_id=None, name=None):
|
def __init__(self, user_id=None, name=None):
|
||||||
self.id = user_id
|
self.id = user_id
|
||||||
self.username = name
|
self.username = name
|
||||||
|
self.password = None
|
||||||
self.albums = None
|
self.albums = None
|
||||||
self.groupes = None
|
self.groupes = None
|
||||||
self.partitions = None
|
self.partitions = None
|
||||||
@ -58,6 +60,7 @@ class User():
|
|||||||
|
|
||||||
self.id = data["id"]
|
self.id = data["id"]
|
||||||
self.username = data["username"]
|
self.username = data["username"]
|
||||||
|
self.password = data["password"]
|
||||||
self.access_level = data["access_level"]
|
self.access_level = data["access_level"]
|
||||||
self.color = self.get_color()
|
self.color = self.get_color()
|
||||||
if self.access_level == 1:
|
if self.access_level == 1:
|
||||||
@ -198,12 +201,10 @@ class User():
|
|||||||
db.execute(
|
db.execute(
|
||||||
"""
|
"""
|
||||||
DELETE FROM contient_user
|
DELETE FROM contient_user
|
||||||
JOIN album
|
WHERE album_id IN (SELECT id FROM album WHERE uuid = ?)
|
||||||
ON album.id = album_id
|
AND user_id = ?
|
||||||
WHERE user_id = ?
|
|
||||||
AND album.uuid = ?
|
|
||||||
""",
|
""",
|
||||||
(self.id, album_uuid)
|
(album_uuid, self.id)
|
||||||
)
|
)
|
||||||
db.commit()
|
db.commit()
|
||||||
|
|
||||||
@ -221,6 +222,49 @@ class User():
|
|||||||
)
|
)
|
||||||
db.commit()
|
db.commit()
|
||||||
|
|
||||||
|
def update_password(self, new_password):
|
||||||
|
db = get_db()
|
||||||
|
|
||||||
|
db.execute(
|
||||||
|
"""
|
||||||
|
UPDATE user SET password=?
|
||||||
|
WHERE id=?
|
||||||
|
""",
|
||||||
|
(generate_password_hash(new_password), self.id)
|
||||||
|
)
|
||||||
|
|
||||||
|
db.commit()
|
||||||
|
|
||||||
|
|
||||||
|
def delete(self):
|
||||||
|
instance_path = current_app.config["INSTANCE_PATH"]
|
||||||
|
for groupe in self.get_groupes():
|
||||||
|
self.quit_groupe(groupe.uuid)
|
||||||
|
|
||||||
|
if groupe.get_users() == []:
|
||||||
|
groupe.delete(instance_path)
|
||||||
|
|
||||||
|
|
||||||
|
for album_data in self.get_albums():
|
||||||
|
uuid = album_data["uuid"]
|
||||||
|
self.quit_album(uuid)
|
||||||
|
|
||||||
|
album = Album(uuid=uuid)
|
||||||
|
if album.get_users() == []:
|
||||||
|
album.delete(instance_path)
|
||||||
|
|
||||||
|
db = get_db()
|
||||||
|
|
||||||
|
db.execute(
|
||||||
|
"""
|
||||||
|
DELETE FROM user
|
||||||
|
WHERE id=?
|
||||||
|
""",
|
||||||
|
(self.id,)
|
||||||
|
)
|
||||||
|
|
||||||
|
db.commit()
|
||||||
|
|
||||||
|
|
||||||
def get_color(self):
|
def get_color(self):
|
||||||
if len(colors) == 0:
|
if len(colors) == 0:
|
||||||
|
90
partitioncloud/modules/settings.py
Normal file
90
partitioncloud/modules/settings.py
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
#!/usr/bin/python3
|
||||||
|
"""
|
||||||
|
User Settings
|
||||||
|
"""
|
||||||
|
import os
|
||||||
|
from flask import Blueprint, render_template, session, current_app, send_file, request, flash, redirect
|
||||||
|
from werkzeug.security import check_password_hash
|
||||||
|
|
||||||
|
from flask_babel import _
|
||||||
|
|
||||||
|
from .db import get_db
|
||||||
|
from .auth import login_required
|
||||||
|
from .utils import User
|
||||||
|
|
||||||
|
|
||||||
|
bp = Blueprint("settings", __name__, url_prefix="/settings")
|
||||||
|
|
||||||
|
@bp.route("/")
|
||||||
|
@login_required
|
||||||
|
def index():
|
||||||
|
"""
|
||||||
|
Settings page
|
||||||
|
"""
|
||||||
|
user = User(user_id=session.get("user_id"))
|
||||||
|
|
||||||
|
return render_template(
|
||||||
|
"settings/index.html",
|
||||||
|
inspected_user=user,
|
||||||
|
user=user
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@bp.route("/delete-account", methods=["POST"])
|
||||||
|
@login_required
|
||||||
|
def delete_account():
|
||||||
|
if "user_id" not in request.form:
|
||||||
|
flash(_("Missing user id."))
|
||||||
|
return redirect(request.referrer)
|
||||||
|
|
||||||
|
cur_user = User(user_id=session.get("user_id"))
|
||||||
|
user_id = request.form["user_id"]
|
||||||
|
mod_user = User(user_id=user_id)
|
||||||
|
|
||||||
|
if cur_user.access_level != 1:
|
||||||
|
if cur_user.id != mod_user.id:
|
||||||
|
flash(_("Missing rights."))
|
||||||
|
return redirect(request.referrer)
|
||||||
|
|
||||||
|
mod_user.delete()
|
||||||
|
flash(_("User successfully deleted."))
|
||||||
|
if cur_user.id == mod_user.id:
|
||||||
|
return redirect("/")
|
||||||
|
return redirect("/admin")
|
||||||
|
|
||||||
|
|
||||||
|
@bp.route("/change-password", methods=["POST"])
|
||||||
|
@login_required
|
||||||
|
def change_password():
|
||||||
|
if "user_id" not in request.form:
|
||||||
|
flash(_("Missing user id."))
|
||||||
|
return redirect(request.referrer)
|
||||||
|
|
||||||
|
cur_user = User(user_id=session.get("user_id"))
|
||||||
|
user_id = request.form["user_id"]
|
||||||
|
mod_user = User(user_id=user_id)
|
||||||
|
|
||||||
|
if cur_user.access_level != 1:
|
||||||
|
if cur_user.id != mod_user.id:
|
||||||
|
flash(_("Missing rights."))
|
||||||
|
return redirect(request.referrer)
|
||||||
|
|
||||||
|
if "old_password" not in request.form:
|
||||||
|
flash(_("Missing old password."))
|
||||||
|
return redirect(request.referrer)
|
||||||
|
|
||||||
|
if not check_password_hash(mod_user.password, request.form["old_password"]):
|
||||||
|
flash(_("Incorrect password."))
|
||||||
|
return redirect(request.referrer)
|
||||||
|
|
||||||
|
if "new_password" not in request.form or "confirm_new_password" not in request.form:
|
||||||
|
flash(_("Missing password."))
|
||||||
|
return redirect(request.referrer)
|
||||||
|
|
||||||
|
if request.form["new_password"] != request.form["confirm_new_password"]:
|
||||||
|
flash(_("Password and its confirmation differ."))
|
||||||
|
return redirect(request.referrer)
|
||||||
|
|
||||||
|
mod_user.update_password(request.form["new_password"])
|
||||||
|
flash(_("Successfully updated password."))
|
||||||
|
return redirect(request.referrer)
|
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
/** Various settings (variables) */
|
/** Various settings (variables) */
|
||||||
:root {
|
:root {
|
||||||
--sidebar-size: max(10vw, 160px);
|
--sidebar-size: max(10vw, 250px);
|
||||||
--sidebar-sz-plus10: calc(var(--sidebar-size) + 10px);
|
--sidebar-sz-plus10: calc(var(--sidebar-size) + 10px);
|
||||||
--sidebar-sz-moins20: calc(var(--sidebar-size) - 20px);
|
--sidebar-sz-moins20: calc(var(--sidebar-size) - 20px);
|
||||||
}
|
}
|
||||||
@ -333,6 +333,7 @@ img.partition-thumbnail {
|
|||||||
|
|
||||||
.user {
|
.user {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
color: var(--color-text);
|
||||||
}
|
}
|
||||||
|
|
||||||
.username {
|
.username {
|
||||||
@ -387,12 +388,13 @@ a#delete-album {
|
|||||||
transform: translateY(-17%);
|
transform: translateY(-17%);
|
||||||
}
|
}
|
||||||
|
|
||||||
#settings-container>.user {
|
#settings-container > a > .user {
|
||||||
margin-top: 6px;
|
margin-top: 6px;
|
||||||
border-radius: 3px;
|
border-radius: 3px;
|
||||||
|
padding: 3px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#settings-container>.user:hover {
|
#settings-container > a > .user:hover {
|
||||||
background-color: var(--color-mantle);
|
background-color: var(--color-mantle);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -538,6 +540,8 @@ input[type="file"] {
|
|||||||
/** Dangerous buttons */
|
/** Dangerous buttons */
|
||||||
button#logout:hover,
|
button#logout:hover,
|
||||||
a#delete-album:hover,
|
a#delete-album:hover,
|
||||||
|
.red-confirm,
|
||||||
|
input[type="submit"].red-confirm,
|
||||||
#delete-partition {
|
#delete-partition {
|
||||||
background-color: var(--color-red);
|
background-color: var(--color-red);
|
||||||
color: var(--color-mantle);
|
color: var(--color-mantle);
|
||||||
|
@ -34,7 +34,9 @@
|
|||||||
title="{{ user.username }}">
|
title="{{ user.username }}">
|
||||||
{{ user.username[0] | upper }}
|
{{ user.username[0] | upper }}
|
||||||
</div>
|
</div>
|
||||||
<div class="table-username">{{ user.username }}</div>
|
<div class="table-username">
|
||||||
|
<a href="/admin/user/{{ user.id }}">{{ user.username }}</a>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
<td>{{ user.albums | length }}</td>
|
<td>{{ user.albums | length }}</td>
|
||||||
|
@ -157,13 +157,13 @@
|
|||||||
</svg>{{ _("Admin Panel") }}
|
</svg>{{ _("Admin Panel") }}
|
||||||
</button></a><br/>
|
</button></a><br/>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<div class="user">
|
<a href="/settings"><div class="user">
|
||||||
<div class="user-profile-picture" style="background-color:{{ user.color }};"
|
<div class="user-profile-picture" style="background-color:{{ user.color }};"
|
||||||
title="{{ user.username }}">
|
title="{{ user.username }}">
|
||||||
{{ user.username[0] | upper }}
|
{{ user.username[0] | upper }}
|
||||||
</div>
|
</div>
|
||||||
<div class="username">{{ user.username }}</div>
|
<div class="username">{{ user.username }}</div>
|
||||||
</div>
|
</div></a>
|
||||||
{% else %}
|
{% else %}
|
||||||
{% if not config.DISABLE_REGISTER %}
|
{% if not config.DISABLE_REGISTER %}
|
||||||
<a href="{{ url_for('auth.register') }}"><button>{{ _("Create account") }}</button></a>
|
<a href="{{ url_for('auth.register') }}"><button>{{ _("Create account") }}</button></a>
|
||||||
|
42
partitioncloud/templates/settings/index.html
Normal file
42
partitioncloud/templates/settings/index.html
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
{% extends 'base.html' %}
|
||||||
|
|
||||||
|
{% block title %}{{ _("Settings") }}{% endblock %}
|
||||||
|
|
||||||
|
|
||||||
|
{% block dialogs %}
|
||||||
|
<dialog id="delete-account">
|
||||||
|
<h2>{{ _("Delete account") }}</h2>
|
||||||
|
{% set username %}
|
||||||
|
<b>{{ inspected_user.username }}</b>
|
||||||
|
{% endset %}
|
||||||
|
{% set irreversible_bold %}
|
||||||
|
<b>irreversible</b>
|
||||||
|
{% endset %}
|
||||||
|
{{ _("Do you really want to delete %(username)s's account ? This action is %(irreversible_bold)s.", username=username, irreversible_bold=irreversible_bold) }}
|
||||||
|
<br/><br/>
|
||||||
|
<form method="post" action="/settings/delete-account">
|
||||||
|
<input type="hidden" id="user_id" name="user_id" value="{{ inspected_user.id }}">
|
||||||
|
<input type="submit" class="red-confirm" value="{{ _('Delete') }}">
|
||||||
|
</form>
|
||||||
|
<a href="#!" class="close-dialog">Close</a>
|
||||||
|
</dialog>
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
{{ _("User %(username)s has %(album_count)s albums"), username=inspected_user.username, album_count=len(inspected_user.get_albums()) }}
|
||||||
|
<form action="/settings/change-password" method="post">
|
||||||
|
<h3>{{ _("Change password") }}</h3>
|
||||||
|
{% if not skip_old_password %}
|
||||||
|
<input type="password" id="old-password" name="old_password" placeholder="{{ _('old password') }}"/><br/>
|
||||||
|
{% endif %}
|
||||||
|
<input type="password" id="new-password" name="new_password" placeholder="{{ _('new password') }}"/><br/>
|
||||||
|
<input type="password" id="confirm-new-password" name="confirm_new_password" placeholder="{{ _('confirm new password') }}"/><br/>
|
||||||
|
<input type="hidden" id="user_id" name="user_id" value="{{ inspected_user.id }}">
|
||||||
|
<input type="Submit" value="{{ _('confirm') }}">
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<h3>{{ _("Delete account") }}</h3>
|
||||||
|
<a href="#delete-account"><button class="red-confirm">{{ _("Delete account") }}</button></a>
|
||||||
|
|
||||||
|
{% endblock %}
|
@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PROJECT VERSION\n"
|
"Project-Id-Version: PROJECT VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2024-01-29 18:32+0100\n"
|
"POT-Creation-Date: 2024-02-25 15:18+0100\n"
|
||||||
"PO-Revision-Date: 2024-01-22 15:38+0100\n"
|
"PO-Revision-Date: 2024-01-22 15:38+0100\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language: en\n"
|
"Language: en\n"
|
||||||
@ -18,12 +18,12 @@ msgstr ""
|
|||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Generated-By: Babel 2.14.0\n"
|
"Generated-By: Babel 2.14.0\n"
|
||||||
|
|
||||||
#: partitioncloud/__init__.py:147
|
#: partitioncloud/__init__.py:148
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Created user %(username)s"
|
msgid "Created user %(username)s"
|
||||||
msgstr "Created user %(username)s"
|
msgstr "Created user %(username)s"
|
||||||
|
|
||||||
#: partitioncloud/__init__.py:150
|
#: partitioncloud/__init__.py:151
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "This album does not exists, but user %(username)s has been created"
|
msgid "This album does not exists, but user %(username)s has been created"
|
||||||
msgstr "This album does not exists, but user %(username)s has been created"
|
msgstr "This album does not exists, but user %(username)s has been created"
|
||||||
@ -116,7 +116,8 @@ msgstr "Unknown score type."
|
|||||||
msgid "You need to login to access this resource."
|
msgid "You need to login to access this resource."
|
||||||
msgstr "You need to login to access this resource."
|
msgstr "You need to login to access this resource."
|
||||||
|
|
||||||
#: partitioncloud/modules/auth.py:59
|
#: partitioncloud/modules/auth.py:59 partitioncloud/modules/settings.py:46
|
||||||
|
#: partitioncloud/modules/settings.py:69
|
||||||
msgid "Missing rights."
|
msgid "Missing rights."
|
||||||
msgstr "Missing rights."
|
msgstr "Missing rights."
|
||||||
|
|
||||||
@ -124,7 +125,7 @@ msgstr "Missing rights."
|
|||||||
msgid "Missing username."
|
msgid "Missing username."
|
||||||
msgstr "Missing username."
|
msgstr "Missing username."
|
||||||
|
|
||||||
#: partitioncloud/modules/auth.py:87
|
#: partitioncloud/modules/auth.py:87 partitioncloud/modules/settings.py:81
|
||||||
msgid "Missing password."
|
msgid "Missing password."
|
||||||
msgstr "Missing password."
|
msgstr "Missing password."
|
||||||
|
|
||||||
@ -217,79 +218,103 @@ msgstr "You are not allowed to delete this score."
|
|||||||
msgid "Score deleted."
|
msgid "Score deleted."
|
||||||
msgstr "Score deleted."
|
msgstr "Score deleted."
|
||||||
|
|
||||||
#: partitioncloud/templates/base.html:25
|
#: partitioncloud/modules/settings.py:37 partitioncloud/modules/settings.py:60
|
||||||
|
msgid "Missing user id."
|
||||||
|
msgstr "Missing user id."
|
||||||
|
|
||||||
|
#: partitioncloud/modules/settings.py:50
|
||||||
|
msgid "User successfully deleted."
|
||||||
|
msgstr "User successfully deleted."
|
||||||
|
|
||||||
|
#: partitioncloud/modules/settings.py:73
|
||||||
|
msgid "Missing old password."
|
||||||
|
msgstr "Missing old password."
|
||||||
|
|
||||||
|
#: partitioncloud/modules/settings.py:77
|
||||||
|
msgid "Incorrect password."
|
||||||
|
msgstr "Incorrect password."
|
||||||
|
|
||||||
|
#: partitioncloud/modules/settings.py:85
|
||||||
|
msgid "Password and its confirmation differ."
|
||||||
|
msgstr "Password and its confirmation differ."
|
||||||
|
|
||||||
|
#: partitioncloud/modules/settings.py:89
|
||||||
|
msgid "Successfully updated password."
|
||||||
|
msgstr "Successfully updated password."
|
||||||
|
|
||||||
|
#: partitioncloud/templates/base.html:26
|
||||||
msgid "New Album"
|
msgid "New Album"
|
||||||
msgstr "New Album"
|
msgstr "New Album"
|
||||||
|
|
||||||
#: partitioncloud/templates/base.html:27 partitioncloud/templates/base.html:38
|
#: partitioncloud/templates/base.html:28 partitioncloud/templates/base.html:39
|
||||||
#: partitioncloud/templates/groupe/index.html:10
|
#: partitioncloud/templates/groupe/index.html:10
|
||||||
#: partitioncloud/templates/partition/attachments.html:11
|
#: partitioncloud/templates/partition/attachments.html:11
|
||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr "Name"
|
msgstr "Name"
|
||||||
|
|
||||||
#: partitioncloud/templates/base.html:28 partitioncloud/templates/base.html:39
|
#: partitioncloud/templates/base.html:29 partitioncloud/templates/base.html:40
|
||||||
msgid "Create"
|
msgid "Create"
|
||||||
msgstr "Create"
|
msgstr "Create"
|
||||||
|
|
||||||
#: partitioncloud/templates/base.html:32
|
#: partitioncloud/templates/base.html:33
|
||||||
msgid "I want to create a collection of albums."
|
msgid "I want to create a collection of albums."
|
||||||
msgstr "I want to create a collection of albums."
|
msgstr "I want to create a collection of albums."
|
||||||
|
|
||||||
#: partitioncloud/templates/base.html:32
|
#: partitioncloud/templates/base.html:33
|
||||||
msgid "Create group"
|
msgid "Create group"
|
||||||
msgstr "Create group"
|
msgstr "Create group"
|
||||||
|
|
||||||
#: partitioncloud/templates/base.html:36
|
#: partitioncloud/templates/base.html:37
|
||||||
msgid "Create new group"
|
msgid "Create new group"
|
||||||
msgstr "Create new group"
|
msgstr "Create new group"
|
||||||
|
|
||||||
#: partitioncloud/templates/base.html:63
|
#: partitioncloud/templates/base.html:64
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "Search"
|
msgstr "Search"
|
||||||
|
|
||||||
#: partitioncloud/templates/base.html:65
|
#: partitioncloud/templates/base.html:66
|
||||||
msgid "Number of online searches"
|
msgid "Number of online searches"
|
||||||
msgstr "Number of online searches"
|
msgstr "Number of online searches"
|
||||||
|
|
||||||
#: partitioncloud/templates/admin/index.html:23
|
#: partitioncloud/templates/admin/index.html:23
|
||||||
#: partitioncloud/templates/base.html:73
|
#: partitioncloud/templates/base.html:74
|
||||||
#: partitioncloud/templates/partition/details.html:41
|
#: partitioncloud/templates/partition/details.html:41
|
||||||
msgid "Albums"
|
msgid "Albums"
|
||||||
msgstr "Albums"
|
msgstr "Albums"
|
||||||
|
|
||||||
#: partitioncloud/templates/base.html:77
|
#: partitioncloud/templates/base.html:78
|
||||||
msgid "New album"
|
msgid "New album"
|
||||||
msgstr "New album"
|
msgstr "New album"
|
||||||
|
|
||||||
#: partitioncloud/templates/base.html:94
|
#: partitioncloud/templates/base.html:95
|
||||||
msgid "No albums"
|
msgid "No albums"
|
||||||
msgstr "No albums"
|
msgstr "No albums"
|
||||||
|
|
||||||
#: partitioncloud/templates/base.html:113
|
#: partitioncloud/templates/base.html:114
|
||||||
msgid "No album available"
|
msgid "No album available"
|
||||||
msgstr "No album available"
|
msgstr "No album available"
|
||||||
|
|
||||||
#: partitioncloud/templates/base.html:127
|
#: partitioncloud/templates/base.html:128
|
||||||
msgid "Log in to see your albums"
|
msgid "Log in to see your albums"
|
||||||
msgstr "Log in to see your albums"
|
msgstr "Log in to see your albums"
|
||||||
|
|
||||||
#: partitioncloud/templates/base.html:141
|
#: partitioncloud/templates/base.html:142
|
||||||
msgid "Log out"
|
msgid "Log out"
|
||||||
msgstr "Log out"
|
msgstr "Log out"
|
||||||
|
|
||||||
#: partitioncloud/templates/base.html:156
|
#: partitioncloud/templates/base.html:157
|
||||||
msgid "Admin Panel"
|
msgid "Admin Panel"
|
||||||
msgstr "Admin Panel"
|
msgstr "Admin Panel"
|
||||||
|
|
||||||
#: partitioncloud/templates/auth/register.html:5
|
#: partitioncloud/templates/auth/register.html:5
|
||||||
#: partitioncloud/templates/auth/register.html:20
|
#: partitioncloud/templates/auth/register.html:20
|
||||||
#: partitioncloud/templates/base.html:168
|
#: partitioncloud/templates/base.html:169
|
||||||
msgid "Create account"
|
msgid "Create account"
|
||||||
msgstr "Create account"
|
msgstr "Create account"
|
||||||
|
|
||||||
#: partitioncloud/templates/auth/login.html:5
|
#: partitioncloud/templates/auth/login.html:5
|
||||||
#: partitioncloud/templates/auth/login.html:10
|
#: partitioncloud/templates/auth/login.html:10
|
||||||
#: partitioncloud/templates/base.html:170
|
#: partitioncloud/templates/base.html:171
|
||||||
#: partitioncloud/templates/launch.html:26
|
#: partitioncloud/templates/launch.html:26
|
||||||
msgid "Log in"
|
msgid "Log in"
|
||||||
msgstr "Log in"
|
msgstr "Log in"
|
||||||
@ -315,9 +340,7 @@ msgstr "Check code"
|
|||||||
msgid ""
|
msgid ""
|
||||||
"This instance is used by %(users)s users with a total of %(scores)s "
|
"This instance is used by %(users)s users with a total of %(scores)s "
|
||||||
"scores."
|
"scores."
|
||||||
msgstr ""
|
msgstr "This instance has %(users)s users with a total of %(scores)s scores."
|
||||||
"This instance has %(users)s users with a total of %(scores)s "
|
|
||||||
"scores."
|
|
||||||
|
|
||||||
#: partitioncloud/templates/admin/index.html:5
|
#: partitioncloud/templates/admin/index.html:5
|
||||||
msgid "Administration Panel"
|
msgid "Administration Panel"
|
||||||
|
@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PROJECT VERSION\n"
|
"Project-Id-Version: PROJECT VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2024-01-29 18:32+0100\n"
|
"POT-Creation-Date: 2024-02-25 15:18+0100\n"
|
||||||
"PO-Revision-Date: 2024-01-22 15:24+0100\n"
|
"PO-Revision-Date: 2024-01-22 15:24+0100\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language: fr\n"
|
"Language: fr\n"
|
||||||
@ -18,12 +18,12 @@ msgstr ""
|
|||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Generated-By: Babel 2.14.0\n"
|
"Generated-By: Babel 2.14.0\n"
|
||||||
|
|
||||||
#: partitioncloud/__init__.py:147
|
#: partitioncloud/__init__.py:148
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Created user %(username)s"
|
msgid "Created user %(username)s"
|
||||||
msgstr "Utilisateur %(username)s créé"
|
msgstr "Utilisateur %(username)s créé"
|
||||||
|
|
||||||
#: partitioncloud/__init__.py:150
|
#: partitioncloud/__init__.py:151
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "This album does not exists, but user %(username)s has been created"
|
msgid "This album does not exists, but user %(username)s has been created"
|
||||||
msgstr "Cet album n'existe pas. L'utilisateur %(username)s a été créé"
|
msgstr "Cet album n'existe pas. L'utilisateur %(username)s a été créé"
|
||||||
@ -116,7 +116,8 @@ msgstr "Type de partition inconnu."
|
|||||||
msgid "You need to login to access this resource."
|
msgid "You need to login to access this resource."
|
||||||
msgstr "Vous devez être connecté pour accéder à cette page."
|
msgstr "Vous devez être connecté pour accéder à cette page."
|
||||||
|
|
||||||
#: partitioncloud/modules/auth.py:59
|
#: partitioncloud/modules/auth.py:59 partitioncloud/modules/settings.py:46
|
||||||
|
#: partitioncloud/modules/settings.py:69
|
||||||
msgid "Missing rights."
|
msgid "Missing rights."
|
||||||
msgstr "Droits insuffisants."
|
msgstr "Droits insuffisants."
|
||||||
|
|
||||||
@ -124,7 +125,7 @@ msgstr "Droits insuffisants."
|
|||||||
msgid "Missing username."
|
msgid "Missing username."
|
||||||
msgstr "Un nom d'utilisateur est requis."
|
msgstr "Un nom d'utilisateur est requis."
|
||||||
|
|
||||||
#: partitioncloud/modules/auth.py:87
|
#: partitioncloud/modules/auth.py:87 partitioncloud/modules/settings.py:81
|
||||||
msgid "Missing password."
|
msgid "Missing password."
|
||||||
msgstr "Un mot de passe est requis."
|
msgstr "Un mot de passe est requis."
|
||||||
|
|
||||||
@ -219,81 +220,105 @@ msgstr "Vous n'êtes pas autorisé à supprimer cette partition."
|
|||||||
msgid "Score deleted."
|
msgid "Score deleted."
|
||||||
msgstr "Partition supprimée."
|
msgstr "Partition supprimée."
|
||||||
|
|
||||||
#: partitioncloud/templates/base.html:25
|
#: partitioncloud/modules/settings.py:37 partitioncloud/modules/settings.py:60
|
||||||
|
msgid "Missing user id."
|
||||||
|
msgstr "Identifiant d'utilisateur manquant."
|
||||||
|
|
||||||
|
#: partitioncloud/modules/settings.py:50
|
||||||
|
msgid "User successfully deleted."
|
||||||
|
msgstr "Utilisateur supprimée."
|
||||||
|
|
||||||
|
#: partitioncloud/modules/settings.py:73
|
||||||
|
msgid "Missing old password."
|
||||||
|
msgstr "Ancien mot de passe manquant."
|
||||||
|
|
||||||
|
#: partitioncloud/modules/settings.py:77
|
||||||
|
msgid "Incorrect password."
|
||||||
|
msgstr "Mot de passe incorrect."
|
||||||
|
|
||||||
|
#: partitioncloud/modules/settings.py:85
|
||||||
|
msgid "Password and its confirmation differ."
|
||||||
|
msgstr "Le mot de passe et sa confirmation diffèrent"
|
||||||
|
|
||||||
|
#: partitioncloud/modules/settings.py:89
|
||||||
|
msgid "Successfully updated password."
|
||||||
|
msgstr "Mot de passe mis à jour."
|
||||||
|
|
||||||
|
#: partitioncloud/templates/base.html:26
|
||||||
msgid "New Album"
|
msgid "New Album"
|
||||||
msgstr "Créer un nouvel album"
|
msgstr "Créer un nouvel album"
|
||||||
|
|
||||||
#: partitioncloud/templates/base.html:27 partitioncloud/templates/base.html:38
|
#: partitioncloud/templates/base.html:28 partitioncloud/templates/base.html:39
|
||||||
#: partitioncloud/templates/groupe/index.html:10
|
#: partitioncloud/templates/groupe/index.html:10
|
||||||
#: partitioncloud/templates/partition/attachments.html:11
|
#: partitioncloud/templates/partition/attachments.html:11
|
||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr "Nom"
|
msgstr "Nom"
|
||||||
|
|
||||||
#: partitioncloud/templates/base.html:28 partitioncloud/templates/base.html:39
|
#: partitioncloud/templates/base.html:29 partitioncloud/templates/base.html:40
|
||||||
msgid "Create"
|
msgid "Create"
|
||||||
msgstr "Créer"
|
msgstr "Créer"
|
||||||
|
|
||||||
#: partitioncloud/templates/base.html:32
|
#: partitioncloud/templates/base.html:33
|
||||||
msgid "I want to create a collection of albums."
|
msgid "I want to create a collection of albums."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Je souhaite créer plusieurs albums et pouvoir tous les partager avec un "
|
"Je souhaite créer plusieurs albums et pouvoir tous les partager avec un "
|
||||||
"seul lien."
|
"seul lien."
|
||||||
|
|
||||||
#: partitioncloud/templates/base.html:32
|
#: partitioncloud/templates/base.html:33
|
||||||
msgid "Create group"
|
msgid "Create group"
|
||||||
msgstr "Créer un groupe"
|
msgstr "Créer un groupe"
|
||||||
|
|
||||||
#: partitioncloud/templates/base.html:36
|
#: partitioncloud/templates/base.html:37
|
||||||
msgid "Create new group"
|
msgid "Create new group"
|
||||||
msgstr "Créer un nouveau groupe"
|
msgstr "Créer un nouveau groupe"
|
||||||
|
|
||||||
#: partitioncloud/templates/base.html:63
|
#: partitioncloud/templates/base.html:64
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "Rechercher"
|
msgstr "Rechercher"
|
||||||
|
|
||||||
#: partitioncloud/templates/base.html:65
|
#: partitioncloud/templates/base.html:66
|
||||||
msgid "Number of online searches"
|
msgid "Number of online searches"
|
||||||
msgstr "Nombre de recherches en ligne"
|
msgstr "Nombre de recherches en ligne"
|
||||||
|
|
||||||
#: partitioncloud/templates/admin/index.html:23
|
#: partitioncloud/templates/admin/index.html:23
|
||||||
#: partitioncloud/templates/base.html:73
|
#: partitioncloud/templates/base.html:74
|
||||||
#: partitioncloud/templates/partition/details.html:41
|
#: partitioncloud/templates/partition/details.html:41
|
||||||
msgid "Albums"
|
msgid "Albums"
|
||||||
msgstr "Albums"
|
msgstr "Albums"
|
||||||
|
|
||||||
#: partitioncloud/templates/base.html:77
|
#: partitioncloud/templates/base.html:78
|
||||||
msgid "New album"
|
msgid "New album"
|
||||||
msgstr "Créer un album"
|
msgstr "Créer un album"
|
||||||
|
|
||||||
#: partitioncloud/templates/base.html:94
|
#: partitioncloud/templates/base.html:95
|
||||||
msgid "No albums"
|
msgid "No albums"
|
||||||
msgstr "Aucun album disponible"
|
msgstr "Aucun album disponible"
|
||||||
|
|
||||||
#: partitioncloud/templates/base.html:113
|
#: partitioncloud/templates/base.html:114
|
||||||
msgid "No album available"
|
msgid "No album available"
|
||||||
msgstr "Aucun album disponible"
|
msgstr "Aucun album disponible"
|
||||||
|
|
||||||
#: partitioncloud/templates/base.html:127
|
#: partitioncloud/templates/base.html:128
|
||||||
msgid "Log in to see your albums"
|
msgid "Log in to see your albums"
|
||||||
msgstr "Connectez vous pour avoir accès à vos albums"
|
msgstr "Connectez vous pour avoir accès à vos albums"
|
||||||
|
|
||||||
#: partitioncloud/templates/base.html:141
|
#: partitioncloud/templates/base.html:142
|
||||||
msgid "Log out"
|
msgid "Log out"
|
||||||
msgstr "Déconnexion"
|
msgstr "Déconnexion"
|
||||||
|
|
||||||
#: partitioncloud/templates/base.html:156
|
#: partitioncloud/templates/base.html:157
|
||||||
msgid "Admin Panel"
|
msgid "Admin Panel"
|
||||||
msgstr "Panneau admin"
|
msgstr "Panneau admin"
|
||||||
|
|
||||||
#: partitioncloud/templates/auth/register.html:5
|
#: partitioncloud/templates/auth/register.html:5
|
||||||
#: partitioncloud/templates/auth/register.html:20
|
#: partitioncloud/templates/auth/register.html:20
|
||||||
#: partitioncloud/templates/base.html:168
|
#: partitioncloud/templates/base.html:169
|
||||||
msgid "Create account"
|
msgid "Create account"
|
||||||
msgstr "Créer un compte"
|
msgstr "Créer un compte"
|
||||||
|
|
||||||
#: partitioncloud/templates/auth/login.html:5
|
#: partitioncloud/templates/auth/login.html:5
|
||||||
#: partitioncloud/templates/auth/login.html:10
|
#: partitioncloud/templates/auth/login.html:10
|
||||||
#: partitioncloud/templates/base.html:170
|
#: partitioncloud/templates/base.html:171
|
||||||
#: partitioncloud/templates/launch.html:26
|
#: partitioncloud/templates/launch.html:26
|
||||||
msgid "Log in"
|
msgid "Log in"
|
||||||
msgstr "Se connecter"
|
msgstr "Se connecter"
|
||||||
|
Loading…
Reference in New Issue
Block a user