8
0
Fork 0
mirror of https://gitlab2.federez.net/re2o/re2o synced 2024-11-27 07:02:26 +00:00

Merge branch 'fix_room_display' into 'dev'

Fix room display, possibilité de desactiver le champ room sur register

See merge request federez/re2o!338
This commit is contained in:
chirac 2018-10-15 19:20:44 +02:00
commit 510d7ab3fd
7 changed files with 278 additions and 199 deletions

View file

@ -21,7 +21,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: 2.5\n" "Project-Id-Version: 2.5\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-08-18 13:26+0200\n" "POT-Creation-Date: 2018-10-15 00:30+0200\n"
"PO-Revision-Date: 2018-06-24 15:54+0200\n" "PO-Revision-Date: 2018-06-24 15:54+0200\n"
"Last-Translator: Laouen Fernet <laouen.fernet@supelec.fr>\n" "Last-Translator: Laouen Fernet <laouen.fernet@supelec.fr>\n"
"Language-Team: \n" "Language-Team: \n"
@ -34,264 +34,282 @@ msgstr ""
msgid "You don't have the right to view this application." msgid "You don't have the right to view this application."
msgstr "Vous n'avez pas le droit de voir cette application." msgstr "Vous n'avez pas le droit de voir cette application."
#: forms.py:59 templates/preferences/display_preferences.html:41 #: forms.py:62 templates/preferences/display_preferences.html:68
msgid "Telephone number required" msgid "Telephone number required"
msgstr "Numéro de téléphone requis" msgstr "Numéro de téléphone requis"
#: forms.py:61 #: forms.py:64
msgid "GPG fingerprint" msgid "GPG fingerprint"
msgstr "Empreinte GPG" msgstr "Empreinte GPG"
#: forms.py:62 #: forms.py:65
msgid "All can create a club" msgid "All can create a club"
msgstr "Tous peuvent créer un club" msgstr "Tous peuvent créer un club"
#: forms.py:63 #: forms.py:66
msgid "All can create a member" msgid "All can create a member"
msgstr "Tous peuvent créer un adhérent" msgstr "Tous peuvent créer un adhérent"
#: forms.py:64 templates/preferences/display_preferences.html:43 #: forms.py:67 templates/preferences/display_preferences.html:50
msgid "Self registration" msgid "Self registration"
msgstr "Autoinscription" msgstr "Autoinscription"
#: forms.py:65 #: forms.py:68
msgid "Default shell" msgid "Default shell"
msgstr "Interface système par défaut" msgstr "Interface système par défaut"
#: forms.py:81 #: forms.py:84
msgid "Possibility to set a password per machine" msgid "Possibility to set a password per machine"
msgstr "Possibilité de mettre un mot de passe par machine" msgstr "Possibilité de mettre un mot de passe par machine"
#: forms.py:83 templates/preferences/display_preferences.html:87 #: forms.py:86 templates/preferences/display_preferences.html:101
msgid "Maximum number of interfaces allowed for a standard user" msgid "Maximum number of interfaces allowed for a standard user"
msgstr "Nombre maximum d'interfaces autorisé pour un utilisateur standard" msgstr "Nombre maximum d'interfaces autorisé pour un utilisateur standard"
#: forms.py:87 templates/preferences/display_preferences.html:91 #: forms.py:90 templates/preferences/display_preferences.html:105
msgid "Maximum number of DNS aliases allowed for a standard user" msgid "Maximum number of DNS aliases allowed for a standard user"
msgstr "Nombre maximum d'alias DNS autorisé pour un utilisateur standard" msgstr "Nombre maximum d'alias DNS autorisé pour un utilisateur standard"
#: forms.py:90 #: forms.py:93
msgid "IPv6 mode" msgid "IPv6 mode"
msgstr "Mode IPv6" msgstr "Mode IPv6"
#: forms.py:91 #: forms.py:94
msgid "Can create a machine" msgid "Can create a machine"
msgstr "Peut créer une machine" msgstr "Peut créer une machine"
#: forms.py:107 #: forms.py:117
msgid "RADIUS general policy" msgid "RADIUS general policy"
msgstr "Politique générale de RADIUS" msgstr "Politique générale de RADIUS"
#: forms.py:108 templates/preferences/display_preferences.html:116 #: forms.py:118 templates/preferences/display_preferences.html:130
msgid "VLAN for machines accepted by RADIUS" msgid "VLAN for machines accepted by RADIUS"
msgstr "VLAN pour les machines acceptées par RADIUS" msgstr "VLAN pour les machines acceptées par RADIUS"
#: forms.py:110 templates/preferences/display_preferences.html:118 #: forms.py:120 templates/preferences/display_preferences.html:132
msgid "VLAN for machines rejected by RADIUS" msgid "VLAN for machines rejected by RADIUS"
msgstr "VLAN pour les machines rejetées par RADIUS" msgstr "VLAN pour les machines rejetées par RADIUS"
#: forms.py:127 #: forms.py:145
msgid "General message" #, fuzzy
#| msgid "General message"
msgid "General message in French"
msgstr "Message général" msgstr "Message général"
#: forms.py:128 templates/preferences/display_preferences.html:137 #: forms.py:146
#, fuzzy
#| msgid "General message"
msgid "General message in English"
msgstr "Message général"
#: forms.py:147 templates/preferences/display_preferences.html:213
msgid "Number of results displayed when searching" msgid "Number of results displayed when searching"
msgstr "Nombre de résultats affichés lors de la recherche" msgstr "Nombre de résultats affichés lors de la recherche"
#: forms.py:131 #: forms.py:150
msgid "Number of items per page, standard size (e.g. users)" msgid "Number of items per page, standard size (e.g. users)"
msgstr "Nombre d'éléments par page, taille standard (ex : utilisateurs)" msgstr "Nombre d'éléments par page, taille standard (ex : utilisateurs)"
#: forms.py:134 #: forms.py:153
msgid "Number of items per page, large size (e.g. machines)" msgid "Number of items per page, large size (e.g. machines)"
msgstr "Nombre d'éléments par page, taille importante (ex : machines)" msgstr "Nombre d'éléments par page, taille importante (ex : machines)"
#: forms.py:137 templates/preferences/display_preferences.html:145 #: forms.py:156 templates/preferences/display_preferences.html:221
msgid "Time before expiration of the reset password link (in hours)" msgid "Time before expiration of the reset password link (in hours)"
msgstr "" msgstr ""
"Temps avant expiration du lien de réinitialisation de mot de passe (en " "Temps avant expiration du lien de réinitialisation de mot de passe (en "
"heures)" "heures)"
#: forms.py:140 templates/preferences/display_preferences.html:131 #: forms.py:159 templates/preferences/display_preferences.html:207
msgid "Website name" msgid "Website name"
msgstr "Nom du site" msgstr "Nom du site"
#: forms.py:141 templates/preferences/display_preferences.html:133 #: forms.py:160 templates/preferences/display_preferences.html:209
msgid "Email address for automatic emailing" msgid "Email address for automatic emailing"
msgstr "Adresse mail pour les mails automatiques" msgstr "Adresse mail pour les mails automatiques"
#: forms.py:143 templates/preferences/display_preferences.html:151 #: forms.py:162 templates/preferences/display_preferences.html:227
msgid "Summary of the General Terms of Use" msgid "Summary of the General Terms of Use"
msgstr "Résumé des Conditions Générales d'Utilisation" msgstr "Résumé des Conditions Générales d'Utilisation"
#: forms.py:145 templates/preferences/display_preferences.html:155 #: forms.py:164 templates/preferences/display_preferences.html:231
msgid "General Terms of Use" msgid "General Terms of Use"
msgstr "Conditions Générales d'Utilisation" msgstr "Conditions Générales d'Utilisation"
#: forms.py:161 #: forms.py:180
msgid "Organisation name" msgid "Organisation name"
msgstr "Nom de l'association" msgstr "Nom de l'association"
#: forms.py:162 templates/preferences/display_preferences.html:170 #: forms.py:181 templates/preferences/display_preferences.html:246
msgid "SIRET number" msgid "SIRET number"
msgstr "Numéro SIRET" msgstr "Numéro SIRET"
#: forms.py:163 #: forms.py:182
msgid "Address (line 1)" msgid "Address (line 1)"
msgstr "Adresse (ligne 1)" msgstr "Adresse (ligne 1)"
#: forms.py:164 #: forms.py:183
msgid "Address (line 2)" msgid "Address (line 2)"
msgstr "Adresse (ligne 2)" msgstr "Adresse (ligne 2)"
#: forms.py:165 models.py:288 #: forms.py:184 models.py:482
#: templates/preferences/display_preferences.html:178 #: templates/preferences/display_preferences.html:254
msgid "Contact email address" msgid "Contact email address"
msgstr "Adresse mail de contact" msgstr "Adresse mail de contact"
#: forms.py:166 templates/preferences/display_preferences.html:182 #: forms.py:185 templates/preferences/display_preferences.html:258
msgid "Telephone number" msgid "Telephone number"
msgstr "Numéro de téléphone" msgstr "Numéro de téléphone"
#: forms.py:167 templates/preferences/display_preferences.html:184 #: forms.py:186 templates/preferences/display_preferences.html:260
msgid "Usual name" msgid "Usual name"
msgstr "Nom d'usage" msgstr "Nom d'usage"
#: forms.py:168 #: forms.py:187
msgid "Account used for editing from /admin" msgid "Account used for editing from /admin"
msgstr "Compte utilisé pour les modifications depuis /admin" msgstr "Compte utilisé pour les modifications depuis /admin"
#: forms.py:170 #: forms.py:189
msgid "Payment" msgid "Payment"
msgstr "Paiement" msgstr "Paiement"
#: forms.py:171 #: forms.py:190
msgid "Payment ID" msgid "Payment ID"
msgstr "ID de paiement" msgstr "ID de paiement"
#: forms.py:172 #: forms.py:191
msgid "Payment password" msgid "Payment password"
msgstr "Mot de passe de paiement" msgstr "Mot de passe de paiement"
#: forms.py:173 forms.py:224 templates/preferences/aff_service.html:33 #: forms.py:192 forms.py:243 templates/preferences/aff_service.html:33
msgid "Description" msgid "Description"
msgstr "Description" msgstr "Description"
#: forms.py:189 #: forms.py:208
msgid "Message for the French welcome email" msgid "Message for the French welcome email"
msgstr "Message pour le mail de bienvenue en français" msgstr "Message pour le mail de bienvenue en français"
#: forms.py:191 #: forms.py:210
msgid "Message for the English welcome email" msgid "Message for the English welcome email"
msgstr "Message pour le mail de bienvenue en anglais" msgstr "Message pour le mail de bienvenue en anglais"
#: forms.py:208 #: forms.py:227
msgid "Facebook URL" msgid "Facebook URL"
msgstr "URL du compte Facebook" msgstr "URL du compte Facebook"
#: forms.py:209 #: forms.py:228
msgid "Twitter URL" msgid "Twitter URL"
msgstr "URL du compte Twitter" msgstr "URL du compte Twitter"
#: forms.py:210 templates/preferences/display_preferences.html:233 #: forms.py:229 templates/preferences/display_preferences.html:314
msgid "Twitter account name" msgid "Twitter account name"
msgstr "Nom du compte Twitter" msgstr "Nom du compte Twitter"
#: forms.py:222 templates/preferences/aff_service.html:31 #: forms.py:241 templates/preferences/aff_service.html:31
#: templates/preferences/display_preferences.html:168 #: templates/preferences/display_preferences.html:244
msgid "Name" msgid "Name"
msgstr "Nom" msgstr "Nom"
#: forms.py:223 templates/preferences/aff_service.html:32 #: forms.py:242 templates/preferences/aff_service.html:32
msgid "URL" msgid "URL"
msgstr "URL" msgstr "URL"
#: forms.py:225 templates/preferences/aff_service.html:34 #: forms.py:244 templates/preferences/aff_service.html:34
msgid "Image" msgid "Image"
msgstr "Image" msgstr "Image"
#: forms.py:232 #: forms.py:251
msgid "Current services" msgid "Current services"
msgstr "Services actuels" msgstr "Services actuels"
#: models.py:71 #: models.py:76
msgid "Users can create a club" msgid "Users can create a club"
msgstr "Les utilisateurs peuvent créer un club" msgstr "Les utilisateurs peuvent créer un club"
#: models.py:75 #: models.py:80
msgid "Users can create a member" msgid "Users can create a member"
msgstr "Les utilisateurs peuvent créer un adhérent" msgstr "Les utilisateurs peuvent créer un adhérent"
#: models.py:79 #: models.py:91 templates/preferences/display_preferences.html:62
msgid "A new user can create their account on Re2o"
msgstr "Un nouvel utilisateur peut créer son compte sur Re2o"
#: models.py:89 templates/preferences/display_preferences.html:49
msgid "Users can edit their shell" msgid "Users can edit their shell"
msgstr "Les utilisateurs peuvent modifier leur interface système" msgstr "Les utilisateurs peuvent modifier leur interface système"
#: models.py:93 #: models.py:95 templates/preferences/display_preferences.html:66
#, fuzzy
#| msgid "Users can edit their shell"
msgid "Users can edit their room"
msgstr "Les utilisateurs peuvent modifier leur interface système"
#: models.py:99
msgid "Enable local email accounts for users" msgid "Enable local email accounts for users"
msgstr "Active les comptes mail locaux pour les utilisateurs" msgstr "Active les comptes mail locaux pour les utilisateurs"
#: models.py:98 #: models.py:104
msgid "Domain to use for local email accounts" msgid "Domain to use for local email accounts"
msgstr "Domaine à utiliser pour les comptes mail locaux" msgstr "Domaine à utiliser pour les comptes mail locaux"
#: models.py:102 #: models.py:108
msgid "Maximum number of local email addresses for a standard user" msgid "Maximum number of local email addresses for a standard user"
msgstr "" msgstr ""
"Nombre maximum d'adresses mail locales autorisé pour un utilisateur standard" "Nombre maximum d'adresses mail locales autorisé pour un utilisateur standard"
#: models.py:108 #: models.py:113
msgid "Inactive users will be deleted after this number of days"
msgstr "Les utilisateurs n'ayant jamais adhéré seront supprimés après (jours)"
#: models.py:117
msgid "A new user can create their account on Re2o"
msgstr "Un nouvel utilisateur peut créer son compte sur Re2o"
#: models.py:122
msgid "Can view the user options" msgid "Can view the user options"
msgstr "Peut voir les options d'utilisateur" msgstr "Peut voir les options d'utilisateur"
#: models.py:110 #: models.py:124
msgid "user options" msgid "user options"
msgstr "options d'utilisateur" msgstr "options d'utilisateur"
#: models.py:117 #: models.py:131
msgid "Email domain must begin with @" msgid "Email domain must begin with @"
msgstr "Un domaine mail doit commencer par @" msgstr "Un domaine mail doit commencer par @"
#: models.py:135 #: models.py:149
msgid "Autoconfiguration by RA" msgid "Autoconfiguration by RA"
msgstr "Configuration automatique par RA" msgstr "Configuration automatique par RA"
#: models.py:136 #: models.py:150
msgid "IP addresses assigning by DHCPv6" msgid "IP addresses assigning by DHCPv6"
msgstr "Attribution d'adresses IP par DHCPv6" msgstr "Attribution d'adresses IP par DHCPv6"
#: models.py:137 #: models.py:151
msgid "Disabled" msgid "Disabled"
msgstr "Désactivé" msgstr "Désactivé"
#: models.py:159 #: models.py:173
msgid "Can view the machine options" msgid "Can view the machine options"
msgstr "Peut voir les options de machine" msgstr "Peut voir les options de machine"
#: models.py:161 #: models.py:175
msgid "machine options" msgid "machine options"
msgstr "options de machine" msgstr "options de machine"
#: models.py:180 #: models.py:194
msgid "On the IP range's VLAN of the machine" msgid "On the IP range's VLAN of the machine"
msgstr "Sur le VLAN de la plage d'IP de la machine" msgstr "Sur le VLAN de la plage d'IP de la machine"
#: models.py:181 #: models.py:195
msgid "Preset in 'VLAN for machines accepted by RADIUS'" msgid "Preset in 'VLAN for machines accepted by RADIUS'"
msgstr "Prédéfinie dans 'VLAN pour les machines acceptées par RADIUS'" msgstr "Prédéfinie dans 'VLAN pour les machines acceptées par RADIUS'"
#: models.py:206 #: models.py:315
msgid "Can view the topology options" msgid "Can view the topology options"
msgstr "Peut voir les options de topologie" msgstr "Peut voir les options de topologie"
#: models.py:208 #: models.py:317
msgid "topology options" msgid "topology options"
msgstr "options de topologie" msgstr "options de topologie"
#: models.py:225 #: models.py:419
msgid "" msgid ""
"General message displayed on the French version of the website (e.g. in case " "General message displayed on the French version of the website (e.g. in case "
"of maintenance)" "of maintenance)"
@ -299,7 +317,7 @@ msgstr ""
"Message général affiché sur la version française du site (ex : en cas de " "Message général affiché sur la version française du site (ex : en cas de "
"maintenance)" "maintenance)"
#: models.py:231 #: models.py:425
msgid "" msgid ""
"General message displayed on the English version of the website (e.g. in " "General message displayed on the English version of the website (e.g. in "
"case of maintenance)" "case of maintenance)"
@ -307,84 +325,84 @@ msgstr ""
"Message général affiché sur la version anglaise du site (ex : en cas de " "Message général affiché sur la version anglaise du site (ex : en cas de "
"maintenance)" "maintenance)"
#: models.py:253 #: models.py:447
msgid "Can view the general options" msgid "Can view the general options"
msgstr "Peut voir les options générales" msgstr "Peut voir les options générales"
#: models.py:255 #: models.py:449
msgid "general options" msgid "general options"
msgstr "options générales" msgstr "options générales"
#: models.py:275 #: models.py:469
msgid "Can view the service options" msgid "Can view the service options"
msgstr "Peut voir les options de service" msgstr "Peut voir les options de service"
#: models.py:277 #: models.py:471
msgid "service" msgid "service"
msgstr "service" msgstr "service"
#: models.py:278 #: models.py:472
msgid "services" msgid "services"
msgstr "services" msgstr "services"
#: models.py:295 #: models.py:489
msgid "Description of the associated email address." msgid "Description of the associated email address."
msgstr "Description de l'adresse mail associée." msgstr "Description de l'adresse mail associée."
#: models.py:305 #: models.py:499
msgid "Can view a contact email address object" msgid "Can view a contact email address object"
msgstr "Peut voir un objet adresse mail de contact" msgstr "Peut voir un objet adresse mail de contact"
#: models.py:307 #: models.py:501
msgid "contact email address" msgid "contact email address"
msgstr "adresse mail de contact" msgstr "adresse mail de contact"
#: models.py:308 #: models.py:502
msgid "contact email addresses" msgid "contact email addresses"
msgstr "adresses mail de contact" msgstr "adresses mail de contact"
#: models.py:318 #: models.py:512
msgid "Networking organisation school Something" msgid "Networking organisation school Something"
msgstr "Association de réseau de l'école Machin" msgstr "Association de réseau de l'école Machin"
#: models.py:322 #: models.py:516
msgid "Threadneedle Street" msgid "Threadneedle Street"
msgstr "1 rue de la Vrillière" msgstr "1 rue de la Vrillière"
#: models.py:323 #: models.py:517
msgid "London EC2R 8AH" msgid "London EC2R 8AH"
msgstr "75001 Paris" msgstr "75001 Paris"
#: models.py:326 #: models.py:520
msgid "Organisation" msgid "Organisation"
msgstr "Association" msgstr "Association"
#: models.py:340 #: models.py:534
msgid "Can view the organisation options" msgid "Can view the organisation options"
msgstr "Peut voir les options d'association" msgstr "Peut voir les options d'association"
#: models.py:342 #: models.py:536
msgid "organisation options" msgid "organisation options"
msgstr "options d'association" msgstr "options d'association"
#: models.py:371 #: models.py:565
msgid "Can view the homepage options" msgid "Can view the homepage options"
msgstr "Peut voir les options de page d'accueil" msgstr "Peut voir les options de page d'accueil"
#: models.py:373 #: models.py:567
msgid "homepage options" msgid "homepage options"
msgstr "options de page d'accueil" msgstr "options de page d'accueil"
#: models.py:391 #: models.py:585
msgid "Can view the email message options" msgid "Can view the email message options"
msgstr "Peut voir les options de message pour les mails" msgstr "Peut voir les options de message pour les mails"
#: models.py:394 #: models.py:588
msgid "email message options" msgid "email message options"
msgstr "options de messages pour les mails" msgstr "options de messages pour les mails"
#: templates/preferences/aff_mailcontact.html:31 #: templates/preferences/aff_mailcontact.html:31
#: templates/preferences/display_preferences.html:174 #: templates/preferences/display_preferences.html:250
msgid "Address" msgid "Address"
msgstr "Adresse" msgstr "Adresse"
@ -394,7 +412,7 @@ msgstr "Commentaire"
#: templates/preferences/display_preferences.html:31 #: templates/preferences/display_preferences.html:31
#: templates/preferences/edit_preferences.html:30 #: templates/preferences/edit_preferences.html:30
#: templates/preferences/preferences.html:29 #: templates/preferences/preferences.html:30
msgid "Preferences" msgid "Preferences"
msgstr "Préférences" msgstr "Préférences"
@ -403,73 +421,89 @@ msgid "User preferences"
msgstr "Préférences d'utilisateur" msgstr "Préférences d'utilisateur"
#: templates/preferences/display_preferences.html:37 #: templates/preferences/display_preferences.html:37
#: templates/preferences/display_preferences.html:79 #: templates/preferences/display_preferences.html:93
#: templates/preferences/display_preferences.html:104 #: templates/preferences/display_preferences.html:118
#: templates/preferences/display_preferences.html:125 #: templates/preferences/display_preferences.html:201
#: templates/preferences/display_preferences.html:162 #: templates/preferences/display_preferences.html:238
#: templates/preferences/display_preferences.html:197 #: templates/preferences/display_preferences.html:273
#: templates/preferences/display_preferences.html:219 #: templates/preferences/display_preferences.html:300
#: templates/preferences/edit_preferences.html:40 views.py:170 views.py:234 #: templates/preferences/edit_preferences.html:40 views.py:173 views.py:221
#: views.py:375
msgid "Edit" msgid "Edit"
msgstr "Modifier" msgstr "Modifier"
#: templates/preferences/display_preferences.html:47 #: templates/preferences/display_preferences.html:41
msgid "Default shell for users" #: templates/preferences/display_preferences.html:198
msgstr "Interface système par défaut pour les utilisateurs" msgid "General preferences"
msgstr "Préférences générales"
#: templates/preferences/display_preferences.html:53 #: templates/preferences/display_preferences.html:44
msgid "Creation of members by everyone" msgid "Creation of members by everyone"
msgstr "Création d'adhérents par tous" msgstr "Création d'adhérents par tous"
#: templates/preferences/display_preferences.html:55 #: templates/preferences/display_preferences.html:46
msgid "Creation of clubs by everyone" msgid "Creation of clubs by everyone"
msgstr "Création de clubs par tous" msgstr "Création de clubs par tous"
#: templates/preferences/display_preferences.html:59 #: templates/preferences/display_preferences.html:52
msgid "Delete not yet active users after"
msgstr "Suppression des utilisateurs n'ayant jamais adhéré après"
#: templates/preferences/display_preferences.html:57
#, fuzzy
#| msgid "general options"
msgid "Users general permissions"
msgstr "Permissions générales des utilisateurs"
#: templates/preferences/display_preferences.html:60
msgid "Default shell for users"
msgstr "Interface système par défaut pour les utilisateurs"
#: templates/preferences/display_preferences.html:72
msgid "GPG fingerprint field" msgid "GPG fingerprint field"
msgstr "Champ empreinte GPG" msgstr "Champ empreinte GPG"
#: templates/preferences/display_preferences.html:63 #: templates/preferences/display_preferences.html:77
msgid "Email accounts preferences" msgid "Email accounts preferences"
msgstr "Préférences de comptes mail" msgstr "Préférences de comptes mail"
#: templates/preferences/display_preferences.html:66 #: templates/preferences/display_preferences.html:80
msgid "Local email accounts enabled" msgid "Local email accounts enabled"
msgstr "Comptes mail locaux activés" msgstr "Comptes mail locaux activés"
#: templates/preferences/display_preferences.html:68 #: templates/preferences/display_preferences.html:82
msgid "Local email domain" msgid "Local email domain"
msgstr "Domaine de mail local" msgstr "Domaine de mail local"
#: templates/preferences/display_preferences.html:72 #: templates/preferences/display_preferences.html:86
msgid "Maximum number of email aliases allowed" msgid "Maximum number of email aliases allowed"
msgstr "Nombre maximum d'alias mail autorisé pour un utilisateur standard" msgstr "Nombre maximum d'alias mail autorisé pour un utilisateur standard"
#: templates/preferences/display_preferences.html:76 #: templates/preferences/display_preferences.html:90
msgid "Machines preferences" msgid "Machines preferences"
msgstr "Préférences de machines" msgstr "Préférences de machines"
#: templates/preferences/display_preferences.html:85 #: templates/preferences/display_preferences.html:99
msgid "Password per machine" msgid "Password per machine"
msgstr "Mot de passe par machine" msgstr "Mot de passe par machine"
#: templates/preferences/display_preferences.html:93 #: templates/preferences/display_preferences.html:107
msgid "IPv6 support" msgid "IPv6 support"
msgstr "Support de l'IPv6" msgstr "Support de l'IPv6"
#: templates/preferences/display_preferences.html:97 #: templates/preferences/display_preferences.html:111
msgid "Creation of machines" msgid "Creation of machines"
msgstr "Création de machines" msgstr "Création de machines"
#: templates/preferences/display_preferences.html:101 #: templates/preferences/display_preferences.html:115
msgid "Topology preferences" msgid "Topology preferences"
msgstr "Préférences de topologie" msgstr "Préférences de topologie"
#: templates/preferences/display_preferences.html:110 #: templates/preferences/display_preferences.html:124
msgid "General policy for VLAN setting" msgid "General policy for VLAN setting"
msgstr "Politique générale pour le placement sur un VLAN" msgstr "Politique générale pour le placement sur un VLAN"
#: templates/preferences/display_preferences.html:112 #: templates/preferences/display_preferences.html:126
msgid "" msgid ""
"This setting defines the VLAN policy after acceptance by RADIUS: either on " "This setting defines the VLAN policy after acceptance by RADIUS: either on "
"the IP range's VLAN of the machine, or a VLAN preset in 'VLAN for machines " "the IP range's VLAN of the machine, or a VLAN preset in 'VLAN for machines "
@ -479,75 +513,67 @@ msgstr ""
"par RADIUS: soit sur le VLAN de la plage d'IP de la machine, soit sur le " "par RADIUS: soit sur le VLAN de la plage d'IP de la machine, soit sur le "
"VLAN prédéfini dans 'VLAN pour les machines acceptées par RADIUS'" "VLAN prédéfini dans 'VLAN pour les machines acceptées par RADIUS'"
#: templates/preferences/display_preferences.html:122 #: templates/preferences/display_preferences.html:215
msgid "General preferences"
msgstr "Préférences générales"
#: templates/preferences/display_preferences.html:139
msgid "Number of items per page (standard size)" msgid "Number of items per page (standard size)"
msgstr "Nombre d'éléments par page (taille standard)" msgstr "Nombre d'éléments par page (taille standard)"
#: templates/preferences/display_preferences.html:143 #: templates/preferences/display_preferences.html:219
msgid "Number of items per page (large size)" msgid "Number of items per page (large size)"
msgstr "Nombre d'éléments par page (taille importante)" msgstr "Nombre d'éléments par page (taille importante)"
#: templates/preferences/display_preferences.html:149 #: templates/preferences/display_preferences.html:225
msgid "General message displayed on the website" msgid "General message displayed on the website"
msgstr "Message général affiché sur le site" msgstr "Message général affiché sur le site"
#: templates/preferences/display_preferences.html:159 #: templates/preferences/display_preferences.html:235
msgid "Information about the organisation" msgid "Information about the organisation"
msgstr "Informations sur l'association" msgstr "Informations sur l'association"
#: templates/preferences/display_preferences.html:188 #: templates/preferences/display_preferences.html:264
msgid "User object of the organisation" msgid "User object of the organisation"
msgstr "Objet utilisateur de l'association" msgstr "Objet utilisateur de l'association"
#: templates/preferences/display_preferences.html:190 #: templates/preferences/display_preferences.html:266
msgid "Description of the organisation" msgid "Description of the organisation"
msgstr "Description de l'association" msgstr "Description de l'association"
#: templates/preferences/display_preferences.html:194 #: templates/preferences/display_preferences.html:270
msgid "Custom email message" msgid "Custom email message"
msgstr "Message personnalisé pour les mails" msgstr "Message personnalisé pour les mails"
#: templates/preferences/display_preferences.html:203 #: templates/preferences/display_preferences.html:279
msgid "Welcome email (in French)" msgid "Welcome email (in French)"
msgstr "Mail de bienvenue (en français)" msgstr "Mail de bienvenue (en français)"
#: templates/preferences/display_preferences.html:207 #: templates/preferences/display_preferences.html:283
msgid "Welcome email (in English)" msgid "Welcome email (in English)"
msgstr "Mail de bienvenue (en anglais)" msgstr "Mail de bienvenue (en anglais)"
#: templates/preferences/display_preferences.html:211 #: templates/preferences/display_preferences.html:293
msgid "List of services and homepage preferences" msgid "List of services and homepage preferences"
msgstr "Liste des services et préférences de page d'accueil" msgstr "Liste des services et préférences de page d'accueil"
#: templates/preferences/display_preferences.html:213 #: templates/preferences/display_preferences.html:295
msgid " Add a service" msgid " Add a service"
msgstr " Ajouter un service" msgstr " Ajouter un service"
#: templates/preferences/display_preferences.html:215 #: templates/preferences/display_preferences.html:302
msgid " Delete one or several services"
msgstr " Supprimer un ou plusieurs services"
#: templates/preferences/display_preferences.html:221
msgid "List of contact email addresses" msgid "List of contact email addresses"
msgstr "Liste des adresses mail de contact" msgstr "Liste des adresses mail de contact"
#: templates/preferences/display_preferences.html:223 #: templates/preferences/display_preferences.html:304
msgid "Add an address" msgid "Add an address"
msgstr "Ajouter une adresse" msgstr "Ajouter une adresse"
#: templates/preferences/display_preferences.html:225 #: templates/preferences/display_preferences.html:306
msgid "Delete one or several addresses" msgid "Delete one or several addresses"
msgstr " Supprimer une ou plusieurs adresses" msgstr " Supprimer une ou plusieurs adresses"
#: templates/preferences/display_preferences.html:231 #: templates/preferences/display_preferences.html:312
msgid "Twitter account URL" msgid "Twitter account URL"
msgstr "URL du compte Twitter" msgstr "URL du compte Twitter"
#: templates/preferences/display_preferences.html:237 #: templates/preferences/display_preferences.html:318
msgid "Facebook account URL" msgid "Facebook account URL"
msgstr "URL du compte Facebook" msgstr "URL du compte Facebook"
@ -555,55 +581,61 @@ msgstr "URL du compte Facebook"
msgid "Editing of preferences" msgid "Editing of preferences"
msgstr "Modification des préférences" msgstr "Modification des préférences"
#: views.py:98 #: views.py:111
msgid "Unknown object" msgid "Unknown object"
msgstr "Objet inconnu" msgstr "Objet inconnu"
#: views.py:104 #: views.py:117
msgid "You don't have the right to edit this option." msgid "You don't have the right to edit this option."
msgstr "Vous n'avez pas le droit de modifier cette option." msgstr "Vous n'avez pas le droit de modifier cette option."
#: views.py:121 #: views.py:134
msgid "The preferences were edited." msgid "The preferences were edited."
msgstr "Les préférences ont été modifiées." msgstr "Les préférences ont été modifiées."
#: views.py:140 #: views.py:150
msgid "The service was added." msgid "The service was added."
msgstr "Le service a été ajouté." msgstr "Le service a été ajouté."
#: views.py:143 #: views.py:153 views.py:202
msgid "Add a service" msgid "Add a service"
msgstr " Ajouter un service" msgstr " Ajouter un service"
#: views.py:167 #: views.py:170 views.py:218
msgid "The service was edited." msgid "The service was edited."
msgstr "Le service a été modifié." msgstr "Le service a été modifié."
#: views.py:188 #: views.py:199
msgid "The service was deleted." #, fuzzy
msgstr "Le service a été supprimé." #| msgid "The service was added."
msgid "The reminder was added."
msgstr "Le service a été ajouté."
#: views.py:190 #: views.py:351
#, python-format
msgid "Error: the service %s can't be deleted."
msgstr "Erreur : le service %s ne peut pas être supprimé."
#: views.py:194 views.py:256
msgid "Delete"
msgstr "Supprimer"
#: views.py:210
msgid "The contact email address was created." msgid "The contact email address was created."
msgstr "L'adresse mail de contact a été supprimée." msgstr "L'adresse mail de contact a été supprimée."
#: views.py:214 #: views.py:355
msgid "Add a contact email address" msgid "Add a contact email address"
msgstr "Ajouter une adresse mail de contact" msgstr "Ajouter une adresse mail de contact"
#: views.py:231 #: views.py:372
msgid "The contact email address was edited." msgid "The contact email address was edited."
msgstr "L'adresse mail de contact a été modifiée." msgstr "L'adresse mail de contact a été modifiée."
#: views.py:253 #: views.py:394
msgid "The contact email adress was deleted." msgid "The contact email adress was deleted."
msgstr "L'adresse mail de contact a été supprimée." msgstr "L'adresse mail de contact a été supprimée."
#: views.py:397
msgid "Delete"
msgstr "Supprimer"
#~ msgid " Delete one or several services"
#~ msgstr " Supprimer un ou plusieurs services"
#~ msgid "The service was deleted."
#~ msgstr "Le service a été supprimé."
#~ msgid "Error: the service %s can't be deleted."
#~ msgstr "Erreur : le service %s ne peut pas être supprimé."

