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

Create preferences models and edition template

This commit is contained in:
Gabriel Detraz 2020-04-22 18:12:37 +02:00
parent 6d8fa42487
commit 502d9606ca
7 changed files with 310 additions and 232 deletions

View file

@ -256,57 +256,57 @@ msgstr "Modèles de document actuels"
msgid "Current attributes" msgid "Current attributes"
msgstr "Attributs actuels" msgstr "Attributs actuels"
#: preferences/models.py:78 #: preferences/models.py:56
msgid "Users can't select their room" msgid "Users can't select their room"
msgstr "Les utilisateurs ne peuvent pas modifier leur chambre" msgstr "Les utilisateurs ne peuvent pas modifier leur chambre"
#: preferences/models.py:79 #: preferences/models.py:57
msgid "" msgid ""
"Users can only select a room occupied by a user with a disabled connection." "Users can only select a room occupied by a user with a disabled connection."
msgstr "" msgstr ""
"Les utilisateurs peuvent sélectionner la chambre d'un adhérent dont la " "Les utilisateurs peuvent sélectionner la chambre d'un adhérent dont la "
"connexion est désactivée." "connexion est désactivée."
#: preferences/models.py:80 #: preferences/models.py:58
msgid "Users can select all rooms" msgid "Users can select all rooms"
msgstr "Les utilisateurs peuvent choisir toutes les chambres" msgstr "Les utilisateurs peuvent choisir toutes les chambres"
#: preferences/models.py:86 #: preferences/models.py:64
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."
#: preferences/models.py:89 #: preferences/models.py:67
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."
#: preferences/models.py:95 #: preferences/models.py:73
msgid "Users can edit their shell." msgid "Users can edit their shell."
msgstr "Les utilisateurs peuvent modifier leur interface en ligne de commande." msgstr "Les utilisateurs peuvent modifier leur interface en ligne de commande."
#: preferences/models.py:101 #: preferences/models.py:79
msgid "Policy on self users room edition" msgid "Policy on self users room edition"
msgstr "Autorisation d'édtion du champ chambre par les utilisateurs" msgstr "Autorisation d'édtion du champ chambre par les utilisateurs"
#: preferences/models.py:104 #: preferences/models.py:82
msgid "Enable local email accounts for users." msgid "Enable local email accounts for users."
msgstr "Activer les comptes mail locaux pour les utilisateurs." msgstr "Activer les comptes mail locaux pour les utilisateurs."
#: preferences/models.py:109 #: preferences/models.py:87
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."
#: preferences/models.py:113 #: preferences/models.py:91
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."
#: preferences/models.py:118 #: preferences/models.py:96
msgid "Not yet active users will be deleted after this number of days." msgid "Not yet active users will be deleted after this number of days."
msgstr "" msgstr ""
"Les utilisateurs n'ayant jamais adhéré seront supprimés après ce nombre de " "Les utilisateurs n'ayant jamais adhéré seront supprimés après ce nombre de "
"jours." "jours."
#: preferences/models.py:124 #: preferences/models.py:102
msgid "" msgid ""
"Users with an email address not yet confirmed will be disabled after this " "Users with an email address not yet confirmed will be disabled after this "
"number of days." "number of days."
@ -314,11 +314,11 @@ msgstr ""
"Les utilisateurs n'ayant pas confirmé leur addresse mail seront désactivés " "Les utilisateurs n'ayant pas confirmé leur addresse mail seront désactivés "
"après ce nombre de jours" "après ce nombre de jours"
#: preferences/models.py:128 #: preferences/models.py:106
msgid "A new user can create their account on Re2o." msgid "A new user can create their account on Re2o."
msgstr "Un nouvel utilisateur peut créer son compte sur Re2o." msgstr "Un nouvel utilisateur peut créer son compte sur Re2o."
#: preferences/models.py:133 #: preferences/models.py:111
msgid "" msgid ""
"If True, all new created and connected users are active. If False, only when " "If True, all new created and connected users are active. If False, only when "
"a valid registration has been paid." "a valid registration has been paid."
@ -326,7 +326,7 @@ msgstr ""
"Si True, tous les nouveaux utilisations créés et connectés sont actifs. Si " "Si True, tous les nouveaux utilisations créés et connectés sont actifs. Si "
"False, seulement quand une inscription validée a été payée." "False, seulement quand une inscription validée a été payée."
#: preferences/models.py:140 #: preferences/models.py:118
msgid "" msgid ""
"If True, users have the choice to receive an email containing a link to " "If True, users have the choice to receive an email containing a link to "
"reset their password during creation, or to directly set their password in " "reset their password during creation, or to directly set their password in "
@ -337,172 +337,172 @@ msgstr ""
"de choisir leur mot de passe immédiatement. Si False, un mail est toujours " "de choisir leur mot de passe immédiatement. Si False, un mail est toujours "
"envoyé." "envoyé."
#: preferences/models.py:147 #: preferences/models.py:125
msgid "If True, archived users are allowed to connect." msgid "If True, archived users are allowed to connect."
msgstr "Si True, les utilisateurs archivés sont autorisés à se connecter." msgstr "Si True, les utilisateurs archivés sont autorisés à se connecter."
#: preferences/models.py:151 #: preferences/models.py:129
msgid "Can view the user preferences" msgid "Can view the user preferences"
msgstr "Peut voir les préférences d'utilisateur" msgstr "Peut voir les préférences d'utilisateur"
#: preferences/models.py:152 #: preferences/models.py:130
msgid "user preferences" msgid "user preferences"
msgstr "Préférences d'utilisateur" msgstr "Préférences d'utilisateur"
#: preferences/models.py:159 #: preferences/models.py:137
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 @."
#: preferences/models.py:177 #: preferences/models.py:155
msgid "Automatic configuration by RA" msgid "Automatic configuration by RA"
msgstr "Configuration automatique par RA" msgstr "Configuration automatique par RA"
#: preferences/models.py:178 #: preferences/models.py:156
msgid "IP addresses assignment by DHCPv6" msgid "IP addresses assignment by DHCPv6"
msgstr "Attribution d'adresses IP par DHCPv6" msgstr "Attribution d'adresses IP par DHCPv6"
#: preferences/models.py:179 #: preferences/models.py:157
msgid "Disabled" msgid "Disabled"
msgstr "Désactivé" msgstr "Désactivé"
#: preferences/models.py:188 #: preferences/models.py:166
msgid "default Time To Live (TTL) for CNAME, A and AAAA records" msgid "default Time To Live (TTL) for CNAME, A and AAAA records"
msgstr "" msgstr ""
"Temps de vie (TTL) par défault pour des enregistrements CNAME, A et AAAA" "Temps de vie (TTL) par défault pour des enregistrements CNAME, A et AAAA"
#: preferences/models.py:198 #: preferences/models.py:176
msgid "Can view the machine preferences" msgid "Can view the machine preferences"
msgstr "Peut voir les préférences de machine" msgstr "Peut voir les préférences de machine"
#: preferences/models.py:199 #: preferences/models.py:177
msgid "machine preferences" msgid "machine preferences"
msgstr "Préférences de machine" msgstr "Préférences de machine"
#: preferences/models.py:219 preferences/models.py:677 #: preferences/models.py:197 preferences/models.py:655
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"
#: preferences/models.py:220 preferences/models.py:678 #: preferences/models.py:198 preferences/models.py:656
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 »"
#: preferences/models.py:226 #: preferences/models.py:204
msgid "Web management, activated in case of automatic provision." msgid "Web management, activated in case of automatic provision."
msgstr "Gestion web, activée en cas de provision automatique." msgstr "Gestion web, activée en cas de provision automatique."
#: preferences/models.py:231 #: preferences/models.py:209
msgid "" msgid ""
"SSL web management, make sure that a certificate is installed on the switch." "SSL web management, make sure that a certificate is installed on the switch."
msgstr "" msgstr ""
"Gestion web SSL, vérifiez qu'un certificat est installé sur le commutateur " "Gestion web SSL, vérifiez qu'un certificat est installé sur le commutateur "
"réseau." "réseau."
#: preferences/models.py:237 #: preferences/models.py:215
msgid "REST management, activated in case of automatic provision." msgid "REST management, activated in case of automatic provision."
msgstr "Gestion REST, activée en cas de provision automatique." msgstr "Gestion REST, activée en cas de provision automatique."
#: preferences/models.py:244 #: preferences/models.py:222
msgid "IP range for the management of switches." msgid "IP range for the management of switches."
msgstr "Plage d'IP pour la gestion des commutateurs réseau." msgstr "Plage d'IP pour la gestion des commutateurs réseau."
#: preferences/models.py:250 #: preferences/models.py:228
msgid "Provision of configuration mode for switches." msgid "Provision of configuration mode for switches."
msgstr "Mode de provision de configuration pour les commutateurs réseau." msgstr "Mode de provision de configuration pour les commutateurs réseau."
#: preferences/models.py:253 #: preferences/models.py:231
msgid "SFTP login for switches." msgid "SFTP login for switches."
msgstr "Identifiant SFTP pour les commutateurs réseau." msgstr "Identifiant SFTP pour les commutateurs réseau."
#: preferences/models.py:256 #: preferences/models.py:234
msgid "SFTP password." msgid "SFTP password."
msgstr "Mot de passe SFTP." msgstr "Mot de passe SFTP."
#: preferences/models.py:360 #: preferences/models.py:338
msgid "Can view the topology preferences" msgid "Can view the topology preferences"
msgstr "Peut voir les préférences de topologie" msgstr "Peut voir les préférences de topologie"
#: preferences/models.py:361 #: preferences/models.py:339
msgid "topology preferences" msgid "topology preferences"
msgstr "préférences de topologie" msgstr "préférences de topologie"
#: preferences/models.py:374 #: preferences/models.py:352
msgid "RADIUS key." msgid "RADIUS key."
msgstr "Clé RADIUS." msgstr "Clé RADIUS."
#: preferences/models.py:376 #: preferences/models.py:354
msgid "Comment for this key." msgid "Comment for this key."
msgstr "Commentaire pour cette clé." msgstr "Commentaire pour cette clé."
#: preferences/models.py:379 #: preferences/models.py:357
msgid "Default key for switches." msgid "Default key for switches."
msgstr "Clé par défaut pour les commutateurs réseau." msgstr "Clé par défaut pour les commutateurs réseau."
#: preferences/models.py:383 #: preferences/models.py:361
msgid "Can view a RADIUS key object" msgid "Can view a RADIUS key object"
msgstr "Peut voir un objet clé RADIUS" msgstr "Peut voir un objet clé RADIUS"
#: preferences/models.py:384 preferences/views.py:331 #: preferences/models.py:362 preferences/views.py:307
msgid "RADIUS key" msgid "RADIUS key"
msgstr "Clé RADIUS" msgstr "Clé RADIUS"
#: preferences/models.py:385 #: preferences/models.py:363
#: preferences/templates/preferences/display_preferences.html:221 #: preferences/templates/preferences/display_preferences.html:221
msgid "RADIUS keys" msgid "RADIUS keys"
msgstr "clés RADIUS" msgstr "clés RADIUS"
#: preferences/models.py:392 #: preferences/models.py:370
msgid "Default RADIUS key for switches already exists." msgid "Default RADIUS key for switches already exists."
msgstr "Clé par défaut pour les commutateurs réseau." msgstr "Clé par défaut pour les commutateurs réseau."
#: preferences/models.py:395 #: preferences/models.py:373
msgid "RADIUS key " msgid "RADIUS key "
msgstr "clé RADIUS " msgstr "clé RADIUS "
#: preferences/models.py:401 #: preferences/models.py:379
msgid "Switch login." msgid "Switch login."
msgstr "Identifiant du commutateur réseau." msgstr "Identifiant du commutateur réseau."
#: preferences/models.py:402 #: preferences/models.py:380
msgid "Password." msgid "Password."
msgstr "Mot de passe." msgstr "Mot de passe."
#: preferences/models.py:404 #: preferences/models.py:382
msgid "Default credentials for switches." msgid "Default credentials for switches."
msgstr "Identifiants par défaut pour les commutateurs réseau." msgstr "Identifiants par défaut pour les commutateurs réseau."
#: preferences/models.py:411 #: preferences/models.py:389
msgid "Can view a switch management credentials object" msgid "Can view a switch management credentials object"
msgstr "Peut voir un objet identifiants de gestion de commutateur réseau" msgstr "Peut voir un objet identifiants de gestion de commutateur réseau"
#: preferences/models.py:414 preferences/views.py:394 #: preferences/models.py:392 preferences/views.py:370
msgid "switch management credentials" msgid "switch management credentials"
msgstr "identifiants de gestion de commutateur réseau" msgstr "identifiants de gestion de commutateur réseau"
#: preferences/models.py:417 #: preferences/models.py:395
msgid "Switch login " msgid "Switch login "
msgstr "Identifiant du commutateur réseau " msgstr "Identifiant du commutateur réseau "
#: preferences/models.py:429 #: preferences/models.py:407
msgid "Delay between the email and the membership's end." msgid "Delay between the email and the membership's end."
msgstr "Délai entre le mail et la fin d'adhésion." msgstr "Délai entre le mail et la fin d'adhésion."
#: preferences/models.py:435 #: preferences/models.py:413
msgid "Message displayed specifically for this reminder." msgid "Message displayed specifically for this reminder."
msgstr "Message affiché spécifiquement pour ce rappel." msgstr "Message affiché spécifiquement pour ce rappel."
#: preferences/models.py:439 #: preferences/models.py:417
msgid "Can view a reminder object" msgid "Can view a reminder object"
msgstr "Peut voir un objet rappel" msgstr "Peut voir un objet rappel"
#: preferences/models.py:440 preferences/views.py:276 #: preferences/models.py:418 preferences/views.py:252
msgid "reminder" msgid "reminder"
msgstr "rappel" msgstr "rappel"
#: preferences/models.py:441 #: preferences/models.py:419
msgid "reminders" msgid "reminders"
msgstr "rappels" msgstr "rappels"
#: preferences/models.py:462 #: preferences/models.py:440
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)."
@ -510,7 +510,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)."
#: preferences/models.py:470 #: preferences/models.py:448
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)."
@ -518,75 +518,75 @@ 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)."
#: preferences/models.py:485 #: preferences/models.py:463
msgid "Can view the general preferences" msgid "Can view the general preferences"
msgstr "Peut voir les préférences générales" msgstr "Peut voir les préférences générales"
#: preferences/models.py:486 #: preferences/models.py:464
msgid "general preferences" msgid "general preferences"
msgstr "préférences générales" msgstr "préférences générales"
#: preferences/models.py:506 #: preferences/models.py:484
msgid "Can view the service preferences" msgid "Can view the service preferences"
msgstr "Peut voir les préférences de service" msgstr "Peut voir les préférences de service"
#: preferences/models.py:507 preferences/views.py:227 #: preferences/models.py:485 preferences/views.py:203
msgid "service" msgid "service"
msgstr "service" msgstr "service"
#: preferences/models.py:508 #: preferences/models.py:486
msgid "services" msgid "services"
msgstr "services" msgstr "services"
#: preferences/models.py:518 #: preferences/models.py:496
msgid "Contact email address." msgid "Contact email address."
msgstr "Adresse mail de contact." msgstr "Adresse mail de contact."
#: preferences/models.py:524 #: preferences/models.py:502
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."
#: preferences/models.py:534 #: preferences/models.py:512
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"
#: preferences/models.py:536 #: preferences/models.py:514
msgid "contact email address" msgid "contact email address"
msgstr "adresse mail de contact" msgstr "adresse mail de contact"
#: preferences/models.py:537 #: preferences/models.py:515
msgid "contact email addresses" msgid "contact email addresses"
msgstr "adresses mail de contact" msgstr "adresses mail de contact"
#: preferences/models.py:545 preferences/views.py:634 #: preferences/models.py:523 preferences/views.py:610
msgid "mandate" msgid "mandate"
msgstr "mandat" msgstr "mandat"
#: preferences/models.py:546 #: preferences/models.py:524
msgid "mandates" msgid "mandates"
msgstr "mandats" msgstr "mandats"
#: preferences/models.py:547 #: preferences/models.py:525
msgid "Can view a mandate object" msgid "Can view a mandate object"
msgstr "Peut voir un objet mandat" msgstr "Peut voir un objet mandat"
#: preferences/models.py:554 #: preferences/models.py:532
msgid "president of the association" msgid "president of the association"
msgstr "président de l'association" msgstr "président de l'association"
#: preferences/models.py:555 #: preferences/models.py:533
msgid "Displayed on subscription vouchers." msgid "Displayed on subscription vouchers."
msgstr "Affiché sur les reçus de cotisation." msgstr "Affiché sur les reçus de cotisation."
#: preferences/models.py:557 #: preferences/models.py:535
msgid "start date" msgid "start date"
msgstr "date de début" msgstr "date de début"
#: preferences/models.py:558 #: preferences/models.py:536
msgid "end date" msgid "end date"
msgstr "date de fin" msgstr "date de fin"
#: preferences/models.py:571 #: preferences/models.py:549
msgid "" msgid ""
"No mandates have been created. Please go to the preferences page to create " "No mandates have been created. Please go to the preferences page to create "
"one." "one."
@ -594,140 +594,140 @@ msgstr ""
"Aucun mandat n'a été créé. Veuillez vous rendre sur la page de préférences " "Aucun mandat n'a été créé. Veuillez vous rendre sur la page de préférences "
"pour en créer un." "pour en créer un."
#: preferences/models.py:586 #: preferences/models.py:564
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"
#: preferences/models.py:589 #: preferences/models.py:567
msgid "Threadneedle Street" msgid "Threadneedle Street"
msgstr "1 rue de la Vrillière" msgstr "1 rue de la Vrillière"
#: preferences/models.py:590 #: preferences/models.py:568
msgid "London EC2R 8AH" msgid "London EC2R 8AH"
msgstr "75001 Paris" msgstr "75001 Paris"
#: preferences/models.py:593 #: preferences/models.py:571
msgid "Organisation" msgid "Organisation"
msgstr "Association" msgstr "Association"
#: preferences/models.py:600 #: preferences/models.py:578
msgid "Can view the organisation preferences" msgid "Can view the organisation preferences"
msgstr "Peut voir les préférences d'association" msgstr "Peut voir les préférences d'association"
#: preferences/models.py:601 #: preferences/models.py:579
msgid "organisation preferences" msgid "organisation preferences"
msgstr "préférences d'association" msgstr "préférences d'association"
#: preferences/models.py:619 #: preferences/models.py:597
msgid "Can view the homepage preferences" msgid "Can view the homepage preferences"
msgstr "Peut voir les préférences de page d'accueil" msgstr "Peut voir les préférences de page d'accueil"
#: preferences/models.py:620 #: preferences/models.py:598
msgid "homepage preferences" msgid "homepage preferences"
msgstr "Préférences de page d'accueil" msgstr "Préférences de page d'accueil"
#: preferences/models.py:634 #: preferences/models.py:612
msgid "Welcome email in French." msgid "Welcome email in French."
msgstr "Mail de bienvenue en français." msgstr "Mail de bienvenue en français."
#: preferences/models.py:637 #: preferences/models.py:615
msgid "Welcome email in English." msgid "Welcome email in English."
msgstr "Mail de bienvenue en anglais." msgstr "Mail de bienvenue en anglais."
#: preferences/models.py:642 #: preferences/models.py:620
msgid "Can view the email message preferences" msgid "Can view the email message preferences"
msgstr "Peut voir les préférences de message pour les mails" msgstr "Peut voir les préférences de message pour les mails"
#: preferences/models.py:644 #: preferences/models.py:622
msgid "email message preferences" msgid "email message preferences"
msgstr "préférences de messages pour les mails" msgstr "préférences de messages pour les mails"
#: preferences/models.py:649 #: preferences/models.py:627
msgid "RADIUS attribute" msgid "RADIUS attribute"
msgstr "attribut RADIUS" msgstr "attribut RADIUS"
#: preferences/models.py:650 #: preferences/models.py:628
msgid "RADIUS attributes" msgid "RADIUS attributes"
msgstr "attributs RADIUS" msgstr "attributs RADIUS"
#: preferences/models.py:654 preferences/views.py:587 #: preferences/models.py:632 preferences/views.py:563
msgid "attribute" msgid "attribute"
msgstr "attribut" msgstr "attribut"
#: preferences/models.py:655 #: preferences/models.py:633
msgid "See https://freeradius.org/rfc/attributes.html." msgid "See https://freeradius.org/rfc/attributes.html."
msgstr "Voir https://freeradius.org/rfc/attributes.html." msgstr "Voir https://freeradius.org/rfc/attributes.html."
#: preferences/models.py:657 #: preferences/models.py:635
msgid "value" msgid "value"
msgstr "valeur" msgstr "valeur"
#: preferences/models.py:659 #: preferences/models.py:637
msgid "comment" msgid "comment"
msgstr "commentaire" msgstr "commentaire"
#: preferences/models.py:660 #: preferences/models.py:638
msgid "Use this field to document this attribute." msgid "Use this field to document this attribute."
msgstr "Utilisez ce champ pour documenter cet attribut." msgstr "Utilisez ce champ pour documenter cet attribut."
#: preferences/models.py:671 #: preferences/models.py:649
msgid "RADIUS policy" msgid "RADIUS policy"
msgstr "politique de RADIUS" msgstr "politique de RADIUS"
#: preferences/models.py:672 #: preferences/models.py:650
#: preferences/templates/preferences/display_preferences.html:299 #: preferences/templates/preferences/display_preferences.html:299
msgid "RADIUS policies" msgid "RADIUS policies"
msgstr "politiques de RADIUS" msgstr "politiques de RADIUS"
#: preferences/models.py:683 #: preferences/models.py:661
msgid "Reject the machine" msgid "Reject the machine"
msgstr "Rejeter la machine" msgstr "Rejeter la machine"
#: preferences/models.py:684 #: preferences/models.py:662
msgid "Place the machine on the VLAN" msgid "Place the machine on the VLAN"
msgstr "Placer la machine sur le VLAN" msgstr "Placer la machine sur le VLAN"
#: preferences/models.py:693 #: preferences/models.py:671
msgid "policy for unknown machines" msgid "policy for unknown machines"
msgstr "politique pour les machines inconnues" msgstr "politique pour les machines inconnues"
#: preferences/models.py:701 #: preferences/models.py:679
msgid "unknown machines VLAN" msgid "unknown machines VLAN"
msgstr "VLAN pour les machines inconnues" msgstr "VLAN pour les machines inconnues"
#: preferences/models.py:702 #: preferences/models.py:680
msgid "VLAN for unknown machines if not rejected." msgid "VLAN for unknown machines if not rejected."
msgstr "VLAN pour les machines inconnues si non rejeté." msgstr "VLAN pour les machines inconnues si non rejeté."
#: preferences/models.py:708 #: preferences/models.py:686
msgid "unknown machines attributes" msgid "unknown machines attributes"
msgstr "attributs pour les machines inconnues" msgstr "attributs pour les machines inconnues"
#: preferences/models.py:709 #: preferences/models.py:687
msgid "Answer attributes for unknown machines." msgid "Answer attributes for unknown machines."
msgstr "Attributs de réponse pour les machines inconnues." msgstr "Attributs de réponse pour les machines inconnues."
#: preferences/models.py:715 #: preferences/models.py:693
msgid "policy for unknown ports" msgid "policy for unknown ports"
msgstr "politique pour les ports inconnus" msgstr "politique pour les ports inconnus"
#: preferences/models.py:723 #: preferences/models.py:701
msgid "unknown ports VLAN" msgid "unknown ports VLAN"
msgstr "VLAN pour les ports inconnus" msgstr "VLAN pour les ports inconnus"
#: preferences/models.py:724 #: preferences/models.py:702
msgid "VLAN for unknown ports if not rejected." msgid "VLAN for unknown ports if not rejected."
msgstr "VLAN pour les ports inconnus si non rejeté." msgstr "VLAN pour les ports inconnus si non rejeté."
#: preferences/models.py:730 #: preferences/models.py:708
msgid "unknown ports attributes" msgid "unknown ports attributes"
msgstr "attributs pour les ports inconnus" msgstr "attributs pour les ports inconnus"
#: preferences/models.py:731 #: preferences/models.py:709
msgid "Answer attributes for unknown ports." msgid "Answer attributes for unknown ports."
msgstr "Attributs de réponse pour les ports inconnus." msgstr "Attributs de réponse pour les ports inconnus."
#: preferences/models.py:738 #: preferences/models.py:716
msgid "" msgid ""
"Policy for machines connecting from unregistered rooms (relevant on ports " "Policy for machines connecting from unregistered rooms (relevant on ports "
"with STRICT RADIUS mode)" "with STRICT RADIUS mode)"
@ -735,87 +735,87 @@ msgstr ""
"Politique pour les machines se connectant depuis des chambre non " "Politique pour les machines se connectant depuis des chambre non "
"enregistrées (pertinent pour les ports avec le mode de RADIUS STRICT)" "enregistrées (pertinent pour les ports avec le mode de RADIUS STRICT)"
#: preferences/models.py:748 #: preferences/models.py:726
msgid "unknown rooms VLAN" msgid "unknown rooms VLAN"
msgstr "VLAN pour les chambres inconnues" msgstr "VLAN pour les chambres inconnues"
#: preferences/models.py:749 #: preferences/models.py:727
msgid "VLAN for unknown rooms if not rejected." msgid "VLAN for unknown rooms if not rejected."
msgstr "VLAN pour les chambres inconnues si non rejeté." msgstr "VLAN pour les chambres inconnues si non rejeté."
#: preferences/models.py:755 #: preferences/models.py:733
msgid "unknown rooms attributes" msgid "unknown rooms attributes"
msgstr "attributs pour les chambres inconnues" msgstr "attributs pour les chambres inconnues"
#: preferences/models.py:756 #: preferences/models.py:734
msgid "Answer attributes for unknown rooms." msgid "Answer attributes for unknown rooms."
msgstr "Attributs de réponse pour les chambres inconnues." msgstr "Attributs de réponse pour les chambres inconnues."
#: preferences/models.py:762 #: preferences/models.py:740
msgid "policy for non members" msgid "policy for non members"
msgstr "politique pour les non adhérents" msgstr "politique pour les non adhérents"
#: preferences/models.py:770 #: preferences/models.py:748
msgid "non members VLAN" msgid "non members VLAN"
msgstr "VLAN pour les non adhérents" msgstr "VLAN pour les non adhérents"
#: preferences/models.py:771 #: preferences/models.py:749
msgid "VLAN for non members if not rejected." msgid "VLAN for non members if not rejected."
msgstr "VLAN pour les non adhérents si non rejeté." msgstr "VLAN pour les non adhérents si non rejeté."
#: preferences/models.py:777 #: preferences/models.py:755
msgid "non members attributes" msgid "non members attributes"
msgstr "attributs pour les non adhérents" msgstr "attributs pour les non adhérents"
#: preferences/models.py:778 #: preferences/models.py:756
msgid "Answer attributes for non members." msgid "Answer attributes for non members."
msgstr "Attributs de réponse pour les non adhérents." msgstr "Attributs de réponse pour les non adhérents."
#: preferences/models.py:784 #: preferences/models.py:762
msgid "policy for banned users" msgid "policy for banned users"
msgstr "politique pour les utilisateurs bannis" msgstr "politique pour les utilisateurs bannis"
#: preferences/models.py:792 #: preferences/models.py:770
msgid "banned users VLAN" msgid "banned users VLAN"
msgstr "VLAN pour les utilisateurs bannis" msgstr "VLAN pour les utilisateurs bannis"
#: preferences/models.py:793 #: preferences/models.py:771
msgid "VLAN for banned users if not rejected." msgid "VLAN for banned users if not rejected."
msgstr "VLAN pour les utilisateurs bannis si non rejeté." msgstr "VLAN pour les utilisateurs bannis si non rejeté."
#: preferences/models.py:799 #: preferences/models.py:777
msgid "banned users attributes" msgid "banned users attributes"
msgstr "attributs pour les utilisateurs bannis" msgstr "attributs pour les utilisateurs bannis"
#: preferences/models.py:800 #: preferences/models.py:778
msgid "Answer attributes for banned users." msgid "Answer attributes for banned users."
msgstr "Attributs de réponse pour les utilisateurs bannis." msgstr "Attributs de réponse pour les utilisateurs bannis."
#: preferences/models.py:813 #: preferences/models.py:791
msgid "accepted users attributes" msgid "accepted users attributes"
msgstr "attributs pour les utilisateurs acceptés" msgstr "attributs pour les utilisateurs acceptés"
#: preferences/models.py:814 #: preferences/models.py:792
msgid "Answer attributes for accepted users." msgid "Answer attributes for accepted users."
msgstr "Attributs de réponse pour les utilisateurs acceptés." msgstr "Attributs de réponse pour les utilisateurs acceptés."
#: preferences/models.py:841 #: preferences/models.py:819
msgid "subscription preferences" msgid "subscription preferences"
msgstr "préférences de cotisation" msgstr "préférences de cotisation"
#: preferences/models.py:845 #: preferences/models.py:823
msgid "template for invoices" msgid "template for invoices"
msgstr "modèle pour les factures" msgstr "modèle pour les factures"
#: preferences/models.py:852 #: preferences/models.py:830
msgid "template for subscription vouchers" msgid "template for subscription vouchers"
msgstr "modèle pour les reçus de cotisation" msgstr "modèle pour les reçus de cotisation"
#: preferences/models.py:858 #: preferences/models.py:836
msgid "send voucher by email when the invoice is controlled" msgid "send voucher by email when the invoice is controlled"
msgstr "envoyer le reçu par mail quand la facture est contrôlée" msgstr "envoyer le reçu par mail quand la facture est contrôlée"
#: preferences/models.py:860 #: preferences/models.py:838
msgid "" msgid ""
"Be careful, if no mandate is defined on the preferences page, errors will be " "Be careful, if no mandate is defined on the preferences page, errors will be "
"triggered when generating vouchers." "triggered when generating vouchers."
@ -823,19 +823,19 @@ msgstr ""
"Faites attention, si aucun mandat n'est défini sur la page de préférences, " "Faites attention, si aucun mandat n'est défini sur la page de préférences, "
"des erreurs seront déclenchées en générant des reçus." "des erreurs seront déclenchées en générant des reçus."
#: preferences/models.py:872 #: preferences/models.py:850
msgid "template" msgid "template"
msgstr "modèle" msgstr "modèle"
#: preferences/models.py:873 #: preferences/models.py:851
msgid "name" msgid "name"
msgstr "nom" msgstr "nom"
#: preferences/models.py:876 #: preferences/models.py:854
msgid "document template" msgid "document template"
msgstr "modèle de document" msgstr "modèle de document"
#: preferences/models.py:877 #: preferences/models.py:855
msgid "document templates" msgid "document templates"
msgstr "modèles de document" msgstr "modèles de document"
@ -1035,9 +1035,9 @@ msgstr "Préférences générales"
#: preferences/templates/preferences/display_preferences.html:417 #: preferences/templates/preferences/display_preferences.html:417
#: preferences/templates/preferences/display_preferences.html:495 #: preferences/templates/preferences/display_preferences.html:495
#: preferences/templates/preferences/edit_preferences.html:46 #: preferences/templates/preferences/edit_preferences.html:46
#: preferences/views.py:212 preferences/views.py:261 preferences/views.py:307 #: preferences/views.py:188 preferences/views.py:237 preferences/views.py:283
#: preferences/views.py:367 preferences/views.py:431 preferences/views.py:496 #: preferences/views.py:343 preferences/views.py:407 preferences/views.py:472
#: preferences/views.py:572 preferences/views.py:619 #: preferences/views.py:548 preferences/views.py:595
msgid "Edit" msgid "Edit"
msgstr "Modifier" msgstr "Modifier"
@ -1359,75 +1359,75 @@ 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"
#: preferences/views.py:160 #: preferences/utils/views.py:45
msgid "Unknown object." msgid "Unknown object."
msgstr "Objet inconnu." msgstr "Objet inconnu."
#: preferences/views.py:179 #: preferences/utils/views.py:64
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."
#: preferences/views.py:191 #: preferences/views.py:167
msgid "The service was added." msgid "The service was added."
msgstr "Le service a été ajouté." msgstr "Le service a été ajouté."
#: preferences/views.py:194 preferences/views.py:243 preferences/views.py:292 #: preferences/views.py:170 preferences/views.py:219 preferences/views.py:268
#: preferences/views.py:349 preferences/views.py:412 preferences/views.py:471 #: preferences/views.py:325 preferences/views.py:388 preferences/views.py:447
#: preferences/views.py:554 preferences/views.py:603 #: preferences/views.py:530 preferences/views.py:579
msgid "Add" msgid "Add"
msgstr "Ajouter" msgstr "Ajouter"
#: preferences/views.py:209 #: preferences/views.py:185
msgid "The service was edited." msgid "The service was edited."
msgstr "Le service a été modifié." msgstr "Le service a été modifié."
#: preferences/views.py:224 #: preferences/views.py:200
msgid "The service was deleted." msgid "The service was deleted."
msgstr "Le service a été supprimé." msgstr "Le service a été supprimé."
#: preferences/views.py:240 #: preferences/views.py:216
msgid "The reminder was added." msgid "The reminder was added."
msgstr "Le rappel a été ajouté." msgstr "Le rappel a été ajouté."
#: preferences/views.py:258 #: preferences/views.py:234
msgid "The reminder was edited." msgid "The reminder was edited."
msgstr "Le rappel a été modifié." msgstr "Le rappel a été modifié."
#: preferences/views.py:273 #: preferences/views.py:249
msgid "The reminder was deleted." msgid "The reminder was deleted."
msgstr "Le rappel a été supprimé." msgstr "Le rappel a été supprimé."
#: preferences/views.py:289 #: preferences/views.py:265
msgid "The RADIUS key was added." msgid "The RADIUS key was added."
msgstr "La clé RADIUS a été ajoutée." msgstr "La clé RADIUS a été ajoutée."
#: preferences/views.py:304 #: preferences/views.py:280
msgid "The RADIUS key was edited." msgid "The RADIUS key was edited."
msgstr "La clé RADIUS a été modifiée." msgstr "La clé RADIUS a été modifiée."
#: preferences/views.py:320 #: preferences/views.py:296
msgid "The RADIUS key was deleted." msgid "The RADIUS key was deleted."
msgstr "La clé RADIUS a été supprimée." msgstr "La clé RADIUS a été supprimée."
#: preferences/views.py:325 #: preferences/views.py:301
msgid "The RADIUS key is assigned to at least one switch, you can't delete it." msgid "The RADIUS key is assigned to at least one switch, you can't delete it."
msgstr "" msgstr ""
"La clé RADIUS est assignée a au moins un commutateur réseau, vous ne pouvez " "La clé RADIUS est assignée a au moins un commutateur réseau, vous ne pouvez "
"pas la supprimer." "pas la supprimer."
#: preferences/views.py:344 #: preferences/views.py:320
msgid "The switch management credentials were added." msgid "The switch management credentials were added."
msgstr "Les identifiants de gestion de commutateur réseay ont été ajoutés." msgstr "Les identifiants de gestion de commutateur réseay ont été ajoutés."
#: preferences/views.py:364 #: preferences/views.py:340
msgid "The switch management credentials were edited." msgid "The switch management credentials were edited."
msgstr "Les identifiants de gestion de commutateur réseau ont été modifiés." msgstr "Les identifiants de gestion de commutateur réseau ont été modifiés."
#: preferences/views.py:381 #: preferences/views.py:357
msgid "The switch management credentials were deleted." msgid "The switch management credentials were deleted."
msgstr "Les identifiants de gestion de commutateur réseau ont été supprimés." msgstr "Les identifiants de gestion de commutateur réseau ont été supprimés."
#: preferences/views.py:387 #: preferences/views.py:363
msgid "" msgid ""
"The switch management credentials are assigned to at least one switch, you " "The switch management credentials are assigned to at least one switch, you "
"can't delete them." "can't delete them."
@ -1435,44 +1435,44 @@ msgstr ""
"Les identifiants de gestion de commutateur réseau sont assignés à au moins " "Les identifiants de gestion de commutateur réseau sont assignés à au moins "
"un commutateur réseau , vous ne pouvez pas les supprimer." "un commutateur réseau , vous ne pouvez pas les supprimer."
#: preferences/views.py:407 #: preferences/views.py:383
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."
#: preferences/views.py:428 #: preferences/views.py:404
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."
#: preferences/views.py:446 #: preferences/views.py:422
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."
#: preferences/views.py:449 preferences/views.py:536 #: preferences/views.py:425 preferences/views.py:512
msgid "Delete" msgid "Delete"
msgstr "Supprimer" msgstr "Supprimer"
#: preferences/views.py:466 #: preferences/views.py:442
msgid "The document template was created." msgid "The document template was created."
msgstr "Le modèle de document a été créé." msgstr "Le modèle de document a été créé."
#: preferences/views.py:472 #: preferences/views.py:448
msgid "New document template" msgid "New document template"
msgstr "Nouveau modèle de document" msgstr "Nouveau modèle de document"
#: preferences/views.py:491 #: preferences/views.py:467
msgid "The document template was edited." msgid "The document template was edited."
msgstr "Le modèle de document a été édité." msgstr "Le modèle de document a été édité."
#: preferences/views.py:497 #: preferences/views.py:473
msgid "Edit document template" msgid "Edit document template"
msgstr "Modifier le modèle de document" msgstr "Modifier le modèle de document"
#: preferences/views.py:520 #: preferences/views.py:496
#, python-format #, python-format
msgid "The document template %(document_template)s was deleted." msgid "The document template %(document_template)s was deleted."
msgstr "Le modèle de document %(document_template)s a été supprimé." msgstr "Le modèle de document %(document_template)s a été supprimé."
#: preferences/views.py:527 #: preferences/views.py:503
#, python-format #, python-format
msgid "" msgid ""
"The document template %(document_template)s can't be deleted because it is " "The document template %(document_template)s can't be deleted because it is "
@ -1481,31 +1481,31 @@ msgstr ""
"Le modèle de document %(document_template)s ne peut pas être supprimé car il " "Le modèle de document %(document_template)s ne peut pas être supprimé car il "
"est actuellement utilisé." "est actuellement utilisé."
#: preferences/views.py:537 #: preferences/views.py:513
msgid "Delete document template" msgid "Delete document template"
msgstr "Supprimer le modèle de document" msgstr "Supprimer le modèle de document"
#: preferences/views.py:551 #: preferences/views.py:527
msgid "The attribute was added." msgid "The attribute was added."
msgstr "L'attribut a été ajouté." msgstr "L'attribut a été ajouté."
#: preferences/views.py:569 #: preferences/views.py:545
msgid "The attribute was edited." msgid "The attribute was edited."
msgstr "L'attribut a été modifié." msgstr "L'attribut a été modifié."
#: preferences/views.py:584 #: preferences/views.py:560
msgid "The attribute was deleted." msgid "The attribute was deleted."
msgstr "L'attribut a été supprimé." msgstr "L'attribut a été supprimé."
#: preferences/views.py:600 #: preferences/views.py:576
msgid "The mandate was added." msgid "The mandate was added."
msgstr "Le mandat a été ajouté." msgstr "Le mandat a été ajouté."
#: preferences/views.py:616 #: preferences/views.py:592
msgid "The mandate was edited." msgid "The mandate was edited."
msgstr "Le mandat a été modifié." msgstr "Le mandat a été modifié."
#: preferences/views.py:631 #: preferences/views.py:607
msgid "The mandate was deleted." msgid "The mandate was deleted."
msgstr "Le mandat été supprimé." msgstr "Le mandat été supprimé."

