Commit 8c2f6349 authored by Maël Kervella's avatar Maël Kervella

REST : Add API for mailing for club and other

Access /users/rest/ml/std/
    for list of standard mailings
Access /users/rest/ml/std/member/<ml_name>/
    for list of members of specific standard mailing
Access /users/rest/ml/club/
    for list of club mailings
Access /users/rest/ml/club/member/<ml_name>/
    for list of members of specific club mailing
Access /users/rest/ml/club/admin/<ml_name>/
    for list of admins of specific club mailing
parent 377447d2
...@@ -23,9 +23,16 @@ ...@@ -23,9 +23,16 @@
#Maël Kervella #Maël Kervella
from rest_framework import serializers from rest_framework import serializers
from users.models import User from users.models import Club, Adherent
class MailSerializer(serializers.ModelSerializer): class MailingSerializer(serializers.ModelSerializer):
name = serializers.CharField(source='pseudo')
class Meta:
model = Club
fields = ('name',)
class MailingMemberSerializer(serializers.ModelSerializer):
class Meta: class Meta:
model = User model = Adherent
fields = ('email',) fields = ('email',)
...@@ -102,5 +102,29 @@ urlpatterns = [ ...@@ -102,5 +102,29 @@ urlpatterns = [
), ),
url(r'^$', views.index, name='index'), url(r'^$', views.index, name='index'),
url(r'^index_clubs/$', views.index_clubs, name='index-clubs'), 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<ml_name>\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<ml_name>\w+)/$',
views.ml_club_admins,
name='ml-club-admins'
),
url(
r'^rest/ml/club/member/(?P<ml_name>\w+)/$',
views.ml_club_members,
name='ml-club-members'
),
] ]
...@@ -52,7 +52,7 @@ from rest_framework.renderers import JSONRenderer ...@@ -52,7 +52,7 @@ from rest_framework.renderers import JSONRenderer
from reversion.models import Version from reversion.models import Version
from reversion import revisions as reversion from reversion import revisions as reversion
from users.serializers import MailSerializer from users.serializers import MailingSerializer, MailingMemberSerializer
from users.models import ( from users.models import (
User, User,
Ban, Ban,
...@@ -843,9 +843,64 @@ class JSONResponse(HttpResponse): ...@@ -843,9 +843,64 @@ class JSONResponse(HttpResponse):
@csrf_exempt @csrf_exempt
@login_required @login_required
@permission_required('machines.serveur') @permission_required('machines.serveur')
def mailing(request): def ml_std_list(request):
""" Fonction de serialisation des addresses mail de tous les users """ API view sending all the available standard mailings"""
Pour generation de ml all users""" return JSONResponse([
mails = all_has_access().values('email').distinct() {'name': 'adherents'}
seria = MailSerializer(mails, many=True) ])
@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) return JSONResponse(seria.data)
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment