mirror of
https://github.com/nikdoof/test-auth.git
synced 2025-12-15 07:12:16 +00:00
Send emails out to users on major Group changes
This commit is contained in:
0
app/groups/templates/groups/email/accepted.html
Normal file
0
app/groups/templates/groups/email/accepted.html
Normal file
0
app/groups/templates/groups/email/accepted.txt
Normal file
0
app/groups/templates/groups/email/accepted.txt
Normal file
0
app/groups/templates/groups/email/rejected.html
Normal file
0
app/groups/templates/groups/email/rejected.html
Normal file
0
app/groups/templates/groups/email/rejected.txt
Normal file
0
app/groups/templates/groups/email/rejected.txt
Normal file
0
app/groups/templates/groups/email/request.html
Normal file
0
app/groups/templates/groups/email/request.html
Normal file
0
app/groups/templates/groups/email/request.txt
Normal file
0
app/groups/templates/groups/email/request.txt
Normal file
15
app/groups/utils.py
Normal file
15
app/groups/utils.py
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
from django.conf import settings
|
||||||
|
from django.core.mail import EmailMultiAlternatives
|
||||||
|
from django.template.loader import get_template
|
||||||
|
from django.template import Context
|
||||||
|
|
||||||
|
def send_group_mail(request, to_email, subject, email_text_template, email_html_template):
|
||||||
|
"""Sends a email to a group of people using a standard layout"""
|
||||||
|
|
||||||
|
# Mail the admins to inform them of a new request
|
||||||
|
ctx = Context({'request': obj})
|
||||||
|
to_email = group.admins.values_list('email', flat=True)
|
||||||
|
msg = EmailMultiAlternatives(subject, get_template(email_text_template).render(ctx), getattr(settings, 'SERVER_EMAIL', 'auth@pleaseignore.com'), to_email)
|
||||||
|
msg.attach_alternative(get_template(email_html_template).render(ctx), 'text/html')
|
||||||
|
mag.send(fail_silently=True)
|
||||||
|
|
||||||
@@ -62,7 +62,7 @@ def group_list(request):
|
|||||||
|
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
def create_request(request, groupid):
|
def create_request(request, groupid, email_text_template='email/request.txt', email_html_template='email/request.html'):
|
||||||
|
|
||||||
group = get_object_or_404(Group, id=groupid)
|
group = get_object_or_404(Group, id=groupid)
|
||||||
|
|
||||||
@@ -91,7 +91,11 @@ def create_request(request, groupid):
|
|||||||
obj.group = group
|
obj.group = group
|
||||||
obj.changed_by = request.user
|
obj.changed_by = request.user
|
||||||
obj.save()
|
obj.save()
|
||||||
|
|
||||||
messages.add_message(request, messages.INFO, "You membership request has been created.")
|
messages.add_message(request, messages.INFO, "You membership request has been created.")
|
||||||
|
to_email = obj.group.groupinformation.admins.values_list('email', flat=True)
|
||||||
|
send_group_email(obj, to_email, '[Auth] %s has requested membership to %s' % (user.username, group.name), email_text_template, email_html_template)
|
||||||
|
|
||||||
return HttpResponseRedirect(reverse('groups.views.group_list')) # Redirect after POST
|
return HttpResponseRedirect(reverse('groups.views.group_list')) # Redirect after POST
|
||||||
else:
|
else:
|
||||||
form = GroupRequestForm() # An unbound form
|
form = GroupRequestForm() # An unbound form
|
||||||
@@ -100,29 +104,35 @@ def create_request(request, groupid):
|
|||||||
|
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
def accept_request(request, requestid):
|
def accept_request(request, requestid, email_text_template='email/accepted.txt', email_html_template='email/accepted.html'):
|
||||||
|
|
||||||
requestobj = get_object_or_404(GroupRequest, id=requestid)
|
obj = get_object_or_404(GroupRequest, id=requestid)
|
||||||
|
|
||||||
if request.user in requestobj.group.groupinformation.admins.all() or request.user.is_superuser:
|
if request.user in obj.group.groupinformation.admins.all() or request.user.is_superuser:
|
||||||
requestobj.status = REQUEST_ACCEPTED
|
obj.status = REQUEST_ACCEPTED
|
||||||
requestobj.user.groups.add(requestobj.group)
|
obj.user.groups.add(obj.group)
|
||||||
requestobj.changed_by = request.user
|
obj.changed_by = request.user
|
||||||
requestobj.save()
|
obj.save()
|
||||||
update_user_access.delay(requestobj.user.id)
|
update_user_access.delay(requestobj.user.id)
|
||||||
|
|
||||||
messages.add_message(request, messages.INFO, "%s has been accepted into %s" % (requestobj.user, requestobj.group))
|
messages.add_message(request, messages.INFO, "%s has been accepted into %s" % (requestobj.user, requestobj.group))
|
||||||
|
send_group_email(obj, [obj.user.email], '[Auth] Your membership to %s has been accepted.' % group.name, email_text_template, email_html_template)
|
||||||
|
|
||||||
return HttpResponseRedirect(reverse('groups.views.admin_group', args=[requestobj.group.id]))
|
return HttpResponseRedirect(reverse('groups.views.admin_group', args=[requestobj.group.id]))
|
||||||
|
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
def reject_request(request, requestid):
|
def reject_request(request, requestid, email_text_template='email/rejected.txt', email_html_template='email/rejected.html'):
|
||||||
|
|
||||||
|
obj = get_object_or_404(GroupRequest, id=requestid)
|
||||||
|
if request.user in obj.group.groupinformation.admins.all() or request.user.is_superuser:
|
||||||
|
obj.status = REQUEST_REJECTED
|
||||||
|
obj.changed_by = request.user
|
||||||
|
obj.save()
|
||||||
|
|
||||||
requestobj = get_object_or_404(GroupRequest, id=requestid)
|
|
||||||
if request.user in requestobj.group.groupinformation.admins.all() or request.user.is_superuser:
|
|
||||||
requestobj.status = REQUEST_REJECTED
|
|
||||||
requestobj.changed_by = request.user
|
|
||||||
requestobj.save()
|
|
||||||
messages.add_message(request, messages.INFO, "%s has been rejected for %s" % (requestobj.user, requestobj.group))
|
messages.add_message(request, messages.INFO, "%s has been rejected for %s" % (requestobj.user, requestobj.group))
|
||||||
|
send_group_email(obj, [obj.user.email], '[Auth] Your membership to %s has been rejected.' % group.name, email_text_template, email_html_template)
|
||||||
|
|
||||||
return HttpResponseRedirect(reverse('groups.views.admin_group', args=[requestobj.group.id]))
|
return HttpResponseRedirect(reverse('groups.views.admin_group', args=[requestobj.group.id]))
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user