diff --git a/users/forms.py b/users/forms.py
index 861fd292..20121540 100644
--- a/users/forms.py
+++ b/users/forms.py
@@ -343,6 +343,7 @@ class ClubForm(FieldPermissionFormMixin, ModelForm):
self.fields['room'].label = 'Local'
self.fields['room'].empty_label = "Pas de chambre"
self.fields['school'].empty_label = "Séléctionner un établissement"
+ self.fields['mailing'].label = 'Utiliser une mailing'
class Meta:
model = Club
@@ -355,6 +356,7 @@ class ClubForm(FieldPermissionFormMixin, ModelForm):
'room',
'telephone',
'shell',
+ 'mailing'
]
def clean_telephone(self):
diff --git a/users/migrations/0069_club_mailing.py b/users/migrations/0069_club_mailing.py
new file mode 100644
index 00000000..17970494
--- /dev/null
+++ b/users/migrations/0069_club_mailing.py
@@ -0,0 +1,20 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.10.7 on 2018-03-07 15:34
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('users', '0068_auto_20180107_2245'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='club',
+ name='mailing',
+ field=models.BooleanField(default=False),
+ ),
+ ]
diff --git a/users/models.py b/users/models.py
index 785f853f..c15365de 100644
--- a/users/models.py
+++ b/users/models.py
@@ -850,6 +850,9 @@ class Club(User):
to='users.Adherent',
related_name='club_members'
)
+ mailing = models.BooleanField(
+ default = False
+ )
def can_create(user_request, *args, **kwargs):
"""Check if an user can create an user object.
diff --git a/users/serializers.py b/users/serializers.py
index 8f4c050d..95388d41 100644
--- a/users/serializers.py
+++ b/users/serializers.py
@@ -23,9 +23,16 @@
#Maël Kervella
from rest_framework import serializers
-from users.models import User
+from users.models import Club, Adherent
+
+class MailingSerializer(serializers.ModelSerializer):
+ name = serializers.CharField(source='pseudo')
-class MailSerializer(serializers.ModelSerializer):
class Meta:
- model = User
+ model = Club
+ fields = ('name',)
+
+class MailingMemberSerializer(serializers.ModelSerializer):
+ class Meta:
+ model = Adherent
fields = ('email',)
diff --git a/users/templates/users/profil.html b/users/templates/users/profil.html
index 53056e95..89296218 100644
--- a/users/templates/users/profil.html
+++ b/users/templates/users/profil.html
@@ -60,8 +60,17 @@ with this program; if not, write to the Free Software Foundation, Inc.,
+ {% if users.is_class_club %}
+ Mailing |
+ {% if users.club.mailing %}
+ {{ users.pseudo }}(-admin) |
+ {% else %}
+ Mailing désactivée |
+ {% endif %}
+ {% else %}
Prénom |
{{ users.name }} |
+ {% endif %}
Nom |
{{ users.surname }} |
diff --git a/users/urls.py b/users/urls.py
index 425f9618..f15208d5 100644
--- a/users/urls.py
+++ b/users/urls.py
@@ -102,5 +102,29 @@ urlpatterns = [
),
url(r'^$', views.index, name='index'),
url(r'^index_clubs/$', views.index_clubs, name='index-clubs'),
- url(r'^rest/mailing/$', views.mailing, name='mailing'),
+ url(
+ r'^rest/ml/std/$',
+ views.ml_std_list,
+ name='ml-std-list'
+ ),
+ url(
+ r'^rest/ml/std/member/(?P\w+)/$',
+ views.ml_std_members,
+ name='ml-std-members'
+ ),
+ url(
+ r'^rest/ml/club/$',
+ views.ml_club_list,
+ name='ml-club-list'
+ ),
+ url(
+ r'^rest/ml/club/admin/(?P\w+)/$',
+ views.ml_club_admins,
+ name='ml-club-admins'
+ ),
+ url(
+ r'^rest/ml/club/member/(?P\w+)/$',
+ views.ml_club_members,
+ name='ml-club-members'
+ ),
]
diff --git a/users/views.py b/users/views.py
index 8d9ec603..5d0e31a6 100644
--- a/users/views.py
+++ b/users/views.py
@@ -52,7 +52,7 @@ from rest_framework.renderers import JSONRenderer
from reversion.models import Version
from reversion import revisions as reversion
-from users.serializers import MailSerializer
+from users.serializers import MailingSerializer, MailingMemberSerializer
from users.models import (
User,
Ban,
@@ -843,9 +843,64 @@ class JSONResponse(HttpResponse):
@csrf_exempt
@login_required
@permission_required('machines.serveur')
-def mailing(request):
- """ Fonction de serialisation des addresses mail de tous les users
- Pour generation de ml all users"""
- mails = all_has_access().values('email').distinct()
- seria = MailSerializer(mails, many=True)
+def ml_std_list(request):
+ """ API view sending all the available standard mailings"""
+ return JSONResponse([
+ {'name': 'adherents'}
+ ])
+
+
+@csrf_exempt
+@login_required
+@permission_required('machines.serveur')
+def ml_std_members(request, ml_name):
+ """ API view sending all the members for a standard mailing"""
+ # All with active connextion
+ if ml_name == 'adherents':
+ members = all_has_access().values('email').distinct()
+ # Unknown mailing
+ else:
+ messages.error(request, "Cette mailing n'existe pas")
+ return redirect(reverse('index'))
+ seria = MailingMemberSerializer(members, many=True)
+ return JSONResponse(seria.data)
+
+
+@csrf_exempt
+@login_required
+@permission_required('machines.serveur')
+def ml_club_list(request):
+ """ API view sending all the available club mailings"""
+ clubs = Club.objects.filter(mailing=True).values('pseudo')
+ seria = MailingSerializer(clubs, many=True)
+ return JSONResponse(seria.data)
+
+
+@csrf_exempt
+@login_required
+@permission_required('machines.serveur')
+def ml_club_admins(request, ml_name):
+ """ API view sending all the administrators for a specific club mailing"""
+ try:
+ club = Club.objects.get(mailing=True, pseudo=ml_name)
+ except Club.DoesNotExist:
+ messages.error(request, "Cette mailing n'existe pas")
+ return redirect(reverse('index'))
+ members = club.administrators.all().values('email').distinct()
+ seria = MailingMemberSerializer(members, many=True)
+ return JSONResponse(seria.data)
+
+
+@csrf_exempt
+@login_required
+@permission_required('machines.serveur')
+def ml_club_members(request, ml_name):
+ """ API view sending all the members for a specific club mailing"""
+ try:
+ club = Club.objects.get(mailing=True, pseudo=ml_name)
+ except Club.DoesNotExist:
+ messages.error(request, "Cette mailing n'existe pas")
+ return redirect(reverse('index'))
+ members = club.administrators.all().values('email').distinct() | club.members.all().values('email').distinct()
+ seria = MailingMemberSerializer(members, many=True)
return JSONResponse(seria.data)