it's a start
This commit is contained in:
@@ -30,7 +30,7 @@ from django.utils import timezone
|
|||||||
import pandas as pd
|
import pandas as pd
|
||||||
from dateutil import parser
|
from dateutil import parser
|
||||||
import datetime
|
import datetime
|
||||||
from django.core.exceptions import ValidationError
|
|
||||||
from rowers.rows import validate_file_extension
|
from rowers.rows import validate_file_extension
|
||||||
from collections import OrderedDict
|
from collections import OrderedDict
|
||||||
from timezonefinder import TimezoneFinder
|
from timezonefinder import TimezoneFinder
|
||||||
@@ -313,6 +313,13 @@ class C2WorldClassAgePerformance(models.Model):
|
|||||||
|
|
||||||
return thestring
|
return thestring
|
||||||
|
|
||||||
|
def is_not_basic(user):
|
||||||
|
if user.rower.rowerplan == 'basic':
|
||||||
|
raise ValidationError(
|
||||||
|
"Basic user cannot be team manager"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
# For future Team functionality
|
# For future Team functionality
|
||||||
class Team(models.Model):
|
class Team(models.Model):
|
||||||
choices = (
|
choices = (
|
||||||
@@ -327,7 +334,7 @@ class Team(models.Model):
|
|||||||
|
|
||||||
name = models.CharField(max_length=150,unique=True,verbose_name='Team Name')
|
name = models.CharField(max_length=150,unique=True,verbose_name='Team Name')
|
||||||
notes = models.CharField(blank=True,max_length=200,verbose_name='Team Purpose')
|
notes = models.CharField(blank=True,max_length=200,verbose_name='Team Purpose')
|
||||||
manager = models.ForeignKey(User, null=True)
|
manager = models.ForeignKey(User, null=True, validators=[is_not_basic])
|
||||||
private = models.CharField(max_length=30,choices=choices,default='open',
|
private = models.CharField(max_length=30,choices=choices,default='open',
|
||||||
verbose_name='Team Type')
|
verbose_name='Team Type')
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,68 @@
|
|||||||
from statements import *
|
from statements import *
|
||||||
|
from django.utils import timezone
|
||||||
|
nu = datetime.datetime.now(tz=timezone.utc)
|
||||||
|
|
||||||
# set up
|
# set up
|
||||||
|
|
||||||
|
import rowers.teams as teams
|
||||||
|
import rowers.plannedsessions as plannedsessions
|
||||||
|
|
||||||
|
|
||||||
|
@override_settings(TESTING=True)
|
||||||
|
class PermissionsBasicsTests(TestCase):
|
||||||
|
def setUp:
|
||||||
|
self.c = Client()
|
||||||
## Users - Pro, Basic, Coach & Self Coach
|
## Users - Pro, Basic, Coach & Self Coach
|
||||||
|
|
||||||
## Couple of workouts
|
self.ucoach = UserFactory(username='coachuser')
|
||||||
|
self.rcoach = Rower.objects.create(user=self.ucoach,
|
||||||
|
birthdate=faker.profile()['birthdate'],
|
||||||
|
gdproptin=True,gdproptindate=timezone.now(),
|
||||||
|
rowerplan='coach')
|
||||||
|
|
||||||
|
self.ucoach_workouts = WorkoutFactory.create_batch(5, user=self.rcoach)
|
||||||
|
self.factory = RequestFactory()
|
||||||
|
self.password = faker.word()
|
||||||
|
self.ucoach.set_password(self.password)
|
||||||
|
self.ucoach.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.uselfplan_workouts = WorkoutFactory.create_batch(5, user=self.rselfplan)
|
||||||
|
self.factory = RequestFactory()
|
||||||
|
self.password = faker.word()
|
||||||
|
self.uselfplan.set_password(self.password)
|
||||||
|
self.uselfplan.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.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.password = faker.word()
|
||||||
|
self.ubasic.set_password(self.password)
|
||||||
|
self.ubasic.save()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## TeamPro, TeamCoach, TeamSelfCoach
|
## TeamPro, TeamCoach, TeamSelfCoach
|
||||||
|
|
||||||
@@ -36,6 +94,10 @@ from statements import *
|
|||||||
|
|
||||||
## Basic can join group led by Coach
|
## Basic can join group led by Coach
|
||||||
|
|
||||||
|
## Basic cannot manage a group
|
||||||
|
def test_basic_groupmanager(self):
|
||||||
|
self.assertRaises ...
|
||||||
|
|
||||||
# View based
|
# View based
|
||||||
|
|
||||||
## Coach can have any number of groups
|
## Coach can have any number of groups
|
||||||
|
|||||||
Reference in New Issue
Block a user