Added email notifications
This commit is contained in:
@@ -1,10 +1,11 @@
|
||||
from ..modules import db
|
||||
from ..modules import db, mail
|
||||
from ..tools.forms import JsonEncodedDict
|
||||
from ..tools.encryption import decrypt, encrypt
|
||||
from ..tools.logs import write
|
||||
from .test import Test
|
||||
|
||||
from flask_login import current_user
|
||||
from flask_mail import Message
|
||||
|
||||
from datetime import datetime, timedelta
|
||||
from uuid import uuid4
|
||||
@@ -110,4 +111,67 @@ class Entry(db.Model):
|
||||
db.session.delete(self)
|
||||
db.session.commit()
|
||||
write('system.log', f'The entry {id} by {name} has been deleted by {current_user.get_username()}.')
|
||||
return True, 'Entry deleted.'
|
||||
return True, 'Entry deleted.'
|
||||
|
||||
def notify_result(self):
|
||||
score = round(100*self.result['score']/self.result['max'])
|
||||
tags_low = { tag: tag_result['max'] - tag_result['scored'] for tag, tag_result in self.result['tags'].items() }
|
||||
sorted_low_tags = sorted(tags_low.items(), key=lambda x: x[1], reverse=True)
|
||||
tag_output = [ tag[0] for tag in sorted_low_tags[0:3] if tag[1] > 3]
|
||||
revision_plain = ''
|
||||
revision_html = ''
|
||||
if self.result['grade'] == 'pass':
|
||||
flavour_text = """Well done on successfully completing the refereeing theory exam. We really appreciate members of our community taking the time to get qualified to referee.
|
||||
"""
|
||||
elif self.result['grade'] == 'merit':
|
||||
flavour_text = """Congratulations on achieving a merit in the refereeing exam. We are delighted that members of our community work so hard with refereeing.
|
||||
"""
|
||||
elif self.result['grade'] == 'fail':
|
||||
flavour_text = """Unfortunately, you were not successful in passing the theory exam in this attempt. We hope that this does not dissuade you, and that you try again in the future.
|
||||
"""
|
||||
revision_plain = f"""Based on your answers, we would also suggest you brush up on the following topics for your next attempt:\n\n
|
||||
{','.join(tag_output)}\n\n
|
||||
"""
|
||||
revision_html = f"""<p>Based on your answers, we would also suggest you brush up on the following topics for your next attempt:</p>
|
||||
<ul>
|
||||
<li>{'</li><li>'.join(tag_output)}</li>
|
||||
</ul>
|
||||
"""
|
||||
email = Message(
|
||||
subject='RefTest | SKA Refereeing Theory Exam Results',
|
||||
recipients=[self.get_email()],
|
||||
body=f"""
|
||||
SKA Refereeing Theory Exam
|
||||
Candidate Results
|
||||
Dear {self.get_first_name()},
|
||||
This email is to confirm that you have taken the SKA Refereeing Theory Exam. Your submission has been evaluated and your results are as follows:
|
||||
{self.get_surname()}, {self.get_first_name()}
|
||||
Email Address: {self.get_email()}
|
||||
{f'Club: {self.get_club()}' if self.club else ''}
|
||||
Date of Exam: {self.end_time.strftime('%d %b %Y')}
|
||||
Score: {score}%
|
||||
Grade: {self.result['grade']}
|
||||
{flavour_text}
|
||||
{revision_plain}
|
||||
Thank you for taking the time to become a qualified referee.
|
||||
Best wishes,
|
||||
SKA Refereeing
|
||||
""",
|
||||
html=f"""
|
||||
<h1>SKA Refereeing Theory Exam</h1>
|
||||
<h2>Candidate Results</h2>
|
||||
<p>Dear {self.get_first_name()},</p>
|
||||
<p>This email is to confirm that you have taken the SKA Refereeing Theory Exam. Your submission has been evaluated and your results are as follows:</p>
|
||||
<h3>{self.get_surname()}, {self.get_first_name()}</h3>
|
||||
<p><strong>Email Address</strong>: {self.get_email()}</p>
|
||||
{f'<p><strong>Club</strong>: {self.get_club()}</p>' if self.club else ''}
|
||||
<h1>{score}%</h1>
|
||||
<h2>{self.result['grade']}</h2>
|
||||
<p>{flavour_text}</p>
|
||||
{revision_html}
|
||||
<p>Thank you for taking the time to become a qualified referee.</p>
|
||||
<p>Have a nice day!</p>
|
||||
<p>Best wishes, <br/> SKA Refereeing</p>
|
||||
"""
|
||||
)
|
||||
mail.send(email)
|
Reference in New Issue
Block a user