Commit 81e98406 authored by Daniel STAN's avatar Daniel STAN

pages perso: gestion club

parent 7fc3c159
......@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-02-24 18:49+0100\n"
"POT-Creation-Date: 2016-02-27 13:16+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
......@@ -25,76 +25,104 @@ msgstr "The password must be contain at least 8 characters."
msgid "Les mots de passe ne sont pas identiques."
msgstr "Passwords mismatch."
#: templates/pageperso/affichage.html:3 templates/pageperso/createdb.html:3
#: templates/pageperso/deletedb.html:3
#: templates/pageperso/affichage.html:5 templates/pageperso/affichage.html:12
msgid "Ma page Perso"
msgstr "My personal web page"
#: templates/pageperso/affichage.html:4 templates/pageperso/createdb.html:4
#: templates/pageperso/deletedb.html:4
msgid "Ma page perso"
msgstr "My personal web page"
#: templates/pageperso/affichage.html:7 templates/pageperso/affichage.html:14
#, python-format
msgid "Page Perso de %(login)s"
msgstr ""
#: templates/pageperso/affichage.html:6
#: templates/pageperso/affichage.html:18
msgid "<h2>Référencement</h2>"
msgstr "<h2>Indexing</h2>"
#: templates/pageperso/affichage.html:7
#: templates/pageperso/affichage.html:19
msgid "Cette interface permet de référencer sa page perso sur "
msgstr "This interface makes it possible to index your personnal web page on "
#: templates/pageperso/affichage.html:8
#: templates/pageperso/affichage.html:20
msgid "Pour plus d'informations, rendez-vous sur le "
msgstr "For more informations, visit the "
#: templates/pageperso/affichage.html:39
msgid "<h2>Déréférencement</h2>"
msgstr "<h2>Discontinuing</h2>"
#: templates/pageperso/affichage.html:51
msgid "Déréférencement"
msgstr "Discontinuing"
#: templates/pageperso/affichage.html:41
#: templates/pageperso/affichage.html:53
msgid "Déréférencer ma page perso"
msgstr "Discontinue my personnal web page"
#: templates/pageperso/affichage.html:44
#: templates/pageperso/affichage.html:56
msgid "Base de données"
msgstr "Database"
#: templates/pageperso/affichage.html:47
#, python-format
#: templates/pageperso/affichage.html:59
msgid ""
"\n"
"Vous disposez d'une base de données mysql accessible depuis zamok.<br/>\n"
"Nom d'utilisateur \"%(user.username)s\", nom de la base, \"%(user.username)s"
"\", adresse \"localhost\".<br/>\n"
"Vous pouvez vous y connecter en ligne de commande depuis zamok en faisant "
"\"mysql -u %(user.username)s -p %(user.username)s\" puis en entrant votre "
"mot de passe de base de donnée.<br/>\n"
"Vous pouvez également utiliser l'interface web "
"<p>\n"
"Vous disposez d'une base de données mysql accessible depuis zamok.</p>\n"
"<ul>\n"
" <li>Nom d'utilisateur : \"%(login)s\"</li>\n"
" <li>Nom de la base : \"%(login)s\"</li>\n"
" <li>Adresse : \"localhost\".</li>\n"
"</ul>\n"
"<p>\n"
"Vous pouvez vous y connecter en ligne de commande depuis zamok en faisant\n"
"\"mysql -u %(login)s -p %(login)s\"\n"
"puis en entrant votre mot de passe de base de données.<br/>\n"
"Vous pouvez également utiliser l'interface web\n"
"<a href=\"https://perso.crans.org/phpmyadmin/\">phpmyadmin</a>.\n"
"</p>\n"
msgstr ""
"\n"
"You own a mysql database accessible from zamok.<br/>\n"
"User Name \"%(user.username)s\", name of the database, \"%(user.username)s\","
"address \"localhost\".<br/>\n"
"<p>\n"
"You own a mysql database accessible from zamok.<p/>\n"
"<ul>\n"
" <li>User Name: \"%(user.username)s\"</li>\n"
" <li>Database name: \"%(user.username)s\"</li>\n"
" <li>Address: \"localhost\".</li>\n"
"</ul>\n"
"<p>\n"
"You can log to it with the command line from zamok with \"mysql -u "
"%(user.username)s -p %(user.username)s\" and then by entering yourdatabase "
"%(login)s -p %(login)s\" and then by entering your database "
"password.<br/>\n"
"You can also use the web interface"
"You can also use the web interface\n"
"<a href=\"https://perso.crans.org/phpmyadmin/\">phpmyadmin</a>.\n"
"</p>\n"
#: templates/pageperso/affichage.html:75
msgid "Réinitialiser le mot de passe de ma base de données"
msgstr "Reset my database password"
#: templates/pageperso/affichage.html:55
#: templates/pageperso/affichage.html:76
msgid "Supprimer ma base de données"
msgstr "Delete my database"
#: templates/pageperso/affichage.html:78
msgid ""
"Vous ne disposez pas encore d'une base de données mysql accessible depuis "
"zamok."
msgstr "You don't own a mysql database accessible from zamok."
#: templates/pageperso/affichage.html:59
msgid "Impossible d'accéder aux information de connexion mysql"
msgstr "Impossible to access mysql's connection informations"
#: templates/pageperso/affichage.html:79
msgid "Créer une base de données"
msgstr "Creation of the database"
#: templates/pageperso/affichage.html:82
msgid "Impossible d'accéder aux information de connexion mysql."
msgstr "Unable to access mysql's connection informations."
#: templates/pageperso/createdb.html:17
#: templates/pageperso/affichage.html:84
msgid "Autres pages perso administrables "
msgstr "Other manageable pages"
#: templates/pageperso/createdb.html:15
msgid "Création de la base de données"
msgstr "Creation of the database"
#: templates/pageperso/createdb.html:18
#: templates/pageperso/createdb.html:16
msgid ""
"\n"
"Merci de choisir un mot de passe pour votre base de données.<br/>\n"
......@@ -106,36 +134,39 @@ msgstr ""
"It is strongly recommended to choose a different password from that for "
"accessing to your Crans account.\n"
#: templates/pageperso/createdb.html:25
#: templates/pageperso/createdb.html:23
msgid "Générer un mot de passe"
msgstr "Generate a password"
#: templates/pageperso/createdb.html:26
#: templates/pageperso/createdb.html:24
msgid "Générer"
msgstr "Generate"
#: templates/pageperso/createdb.html:32 templates/pageperso/deletedb.html:13
#: templates/pageperso/createdb.html:30 templates/pageperso/deletedb.html:11
msgid "annuler"
msgstr "Cancel"
#: templates/pageperso/deletedb.html:6
#: templates/pageperso/deletedb.html:4
msgid "Destruction de votre base de données"
msgstr "Destruction of you database"
#: templates/pageperso/deletedb.html:9
#: templates/pageperso/deletedb.html:7
msgid ""
"Vraiment supprimer la base de données ? Toutes les données contenues dedans "
"seront irrémédiablement perdues."
msgstr "Really destroy the database? All data in will be irremediably lost"
#: templates/pageperso/deletedb.html:12
#: templates/pageperso/deletedb.html:10
msgid "supprimer"
msgstr "Delete"
#: views.py:49 views.py:64
#: views.py:66 views.py:81
msgid "Modifier l'affichage de ma page perso"
msgstr "Modify your personnal webpage display"
#: views.py:52 views.py:69
#: views.py:69 views.py:86
msgid "Référencer ma page perso"
msgstr "Index my personnal web page"
#~ msgid "Ma page perso"
#~ msgstr "My personal web page"
......@@ -3,12 +3,11 @@
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-02-24 18:49+0100\n"
"POT-Creation-Date: 2016-02-27 13:16+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
......@@ -26,68 +25,90 @@ msgstr ""
msgid "Les mots de passe ne sont pas identiques."
msgstr ""
#: templates/pageperso/affichage.html:3 templates/pageperso/createdb.html:3
#: templates/pageperso/deletedb.html:3
#: templates/pageperso/affichage.html:5 templates/pageperso/affichage.html:12
msgid "Ma page Perso"
msgstr ""
#: templates/pageperso/affichage.html:4 templates/pageperso/createdb.html:4
#: templates/pageperso/deletedb.html:4
msgid "Ma page perso"
#: templates/pageperso/affichage.html:7 templates/pageperso/affichage.html:14
#, python-format
msgid "Page Perso de %(login)s"
msgstr ""
#: templates/pageperso/affichage.html:6
#: templates/pageperso/affichage.html:18
msgid "<h2>Référencement</h2>"
msgstr ""
#: templates/pageperso/affichage.html:7
#: templates/pageperso/affichage.html:19
msgid "Cette interface permet de référencer sa page perso sur "
msgstr ""
#: templates/pageperso/affichage.html:8
#: templates/pageperso/affichage.html:20
msgid "Pour plus d'informations, rendez-vous sur le "
msgstr ""
#: templates/pageperso/affichage.html:39
msgid "<h2>Déréférencement</h2>"
#: templates/pageperso/affichage.html:51
msgid "Déréférencement"
msgstr ""
#: templates/pageperso/affichage.html:41
#: templates/pageperso/affichage.html:53
msgid "Déréférencer ma page perso"
msgstr ""
#: templates/pageperso/affichage.html:44
#: templates/pageperso/affichage.html:56
msgid "Base de données"
msgstr ""
#: templates/pageperso/affichage.html:47
#: templates/pageperso/affichage.html:59
#, python-format
msgid ""
"\n"
"Vous disposez d'une base de données mysql accessible depuis zamok.<br/>\n"
"Nom d'utilisateur \"%(user.username)s\", nom de la base, \"%(user.username)s"
"\", adresse \"localhost\".<br/>\n"
"Vous pouvez vous y connecter en ligne de commande depuis zamok en faisant "
"\"mysql -u %(user.username)s -p %(user.username)s\" puis en entrant votre "
"mot de passe de base de donnée.<br/>\n"
"Vous pouvez également utiliser l'interface web "
"<p>\n"
"Vous disposez d'une base de données mysql accessible depuis zamok.</p>\n"
"<ul>\n"
" <li>Nom d'utilisateur : \"%(login)s\"</li>\n"
" <li>Nom de la base : \"%(login)s\"</li>\n"
" <li>Adresse : \"localhost\".</li>\n"
"</ul>\n"
"<p>\n"
"Vous pouvez vous y connecter en ligne de commande depuis zamok en faisant\n"
"\"mysql -u %(login)s -p %(login)s\"\n"
"puis en entrant votre mot de passe de base de données.<br/>\n"
"Vous pouvez également utiliser l'interface web\n"
"<a href=\"https://perso.crans.org/phpmyadmin/\">phpmyadmin</a>.\n"
"</p>\n"
msgstr ""
#: templates/pageperso/affichage.html:75
msgid "Réinitialiser le mot de passe de ma base de données"
msgstr ""
#: templates/pageperso/affichage.html:76
msgid "Supprimer ma base de données"
msgstr ""
#: templates/pageperso/affichage.html:55
#: templates/pageperso/affichage.html:78
msgid ""
"Vous ne disposez pas encore d'une base de données mysql accessible depuis "
"zamok."
msgstr ""
#: templates/pageperso/affichage.html:59
msgid "Impossible d'accéder aux information de connexion mysql"
#: templates/pageperso/affichage.html:79
msgid "Créer une base de données"
msgstr ""
#: templates/pageperso/affichage.html:82
msgid "Impossible d'accéder aux information de connexion mysql."
msgstr ""
#: templates/pageperso/createdb.html:17
#: templates/pageperso/affichage.html:84
msgid "Autres pages perso administrables "
msgstr ""
#: templates/pageperso/createdb.html:15
msgid "Création de la base de données"
msgstr ""
#: templates/pageperso/createdb.html:18
#: templates/pageperso/createdb.html:16
msgid ""
"\n"
"Merci de choisir un mot de passe pour votre base de données.<br/>\n"
......@@ -95,36 +116,36 @@ msgid ""
"votre compte Crans.\n"
msgstr ""
#: templates/pageperso/createdb.html:25
#: templates/pageperso/createdb.html:23
msgid "Générer un mot de passe"
msgstr ""
#: templates/pageperso/createdb.html:26
#: templates/pageperso/createdb.html:24
msgid "Générer"
msgstr ""
#: templates/pageperso/createdb.html:32 templates/pageperso/deletedb.html:13
#: templates/pageperso/createdb.html:30 templates/pageperso/deletedb.html:11
msgid "annuler"
msgstr ""
#: templates/pageperso/deletedb.html:6
#: templates/pageperso/deletedb.html:4
msgid "Destruction de votre base de données"
msgstr ""
#: templates/pageperso/deletedb.html:9
#: templates/pageperso/deletedb.html:7
msgid ""
"Vraiment supprimer la base de données ? Toutes les données contenues dedans "
"seront irrémédiablement perdues."
msgstr ""
#: templates/pageperso/deletedb.html:12
#: templates/pageperso/deletedb.html:10
msgid "supprimer"
msgstr ""
#: views.py:49 views.py:64
#: views.py:66 views.py:81
msgid "Modifier l'affichage de ma page perso"
msgstr ""
#: views.py:52 views.py:69
#: views.py:69 views.py:86
msgid "Référencer ma page perso"
msgstr ""
{% extends "template.html" %}
{% load i18n %}
{% block title %} {% trans "Ma page Perso" %} {% endblock %}
{% block h1 %} {% trans "Ma page perso" %} {% endblock %}
{% block title %}
{% if login = request.user.username %}
{% trans "Ma page Perso" %}
{% else %}
{% blocktrans %}Page Perso de {{ login }}{% endblocktrans %}
{% endif %}
{% endblock %}
{% block h1 %}
{% if login = request.user.username %}
{% trans "Ma page Perso" %}
{% else %}
{% blocktrans %}Page Perso de {{ login }}{% endblocktrans %}
{% endif %}
{% endblock %}
{% block content %}
{% trans "<h2>Référencement</h2>" %}
{% trans "Cette interface permet de référencer sa page perso sur " %}<a href="https://wiki.crans.org/PagesPerso"a>Wiki/PagesPerso</a><br/>
......@@ -36,8 +48,8 @@
</footer>
</form>
{% if deref %}
{% trans "<h2>Déréférencement</h2>" %}
<form action="{% url 'pageperso:deref' %}">
<h2>{% trans "Déréférencement" %}</h2>
<form action="{% url 'pageperso:deref' login=login %}">
<input type="submit" value="{% trans "Déréférencer ma page perso" %}" class="button-del">
</form>
{% endif %}
......@@ -45,19 +57,36 @@
{% if not mysql_error %}
{% if mysql_exists %}
{% blocktrans %}
Vous disposez d'une base de données mysql accessible depuis zamok.<br/>
Nom d'utilisateur "{{user.username}}", nom de la base, "{{user.username}}", adresse "localhost".<br/>
Vous pouvez vous y connecter en ligne de commande depuis zamok en faisant "mysql -u {{user.username}} -p {{user.username}}" puis en entrant votre mot de passe de base de donnée.<br/>
Vous pouvez également utiliser l'interface web {%endblocktrans%} <a href="https://perso.crans.org/phpmyadmin/">phpmyadmin</a></br/>
<a href="{% url "pageperso:reset_db_password" %}" class="button">Réinitialiser le mot de passe de ma base de données</a>
<a href="{% url "pageperso:delete_database" %}" class="button-del">Supprimer ma base de données</a>
<p>
Vous disposez d'une base de données mysql accessible depuis zamok.</p>
<ul>
<li>Nom d'utilisateur : "{{ login }}"</li>
<li>Nom de la base : "{{ login }}"</li>
<li>Adresse : "localhost".</li>
</ul>
<p>
Vous pouvez vous y connecter en ligne de commande depuis zamok en faisant
"mysql -u {{ login }} -p {{ login }}"
puis en entrant votre mot de passe de base de données.<br/>
Vous pouvez également utiliser l'interface web
<a href="https://perso.crans.org/phpmyadmin/">phpmyadmin</a>.
</p>
{%endblocktrans%}
<a href="{% url "pageperso:reset_db_password" login=login %}" class="button">{% trans "Réinitialiser le mot de passe de ma base de données" %}</a>
<a href="{% url "pageperso:delete_database" login=login %}" class="button-del">{% trans "Supprimer ma base de données" %}</a>
{% else %}
{% trans "Vous ne disposez pas encore d'une base de données mysql accessible depuis zamok." %}<br/>
<a href="{% url "pageperso:create_database"%}" class="button">Créer une base de données</a>
<a href="{% url "pageperso:create_database" login=login %}" class="button">{% trans "Créer une base de données" %}</a>
{% endif %}
{% else %}
{% trans "Impossible d'accéder aux information de connexion mysql" %}
{% trans "Impossible d'accéder aux information de connexion mysql." %}
{% endif %}
<h2>{% trans "Autres pages perso administrables " %}</h2>
<ul>
{% for login in logins %}
<li><a href="{% url "pageperso:pageperso" login=login %}">{{ login }}</a></li>
{% endfor %}
</ul>
{% endblock %}
......
{% extends "template.html" %}
{% extends "pageperso/affichage.html" %}
{% load i18n %}
{% block title %} {% trans "Ma page Perso" %} {% endblock %}
{% block h1 %} {% trans "Ma page perso" %} {% endblock %}
{% block content %}
<script>
function generatePassword(){
......@@ -29,7 +27,7 @@ Il est fortement recommandé d'utiliser un mot de passe différent de celui de v
</table>
<footer>
<input type="submit" value="envoyer" />
<a href="{% url "pageperso:pageperso" %}" class="button">{% trans "annuler" %}</a>
<a href="{% url "pageperso:pageperso" login=login %}" class="button">{% trans "annuler" %}</a>
</footer>
</form>
{% endblock %}
......
{% extends "template.html" %}
{% extends "pageperso/affichage.html" %}
{% load i18n %}
{% block title %} {% trans "Ma page Perso" %} {% endblock %}
{% block h1 %} {% trans "Ma page perso" %} {% endblock %}
{% block content %}
<h2>{%trans "Destruction de votre base de données" %}</h2>
<form class="form" method="post"> {% csrf_token %}
......@@ -10,7 +8,7 @@
</label>
<footer>
<input type="submit" value="{% trans "supprimer" %}" class="button-del" />
<a href="{% url "pageperso:pageperso" %}" class="button">{% trans "annuler" %}</a>
<a href="{% url "pageperso:pageperso" login=login %}" class="button">{% trans "annuler" %}</a>
</footer>
</form>
{% endblock %}
......
# -*- coding: utf-8 -*-
from django.conf.urls import patterns as patterns
from django.conf.urls import url
from django.conf.urls import url, include
import views
urlpatterns = patterns('',
url('^$', views.pageperso, name='pageperso'),
url('deref', views.deref, name='deref'),
url('createdb', views.create_database, name='create_database'),
url('resetdbpw', views.reset_db_password, name='reset_db_password'),
url('deletedb', views.delete_database, name='delete_database'),
url('^deref', views.deref, name='deref'),
url('^createdb', views.create_database, name='create_database'),
url('^resetdbpw', views.reset_db_password, name='reset_db_password'),
url('^deletedb', views.delete_database, name='delete_database'),
)
# Spécifier en plus un utilisateur pour qui éditer
urlpatterns = patterns('', url(r'^(?:(?P<login>[^/]*)/)?', include(urlpatterns)))
......@@ -5,8 +5,11 @@
from django.shortcuts import render, redirect
from django.contrib.auth.decorators import login_required
from django.views.decorators.http import require_http_methods
from django.core.exceptions import PermissionDenied
from models import PagePerso
from django.utils.translation import ugettext_lazy as _
from intranet import conn_pool
from gestion.mysql import make_cursor
from gestion import secrets_new as secrets
......@@ -23,16 +26,30 @@ def test_backticks(name):
raise ValueError("%r should not contain '`'")
return name
def get_login(request, user):
def managed_logins(user):
"""Renvoie la liste des logins gérés par ``user``. Travaille avec un générateur
pour ne pas vraiment calculer la liste des clubs, si non nécessaire."""
yield user.username
luser = conn_pool.get_user(user)
if not user:
return
for club in luser.clubs():
for uid in club.get('uid', []):
yield uid.value
def get_login(request, login):
"""Renvoie le login présumé de la page perso. Et vérifie que l'utilisateur
courant a bien le droit de faire des modifs dessus"""
return request.user.username
login = login or request.user.username
if login not in managed_logins(request.user):
raise PermissionDenied
return login
# Vue d'affichage du formulaire d'indexation de la pageperso
@login_required
@require_http_methods(["GET", "POST"])
def pageperso(request, user=None):
login = get_login(request, user)
def pageperso(request, login=None):
login = get_login(request, login)
result = PagePerso.objects.filter(login=login)
if request.method == "POST":
if result.exists():
......@@ -98,22 +115,25 @@ def pageperso(request, user=None):
)
else:
mysql_error = True
return render(request, "pageperso/affichage.html", locals())
logins = managed_logins(request.user)
return render(request, "pageperso/affichage.html",
locals()
)
@login_required
def deref(request, user=None):
login = get_login(request, user)
def deref(request, login=None):
login = get_login(request, login)
result = PagePerso.objects.filter(login=login)
result.delete()
return redirect("/pageperso/")
return redirect("pageperso:pageperso", login=login)
@login_required
@require_http_methods(["GET", "POST"])
def create_database(request, user=None):
login = get_login(request, user)
def create_database(request, login=None):
login = get_login(request, login)
if cursor is None:
return redirect("pageperso:pageperso")
return redirect("pageperso:pageperso", login=login)
if request.method == "POST":
form = SqlPasswordForm(request.POST)
if form.is_valid():
......@@ -130,18 +150,18 @@ def create_database(request, user=None):
) % test_backticks(login),
(login, form.cleaned_data["password"])
)
return redirect("pageperso:pageperso")
return redirect("pageperso:pageperso", login=login)
elif request.method == "GET":
form = SqlPasswordForm()
return render(request, "pageperso/createdb.html", {'form': form})
return render(request, "pageperso/createdb.html", {'form': form, 'login': login, })
@login_required
@require_http_methods(["GET", "POST"])
def reset_db_password(request, user=None):
login = get_login(request, user)
def reset_db_password(request, login=None):
login = get_login(request, login)
if cursor is None:
return redirect("pageperso:pageperso")
return redirect("pageperso:pageperso", login=login)
if request.method == "POST":
form = SqlPasswordForm(request.POST)
if form.is_valid():
......@@ -155,22 +175,22 @@ def reset_db_password(request, user=None):
"SET PASSWORD FOR %s@'localhost' = PASSWORD(%s);",
(login, form.cleaned_data["password"],)
)
return redirect("pageperso:pageperso")
return redirect("pageperso:pageperso", login=login)
elif request.method == "GET":
form = SqlPasswordForm()
return render(request, "pageperso/createdb.html", {'form': form})
return render(request, "pageperso/createdb.html", {'form': form, 'login': login})
@login_required
@require_http_methods(["GET", "POST"])
def delete_database(request, user=None):
login = get_login(request, user)
def delete_database(request, login=None):
login = get_login(request, login)
if cursor is None:
return redirect("pageperso:pageperso")
return redirect("pageperso:pageperso", login=login)
if request.method == "POST":
if request.POST.get("confirm") == "yes":
with cursor() as cur:
cur.execute("DROP DATABASE IF EXISTS `%s`" % test_backticks(login))
cur.execute("DROP USER %s@'localhost'", (login, ))
return redirect("pageperso:pageperso")
return render(request, "pageperso/deletedb.html")
return redirect("pageperso:pageperso", login=login)
return render(request, "pageperso/deletedb.html", {'login': login})
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment