This commit is contained in:
Ross
2021-12-15 20:59:48 +00:00
parent 2ff8b54d28
commit 1af466785b
3 changed files with 25 additions and 10 deletions
+16 -3
View File
@@ -1,4 +1,6 @@
from django.db import models
from django.http import request
from smtplib import SMTPException
from django.urls import reverse
@@ -222,6 +224,8 @@ class CidUser(models.Model):
email = models.EmailField(blank=True)
supervisor_email = models.EmailField(blank=True)
login_email_sent = models.BooleanField(default=False)
group = models.ForeignKey("CidUserGroup", on_delete=models.SET_NULL, null=True)
def __str__(self) -> str:
@@ -230,9 +234,11 @@ class CidUser(models.Model):
def check_passcode(self, passcode) -> bool:
return self.passcode == passcode
def email_details(self):
def email_details(self, resend=False):
if self.login_email_sent and not self.resend:
return False, "Already sent."
login_url = reverse("cid_selector")
login_url = request.build_absolute_uri(reverse("cid_selector"))
msg = f"""
See below for you details for: {self.group}
@@ -252,7 +258,14 @@ class CidUser(models.Model):
Please note this inbox is not monitored. Direct all enquiries to ...
"""
send_mail("Candidate Details", msg, "test@xkjq.uk", [self.email])
try:
send_mail("Candidate Details", msg, "test@xkjq.uk", [self.email], fail_silently=False)
except SMTPException as e:
return False, e
self.login_email_sent = True
self.save()
return True, ""
class CidUserExam(models.Model):
content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
+5 -5
View File
@@ -2,8 +2,8 @@
{% block content %}
The following users have been emailed:
{% for u in users %}
<p>{{u.cid}}: {{u.email}}</p>
{% endfor %}
{% endblock %}
Emails sent as below:
{% for u, success, msg in users %}
<p>{{u.cid}}: {{u.email}} [success={{success}}] ({{msg}})</p>
{% endfor %}
{% endblock %}
+4 -2
View File
@@ -1030,13 +1030,15 @@ def group_email(request, pk):
users = group.ciduser_set.all()
results = []
for u in users:
u.email_details()
success, msg = u.email_details()
results.append((u, success, msg))
return render(
request,
"generic/group_emailed.html",
{"users": users},
{"results": results},
)