diff --git a/rowers/models.py b/rowers/models.py index 00095741..6edc4c92 100644 --- a/rowers/models.py +++ b/rowers/models.py @@ -3697,25 +3697,38 @@ class Workout(models.Model): def __str__(self): - date = self.date - name = self.name - distance = str(self.distance) - ownerfirst = self.user.user.first_name - ownerlast = self.user.user.last_name - duration = self.duration - boattype = self.boattype - workouttype = self.workouttype + elements = dict( + date = self.date.strftime('%Y-%m-%d'), + name = self.name, + distance = str(self.distance), + ownerfirst = self.user.user.first_name, + ownerlast = self.user.user.last_name, + duration = self.duration.strftime("%H:%M:%S"), + boattype = self.boattype, + workouttype = self.workouttype, + seatnumber = 'seat '+str(self.seatnumber), + boatname = 'boat '+str(self.boatname), + empowerside = self.empowerside, + inboard = self.inboard, + oarlength = self.oarlength + ) - if workouttype not in ['water','rower']: + if len(self.user.workoutnametemplate): try: - stri = u'{d} {n} {dist}m {duration} {workouttype} {ownerfirst} {ownerlast}'.format( - d=date.strftime('%Y-%m-%d'), - n=name, - dist=distance, - duration=duration.strftime("%H:%M:%S"), - workouttype=workouttype, - ownerfirst=ownerfirst, - ownerlast=ownerlast, + stri = u'' + for element in self.user.workoutnametemplate: + stri += u'{'+u'{element}'.format(element=element)+u'} ' + stri = stri[:-1] + return stri.format(**elements) + except ValueError: + return self.name + except AttributeError: + return "No workout" + + if self.workouttype not in ['water','rower']: + try: + stri = u'{date} {name} {distance}m {duration} {workouttype} {ownerfirst} {ownerlast}'.format( + **elements ) except ValueError: stri = self.name @@ -3723,15 +3736,8 @@ class Workout(models.Model): return "No workout" else: try: - stri = u'{d} {n} {dist}m {duration} {workouttype} {boattype} {ownerfirst} {ownerlast}'.format( - d=date.strftime('%Y-%m-%d'), - n=name, - dist=distance, - duration=duration.strftime("%H:%M:%S"), - workouttype=workouttype, - boattype=boattype, - ownerfirst=ownerfirst, - ownerlast=ownerlast, + stri = u'{date} {name} {distance}m {duration} {workouttype} {boattype} {ownerfirst} {ownerlast}'.format( + **elements ) except (ValueError, AttributeError): stri = self.name diff --git a/rowers/templates/favoritecharts.html b/rowers/templates/favoritecharts.html index 5841dd0c..77f2d3f7 100644 --- a/rowers/templates/favoritecharts.html +++ b/rowers/templates/favoritecharts.html @@ -54,7 +54,12 @@ {{ workoutnametemplate_formset.as_table }} {% csrf_token %} - +

+ +

+

+ +

diff --git a/rowers/tests/testdata/testdata.tcx.gz b/rowers/tests/testdata/testdata.tcx.gz index cbfec837..0fc0e3fd 100644 Binary files a/rowers/tests/testdata/testdata.tcx.gz and b/rowers/tests/testdata/testdata.tcx.gz differ diff --git a/rowers/utils.py b/rowers/utils.py index e4de1539..9e7d5054 100644 --- a/rowers/utils.py +++ b/rowers/utils.py @@ -64,9 +64,13 @@ workout_name_element = ( ('ownerfirst', 'Rower first name'), ('ownerlast', 'Rower last name'), ('duration', 'Duration'), - ('boattype','Boat Type'), - ('workouttype', 'Workout Type'), - ('seatnumber','Seat Number') + ('boattype','Boat type'), + ('workouttype', 'Workout type'), + ('seatnumber','Seat number'), + ('boatname', 'Boat name'), + ('empowerside', 'Empower side'), + ('inboard', 'Inboard'), + ('oarlength', 'Oar length'), ) diff --git a/rowers/views/userviews.py b/rowers/views/userviews.py index ef42edf0..cd42ad56 100644 --- a/rowers/views/userviews.py +++ b/rowers/views/userviews.py @@ -329,20 +329,27 @@ def rower_favoritecharts_view(request, userid=0): workoutnametemplate_formset = WorkoutNameTemplateFormSet(initial=workoutnametemplate_data, prefix='workoutname') if request.method == 'POST' and 'workoutname-TOTAL_FORMS' in request.POST: - workoutnametemplate_formset = WorkoutNameTemplateFormSet(request.POST, prefix='workoutname') - newworkoutnametemplate = [] - if workoutnametemplate_formset.is_valid(): - for form in workoutnametemplate_formset: - element = form.cleaned_data.get('element') - if element != 'None': - newworkoutnametemplate.append(element) + if 'defaults_workoutname' in request.POST: + r.workoutnametemplate = ['date','name','distance','ownerfirst','ownerlast','duration','boattype','workouttype'] + r.save() + else: + workoutnametemplate_formset = WorkoutNameTemplateFormSet(request.POST, prefix='workoutname') + newworkoutnametemplate = [] + if workoutnametemplate_formset.is_valid(): + for form in workoutnametemplate_formset: + element = form.cleaned_data.get('element') + if element != 'None': + newworkoutnametemplate.append(element) - newworkoutnametemplate = [i for i in newworkoutnametemplate if i is not None] - r.workoutnametemplate = newworkoutnametemplate - try: - r.save() - except IntegrityError: - messages.error("Something went wrong") + newworkoutnametemplate = [i for i in newworkoutnametemplate if i is not None] + r.workoutnametemplate = newworkoutnametemplate + try: + r.save() + except IntegrityError: + messages.error("Something went wrong") + workoutnametemplate_data = [{'element': element} for element in r.workoutnametemplate] + workoutnametemplate_formset = WorkoutNameTemplateFormSet(initial=workoutnametemplate_data, prefix='workoutname') + if request.method == 'POST' and 'staticgrids' in request.POST: # pragma: no cover staticchartform = StaticChartRowerForm(request.POST, instance=r)