processing emails from alternate address
This commit is contained in:
@@ -235,10 +235,13 @@ class Command(BaseCommand):
|
||||
rowers = [
|
||||
r for r in Rower.objects.all() if r.user.email.lower() == from_address
|
||||
]
|
||||
rowers2 = [
|
||||
r for r in Rower.objects.all() if from_address in r.emailalternatives
|
||||
]
|
||||
rowers = rowers+rowers2
|
||||
try:
|
||||
rowers2 = [
|
||||
r for r in Rower.objects.all() if from_address in r.emailalternatives
|
||||
]
|
||||
rowers = rowers+rowers2
|
||||
except TypeError:
|
||||
pass
|
||||
except IOError:
|
||||
rowers = []
|
||||
except Message.DoesNotExist:
|
||||
|
||||
@@ -3743,7 +3743,10 @@ class AccountRowerForm(ModelForm):
|
||||
if 'coach' not in self.instance.rowerplan:
|
||||
self.fields.pop('offercoaching')
|
||||
|
||||
self.initial['emailalternatives'] = ', '.join(self.instance.emailalternatives)
|
||||
try:
|
||||
self.initial['emailalternatives'] = ', '.join(self.instance.emailalternatives)
|
||||
except TypeError:
|
||||
pass
|
||||
|
||||
def clean(self):
|
||||
cd = self.cleaned_data
|
||||
@@ -3751,7 +3754,6 @@ class AccountRowerForm(ModelForm):
|
||||
emailalternatives = []
|
||||
for addr in z:
|
||||
try:
|
||||
print(addr)
|
||||
validate_email(addr)
|
||||
match = User.objects.filter(email__iexact=addr)
|
||||
if match.count() == 0:
|
||||
|
||||
@@ -12,9 +12,12 @@ class EmailUpload(TestCase):
|
||||
self.c = Client()
|
||||
u = User.objects.create_user('john',
|
||||
'sander@ds.ds',
|
||||
'koeinsloot')
|
||||
'koeinsloot',
|
||||
first_name='John',
|
||||
last_name='Sloot')
|
||||
r = Rower.objects.create(user=u,gdproptin=True,surveydone=True,
|
||||
gdproptindate=timezone.now()
|
||||
gdproptindate=timezone.now(),
|
||||
emailalternatives=['sander2@ds.nl']
|
||||
)
|
||||
|
||||
self.theadmin = UserFactory(is_staff=True)
|
||||
@@ -76,6 +79,33 @@ workout run
|
||||
self.assertEqual(w.name,'test')
|
||||
self.assertEqual(w.notes,'aap noot mies')
|
||||
|
||||
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.getsmallrowdata_db',side_effect=mocked_getsmallrowdata_db)
|
||||
def test_uploadapi2(self,mocked_sqlalchemy,mocked_getsmallrowdata_db):
|
||||
form_data = {
|
||||
'title': 'test',
|
||||
'workouttype':'rower',
|
||||
'boattype': '1x',
|
||||
'notes': 'aap noot mies',
|
||||
'make_plot': False,
|
||||
'upload_to_C2': False,
|
||||
'plottype': 'timeplot',
|
||||
'file': 'media/mailbox_attachments/colin3.csv',
|
||||
'secret': settings.UPLOAD_SERVICE_SECRET,
|
||||
'useremail': 'sander2@ds.nl',
|
||||
}
|
||||
|
||||
url = reverse('workout_upload_api')
|
||||
response = self.c.post(url,form_data,HTTP_HOST='127.0.0.1:4533')
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
# should also test if workout is created
|
||||
w = Workout.objects.get(id=1)
|
||||
self.assertEqual(w.name,'test')
|
||||
self.assertEqual(w.notes,'aap noot mies')
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.getsmallrowdata_db',side_effect=mocked_getsmallrowdata_db)
|
||||
def test_uploadapi_credentials(self,mocked_sqlalchemy,mocked_getsmallrowdata_db):
|
||||
|
||||
@@ -4685,21 +4685,25 @@ def workout_upload_api(request):
|
||||
if rowerform.is_valid():
|
||||
u = rowerform.cleaned_data['user']
|
||||
r = getrower(u)
|
||||
elif 'useremail' in post_data:
|
||||
else:
|
||||
message = {'status':'false','message':'invalid user'}
|
||||
return JSONResponse(status=400,data=message)
|
||||
|
||||
if 'useremail' in post_data:
|
||||
us = User.objects.filter(email=post_data['useremail'])
|
||||
if len(us):
|
||||
u = us[0]
|
||||
r = getrower(u)
|
||||
else:
|
||||
rs = [r for r in Rower.objects.all() if from_address in r.emailalternatives]
|
||||
if len(rs):
|
||||
r = rs[0]
|
||||
else:
|
||||
r = None
|
||||
for rwr in Rower.objects.all():
|
||||
if post_data['useremail'] in rwr.emailalternatives:
|
||||
r = rwr
|
||||
break
|
||||
if post_data['useremail'] not in r.emailalternatives:
|
||||
message = {'status':'false','message':'could not find user'}
|
||||
return JSONResponse(status=400,data=message)
|
||||
else:
|
||||
message = {'status':'false','message':'invalid user'}
|
||||
return JSONResponse(status=400,data=message)
|
||||
|
||||
|
||||
notes = form.cleaned_data['notes']
|
||||
if optionsform.is_valid():
|
||||
@@ -4716,6 +4720,9 @@ def workout_upload_api(request):
|
||||
message = optionsform.errors
|
||||
return JSONResponse(status=400,data=message)
|
||||
|
||||
if r is None:
|
||||
message = {'status':'false','message':'something went wrong'}
|
||||
return JSONResponse(status=400,data=message)
|
||||
|
||||
id, message, f2 = dataprep.new_workout_from_file(
|
||||
r,f2,
|
||||
|
||||
Reference in New Issue
Block a user