From 1c8415ac20c13881ba97d2354d6d1f38d3b78b2d Mon Sep 17 00:00:00 2001 From: Gabriel Detraz Date: Mon, 19 Mar 2018 01:56:18 +0100 Subject: [PATCH 1/4] Merge migrations --- .../migrations/0030_merge_20180319_0149.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 preferences/migrations/0030_merge_20180319_0149.py diff --git a/preferences/migrations/0030_merge_20180319_0149.py b/preferences/migrations/0030_merge_20180319_0149.py new file mode 100644 index 00000000..7330e73a --- /dev/null +++ b/preferences/migrations/0030_merge_20180319_0149.py @@ -0,0 +1,16 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.7 on 2018-03-19 00:49 +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('preferences', '0029_auto_20180318_1005'), + ('preferences', '0029_auto_20180318_0213'), + ] + + operations = [ + ] From d793da4372518c62692d1fd6e949106b961e4029 Mon Sep 17 00:00:00 2001 From: Gabriel Detraz Date: Mon, 19 Mar 2018 02:13:28 +0100 Subject: [PATCH 2/4] Affiche le solde meme si pas de recharchement online --- users/templates/users/profil.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/users/templates/users/profil.html b/users/templates/users/profil.html index 9856e319..731ba560 100644 --- a/users/templates/users/profil.html +++ b/users/templates/users/profil.html @@ -168,16 +168,16 @@ non adhérent{% endif %} et votre connexion est {% if users.has_access %} Aucun {% endif %} - {% if allow_online_payment %} Solde {{ users.solde }} € + {% if allow_online_payment %} Recharger - - - {% endif %} + + {% endif %} + {% if users.shell %} Shell {{ users.shell }} From beb7c48c563bc20d5b772bdb8eb3681d814b6ac7 Mon Sep 17 00:00:00 2001 From: Mikachu Date: Wed, 21 Mar 2018 22:58:31 +0100 Subject: [PATCH 3/4] =?UTF-8?q?on=20envoie=20les=20mails=20par=20d=C3=83fa?= =?UTF-8?q?ut=20=C3=A0=20@example.com?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- preferences/models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/preferences/models.py b/preferences/models.py index 8678289f..80c3271e 100644 --- a/preferences/models.py +++ b/preferences/models.py @@ -375,7 +375,7 @@ class GeneralOption(PreferencesModel): pagination_large_number = models.IntegerField(default=8) req_expire_hrs = models.IntegerField(default=48) site_name = models.CharField(max_length=32, default="Re2o") - email_from = models.EmailField(default="www-data@serveur.net") + email_from = models.EmailField(default="www-data@example.com") GTU_sum_up = models.TextField( default="", blank=True, From 57833142eb51539880fce3a55386e8cb4b86d536 Mon Sep 17 00:00:00 2001 From: Krokmou Date: Thu, 22 Mar 2018 01:38:16 +0100 Subject: [PATCH 4/4] Ajout d'une commande chsh --- users/management/commands/chsh.py | 77 +++++++++++++++++++++++++++++++ users/models.py | 4 ++ 2 files changed, 81 insertions(+) create mode 100755 users/management/commands/chsh.py diff --git a/users/management/commands/chsh.py b/users/management/commands/chsh.py new file mode 100755 index 00000000..bcfec3a8 --- /dev/null +++ b/users/management/commands/chsh.py @@ -0,0 +1,77 @@ +# ⁻*- mode: python; coding: utf-8 -*- +# Re2o est un logiciel d'administration développé initiallement au rezometz. Il +# se veut agnostique au réseau considéré, de manière à être installable en +# quelques clics. +# +# Copyright © 2018 Jean-Baptiste Daval +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +import os, sys, pwd + +from django.core.management.base import BaseCommand, CommandError +from django.db import transaction +from reversion import revisions as reversion + +from users.models import User, ListShell + +class Command(BaseCommand): + help = 'Change the default shell of a user' + + def add_arguments(self, parser): + parser.add_argument('target_username', nargs='?') + + def handle(self, *args, **options): + + def get_user(user_pseudo): + """Return the user queried by pseudo, and exit the script if not found.""" + user = User.objects.filter(pseudo=user_pseudo) + if not user: + raise CommandError("Utilisateur invalide") + return user[0] + + current_username = pwd.getpwuid(int(os.getenv("SUDO_UID") or os.getuid())).pw_name + current_user = get_user(current_username) + + target_username = options["target_username"] or current_username + target_user = get_user(target_username) + + #L'utilisateur n'a pas le droit de changer le shell + ok, msg = target_user.can_change_shell(current_user) + if not ok: + raise CommandError(msg) + + shells = ListShell.objects.all() + self.stdout.write("Choisissez un shell pour l'utilisateur %s :" % target_user.pseudo) + for shell in shells: + self.stdout.write("%d - %s (%s)" % (shell.id, shell.get_pretty_name(), shell.shell)) + shell_id = input("Entrez un nombre : ") + + try: + shell_id = int(shell_id) + except: + raise CommandError("Choix invalide") + + shell = ListShell.objects.filter(id=shell_id) + if not shell: + raise CommandError("Choix invalide") + + target_user.shell = shell.first() + with transaction.atomic(), reversion.create_revision(): + target_user.save() + reversion.set_user(current_user) + reversion.set_comment("Shell modifié") + + self.stdout.write(self.style.SUCCESS("Shell modifié. La modification peut prendre quelques minutes pour s'appliquer.")) diff --git a/users/models.py b/users/models.py index da6adcfb..ed62edbb 100644 --- a/users/models.py +++ b/users/models.py @@ -1248,6 +1248,10 @@ class ListShell(models.Model): shell = models.CharField(max_length=255, unique=True) + def get_pretty_name(self): + """Return the canonical name of the shell""" + return self.shell.split("/")[-1] + def __str__(self): return self.shell