From 73fe1ddf8f0dcc9505c76b9f9e27b86070d30362 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Thu, 24 Jan 2019 16:53:45 +0100 Subject: [PATCH] passing test for user --- rowers/management/commands/processemail.py | 24 ++++++++++++++----- rowers/tests/testdata/testdata.csv.gz | Bin 11426 -> 11426 bytes rowers/tests/testdata/testdata.tcx | 2 +- rowers/uploads.py | 26 +++++++++++++++++++++ 4 files changed, 45 insertions(+), 7 deletions(-) diff --git a/rowers/management/commands/processemail.py b/rowers/management/commands/processemail.py index 23b640b7..89e6a494 100644 --- a/rowers/management/commands/processemail.py +++ b/rowers/management/commands/processemail.py @@ -23,6 +23,7 @@ from rowers.mailprocessing import make_new_workout_from_email, send_confirm import rowers.polarstuff as polarstuff import rowers.c2stuff as c2stuff import rowers.stravastuff as stravastuff +from rowers.models import User workoutmailbox = Mailbox.objects.get(name='workouts') failedmailbox = Mailbox.objects.get(name='Failed') @@ -65,9 +66,20 @@ def processattachment(rower, fileobj, title, uploadoptions,testing=False): if testing: print 'Creating workout from email' + + # set user + if rower.user.is_staff and 'username' in uploadoptions: + users = User.objects.filter(username=uploadoptions['username']) + if len(users)==1: + therower = users[0].rower + else: + return 0 + else: + therower = rower + workoutid = [ - make_new_workout_from_email(rower, filename, title,testing=testing) + make_new_workout_from_email(therower, filename, title,testing=testing) ] if testing: @@ -75,7 +87,7 @@ def processattachment(rower, fileobj, title, uploadoptions,testing=False): if workoutid[0]: link = settings.SITE_URL+reverse( - rower.defaultlandingpage, + therower.defaultlandingpage, kwargs = { 'id':workoutid[0], } @@ -99,9 +111,9 @@ def processattachment(rower, fileobj, title, uploadoptions,testing=False): ) try: if workoutid and not testing: - if rower.getemailnotifications and not rower.emailbounced: + if therower.getemailnotifications and not therower.emailbounced: email_sent = send_confirm( - rower.user, title, link, + therower.user, title, link, uploadoptions ) time.sleep(10) @@ -109,9 +121,9 @@ def processattachment(rower, fileobj, title, uploadoptions,testing=False): try: time.sleep(10) if workoutid: - if rower.getemailnotifications and not rower.emailbounced: + if therower.getemailnotifications and not therower.emailbounced: email_sent = send_confirm( - rower.user, title, link, + therower.user, title, link, uploadoptions ) except: diff --git a/rowers/tests/testdata/testdata.csv.gz b/rowers/tests/testdata/testdata.csv.gz index 58a8c7637fe70ab361cc5129c40667174eef7c46..594e21a9c8c274737a218cee59201c83f65a8510 100644 GIT binary patch delta 15 WcmZ1!xhRrNzMF$1^8QA)IXVC=PX%rO delta 15 WcmZ1!xhRrNzMF%?c - <Element 'Notes' at 0x14011cc0> + <Element 'Notes' at 0x14a96cf8> diff --git a/rowers/uploads.py b/rowers/uploads.py index b040c56a..942c7430 100644 --- a/rowers/uploads.py +++ b/rowers/uploads.py @@ -82,6 +82,16 @@ def matchchart(line): if tester3.match(line.lower()): return 'pieplot' +def matchuser(line): + testert = '^(user)' + tester = re.compile(testert) + if tester.match(line.lower()): + words = line.split() + return words[1] + + return None + + def matchsync(line): results = [] tester = '((sync)|(synchronization)|(export))' @@ -176,6 +186,14 @@ def getplotoptions_body2(uploadoptions,body): return uploadoptions +def getuseroptions_body2(uploadoptions,body): + for line in body.splitlines(): + user = matchuser(line) + if user: + uploadoptions['username'] = user + + return uploadoptions + def getsyncoptions_body2(uploadoptions,body): result = [] for line in body.splitlines(): @@ -261,6 +279,11 @@ def getboattype(uploadoptions,value,key): return uploadoptions +def getuser(uploadoptions,value,key): + uploadoptions['username'] = value + + return uploadoptions + def getsource(uploadoptions,value,key): workoutsource = 'unknown' for type,verb in workoutsources: @@ -306,6 +329,8 @@ def upload_options(body): uploadoptions = getboattype(uploadoptions,value,'boattype') if 'source' in lowkey: uploadoptions = getsource(uploadoptions,value,'workoutsource') + if 'username' in lowkey: + uploadoptions = getuser(uploadoptions,value,'workoutuser') except AttributeError: #pass raise yaml.YAMLError @@ -317,6 +342,7 @@ def upload_options(body): uploadoptions = gettypeoptions_body2(uploadoptions,body) uploadoptions = getstravaid(uploadoptions,body) uploadoptions = getworkoutsources(uploadoptions,body) + uploadoptions = getuseroptions_body2(uploadoptions,body) except IOError: pm = exc.problem_mark strpm = str(pm)