diff --git a/rowers/dataprep.py b/rowers/dataprep.py index 3a1debc8..237edf1e 100644 --- a/rowers/dataprep.py +++ b/rowers/dataprep.py @@ -10,7 +10,9 @@ from rowingdata import rower as rrower from shutil import copyfile -from rowingdata import get_file_type, get_empower_rigging +from rowingdata import ( + get_file_type, get_empower_rigging,get_empower_firmware + ) from rowers.tasks import handle_sendemail_unrecognized from rowers.tasks import handle_zip_file @@ -1153,11 +1155,15 @@ def parsenonpainsled(fileformat,f2,summary): if (fileformat == 'speedcoach2'): row = SpeedCoach2Parser(f2) hasrecognized = True - try: - oarlength, inboard = get_empower_rigging(f2) - summary = row.allstats() - except: - pass + + oarlength, inboard = get_empower_rigging(f2) + empowerfirmware = get_empower_firmware(f2) + if empowerfirmware != '': + fileformat = fileformat+'v'+str(empowerfirmware) + else: + fileformat = 'speedcoach2v0' + summary = row.allstats() + # handle ErgStick if (fileformat == 'ergstick'): @@ -1176,7 +1182,7 @@ def parsenonpainsled(fileformat,f2,summary): pass hasrecognized = True - return row,hasrecognized,summary + return row,hasrecognized,summary,fileformat def handle_nonpainsled(f2, fileformat, summary=''): oarlength = 2.89 @@ -1184,7 +1190,7 @@ def handle_nonpainsled(f2, fileformat, summary=''): hasrecognized = False try: - row,hasrecognized,summary = parsenonpainsled(fileformat,f2,summary) + row,hasrecognized,summary,fileformat = parsenonpainsled(fileformat,f2,summary) except: pass @@ -1211,7 +1217,7 @@ def handle_nonpainsled(f2, fileformat, summary=''): except: os.remove(f_to_be_deleted + '.gz') - return (f2, summary, oarlength, inboard) + return (f2, summary, oarlength, inboard, fileformat) # Create new workout from file and store it in the database # This routine should be used everywhere in views.py and mailprocessing.py @@ -1297,9 +1303,11 @@ def new_workout_from_file(r, f2, # handle non-Painsled by converting it to painsled compatible CSV if (fileformat != 'csv'): try: - f2, summary, oarlength, inboard = handle_nonpainsled(f2, - fileformat, - summary=summary) + f2, summary, oarlength, inboard, fileformat = handle_nonpainsled( + f2, + fileformat, + summary=summary + ) if not f2: message = 'Something went wrong' return (0, message, '') @@ -1308,7 +1316,9 @@ def new_workout_from_file(r, f2, message = 'Something went wrong: ' + errorstring return (0, message, '') - dosummary = (fileformat != 'fit' and fileformat != 'speedcoach2') + dosummary = (fileformat != 'fit' and 'speedcoach2' not in fileformat) + + id, message = save_workout_database( f2, r, workouttype=workouttype, diff --git a/rowers/models.py b/rowers/models.py index b8c70042..75afa570 100644 --- a/rowers/models.py +++ b/rowers/models.py @@ -1221,7 +1221,7 @@ class Workout(models.Model): name = models.CharField(max_length=150) date = models.DateField() workouttype = models.CharField(choices=workouttypes,max_length=50) - workoutsource = models.CharField(choices=workoutsources,max_length=100, + workoutsource = models.CharField(max_length=100, default='unknown') boattype = models.CharField(choices=boattypes,max_length=50, default='1x',