diff --git a/rowers/tests/test_plans.py b/rowers/tests/test_plans.py index 3c538d54..8421c62f 100644 --- a/rowers/tests/test_plans.py +++ b/rowers/tests/test_plans.py @@ -1260,6 +1260,18 @@ class PlannedSessionsView(TestCase): self.u2.set_password(self.password2) self.u2.save() + self.u3 = UserFactory(username='testbasicuser2') + self.r3 = Rower.objects.create(user=self.u3, + birthdate=faker.profile()['birthdate'], + gdproptin=True,surveydone=True, + gdproptindate=timezone.now(), + rowerplan='basic') + + self.password3 = faker.word() + self.u3.set_password(self.password2) + self.u3.save() + + self.team = Team.objects.create( name = faker.word(), notes = faker.text(), @@ -1763,6 +1775,64 @@ description: "" response = self.c.post(url,formdata,follow=True) self.assertEqual(response.status_code,200) + def test_team_multiclone_view(self): + login = self.c.login(username=self.u.username, password=self.password) + self.assertTrue(login) + + # add rower r3 to team + self.r3.team.add(self.team) + self.r3.save() + + # r3 has no sessions + ps_r3 = PlannedSession.objects.filter(rower__in=[self.r3]) + self.assertEqual(ps_r3.count(),0) + + # check if self.ps_trimp is a "self.team" session + self.assertTrue(self.team in self.ps_trimp.team.all()) + + # clone self.ps_trimp to new + url = '/rowers/sessions/multiclone/' + response = self.c.get(url) + self.assertEqual(response.status_code,200) + + formdata = { + 'startdate':self.startdate, + 'enddate':self.enddate, + } + + form = DateRangeForm(formdata) + self.assertTrue(form.is_valid()) + + response = self.c.post(url,formdata) + self.assertEqual(response.status_code,200) + + url = '/rowers/sessions/multiclone/?startdate={startdate}&enddate={enddate}'.format( + startdate = self.startdate, + enddate = self.enddate + ) + + formdata = { + 'plannedsessions':[self.ps_time.id,self.ps_trimp.id], + 'shiftstartdate':datetime.date.today()+timezone.timedelta(days=6) + } + + form = PlannedSessionMultipleCloneForm(formdata) + + self.assertTrue(form.is_valid()) + + form = SessionDateShiftForm(formdata) + + + self.assertTrue(form.is_valid()) + + response = self.c.post(url,formdata,follow=True) + self.assertEqual(response.status_code,200) + + # check that the self.ps_trimp copy is assigned to r3 + ps_r3 = PlannedSession.objects.filter(rower__in=[self.r3]) + self.assertEqual(ps_r3.count(),1) + + def test_deletetarget_view(self): login = self.c.login(username=self.u.username, password=self.password) self.assertTrue(login) diff --git a/rowers/views/planviews.py b/rowers/views/planviews.py index 709c04bf..9d858d5c 100644 --- a/rowers/views/planviews.py +++ b/rowers/views/planviews.py @@ -318,6 +318,8 @@ def plannedsession_multiclone_view( add_rower_session(rower, ps) for team in teams: add_team_session(team, ps) + for rower in team.rower.all().exclude(rowerplan='freecoach'): + add_rower_session(rower, ps) startdatestring = shiftstartdate.strftime('%Y-%m-%d') enddatestring = lastdate.strftime('%Y-%m-%d') @@ -1856,6 +1858,8 @@ def plannedsession_clone_view(request, id=0, userid=0): add_rower_session(r, ps) for team in teams: add_team_session(team, ps) + for rower in team.rower.all().exclude(rowerplan='freecoach'): + add_rower_session(rower, ps) url = reverse(plannedsession_edit_view, kwargs={