basic stuff done for Free Coach model
This commit is contained in:
@@ -601,7 +601,8 @@ plans = (
|
|||||||
('basic','basic'),
|
('basic','basic'),
|
||||||
('pro','pro'),
|
('pro','pro'),
|
||||||
('plan','plan'),
|
('plan','plan'),
|
||||||
('coach','coach')
|
('coach','coach'),
|
||||||
|
('freecoach','freecoach'),
|
||||||
)
|
)
|
||||||
|
|
||||||
paymenttypes = (
|
paymenttypes = (
|
||||||
@@ -2575,6 +2576,13 @@ class Workout(models.Model):
|
|||||||
choices=privacychoices)
|
choices=privacychoices)
|
||||||
rankingpiece = models.BooleanField(default=False,verbose_name='Ranking Piece')
|
rankingpiece = models.BooleanField(default=False,verbose_name='Ranking Piece')
|
||||||
duplicate = models.BooleanField(default=False,verbose_name='Duplicate Workout')
|
duplicate = models.BooleanField(default=False,verbose_name='Duplicate Workout')
|
||||||
|
|
||||||
|
def save(self, *args, **kwargs):
|
||||||
|
user = self.user
|
||||||
|
if self.user.rowerplan == 'freecoach':
|
||||||
|
raise ValidationError("Free Coach User cannot have any workouts")
|
||||||
|
|
||||||
|
super(Workout, self).save(*args, **kwargs)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
|
|
||||||
|
|||||||
@@ -14,7 +14,184 @@ from django.db import transaction
|
|||||||
import rowers.teams as teams
|
import rowers.teams as teams
|
||||||
import rowers.plannedsessions as plannedsessions
|
import rowers.plannedsessions as plannedsessions
|
||||||
|
|
||||||
|
@override_settings(TESTING=True)
|
||||||
|
class PermissionsFreeCoach(TestCase):
|
||||||
|
def setUp(self):
|
||||||
|
self.c = Client()
|
||||||
|
## Users - Pro, Basic, Free Coach & Self Coach
|
||||||
|
|
||||||
|
self.ufreecoach = UserFactory(username='coachuser')
|
||||||
|
self.rfreecoach = Rower.objects.create(user=self.ufreecoach,
|
||||||
|
birthdate=faker.profile()['birthdate'],
|
||||||
|
gdproptin=True,gdproptindate=timezone.now(),
|
||||||
|
rowerplan='freecoach',clubsize=100)
|
||||||
|
|
||||||
|
self.coachinggroup = CoachingGroup.objects.create()
|
||||||
|
self.rfreecoach.mycoachgroup = self.coachinggroup
|
||||||
|
self.rfreecoach.save()
|
||||||
|
self.factory = RequestFactory()
|
||||||
|
self.password = faker.word()
|
||||||
|
self.ufreecoach.set_password(self.password)
|
||||||
|
self.ufreecoach.save()
|
||||||
|
|
||||||
|
self.uplan = UserFactory(username='planuser')
|
||||||
|
self.rplan = Rower.objects.create(user=self.uplan,
|
||||||
|
birthdate=faker.profile()['birthdate'],
|
||||||
|
gdproptin=True,gdproptindate=timezone.now(),
|
||||||
|
rowerplan='plan')
|
||||||
|
|
||||||
|
self.uplan_workouts = WorkoutFactory.create_batch(5, user=self.rplan)
|
||||||
|
self.factory = RequestFactory()
|
||||||
|
self.password = faker.word()
|
||||||
|
self.uplan.set_password(self.password)
|
||||||
|
self.uplan.save()
|
||||||
|
|
||||||
|
self.upro = UserFactory(username='prouser')
|
||||||
|
self.rpro = Rower.objects.create(user=self.upro,
|
||||||
|
birthdate=faker.profile()['birthdate'],
|
||||||
|
gdproptin=True,gdproptindate=timezone.now(),
|
||||||
|
rowerplan='pro')
|
||||||
|
|
||||||
|
self.upro_workouts = WorkoutFactory.create_batch(5, user=self.rpro)
|
||||||
|
self.factory = RequestFactory()
|
||||||
|
self.password = faker.word()
|
||||||
|
self.upro.set_password(self.password)
|
||||||
|
self.upro.save()
|
||||||
|
|
||||||
|
self.uplan2 = UserFactory(username='planuser2')
|
||||||
|
self.rplan2 = Rower.objects.create(user=self.uplan2,
|
||||||
|
birthdate=faker.profile()['birthdate'],
|
||||||
|
gdproptin=True,gdproptindate=timezone.now(),
|
||||||
|
rowerplan='plan')
|
||||||
|
|
||||||
|
self.uplan2_workouts = WorkoutFactory.create_batch(5, user=self.rplan2)
|
||||||
|
self.factory = RequestFactory()
|
||||||
|
self.password = faker.word()
|
||||||
|
self.uplan2.set_password(self.password)
|
||||||
|
self.uplan2.save()
|
||||||
|
|
||||||
|
self.upro2 = UserFactory(username='prouser2')
|
||||||
|
self.rpro2 = Rower.objects.create(user=self.upro2,
|
||||||
|
birthdate=faker.profile()['birthdate'],
|
||||||
|
gdproptin=True,gdproptindate=timezone.now(),
|
||||||
|
rowerplan='pro')
|
||||||
|
|
||||||
|
self.upro2_workouts = WorkoutFactory.create_batch(5, user=self.rpro2)
|
||||||
|
self.factory = RequestFactory()
|
||||||
|
self.password = faker.word()
|
||||||
|
self.upro2.set_password(self.password)
|
||||||
|
self.upro2.save()
|
||||||
|
|
||||||
|
self.ubasic = UserFactory(username='basicuser')
|
||||||
|
self.rbasic = Rower.objects.create(user=self.ubasic,
|
||||||
|
birthdate=faker.profile()['birthdate'],
|
||||||
|
gdproptin=True,gdproptindate=timezone.now(),
|
||||||
|
rowerplan='basic')
|
||||||
|
|
||||||
|
self.ubasic_workouts = WorkoutFactory.create_batch(5, user=self.rbasic)
|
||||||
|
self.factory = RequestFactory()
|
||||||
|
self.ubasicpassword = faker.word()
|
||||||
|
self.ubasic.set_password(self.ubasicpassword)
|
||||||
|
self.ubasic.save()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## TeamFreeCoach
|
||||||
|
|
||||||
|
self.teamfreecoach = Team.objects.create(
|
||||||
|
name=faker.word()+'3',
|
||||||
|
notes=faker.text(),
|
||||||
|
manager=self.ufreecoach)
|
||||||
|
|
||||||
|
## Coach can have any number of groups
|
||||||
|
def test_coach_groupmanager(self):
|
||||||
|
team1 = Team.objects.create(
|
||||||
|
name = 'FirstTeam',
|
||||||
|
notes = faker.text(),
|
||||||
|
manager = self.ufreecoach,
|
||||||
|
)
|
||||||
|
|
||||||
|
self.assertEqual(team1.manager,self.ufreecoach)
|
||||||
|
|
||||||
|
team2 = Team.objects.create(
|
||||||
|
name = 'SecondTeam',
|
||||||
|
notes = faker.text(),
|
||||||
|
manager = self.ufreecoach,
|
||||||
|
)
|
||||||
|
|
||||||
|
self.assertEqual(team2.manager,self.ufreecoach)
|
||||||
|
|
||||||
|
|
||||||
|
team3 = Team.objects.create(
|
||||||
|
name = 'ThirdTeam',
|
||||||
|
notes = faker.text(),
|
||||||
|
manager = self.ufreecoach,
|
||||||
|
)
|
||||||
|
|
||||||
|
self.assertEqual(team3.manager,self.ufreecoach)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Free coach can create more than one group
|
||||||
|
def test_plan_groupmanager(self):
|
||||||
|
team1 = Team.objects.create(
|
||||||
|
name = 'FirstTeam',
|
||||||
|
notes = faker.text(),
|
||||||
|
manager = self.ufreecoach,
|
||||||
|
)
|
||||||
|
|
||||||
|
self.assertEqual(team1.manager,self.ufreecoach)
|
||||||
|
|
||||||
|
team2 = Team.objects.create(
|
||||||
|
name = 'SecondTeam',
|
||||||
|
notes = faker.text(),
|
||||||
|
manager = self.ufreecoach,
|
||||||
|
)
|
||||||
|
|
||||||
|
self.assertEqual(team2.manager,self.ufreecoach)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Free Coach can create planned sessions and team planned sessions
|
||||||
|
## Self Coach and higher can create planned sessions and team planned sessions
|
||||||
|
def test_plan_create_session(self):
|
||||||
|
ps = PlannedSession.objects.create(
|
||||||
|
manager=self.ufreecoach,
|
||||||
|
name=faker.word(),
|
||||||
|
comment=faker.text()
|
||||||
|
)
|
||||||
|
self.assertEqual(ps.manager,self.ufreecoach)
|
||||||
|
|
||||||
|
def test_coach_create_session(self):
|
||||||
|
ps = PlannedSession.objects.create(
|
||||||
|
manager=self.ufreecoach,
|
||||||
|
name=faker.word(),
|
||||||
|
comment=faker.text()
|
||||||
|
)
|
||||||
|
self.assertEqual(ps.manager,self.ufreecoach)
|
||||||
|
|
||||||
|
|
||||||
|
## Basic cannot join groups led by Free Coach
|
||||||
|
def test_add_basic_pro_or_plan(self):
|
||||||
|
with transaction.atomic():
|
||||||
|
with self.assertRaises(ValidationError):
|
||||||
|
self.rbasic.team.add(self.teamfreecoach)
|
||||||
|
|
||||||
|
|
||||||
|
## Free Coach user cannot have workouts
|
||||||
|
def test_add_workout_freecoach(self):
|
||||||
|
result = get_random_file(filename='rowers/tests/testdata/erg1.csv')
|
||||||
|
with transaction.atomic():
|
||||||
|
with self.assertRaises(ValidationError):
|
||||||
|
self.werg1 = WorkoutFactory(user=self.rfreecoach,
|
||||||
|
csvfilename=result['filename'],
|
||||||
|
starttime=result['starttime'],
|
||||||
|
startdatetime=result['startdatetime'],
|
||||||
|
duration=result['duration'],
|
||||||
|
distance=result['totaldist'],
|
||||||
|
workouttype = 'rower',
|
||||||
|
)
|
||||||
|
|
||||||
@override_settings(TESTING=True)
|
@override_settings(TESTING=True)
|
||||||
class PermissionsBasicsTests(TestCase):
|
class PermissionsBasicsTests(TestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
|
|||||||
Reference in New Issue
Block a user