View file

@ -37,36 +37,14 @@ from django.utils.translation import ugettext_lazy as _
import machines.models import machines.models
from .utils.models import PreferencesModel
from re2o.mixins import AclMixin, RevMixin from re2o.mixins import AclMixin, RevMixin
from re2o.aes_field import AESEncryptedField from re2o.aes_field import AESEncryptedField
from datetime import timedelta from datetime import timedelta
class PreferencesModel(models.Model):
""" Base object for the Preferences objects
Defines methods to handle the cache of the settings (they should
not change a lot) """
@classmethod
def set_in_cache(cls):
""" Save the preferences in a server-side cache """
instance, _created = cls.objects.get_or_create()
cache.set(cls().__class__.__name__.lower(), instance, None)
return instance
@classmethod
def get_cached_value(cls, key):
""" Get the preferences from the server-side cache """
instance = cache.get(cls().__class__.__name__.lower())
if instance is None:
instance = cls.set_in_cache()
return getattr(instance, key)
class Meta:
abstract = True
class OptionalUser(AclMixin, PreferencesModel): class OptionalUser(AclMixin, PreferencesModel):
"""Options pour l'user : obligation ou nom du telephone, """Options pour l'user : obligation ou nom du telephone,
activation ou non du solde, autorisation du negatif, fingerprint etc""" activation ou non du solde, autorisation du negatif, fingerprint etc"""

