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

Traduction + utilisation du mixin de revision

This commit is contained in:
Hugo LEVY-FALK 2018-07-26 21:53:32 +02:00 committed by Gabriel Detraz
parent 2599a503ac
commit 0cc15d63c8
9 changed files with 108 additions and 39 deletions

View file

@ -67,7 +67,7 @@ class ServiceAdmin(VersionAdmin):
class MailContactAdmin(VersionAdmin): class MailContactAdmin(VersionAdmin):
"""Class admin gestion des adresses mail de contact""" """Admin class for contact email adresses"""
pass pass

View file

@ -27,6 +27,8 @@ from __future__ import unicode_literals
from django.forms import ModelForm, Form from django.forms import ModelForm, Form
from django import forms from django import forms
from re2o.mixins import FormRevMixin
from .models import ( from .models import (
OptionalUser, OptionalUser,
OptionalMachine, OptionalMachine,
@ -229,8 +231,8 @@ class DelServiceForm(Form):
else: else:
self.fields['services'].queryset = Service.objects.all() self.fields['services'].queryset = Service.objects.all()
class MailContactForm(ModelForm): class MailContactForm(FormRevMixin, ModelForm):
"""Edition, ajout d'adresse de contact""" """Edit and add contact email adress"""
class Meta: class Meta:
model = MailContact model = MailContact
fields = '__all__' fields = '__all__'
@ -241,7 +243,7 @@ class MailContactForm(ModelForm):
class DelMailContactForm(Form): class DelMailContactForm(Form):
"""Suppression d'adresse de contact""" """Delete contact email adress"""
mailcontacts = forms.ModelMultipleChoiceField( mailcontacts = forms.ModelMultipleChoiceField(
queryset=MailContact.objects.none(), queryset=MailContact.objects.none(),
label="Enregistrements adresses actuels", label="Enregistrements adresses actuels",

Binary file not shown.

View file

@ -0,0 +1,70 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-07-26 21:49+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: models.py:256
msgid "Contact email adress"
msgstr "Adresse email de contact"
#: models.py:263
msgid "Description of the associated email adress."
msgstr "Description de l'adresse mail associée."
#: models.py:273
msgid "Can see contact email"
msgstr "Peut voir un mail de contact"
#: templates/preferences/aff_mailcontact.html:30
msgid "Adress"
msgstr "Adresse"
#: templates/preferences/aff_mailcontact.html:31
msgid "Remark"
msgstr "Commentaire"
#: templates/preferences/display_preferences.html:205
msgid "Contact email adresses list"
msgstr "Liste des adresses email de contact"
#: templates/preferences/display_preferences.html:207
msgid "Add an adress"
msgstr "Ajouter une adresse"
#: templates/preferences/display_preferences.html:209
msgid "Delete one or multiple adresses"
msgstr "Supprimer une ou plusieurs adresses"
#: views.py:210
msgid "The adress was created."
msgstr "L'adresse a été créée."
#: views.py:230
msgid "Email adress updated."
msgstr "L'adresse email a été mise à jour."
#: views.py:233
msgid "Edit"
msgstr "Éditer"
#: views.py:251
msgid "The email adress was deleted."
msgstr "L'adresse email a été supprimée."
#: views.py:254
msgid "Delete"
msgstr "Supprimer"

View file

@ -17,11 +17,11 @@ class Migration(migrations.Migration):
name='MailContact', name='MailContact',
fields=[ fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('address', models.EmailField(default='contact@example.org', help_text='Adresse mail de contact', max_length=254)), ('address', models.EmailField(default='contact@example.org', help_text="Contact email adress", max_length=254)),
('commentary', models.CharField(blank=True, help_text="Description de l'utilisation de l'adresse mail associée", max_length=256, null=True)), ('commentary', models.CharField(blank=True, help_text="Description of the associated email adress.", max_length=256, null=True)),
], ],
options={ options={
'permissions': (('view_mailcontact', 'Peut voir les mails de contact'),), 'permissions': (('view_mailcontact', "Can see contact email"),),
}, },
bases=(re2o.mixins.AclMixin, models.Model), bases=(re2o.mixins.AclMixin, models.Model),
), ),

View file

@ -31,6 +31,7 @@ from django.db.models.signals import post_save
from django.dispatch import receiver from django.dispatch import receiver
from django.core.cache import cache from django.core.cache import cache
from django.forms import ValidationError from django.forms import ValidationError
from django.utils.translation import ugettext_lazy as _
import machines.models import machines.models
from re2o.mixins import AclMixin from re2o.mixins import AclMixin
@ -268,17 +269,18 @@ class Service(AclMixin, models.Model):
return str(self.name) return str(self.name)
class MailContact(AclMixin, models.Model): class MailContact(AclMixin, models.Model):
"""Addresse mail de contact associée à un commentaire descriptif""" """Contact email adress with a commentary."""
address = models.EmailField( address = models.EmailField(
default = "contact@example.org", default = "contact@example.org",
help_text = "Adresse mail de contact" help_text = _("Contact email adress")
) )
commentary = models.CharField( commentary = models.CharField(
blank = True, blank = True,
null = True, null = True,
help_text = "Description de l'utilisation de l'adresse mail associée", help_text = _(
"Description of the associated email adress."),
max_length = 256 max_length = 256
) )
@ -288,7 +290,7 @@ class MailContact(AclMixin, models.Model):
class Meta: class Meta:
permissions = ( permissions = (
("view_mailcontact", "Peut voir les mails de contact"), ("view_mailcontact", _("Can see contact email")),
) )
def __str__(self): def __str__(self):

View file

@ -21,12 +21,14 @@ 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., with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
{% endcomment %} {% endcomment %}
{% load i18n %}
{% load acl %} {% load acl %}
{% load logs_extra %}
<table class="table table-striped"> <table class="table table-striped">
<thead> <thead>
<tr> <tr>
<th>Adresse</th> <th>{% trans "Adress" %}</th>
<th>Commentaire</th> <th>{% trans "Remark" %}</th>
<th></th> <th></th>
</tr> </tr>
</thead> </thead>

View file

@ -26,6 +26,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
{% load bootstrap3 %} {% load bootstrap3 %}
{% load acl %} {% load acl %}
{% load design %} {% load design %}
{% load i18n %}
{% block title %}Création et modification des préférences{% endblock %} {% block title %}Création et modification des préférences{% endblock %}
@ -222,10 +223,11 @@ with this program; if not, write to the Free Software Foundation, Inc.,
</a> </a>
<h4>Liste des adresses mail de contact</h4> <h4>Liste des adresses mail de contact</h4>
<h2>{% trans "Contact email adresses list" %}</h2>
{% can_create preferences.MailContact%} {% can_create preferences.MailContact%}
<a class="btn btn-primary btn-sm" role="button" href="{% url 'preferences:add-mailcontact' %}"><i class="fa fa-plus"></i>Ajouter une adresse</a> <a class="btn btn-primary btn-sm" role="button" href="{% url 'preferences:add-mailcontact' %}"><i class="fa fa-plus"></i>{% trans "Add an adress" %}</a>
{% acl_end %} {% acl_end %}
<a class="btn btn-danger btn-sm" role="button" href="{% url 'preferences:del-mailcontact' %}"><i class="fa fa-trash"></i>Supprimer une ou plusieurs adresses</a> <a class="btn btn-danger btn-sm" role="button" href="{% url 'preferences:del-mailcontact' %}"><i class="fa fa-trash"></i>{% trans "Delete one or multiple adresses" %}</a>
{% include "preferences/aff_mailcontact.html" with mailcontact_list=mailcontact_list %} {% include "preferences/aff_mailcontact.html" with mailcontact_list=mailcontact_list %}
<p> <p>

View file

@ -36,13 +36,16 @@ from django.contrib import messages
from django.contrib.auth.decorators import login_required from django.contrib.auth.decorators import login_required
from django.db.models import ProtectedError from django.db.models import ProtectedError
from django.db import transaction from django.db import transaction
from django.utils.translation import ugettext as _
from reversion import revisions as reversion from reversion import revisions as reversion
from re2o.views import form from re2o.views import form
from re2o.acl import can_create, can_edit, can_delete_set, can_view_all from re2o.acl import can_create, can_edit, can_delete_set, can_view_all
from .forms import ServiceForm, DelServiceForm, MailContactForm, DelMailContactForm from .forms import (
ServiceForm, DelServiceForm, MailContactForm, DelMailContactForm
)
from .models import ( from .models import (
Service, Service,
MailContact, MailContact,
@ -197,17 +200,14 @@ def del_service(request, instances):
@login_required @login_required
@can_create(MailContact) @can_create(MailContact)
def add_mailcontact(request): def add_mailcontact(request):
"""Ajout d'une adresse de contact""" """Add a contact email adress."""
mailcontact = MailContactForm( mailcontact = MailContactForm(
request.POST or None, request.POST or None,
request.FILES or None request.FILES or None
) )
if mailcontact.is_valid(): if mailcontact.is_valid():
with transaction.atomic(), reversion.create_revision(): mailcontact.save()
mailcontact.save() messages.success(request, _("The adress was created."))
reversion.set_user(request.user)
reversion.set_comment("Création")
messages.success(request, "Cette adresse a été ajoutée")
return redirect(reverse('preferences:display-options')) return redirect(reverse('preferences:display-options'))
return form( return form(
{'preferenceform': mailcontact, 'action_name': 'Ajouter'}, {'preferenceform': mailcontact, 'action_name': 'Ajouter'},
@ -219,21 +219,18 @@ def add_mailcontact(request):
@login_required @login_required
@can_edit(MailContact) @can_edit(MailContact)
def edit_mailcontact(request, mailcontact_instance, **_kwargs): def edit_mailcontact(request, mailcontact_instance, **_kwargs):
"""Edition des adresses de contacte affichées""" """Edit contact email adress."""
mailcontact = MailContactForm( mailcontact = MailContactForm(
request.POST or None, request.POST or None,
request.FILES or None, request.FILES or None,
instance=mailcontact_instance instance=mailcontact_instance
) )
if mailcontact.is_valid(): if mailcontact.is_valid():
with transaction.atomic(), reversion.create_revision(): mailcontact.save()
mailcontact.save() messages.success(request, _("Email adress updated."))
reversion.set_user(request.user)
reversion.set_comment("Modification")
messages.success(request, "Adresse modifiée")
return redirect(reverse('preferences:display-options')) return redirect(reverse('preferences:display-options'))
return form( return form(
{'preferenceform': mailcontact, 'action_name': 'Editer'}, {'preferenceform': mailcontact, 'action_name': _('Edit')},
'preferences/preferences.html', 'preferences/preferences.html',
request request
) )
@ -242,7 +239,7 @@ def edit_mailcontact(request, mailcontact_instance, **_kwargs):
@login_required @login_required
@can_delete_set(MailContact) @can_delete_set(MailContact)
def del_mailcontact(request, instances): def del_mailcontact(request, instances):
"""Suppression d'une adresse de contact""" """Delete an email adress"""
mailcontacts = DelMailContactForm( mailcontacts = DelMailContactForm(
request.POST or None, request.POST or None,
instances=instances instances=instances
@ -250,17 +247,11 @@ def del_mailcontact(request, instances):
if mailcontacts.is_valid(): if mailcontacts.is_valid():
mailcontacts_dels = mailcontacts.cleaned_data['mailcontacts'] mailcontacts_dels = mailcontacts.cleaned_data['mailcontacts']
for mailcontacts_del in mailcontacts_dels: for mailcontacts_del in mailcontacts_dels:
try: mailcontacts_del.delete()
with transaction.atomic(), reversion.create_revision(): messages.success(request, _("The email adress was deleted."))
mailcontacts_del.delete()
reversion.set_user(request.user)
messages.success(request, "L'adresse a été supprimée")
except ProtectedError:
messages.error(request, "Erreur le service\
suivant %s ne peut être supprimé" % mailcontacts_del)
return redirect(reverse('preferences:display-options')) return redirect(reverse('preferences:display-options'))
return form( return form(
{'preferenceform': mailcontacts, 'action_name': 'Supprimer'}, {'preferenceform': mailcontacts, 'action_name': _('Delete')},
'preferences/preferences.html', 'preferences/preferences.html',
request request
) )