accepting alternative email addresses
This commit is contained in:
@@ -131,6 +131,56 @@ class TemplateListField(models.TextField):
|
||||
value = self._get_val_from_obj(obj)
|
||||
return self.get_deb_prep_value(value)
|
||||
|
||||
# model for Emails field
|
||||
class AlternativeEmails(models.TextField):
|
||||
def __init__(self, *args, **kwargs):
|
||||
self.token = kwargs.pop('token',',')
|
||||
super(AlternativeEmails, self).__init__(*args,**kwargs)
|
||||
|
||||
def to_python(self, value):
|
||||
if not value: return
|
||||
if isinstance(value, list):
|
||||
return value
|
||||
# remove double quotes and brackets
|
||||
value = re.sub(r'u\"','',value)
|
||||
value = re.sub(r'u\'','',value)
|
||||
value = re.sub(r'\\','',value)
|
||||
value = re.sub(r'\"','',value)
|
||||
value = re.sub(r'\'','',value)
|
||||
value = re.sub(r'\[','',value)
|
||||
value = re.sub(r'\]','',value)
|
||||
value = re.sub(r'\[\[','[',value)
|
||||
value = re.sub(r'\]\]',']',value)
|
||||
value = re.sub(r'\ \ ',' ',value)
|
||||
value = re.sub(r', ',',',value)
|
||||
|
||||
return value.split(self.token)
|
||||
|
||||
def from_db_value(self,value, expression, connection):
|
||||
if value is None:
|
||||
return value
|
||||
if isinstance(value, list):
|
||||
return value
|
||||
return value.split(self.token)
|
||||
|
||||
def get_db_prep_value(self, value, connection, prepared=False):
|
||||
if not value: return
|
||||
assert(isinstance(value, list) or isinstance(value, tuple))
|
||||
newlist = []
|
||||
for s in value:
|
||||
|
||||
try:
|
||||
validate_email(s)
|
||||
newlist.append(s)
|
||||
except ValidationError:
|
||||
pass
|
||||
|
||||
return self.token.join([str(s) for s in newlist])
|
||||
|
||||
def value_to_string(self, obj):
|
||||
value = self._get_val_from_obj(obj)
|
||||
return self.get_deb_prep_value(value)
|
||||
|
||||
# model for Power Zone names
|
||||
class PowerZonesField(models.TextField):
|
||||
# __metaclass__ = models.SubfieldBase
|
||||
@@ -804,6 +854,8 @@ class Rower(models.Model):
|
||||
'Pwr TR',
|
||||
'Pwr AN'])
|
||||
|
||||
emailalternatives = AlternativeEmails(default=[],null=True,blank=True,verbose_name='Alternative Email addresses (separate with ",")')
|
||||
|
||||
# Site Settings
|
||||
workflowleftpanel = TemplateListField(default=defaultleft)
|
||||
workflowmiddlepanel = TemplateListField(default=defaultmiddle)
|
||||
@@ -3677,7 +3729,7 @@ class AccountRowerForm(ModelForm):
|
||||
'getimportantemails',
|
||||
'defaulttimezone','showfavoritechartnotes',
|
||||
'defaultlandingpage',
|
||||
'offercoaching','autojoin']
|
||||
'offercoaching','autojoin','emailalternatives']
|
||||
|
||||
widgets = {
|
||||
'birthdate': SelectDateWidget(
|
||||
@@ -3686,10 +3738,29 @@ class AccountRowerForm(ModelForm):
|
||||
}
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
|
||||
super(AccountRowerForm, self).__init__(*args, **kwargs)
|
||||
if 'coach' not in self.instance.rowerplan:
|
||||
self.fields.pop('offercoaching')
|
||||
|
||||
self.initial['emailalternatives'] = ', '.join(self.instance.emailalternatives)
|
||||
|
||||
def clean(self):
|
||||
cd = self.cleaned_data
|
||||
z = "".join(cd['emailalternatives'].split()).split(',')
|
||||
emailalternatives = []
|
||||
for addr in z:
|
||||
try:
|
||||
print(addr)
|
||||
validate_email(addr)
|
||||
match = User.objects.filter(email__iexact=addr)
|
||||
if match.count() == 0:
|
||||
emailalternatives.append(addr)
|
||||
except ValidationError:
|
||||
pass
|
||||
|
||||
self.cleaned_data['emailalternatives'] = emailalternatives
|
||||
|
||||
# Form to set static chart settings
|
||||
class StaticChartRowerForm(ModelForm):
|
||||
class Meta:
|
||||
|
||||
@@ -415,6 +415,7 @@ def rower_edit_view(request,rowerid=0,userid=0,message=""):
|
||||
u.email = email
|
||||
resetbounce = True
|
||||
|
||||
emailalternatives = cd['emailalternatives']
|
||||
|
||||
u.save()
|
||||
r.defaulttimezone=defaulttimezone
|
||||
@@ -428,6 +429,8 @@ def rower_edit_view(request,rowerid=0,userid=0,message=""):
|
||||
r.sex = sex
|
||||
r.birthdate = birthdate
|
||||
r.autojoin = autojoin
|
||||
r.emailalternatives = emailalternatives
|
||||
|
||||
|
||||
if resetbounce and r.emailbounced:
|
||||
r.emailbounced = False
|
||||
|
||||
Reference in New Issue
Block a user