diff --git a/rowers/teams.py b/rowers/teams.py index 7be8d03a..7a99f6d3 100644 --- a/rowers/teams.py +++ b/rowers/teams.py @@ -629,7 +629,7 @@ def process_invite_code(user,code): send_invite_accept_email(invitation) invitation.delete() - return result + return (result,'You were added to the team') def remove_expired_invites(): issuedate = timezone.now()-timedelta(days=inviteduration) diff --git a/rowers/templates/user_analysis_select.html b/rowers/templates/user_analysis_select.html index b7cf7991..3b71d66b 100644 --- a/rowers/templates/user_analysis_select.html +++ b/rowers/templates/user_analysis_select.html @@ -39,8 +39,9 @@ // Check to see if the checkbox is checked. // If it is, show the fields and populate the input. // If not, hide the fields. - var Value = modality.val(); - if (Value=='water') { + var Value = modality.val(); + var otwtypes = ['water','coastal','c-boat','churchboat'] + if (otwtypes.includes(Value)) { // Show the hidden fields. hidden.show(); } else { diff --git a/rowers/tests/test_analysis.py b/rowers/tests/test_analysis.py index 0dbddb37..c18eb097 100644 --- a/rowers/tests/test_analysis.py +++ b/rowers/tests/test_analysis.py @@ -637,3 +637,96 @@ class HistoTest(TestCase): response = self.c.get('/rowers/histodata/') self.assertEqual(response.status_code,200) + + + #-------------------------------------------------- + + + +class WorkoutCompareTestNew(TestCase): + def setUp(self): + self.u = UserFactory() + + self.r = Rower.objects.create(user=self.u, + birthdate=faker.profile()['birthdate'], + gdproptin=True, + gdproptindate=timezone.now(), + rowerplan='coach') + + self.c = Client() + self.user_workouts = WorkoutFactory.create_batch(5, user=self.r) + self.factory = RequestFactory() + self.password = faker.word() + self.u.set_password(self.password) + self.u.save() + + def tearDown(self): + for workout in self.user_workouts: + try: + os.remove(workout.csvfilename) + except (IOError, FileNotFoundError, OSError): + pass + + @patch('rowers.dataprep.create_engine') + @patch('rowers.dataprep.getsmallrowdata_db') + def test_workouts_compare(self, mocked_sqlalchemy, + mocked_getsmallrowdata_db): + + login = self.c.login(username=self.u.username, password=self.password) + self.assertTrue(login) + + url = '/rowers/user-analysis-select/compare/' + + response = self.c.get(url) + self.assertEqual(response.status_code,200) + + @patch('rowers.dataprep.create_engine') + @patch('rowers.dataprep.getsmallrowdata_db', side_effect=mocked_getsmallrowdata_db) + def test_workouts_compare_submit(self, mocked_sqlalchemy, + mocked_getsmallrowdata_db): + + login = self.c.login(username=self.u.username,password=self.password) + self.assertTrue(login) + + startdate = (self.user_workouts[0].startdatetime-datetime.timedelta(days=3)).date() + enddate = (self.user_workouts[0].startdatetime+datetime.timedelta(days=3)).date() + + form_data = { + 'function':'compare', + 'xparam':'hr', + 'plotfield':'spm', + 'yparam':'pace', + 'groupby':'spm', + 'palette':'monochrome_blue' + 'xaxis':'time', + 'yaxis1':'power', + 'startdate':startdate, + 'enddate':enddate, + 'plottype':'scatter', + 'spmmin':15, + 'spmmax':55, + 'workmin':0, + 'workmax':1500, + 'includereststrokes':False, + 'modality':'all', + 'waterboattype':['1x','2x','4x'], + 'rankingonly':False, + 'workouts':[1,2,3] + } + + form = AnalysisChoiceForm(form_data) + optionsform = AnalysisOptionsForm(form_data) + dateform = DateRangeForm(form_data) + + result = form.is_valid() + if not result: + print(form.errors) + + self.assertTrue(form.is_valid()) + self.assertTrue(optionsform.is_valid()) + self.assertTrue(dateform.is_valid()) + + response = self.c.post('/rowers/user-analysis-select/',form_data) + + self.assertEqual(response.status_code,200) + diff --git a/rowers/views/analysisviews.py b/rowers/views/analysisviews.py index 06908081..0ee3968f 100644 --- a/rowers/views/analysisviews.py +++ b/rowers/views/analysisviews.py @@ -54,6 +54,15 @@ def analysis_new(request,userid=0,function='boxplot',teamid=0): except KeyError: workouttypes = ['rower','dynamic','slides'] + try: + modalities = options['modalities'] + modality = modalities[0] + except KeyError: + modalities = [m[0] for m in mytypes.workouttypes] + modality = 'all' + + + try: rankingonly = options['rankingonly'] except KeyError: