From fe59ead06b6fdb5414e08947f39745fbe72f2316 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Thu, 21 Feb 2019 19:56:33 +0100 Subject: [PATCH 1/2] reinstated club sizes --- rowers/teams.py | 25 +++++++++++++++++++------ rowers/tests/test_permissions.py | 6 +++--- rowers/tests/testdata/testdata.csv.gz | Bin 12537 -> 12537 bytes 3 files changed, 22 insertions(+), 9 deletions(-) diff --git a/rowers/teams.py b/rowers/teams.py index d934b446..72efb3d4 100644 --- a/rowers/teams.py +++ b/rowers/teams.py @@ -111,16 +111,20 @@ def remove_team(id): def add_coach(coach,rower): # get coaching group + coachgroup = coach.mycoachgroup if coachgroup is None: coachgroup = CoachingGroup(name=coach.user.first_name) coachgroup.save() coach.mycoachgroup = coachgroup coach.save() - - rower.coachinggroups.add(coach.mycoachgroup) - return (1,"Added Coach") + if get_coach_club_size(coach)<=coach.clubsize: + rower.coachinggroups.add(coach.mycoachgroup) + + return (1,"Added Coach") + else: + return (0,"Maximum number of athletes reached") def add_member(id,rower): t= Team.objects.get(id=id) @@ -287,6 +291,15 @@ def create_request(team,user): return (0,'Something went wrong in create_request') +def get_coach_club_size(coach): + rs = Rower.objects.filter(coachinggroups__in=[coach.mycoachgroup]) + rekwests = CoachOffer.objects.filter(coach=coach) + + result = len(rs)+len(rekwests) + + return result + + # request by coach to coach user def create_coaching_offer(coach,user): r = user.rower @@ -299,7 +312,7 @@ def create_coaching_offer(coach,user): while code in codes: code = uuid.uuid4().hex[:10].upper() - if coach.rowerplan == 'coach': + if coach.rowerplan == 'coach' and get_coach_club_size(coach)<=coach.clubsize: rekwest = CoachOffer(coach=coach,user=user,code=code) rekwest.save() @@ -634,7 +647,7 @@ def process_coachrequest_code(coach,code): result = add_coach(coach,rekwest.user.rower) if not result: - return (result,"Something went wrong") + return result else: send_coachrequest_accepted_email(rekwest) @@ -655,7 +668,7 @@ def process_coachoffer_code(user,code): result = add_coach(rekwest.coach,rekwest.user.rower) if not result: - return (result,"Something went wrong") + return result else: send_coachoffer_accepted_email(rekwest) diff --git a/rowers/tests/test_permissions.py b/rowers/tests/test_permissions.py index 4b1122fd..a902d2fb 100644 --- a/rowers/tests/test_permissions.py +++ b/rowers/tests/test_permissions.py @@ -20,7 +20,7 @@ class PermissionsBasicsTests(TestCase): self.rcoach = Rower.objects.create(user=self.ucoach, birthdate=faker.profile()['birthdate'], gdproptin=True,gdproptindate=timezone.now(), - rowerplan='coach') + rowerplan='coach',clubsize=10) self.ucoach_workouts = WorkoutFactory.create_batch(5, user=self.rcoach) self.coachinggroup = CoachingGroup.objects.create() @@ -280,7 +280,7 @@ class PermissionsViewTests(TestCase): self.rcoach = Rower.objects.create(user=self.ucoach, birthdate=faker.profile()['birthdate'], gdproptin=True,gdproptindate=timezone.now(), - rowerplan='coach') + rowerplan='coach',clubsize=10) self.ucoach_workouts = WorkoutFactory.create_batch(5, user=self.rcoach) self.coachinggroup = CoachingGroup.objects.create() @@ -1009,7 +1009,7 @@ class PermissionsCoachingTests(TestCase): self.rcoach = Rower.objects.create(user=self.ucoach, birthdate=faker.profile()['birthdate'], gdproptin=True,gdproptindate=timezone.now(), - rowerplan='coach') + rowerplan='coach',clubsize=10) self.ucoach_workouts = WorkoutFactory.create_batch(5, user=self.rcoach) self.coachinggroup = CoachingGroup.objects.create() diff --git a/rowers/tests/testdata/testdata.csv.gz b/rowers/tests/testdata/testdata.csv.gz index ea8b8ca53a54a56f6bdc4e91cfa734f6e3cacd88..ab9bd8a4a3e7c24ea36b8ebb3f3f57365c5542f7 100644 GIT binary patch delta 15 WcmeyF_%o4BzMF&N$fu2LpA7&yHU|X& delta 15 WcmeyF_%o4BzMF&N{H={_pA7&y00#H~ From 2c3d9532b03a8ccdecf401cdc752b2249a1462f4 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Thu, 21 Feb 2019 20:26:44 +0100 Subject: [PATCH 2/2] reinstalling club size --- rowers/admin.py | 7 +++++-- rowers/teams.py | 6 ++++-- rowers/tests/testdata/testdata.csv.gz | Bin 12537 -> 12537 bytes rowers/views/teamviews.py | 6 +++++- 4 files changed, 14 insertions(+), 5 deletions(-) diff --git a/rowers/admin.py b/rowers/admin.py index fad8795b..7ef887fb 100644 --- a/rowers/admin.py +++ b/rowers/admin.py @@ -24,7 +24,7 @@ class RowerInline(admin.StackedInline): ('Billing Details', {'fields':('street_address','city','postal_code','country','paymentprocessor','customer_id')}), ('Rower Plan', - {'fields':('paidplan','rowerplan','paymenttype','planexpires','teamplanexpires','protrialexpires','plantrialexpires',)}), + {'fields':('paidplan','rowerplan','paymenttype','planexpires','teamplanexpires','protrialexpires','plantrialexpires','clubsize','offercoaching')}), ('Rower Settings', {'fields': ('gdproptin','gdproptindate','weightcategory','sex','adaptiveclass','birthdate','getemailnotifications', @@ -60,7 +60,7 @@ class RowerInline(admin.StackedInline): #class UserAdmin(UserAdmin): class UserAdmin(admin.ModelAdmin): inlines = (RowerInline,) - list_display = ('username','email','first_name','last_name','rowerplan') + list_display = ('username','email','first_name','last_name','rowerplan','clubsize') fieldsets = ( ('Personal info', @@ -75,6 +75,9 @@ class UserAdmin(admin.ModelAdmin): def rowerplan(self, obj): return obj.rower.rowerplan + def clubsize(self, obj): + return obj.rower.clubsize + class WorkoutAdmin(admin.ModelAdmin): list_display = ('date','user','name','workouttype','boattype') diff --git a/rowers/teams.py b/rowers/teams.py index 72efb3d4..8980e8a8 100644 --- a/rowers/teams.py +++ b/rowers/teams.py @@ -119,7 +119,7 @@ def add_coach(coach,rower): coach.mycoachgroup = coachgroup coach.save() - if get_coach_club_size(coach)<=coach.clubsize: + if get_coach_club_size(coach)=coach.clubsize: + return(0,'You have reached the maximum number of athletes') else: return (0,'You are not a coach') diff --git a/rowers/tests/testdata/testdata.csv.gz b/rowers/tests/testdata/testdata.csv.gz index ab9bd8a4a3e7c24ea36b8ebb3f3f57365c5542f7..0a15e5a00428eb94328bbd184fa647939b77b8dc 100644 GIT binary patch delta 15 WcmeyF_%o4BzMF$1_}50Z&jtWDxCWd6 delta 15 WcmeyF_%o4BzMF&N$fu2LpA7&yHU|X& diff --git a/rowers/views/teamviews.py b/rowers/views/teamviews.py index 224a2ef7..0fff0eb4 100644 --- a/rowers/views/teamviews.py +++ b/rowers/views/teamviews.py @@ -189,7 +189,9 @@ def rower_teams_view(request,message='',successmessage=''): coachrequests = CoachRequest.objects.filter(coach=r) invitedathletes = [rekwest.user for rekwest in mycoachoffers] - invitedcoaches = [rekwest.coach for rekwest in mycoachrequests] + invitedcoaches = [rekwest.coach for rekwest in mycoachrequests ] + invitedcoaches += [rekwest.coach for rekwest in coachoffers] + invitingathletes = [rekwest.user for rekwest in coachrequests] coaches = teams.rower_get_coaches(r) @@ -200,6 +202,7 @@ def rower_teams_view(request,message='',successmessage=''): ] potentialcoaches = list(set(potentialcoaches+offercoaches)) potentialcoaches = [c for c in potentialcoaches if c.rower not in invitedcoaches+coaches] + potentialcoaches = [c for c in potentialcoaches if teams.get_coach_club_size(c.rower)