mirror of
https://github.com/nikdoof/test-auth.git
synced 2025-12-14 06:42: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
|
||||
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)
|
||||
|
||||
@@ -91,7 +91,11 @@ def create_request(request, groupid):
|
||||
obj.group = group
|
||||
obj.changed_by = request.user
|
||||
obj.save()
|
||||
|
||||
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
|
||||
else:
|
||||
form = GroupRequestForm() # An unbound form
|
||||
@@ -100,29 +104,35 @@ def create_request(request, groupid):
|
||||
|
||||
|
||||
@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:
|
||||
requestobj.status = REQUEST_ACCEPTED
|
||||
requestobj.user.groups.add(requestobj.group)
|
||||
requestobj.changed_by = request.user
|
||||
requestobj.save()
|
||||
if request.user in obj.group.groupinformation.admins.all() or request.user.is_superuser:
|
||||
obj.status = REQUEST_ACCEPTED
|
||||
obj.user.groups.add(obj.group)
|
||||
obj.changed_by = request.user
|
||||
obj.save()
|
||||
update_user_access.delay(requestobj.user.id)
|
||||
|
||||
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]))
|
||||
|
||||
|
||||
@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))
|
||||
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]))
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user