View file

@ -28,52 +28,53 @@ from __future__ import unicode_literals
from django.conf.urls import url from django.conf.urls import url
from . import views from . import views
from .views import edit_options
urlpatterns = [ urlpatterns = [
url( url(
r"^edit_options/(?P<section>OptionalUser)$", r"^edit_options/(?P<section>OptionalUser)$",
views.edit_options, edit_options,
name="edit-options", name="edit-options",
), ),
url( url(
r"^edit_options/(?P<section>OptionalMachine)$", r"^edit_options/(?P<section>OptionalMachine)$",
views.edit_options, edit_options,
name="edit-options", name="edit-options",
), ),
url( url(
r"^edit_options/(?P<section>OptionalTopologie)$", r"^edit_options/(?P<section>OptionalTopologie)$",
views.edit_options, edit_options,
name="edit-options", name="edit-options",
), ),
url( url(
r"^edit_options/(?P<section>GeneralOption)$", r"^edit_options/(?P<section>GeneralOption)$",
views.edit_options, edit_options,
name="edit-options", name="edit-options",
), ),
url( url(
r"^edit_options/(?P<section>AssoOption)$", r"^edit_options/(?P<section>AssoOption)$",
views.edit_options, edit_options,
name="edit-options", name="edit-options",
), ),
url( url(
r"^edit_options/(?P<section>HomeOption)$", r"^edit_options/(?P<section>HomeOption)$",
views.edit_options, edit_options,
name="edit-options", name="edit-options",
), ),
url( url(
r"^edit_options/(?P<section>MailMessageOption)$", r"^edit_options/(?P<section>MailMessageOption)$",
views.edit_options, edit_options,
name="edit-options", name="edit-options",
), ),
url( url(
r"^edit_options/(?P<section>RadiusOption)$", r"^edit_options/(?P<section>RadiusOption)$",
views.edit_options, edit_options,
name="edit-options", name="edit-options",
), ),
url( url(
r"^edit_options/(?P<section>CotisationsOption)$", r"^edit_options/(?P<section>CotisationsOption)$",
views.edit_options, edit_options,
name="edit-options", name="edit-options",
), ),
url(r"^add_service/$", views.add_service, name="add-service"), url(r"^add_service/$", views.add_service, name="add-service"),

View file

View file

@ -0,0 +1,55 @@
# 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 © 2020 Gabriel Détraz
#
# 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.
# App de gestion des machines pour re2o
# Gabriel Détraz, Augustin Lemesle
# Gplv2
"""
Utils for preferences
"""
from __future__ import unicode_literals
from django.core.cache import cache
from django.db import models
class PreferencesModel(models.Model):
""" Base object for the Preferences objects
Defines methods to handle the cache of the settings (they should
not change a lot) """
@classmethod
def set_in_cache(cls):
""" Save the preferences in a server-side cache """
instance, _created = cls.objects.get_or_create()
cache.set(cls().__class__.__name__.lower(), instance, None)
return instance
@classmethod
def get_cached_value(cls, key):
""" Get the preferences from the server-side cache """
instance = cache.get(cls().__class__.__name__.lower())
if instance is None:
instance = cls.set_in_cache()
return getattr(instance, key)
class Meta:
abstract = True

View file

@ -0,0 +1,68 @@
# 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 © 2020 Gabriel Détraz
#
# 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.
# App de gestion des machines pour re2o
# Gabriel Détraz, Augustin Lemesle
# Gplv2
"""
Utils for preferences
"""
from __future__ import unicode_literals
from django.urls import reverse
from django.shortcuts import redirect
from django.contrib import messages
from django.db.models import ProtectedError
from django.db import transaction
from django.utils.translation import ugettext as _
from reversion import revisions as reversion
from re2o.views import form
def edit_options_template_function(request, section, forms, models):
""" Edition des préférences générales"""
model = getattr(models, section, None)
form_instance = getattr(forms, "Edit" + section + "Form", None)
if not (model or form_instance):
messages.error(request, _("Unknown object."))
return redirect(reverse("preferences:display-options"))
options_instance, _created = model.objects.get_or_create()
can, msg, permissions = options_instance.can_edit(request.user)
if not can:
messages.error(request, acl_error_message(msg, permissions))
return redirect(reverse("index"))
options = form_instance(
request.POST or None, request.FILES or None, instance=options_instance
)
if options.is_valid():
with transaction.atomic(), reversion.create_revision():
options.save()
reversion.set_user(request.user)
reversion.set_comment(
"Field(s) edited: %s"
% ", ".join(field for field in options.changed_data)
)
messages.success(request, _("The preferences were edited."))
return redirect(reverse("preferences:display-options"))
return form({"options": options}, "preferences/edit_preferences.html", request)

View file

@ -86,6 +86,7 @@ from .models import (
from . import models from . import models
from . import forms from . import forms
from .utils.views import edit_options_template_function
@login_required @login_required
@can_view_all( @can_view_all(
@ -153,32 +154,7 @@ def display_options(request):
@login_required @login_required
def edit_options(request, section): def edit_options(request, section):
""" Edition des préférences générales""" return edit_options_template_function(request, section, forms, models)
model = getattr(models, section, None)
form_instance = getattr(forms, "Edit" + section + "Form", None)
if not (model or form_instance):
messages.error(request, _("Unknown object."))
return redirect(reverse("preferences:display-options"))
options_instance, _created = model.objects.get_or_create()
can, msg, permissions = options_instance.can_edit(request.user)
if not can:
messages.error(request, acl_error_message(msg, permissions))
return redirect(reverse("index"))
options = form_instance(
request.POST or None, request.FILES or None, instance=options_instance
)
if options.is_valid():
with transaction.atomic(), reversion.create_revision():
options.save()
reversion.set_user(request.user)
reversion.set_comment(
"Field(s) edited: %s"
% ", ".join(field for field in options.changed_data)
)
messages.success(request, _("The preferences were edited."))
return redirect(reverse("preferences:display-options"))
return form({"options": options}, "preferences/edit_preferences.html", request)
@login_required @login_required