mirror of
https://gitlab.crans.org/bde/nk20
synced 2025-06-20 17:41:55 +02:00
Send mail to users when the note balance is negative
This commit is contained in:
@ -131,15 +131,22 @@ class Profile(models.Model):
|
||||
return reverse('user_detail', args=(self.pk,))
|
||||
|
||||
def send_email_validation_link(self):
|
||||
subject = _("Activate your Note Kfet account")
|
||||
message = loader.render_to_string('registration/mails/email_validation_email.html',
|
||||
subject = "[Note Kfet]" + _("Activate your Note Kfet account")
|
||||
message = loader.render_to_string('registration/mails/email_validation_email.txt',
|
||||
{
|
||||
'user': self.user,
|
||||
'domain': os.getenv("NOTE_URL", "note.example.com"),
|
||||
'token': email_validation_token.make_token(self.user),
|
||||
'uid': urlsafe_base64_encode(force_bytes(self.user.pk)),
|
||||
})
|
||||
self.user.email_user(subject, message)
|
||||
html = loader.render_to_string('registration/mails/email_validation_email.txt',
|
||||
{
|
||||
'user': self.user,
|
||||
'domain': os.getenv("NOTE_URL", "note.example.com"),
|
||||
'token': email_validation_token.make_token(self.user),
|
||||
'uid': urlsafe_base64_encode(force_bytes(self.user.pk)),
|
||||
})
|
||||
self.user.email_user(subject, message, html_message=html)
|
||||
|
||||
|
||||
class Club(models.Model):
|
||||
|
@ -7,6 +7,7 @@ from django.conf import settings
|
||||
from django.core.exceptions import ValidationError
|
||||
from django.core.validators import RegexValidator
|
||||
from django.db import models
|
||||
from django.template.loader import render_to_string
|
||||
from django.utils import timezone
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from polymorphic.models import PolymorphicModel
|
||||
@ -67,6 +68,13 @@ class Note(PolymorphicModel):
|
||||
|
||||
pretty.short_description = _('Note')
|
||||
|
||||
@property
|
||||
def last_negative_duration(self):
|
||||
if self.balance >= 0 or self.last_negative is None:
|
||||
return None
|
||||
delta = timezone.now() - self.last_negative
|
||||
return "{:d} jours".format(delta.days)
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
"""
|
||||
Save note with it's alias (called in polymorphic children)
|
||||
@ -128,6 +136,21 @@ class NoteUser(Note):
|
||||
def pretty(self):
|
||||
return _("%(user)s's note") % {'user': str(self.user)}
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
if self.pk and self.balance < 0:
|
||||
old_note = NoteUser.objects.get(pk=self.pk)
|
||||
if old_note.balance >= 0:
|
||||
# Passage en négatif
|
||||
self.last_negative = timezone.now()
|
||||
self.send_mail_negative_balance()
|
||||
super().save(*args, **kwargs)
|
||||
|
||||
def send_mail_negative_balance(self):
|
||||
plain_text = render_to_string("note/mails/negative_balance.txt", dict(note=self))
|
||||
html = render_to_string("note/mails/negative_balance.html", dict(note=self))
|
||||
self.user.email_user("[Note Kfet] Passage en négatif (compte n°{:d})"
|
||||
.format(self.user.pk), plain_text, html_message=html)
|
||||
|
||||
|
||||
class NoteClub(Note):
|
||||
"""
|
||||
|
@ -7,7 +7,7 @@ from django.utils import timezone
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from polymorphic.models import PolymorphicModel
|
||||
|
||||
from .notes import Note, NoteClub, NoteSpecial
|
||||
from .notes import Note, NoteClub, NoteSpecial, NoteUser
|
||||
from ..templatetags.pretty_money import pretty_money
|
||||
|
||||
"""
|
||||
|
Submodule apps/scripts updated: dce51ad261...4b37f8286f
Reference in New Issue
Block a user