UPD: trainer email address is now optional.

This commit is contained in:
2018-05-28 12:26:57 +02:00
parent 24e2a2effc
commit 12760f48cd
4 changed files with 74 additions and 24 deletions

View File

@@ -3,6 +3,7 @@ import datetime
import logging
import os
import re
import unicodedata
import uuid
from babel.dates import format_date
from django.conf import settings
@@ -263,10 +264,23 @@ class Event(models.Model):
if not self.id:
user_model = get_user_model()
username = self.trainer_email.lower()
if not username:
s = self.trainer_firstname.replace(u'ß', u'ss')
s = unicodedata.normalize('NFKD', s).encode('ascii', 'ignore')
s = re.sub(r'[^a-z-]', '', s.lower())
username = s
s = self.trainer_familyname.replace(u'ß', u'ss')
s = unicodedata.normalize('NFKD', s).encode('ascii', 'ignore')
s = re.sub(r'[^a-z-]', '', s.lower())
username += '.' + s
s = re.sub(r'[^0-9]', '', str(self.trainer_phone))
username += '@' + s
try:
owner = user_model.objects.get(username=self.trainer_email.lower())
owner = user_model.objects.get(username=username)
except user_model.DoesNotExist:
owner = user_model(username=self.trainer_email.lower(),
owner = user_model(username=username,
first_name=self.trainer_firstname,
last_name=self.trainer_familyname,
email=self.trainer_email,
@@ -285,14 +299,16 @@ class Event(models.Model):
managers = get_users_by_role('manage_all')
managers += get_users_by_role('manage_{}'.format(self.sport.lower()))
for user in managers:
action = OneClickAction(command='EA')
action.parameters = '{event},{user}'.format(event=self.id, user=user.id)
action.save()
email = emails.EventToAcceptMail(recipient=user, event=self, accept_action=action)
email.send()
if user.email:
action = OneClickAction(command='EA')
action.parameters = '{event},{user}'.format(event=self.id, user=user.id)
action.save()
email = emails.EventToAcceptMail(recipient=user, event=self, accept_action=action)
email.send()
email = emails.NewEventMail(recipient=self.owner, event=self)
email.send()
if self.owner.email:
email = emails.NewEventMail(recipient=self.owner, event=self)
email.send()
def accept(self, user=None):
if not self.accepted:
@@ -309,14 +325,16 @@ class Event(models.Model):
publishers = get_users_by_role('publish_incremental')
for user in publishers:
action = OneClickAction(command='EP')
action.parameters = '{event},{user}'.format(event=self.id, user=user.id)
action.save()
email = emails.EventToPublishMail(recipient=user, event=self, confirm_publication_action=action)
email.send()
if user.email:
action = OneClickAction(command='EP')
action.parameters = '{event},{user}'.format(event=self.id, user=user.id)
action.save()
email = emails.EventToPublishMail(recipient=user, event=self, confirm_publication_action=action)
email.send()
email = emails.EventAcceptedMail(recipient=self.owner, event=self)
email.send()
if self.owner.email:
email = emails.EventAcceptedMail(recipient=self.owner, event=self)
email.send()
return self.number
else:
@@ -453,6 +471,9 @@ class Event(models.Model):
def get_numeric_date(self, begin_date=None, end_date=None):
return self.get_formated_date(begin_date=begin_date, end_date=end_date, format='numeric')
def get_trainer_full_name(self):
return u'%s %s' % (self.trainer_firstname, self.trainer_familyname)
def get_template_context(self, context=None):
r = {
'event': self,
@@ -494,6 +515,7 @@ class Event(models.Model):
'pre_meeting_2': self.pre_meeting_2,
'trainer_firstname': self.trainer_firstname,
'trainer_familyname': self.trainer_familyname,
'trainer_fullname': self.get_trainer_full_name(),
'trainer_email': self.trainer_email,
'trainer_phone': self.trainer_phone,
'trainer_2_fullname': self.trainer_2_fullname,