View file

@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.10.7 on 2018-10-14 22:14
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('preferences', '0052_optionaluser_delete_notyetactive'),
]
operations = [
migrations.AddField(
model_name='optionaluser',
name='self_change_room',
field=models.BooleanField(default=False, help_text='Users can edit their room'),
),
]

View file

@ -79,10 +79,7 @@ class OptionalUser(AclMixin, PreferencesModel):
default=False, default=False,
help_text=_("Users can create a member"), help_text=_("Users can create a member"),
) )
self_adhesion = models.BooleanField(
default=False,
help_text=_("A new user can create their account on Re2o")
)
shell_default = models.OneToOneField( shell_default = models.OneToOneField(
'users.ListShell', 'users.ListShell',
on_delete=models.PROTECT, on_delete=models.PROTECT,
@ -93,6 +90,10 @@ class OptionalUser(AclMixin, PreferencesModel):
default=False, default=False,
help_text=_("Users can edit their shell") help_text=_("Users can edit their shell")
) )
self_change_room = models.BooleanField(
default=False,
help_text=_("Users can edit their room")
)
local_email_accounts_enabled = models.BooleanField( local_email_accounts_enabled = models.BooleanField(
default=False, default=False,
help_text=_("Enable local email accounts for users") help_text=_("Enable local email accounts for users")
@ -111,6 +112,10 @@ class OptionalUser(AclMixin, PreferencesModel):
default=15, default=15,
help_text=_("Inactive users will be deleted after this number of days") help_text=_("Inactive users will be deleted after this number of days")
) )
self_adhesion = models.BooleanField(
default=False,
help_text=_("A new user can create their account on Re2o")
)
class Meta: class Meta:
permissions = ( permissions = (
@ -220,7 +225,7 @@ class OptionalTopologie(AclMixin, PreferencesModel):
switchs_web_management_ssl = models.BooleanField( switchs_web_management_ssl = models.BooleanField(
default=False, default=False,
help_text="Web management ssl. Assurez-vous que un certif est installé sur le switch !" help_text="Web management ssl. Assurez-vous que un certif est installé sur le switch !"
) )
switchs_rest_management = models.BooleanField( switchs_rest_management = models.BooleanField(
default=False, default=False,
help_text="Rest management, activé si provision auto" help_text="Rest management, activé si provision auto"
@ -257,7 +262,7 @@ class OptionalTopologie(AclMixin, PreferencesModel):
from topologie.models import Switch from topologie.models import Switch
return Switch.objects.filter(automatic_provision=True) return Switch.objects.filter(automatic_provision=True)
@cached_property @cached_property
def switchs_management_interface(self): def switchs_management_interface(self):
"""Return the ip of the interface that the switch have to contact to get it's config""" """Return the ip of the interface that the switch have to contact to get it's config"""
if self.switchs_ip_type: if self.switchs_ip_type:
@ -266,7 +271,7 @@ class OptionalTopologie(AclMixin, PreferencesModel):
else: else:
return None return None
@cached_property @cached_property
def switchs_management_interface_ip(self): def switchs_management_interface_ip(self):
"""Same, but return the ipv4""" """Same, but return the ipv4"""
if not self.switchs_management_interface: if not self.switchs_management_interface:
@ -400,7 +405,7 @@ class Reminder(AclMixin, models.Model):
from re2o.utils import all_has_access from re2o.utils import all_has_access
date = timezone.now().replace(minute=0,hour=0) date = timezone.now().replace(minute=0,hour=0)
futur_date = date + timedelta(days=self.days) futur_date = date + timedelta(days=self.days)
users = all_has_access(futur_date).exclude(pk__in = all_has_access(futur_date + timedelta(days=1))) users = all_has_access(futur_date).exclude(pk__in = all_has_access(futur_date + timedelta(days=1)))
return users return users

View file

@ -36,19 +36,10 @@ with this program; if not, write to the Free Software Foundation, Inc.,
<i class="fa fa-edit"></i> <i class="fa fa-edit"></i>
{% trans "Edit" %} {% trans "Edit" %}
</a> </a>
<p>
</p>
<h5>{% trans "General preferences" %}</h5>
<table class="table table-striped"> <table class="table table-striped">
<tr>
<th>{% trans "Telephone number required" %}</th>
<td>{{ useroptions.is_tel_mandatory|tick }}</td>
<th>{% trans "Self registration" %}</th>
<td>{{ useroptions.self_adhesion|tick }}</td>
</tr>
<tr>
<th>{% trans "Default shell for users" %}</th>
<td>{{ useroptions.shell_default }}</td>
<th>{% trans "Users can edit their shell" %}</th>
<td>{{ useroptions.self_change_shell|tick }}</td>
</tr>
<tr> <tr>
<th>{% trans "Creation of members by everyone" %}</th> <th>{% trans "Creation of members by everyone" %}</th>
<td>{{ useroptions.all_can_create_adherent|tick }}</td> <td>{{ useroptions.all_can_create_adherent|tick }}</td>
@ -56,13 +47,34 @@ with this program; if not, write to the Free Software Foundation, Inc.,
<td>{{ useroptions.all_can_create_club|tick }}</td> <td>{{ useroptions.all_can_create_club|tick }}</td>
</tr> </tr>
<tr> <tr>
<th>{% trans "GPG fingerprint field" %}</th> <th>{% trans "Self registration" %}</th>
<td>{{ useroptions.gpg_fingerprint|tick }}</td> <td>{{ useroptions.self_adhesion|tick }}</td>
<th>{% trans "Delete not yet active users after" %}</th> <th>{% trans "Delete not yet active users after" %}</th>
<td>{{ useroptions.delete_notyetactive }} days</td> <td>{{ useroptions.delete_notyetactive }} days</td>
</tr> </tr>
</table> </table>
<h5>{% trans "Email accounts preferences" %}
<h5>{% trans "Users general permissions" %}</h5>
<table class="table table-striped">
<tr>
<th>{% trans "Default shell for users" %}</th>
<td>{{ useroptions.shell_default }}</td>
<th>{% trans "Users can edit their shell" %}</th>
<td>{{ useroptions.self_change_shell|tick }}</td>
</tr>
<tr>
<th>{% trans "Users can edit their room" %}</th>
<td>{{ useroptions.self_change_room|tick }}</td>
<th>{% trans "Telephone number required" %}</th>
<td>{{ useroptions.is_tel_mandatory|tick }}</td>
</tr>
<tr>
<th>{% trans "GPG fingerprint field" %}</th>
<td>{{ useroptions.gpg_fingerprint|tick }}</td>
</tr>
</table>
<h5>{% trans "Email accounts preferences" %}</h5>
<table class="table table-striped"> <table class="table table-striped">
<tr> <tr>
<th>{% trans "Local email accounts enabled" %}</th> <th>{% trans "Local email accounts enabled" %}</th>
@ -183,13 +195,6 @@ with this program; if not, write to the Free Software Foundation, Inc.,
<h5>{% if topologieoptions.provisioned_switchs %}<span class="label label-success">Provision de la config des switchs{% else %}<span class="label label-danger">Provision de la config des switchs{% endif%}</span></h5>
<table class="table table-striped">
<tr>
<th>Switchs configurés automatiquement</th>
<td>{{ topologieoptions.provisioned_switchs|join:", " }}</td>
</tr>
</table>
<h4>{% trans "General preferences" %}</h4> <h4>{% trans "General preferences" %}</h4>
<a class="btn btn-primary btn-sm" role="button" href="{% url 'preferences:edit-options' 'GeneralOption' %}"> <a class="btn btn-primary btn-sm" role="button" href="{% url 'preferences:edit-options' 'GeneralOption' %}">
<i class="fa fa-edit"></i> <i class="fa fa-edit"></i>

View file

@ -318,8 +318,9 @@ class AdherentForm(FormRevMixin, FieldPermissionFormMixin, ModelForm):
self.fields['email'].label = _("Email address") self.fields['email'].label = _("Email address")
self.fields['school'].label = _("School") self.fields['school'].label = _("School")
self.fields['comment'].label = _("Comment") self.fields['comment'].label = _("Comment")
self.fields['room'].label = _("Room") if 'room' in self.fields:
self.fields['room'].empty_label = _("No room") self.fields['room'].label = _("Room")
self.fields['room'].empty_label = _("No room")
self.fields['school'].empty_label = _("Select a school") self.fields['school'].empty_label = _("Select a school")
def clean_email(self): def clean_email(self):
@ -340,7 +341,7 @@ class AdherentForm(FormRevMixin, FieldPermissionFormMixin, ModelForm):
'school', 'school',
'comment', 'comment',
'telephone', 'telephone',
'room' 'room',
] ]
@ -428,8 +429,9 @@ class ClubForm(FormRevMixin, FieldPermissionFormMixin, ModelForm):
self.fields['surname'].label = _("Name") self.fields['surname'].label = _("Name")
self.fields['school'].label = _("School") self.fields['school'].label = _("School")
self.fields['comment'].label = _("Comment") self.fields['comment'].label = _("Comment")
self.fields['room'].label = _("Room") if 'room' in self.fields:
self.fields['room'].empty_label = _("No room") self.fields['room'].label = _("Room")
self.fields['room'].empty_label = _("No room")
self.fields['school'].empty_label = _("Select a school") self.fields['school'].empty_label = _("Select a school")
self.fields['mailing'].label = _("Use a mailing list") self.fields['mailing'].label = _("Use a mailing list")

View file

@ -845,6 +845,20 @@ class User(RevMixin, FieldPermissionModelMixin, AbstractBaseUser,
""" """
return user_request == self, None return user_request == self, None
@staticmethod
def can_change_room(user_request, *_args, **_kwargs):
""" Check if a user can change a room
:param user_request: The user who request
:returns: a message and a boolean which is True if the user has
the right to change a state
"""
if not ((self.pk == user_request.pk and OptionalUser.get_cached_value('self_change_room'))
or user_request.has_perm('users.change_user')):
return False, _("Permission required to change the room.")
else:
return True, None
@staticmethod @staticmethod
def can_change_state(user_request, *_args, **_kwargs): def can_change_state(user_request, *_args, **_kwargs):
""" Check if a user can change a state """ Check if a user can change a state
@ -993,6 +1007,7 @@ class User(RevMixin, FieldPermissionModelMixin, AbstractBaseUser,
'selfpasswd': self.check_selfpasswd, 'selfpasswd': self.check_selfpasswd,
'local_email_redirect': self.can_change_local_email_redirect, 'local_email_redirect': self.can_change_local_email_redirect,
'local_email_enabled': self.can_change_local_email_enabled, 'local_email_enabled': self.can_change_local_email_enabled,
'room': self.can_change_room,
} }
self.__original_state = self.state self.__original_state = self.state