basic stuff done for Free Coach model
This commit is contained in:
@@ -601,7 +601,8 @@ plans = (
|
||||
('basic','basic'),
|
||||
('pro','pro'),
|
||||
('plan','plan'),
|
||||
('coach','coach')
|
||||
('coach','coach'),
|
||||
('freecoach','freecoach'),
|
||||
)
|
||||
|
||||
paymenttypes = (
|
||||
@@ -2575,6 +2576,13 @@ class Workout(models.Model):
|
||||
choices=privacychoices)
|
||||
rankingpiece = models.BooleanField(default=False,verbose_name='Ranking Piece')
|
||||
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):
|
||||
|
||||
|
||||
@@ -14,7 +14,184 @@ from django.db import transaction
|
||||
import rowers.teams as teams
|
||||
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)
|
||||
class PermissionsBasicsTests(TestCase):
|
||||
def setUp(self):
|
||||
|
||||
Reference in New Issue
Block a user