mirror of
https://gitlab2.federez.net/re2o/re2o
synced 2024-11-30 00:22:25 +00:00
Ajoute un message personalisé dans le mail d'acceuil via les préférences
Attention migration à faire
This commit is contained in:
parent
44777ac437
commit
7908cd3a25
9 changed files with 80 additions and 13 deletions
|
@ -23,7 +23,7 @@
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
from reversion.admin import VersionAdmin
|
from reversion.admin import VersionAdmin
|
||||||
|
|
||||||
from .models import OptionalUser, OptionalMachine, OptionalTopologie, GeneralOption, Service, AssoOption
|
from .models import OptionalUser, OptionalMachine, OptionalTopologie, GeneralOption, Service, AssoOption, MailMessageOption
|
||||||
|
|
||||||
class OptionalUserAdmin(VersionAdmin):
|
class OptionalUserAdmin(VersionAdmin):
|
||||||
pass
|
pass
|
||||||
|
@ -31,7 +31,6 @@ class OptionalUserAdmin(VersionAdmin):
|
||||||
class OptionalTopologieAdmin(VersionAdmin):
|
class OptionalTopologieAdmin(VersionAdmin):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
class OptionalMachineAdmin(VersionAdmin):
|
class OptionalMachineAdmin(VersionAdmin):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
@ -44,9 +43,13 @@ class ServiceAdmin(VersionAdmin):
|
||||||
class AssoOptionAdmin(VersionAdmin):
|
class AssoOptionAdmin(VersionAdmin):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
class MailMessageOptionAdmin(VersionAdmin):
|
||||||
|
pass
|
||||||
|
|
||||||
admin.site.register(OptionalUser, OptionalUserAdmin)
|
admin.site.register(OptionalUser, OptionalUserAdmin)
|
||||||
admin.site.register(OptionalMachine, OptionalMachineAdmin)
|
admin.site.register(OptionalMachine, OptionalMachineAdmin)
|
||||||
admin.site.register(OptionalTopologie, OptionalTopologieAdmin)
|
admin.site.register(OptionalTopologie, OptionalTopologieAdmin)
|
||||||
admin.site.register(GeneralOption, GeneralOptionAdmin)
|
admin.site.register(GeneralOption, GeneralOptionAdmin)
|
||||||
admin.site.register(Service, ServiceAdmin)
|
admin.site.register(Service, ServiceAdmin)
|
||||||
admin.site.register(AssoOption, AssoOptionAdmin)
|
admin.site.register(AssoOption, AssoOptionAdmin)
|
||||||
|
admin.site.register(MailMessageOption, MailMessageOptionAdmin)
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
|
|
||||||
from django.forms import ModelForm, Form, ValidationError
|
from django.forms import ModelForm, Form, ValidationError
|
||||||
from django import forms
|
from django import forms
|
||||||
from .models import OptionalUser, OptionalMachine, OptionalTopologie, GeneralOption, AssoOption, Service
|
from .models import OptionalUser, OptionalMachine, OptionalTopologie, GeneralOption, AssoOption, MailMessageOption, Service
|
||||||
from django.db.models import Q
|
from django.db.models import Q
|
||||||
|
|
||||||
class EditOptionalUserForm(ModelForm):
|
class EditOptionalUserForm(ModelForm):
|
||||||
|
@ -72,6 +72,16 @@ class EditAssoOptionForm(ModelForm):
|
||||||
model = AssoOption
|
model = AssoOption
|
||||||
fields = '__all__'
|
fields = '__all__'
|
||||||
|
|
||||||
|
class EditMailMessageOptionForm(ModelForm):
|
||||||
|
class Meta:
|
||||||
|
model = MailMessageOption
|
||||||
|
fields = '__all__'
|
||||||
|
|
||||||
|
def __init__(slef, *args, **kwargs):
|
||||||
|
super(EditMailMessageOptionForm, self).__init__(*args, **kwargs)
|
||||||
|
self.fields['welcome_mail_fr'].label = 'Message dans le mail d\'acceuil en français'
|
||||||
|
self.fields['welcome_mail_en'].label = 'Message dans le mail d\'acceuil en anglais'
|
||||||
|
|
||||||
class ServiceForm(ModelForm):
|
class ServiceForm(ModelForm):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Service
|
model = Service
|
||||||
|
|
23
preferences/migrations/0017_mailmessageoption.py
Normal file
23
preferences/migrations/0017_mailmessageoption.py
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# Generated by Django 1.10.7 on 2017-09-08 20:17
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('preferences', '0016_auto_20170902_1520'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='MailMessageOption',
|
||||||
|
fields=[
|
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('welcome_mail_fr', models.TextField(default='')),
|
||||||
|
('welcome_mail_en', models.TextField(default='')),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
]
|
|
@ -87,3 +87,10 @@ class AssoOption(models.Model):
|
||||||
telephone = models.CharField(max_length=15, default="0000000000")
|
telephone = models.CharField(max_length=15, default="0000000000")
|
||||||
pseudo = models.CharField(default="Asso", max_length=32)
|
pseudo = models.CharField(default="Asso", max_length=32)
|
||||||
utilisateur_asso = models.OneToOneField('users.User', on_delete=models.PROTECT, blank=True, null=True)
|
utilisateur_asso = models.OneToOneField('users.User', on_delete=models.PROTECT, blank=True, null=True)
|
||||||
|
|
||||||
|
class MailMessageOption(models.Model):
|
||||||
|
PRETTY_NAME = "Options de corps de mail"
|
||||||
|
|
||||||
|
welcome_mail_fr = models.TextField(default="")
|
||||||
|
welcome_mail_en = models.TextField(default="")
|
||||||
|
|
||||||
|
|
|
@ -155,6 +155,25 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
||||||
<td>{{ assooptions.utilisateur_asso }}</td>
|
<td>{{ assooptions.utilisateur_asso }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
<h4>Messages personalisé dans les mails</h4>
|
||||||
|
{% if is_bureau %}
|
||||||
|
<a class="btn btn-primary btn-sm" role="button" href="{% url 'preferences:edit-options' 'MailMessageOption' %}">
|
||||||
|
<i class="glyphicon glyphicon-edit"></i>
|
||||||
|
Editer
|
||||||
|
</a>
|
||||||
|
{% endif %}
|
||||||
|
<p>
|
||||||
|
</p>
|
||||||
|
<table class="table table-striped">
|
||||||
|
<tr>
|
||||||
|
<th>Message Français</th>
|
||||||
|
<td>{{ mailmessageoptions.welcome_mail_fr }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Message Anglais</th>
|
||||||
|
<td>{{ mailmessageoptions.welcome_mail_en }}</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
<h2>Liste des services page d'accueil</h2>
|
<h2>Liste des services page d'accueil</h2>
|
||||||
{% if is_infra %}
|
{% if is_infra %}
|
||||||
<a class="btn btn-primary btn-sm" role="button" href="{% url 'preferences:add-services' %}"><i class="glyphicon glyphicon-plus"></i> Ajouter un service</a>
|
<a class="btn btn-primary btn-sm" role="button" href="{% url 'preferences:add-services' %}"><i class="glyphicon glyphicon-plus"></i> Ajouter un service</a>
|
||||||
|
|
|
@ -31,6 +31,7 @@ urlpatterns = [
|
||||||
url(r'^edit_options/(?P<section>OptionalTopologie)$', views.edit_options, name='edit-options'),
|
url(r'^edit_options/(?P<section>OptionalTopologie)$', views.edit_options, name='edit-options'),
|
||||||
url(r'^edit_options/(?P<section>GeneralOption)$', views.edit_options, name='edit-options'),
|
url(r'^edit_options/(?P<section>GeneralOption)$', views.edit_options, name='edit-options'),
|
||||||
url(r'^edit_options/(?P<section>AssoOption)$', views.edit_options, name='edit-options'),
|
url(r'^edit_options/(?P<section>AssoOption)$', views.edit_options, name='edit-options'),
|
||||||
|
url(r'^edit_options/(?P<section>MailMessageOption)$', views.edit_options, name='edit-options'),
|
||||||
url(r'^add_services/$', views.add_services, name='add-services'),
|
url(r'^add_services/$', views.add_services, name='add-services'),
|
||||||
url(r'^edit_services/(?P<servicesid>[0-9]+)$', views.edit_services, name='edit-services'),
|
url(r'^edit_services/(?P<servicesid>[0-9]+)$', views.edit_services, name='edit-services'),
|
||||||
url(r'^del_services/$', views.del_services, name='del-services'),
|
url(r'^del_services/$', views.del_services, name='del-services'),
|
||||||
|
|
|
@ -43,7 +43,7 @@ from reversion.models import Version
|
||||||
from reversion import revisions as reversion
|
from reversion import revisions as reversion
|
||||||
|
|
||||||
from .forms import ServiceForm, DelServiceForm
|
from .forms import ServiceForm, DelServiceForm
|
||||||
from .models import Service, OptionalUser, OptionalMachine, AssoOption, GeneralOption, OptionalTopologie
|
from .models import Service, OptionalUser, OptionalMachine, AssoOption, MailMessageOption, GeneralOption, OptionalTopologie
|
||||||
from . import models
|
from . import models
|
||||||
from . import forms
|
from . import forms
|
||||||
|
|
||||||
|
@ -60,9 +60,10 @@ def display_options(request):
|
||||||
machineoptions, created = OptionalMachine.objects.get_or_create()
|
machineoptions, created = OptionalMachine.objects.get_or_create()
|
||||||
topologieoptions, created = OptionalTopologie.objects.get_or_create()
|
topologieoptions, created = OptionalTopologie.objects.get_or_create()
|
||||||
generaloptions, created = GeneralOption.objects.get_or_create()
|
generaloptions, created = GeneralOption.objects.get_or_create()
|
||||||
assooptions, crated = AssoOption.objects.get_or_create()
|
assooptions, created = AssoOption.objects.get_or_create()
|
||||||
|
mailmessageoptions, created = MailMessageOption.objects.get_or_create()
|
||||||
service_list = Service.objects.all()
|
service_list = Service.objects.all()
|
||||||
return form({'useroptions': useroptions, 'machineoptions': machineoptions, 'topologieoptions': topologieoptions, 'generaloptions': generaloptions, 'assooptions' : assooptions, 'service_list':service_list}, 'preferences/display_preferences.html', request)
|
return form({'useroptions': useroptions, 'machineoptions': machineoptions, 'topologieoptions': topologieoptions, 'generaloptions': generaloptions, 'assooptions' : assooptions, 'mailmessageoptions' : mailmessageoptions, 'service_list':service_list}, 'preferences/display_preferences.html', request)
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
@permission_required('admin')
|
@permission_required('admin')
|
||||||
|
|
|
@ -47,7 +47,7 @@ from django.core.validators import MinLengthValidator
|
||||||
from topologie.models import Room
|
from topologie.models import Room
|
||||||
from cotisations.models import Cotisation, Facture, Paiement, Vente
|
from cotisations.models import Cotisation, Facture, Paiement, Vente
|
||||||
from machines.models import Interface, Machine, regen
|
from machines.models import Interface, Machine, regen
|
||||||
from preferences.models import GeneralOption, AssoOption, OptionalUser
|
from preferences.models import GeneralOption, AssoOption, OptionalUser, MailMessageOption
|
||||||
|
|
||||||
now = timezone.now()
|
now = timezone.now()
|
||||||
|
|
||||||
|
@ -415,15 +415,18 @@ class User(AbstractBaseUser):
|
||||||
def notif_inscription(self):
|
def notif_inscription(self):
|
||||||
""" Prend en argument un objet user, envoie un mail de bienvenue """
|
""" Prend en argument un objet user, envoie un mail de bienvenue """
|
||||||
t = loader.get_template('users/email_welcome')
|
t = loader.get_template('users/email_welcome')
|
||||||
options, created = AssoOption.objects.get_or_create()
|
assooptions, created = AssoOption.objects.get_or_create()
|
||||||
|
mailmessageoptions, created = MailMessageOption.objects.get_or_create()
|
||||||
general_options, created = GeneralOption.objects.get_or_create()
|
general_options, created = GeneralOption.objects.get_or_create()
|
||||||
c = Context({
|
c = Context({
|
||||||
'nom': str(self.name) + ' ' + str(self.surname),
|
'nom': str(self.name) + ' ' + str(self.surname),
|
||||||
'asso_name': options.name,
|
'asso_name': assooptions.name,
|
||||||
'asso_email': options.contact,
|
'asso_email': assooptions.contact,
|
||||||
|
'welcome_mail_fr' : mailmessageoptions.welcome_mail_fr,
|
||||||
|
'welcome_mail_en' : mailmessageoptions.welcome_mail_en,
|
||||||
'pseudo':self.pseudo,
|
'pseudo':self.pseudo,
|
||||||
})
|
})
|
||||||
send_mail('Bienvenue au %(name)s / Welcome to %(name)s' % {'name': options.name }, '',
|
send_mail('Bienvenue au %(name)s / Welcome to %(name)s' % {'name': assooptions.name }, '',
|
||||||
general_options.email_from, [self.email], html_message=t.render(c))
|
general_options.email_from, [self.email], html_message=t.render(c))
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
<p>Votre pseudo est : {{pseudo}}</p>
|
<p>Votre pseudo est : {{pseudo}}</p>
|
||||||
|
|
||||||
{{personalized_message_fr}}
|
{{welcome_mail_fr|safe}}
|
||||||
|
|
||||||
<p>Pour nous faire part de toute remarque, suggestion ou problème vous pouvez nous envoyer un mail à {{asso_email}}.</p>
|
<p>Pour nous faire part de toute remarque, suggestion ou problème vous pouvez nous envoyer un mail à {{asso_email}}.</p>
|
||||||
|
|
||||||
|
@ -17,7 +17,7 @@ L'équipe de {{asso_name}}.</p>
|
||||||
|
|
||||||
<p>Your username is : {{pseudo}}<p>
|
<p>Your username is : {{pseudo}}<p>
|
||||||
|
|
||||||
{{personalized_message_en}}
|
{{welcome_mail_en|safe}}
|
||||||
|
|
||||||
<p>For any information, suggestion or problem, you can contact us via email at<br>
|
<p>For any information, suggestion or problem, you can contact us via email at<br>
|
||||||
{{asso_email}}.</p>
|
{{asso_email}}.</p>
|
||||||
|
|
Loading…
Reference in a new issue