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

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
This commit is contained in:
Maël Kervella 2018-03-07 16:04:43 +00:00
parent 377447d23b
commit 8c2f634901
3 changed files with 96 additions and 10 deletions

View file

@ -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 MailingSerializer(serializers.ModelSerializer):
name = serializers.CharField(source='pseudo')
class MailSerializer(serializers.ModelSerializer):
class Meta: class Meta:
model = User model = Club
fields = ('name',)
class MailingMemberSerializer(serializers.ModelSerializer):
class Meta:
model = Adherent
fields = ('email',) fields = ('email',)

View file

@ -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'
),
] ]

View file

@ -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):
@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)