Add automatic mail when an eticket has been bought

This commit is contained in:
Antoine Bartuccio 2016-10-21 13:09:46 +02:00
parent 3e99f97b7a
commit b00fc23fc4
4 changed files with 1924 additions and 2263 deletions

View File

@ -1,4 +1,5 @@
from django.db import models from django.db import models
from django.core.mail import send_mail
from django.contrib.auth.models import AbstractBaseUser, PermissionsMixin, UserManager, Group as AuthGroup, GroupManager as AuthGroupManager, AnonymousUser as AuthAnonymousUser from django.contrib.auth.models import AbstractBaseUser, PermissionsMixin, UserManager, Group as AuthGroup, GroupManager as AuthGroupManager, AnonymousUser as AuthAnonymousUser
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from django.utils import timezone from django.utils import timezone
@ -332,6 +333,8 @@ class User(AbstractBaseUser):
""" """
Sends an email to this User. Sends an email to this User.
""" """
if from_email is None:
from_email = settings.DEFAULT_FROM_EMAIL
send_mail(subject, message, from_email, [self.email], **kwargs) send_mail(subject, message, from_email, [self.email], **kwargs)
def generate_username(self): def generate_username(self):

View File

@ -4,6 +4,7 @@ from django.utils import timezone
from django.conf import settings from django.conf import settings
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from django.forms import ValidationError from django.forms import ValidationError
from django.contrib.sites.shortcuts import get_current_site
from datetime import timedelta from datetime import timedelta
import random import random
@ -54,6 +55,15 @@ class Customer(models.Model):
self.amount -= s.quantity * s.unit_price self.amount -= s.quantity * s.unit_price
self.save() self.save()
def get_absolute_url(self):
return reverse('core:user_account', kwargs={'user_id': self.user.pk})
def get_full_url(self):
request = None
full_url = ''.join(['http://', settings.SITH_URL, self.get_absolute_url()])
return full_url
class ProductType(models.Model): class ProductType(models.Model):
""" """
This describes a product type This describes a product type
@ -292,6 +302,32 @@ class Selling(models.Model):
self.customer.save() self.customer.save()
super(Selling, self).delete(*args, **kwargs) super(Selling, self).delete(*args, **kwargs)
def send_mail_customer(self):
subject = _('Eticket bought for the event %(event)s') % {'event': self.product.name}
message_html = _(
"You bought an eticket for the event %(event)s.\nYou can download it on this page %(url)s."
) % {
'event': self.product.name,
'url':''.join((
'<a href="',
self.customer.get_full_url(),
'">',
self.customer.get_full_url(),
'</a>'
))
}
message_txt = _(
"You bought an eticket for the event %(event)s.\nYou can download it on this page %(url)s."
) % {
'event': self.product.name,
'url': self.customer.get_full_url(),
}
self.customer.user.email_user(
subject,
message_txt,
html_message=message_html
)
def save(self, *args, **kwargs): def save(self, *args, **kwargs):
if not self.date: if not self.date:
self.date = timezone.now() self.date = timezone.now()
@ -330,6 +366,10 @@ class Selling(models.Model):
duration=settings.SITH_SUBSCRIPTIONS[sub.subscription_type]['duration'], duration=settings.SITH_SUBSCRIPTIONS[sub.subscription_type]['duration'],
start=sub.subscription_start) start=sub.subscription_start)
sub.save() sub.save()
try:
if self.product.eticket:
self.send_mail_customer()
except:pass
super(Selling, self).save(*args, **kwargs) super(Selling, self).save(*args, **kwargs)
class Permanency(models.Model): class Permanency(models.Model):

Binary file not shown.

File diff suppressed because it is too large Load Diff