Private
Public Access
1
0

Merge branch 'feature/clubsize' into develop

This commit is contained in:
Sander Roosendaal
2019-02-21 20:27:01 +01:00
5 changed files with 34 additions and 12 deletions

View File

@@ -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')

View File

@@ -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,13 +312,15 @@ 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()
send_coacheerequest_email(rekwest)
return (rekwest.id,'The request was created')
elif 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')
@@ -634,7 +649,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 +670,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)

View File

@@ -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()

Binary file not shown.

View File

@@ -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)<c.rower.clubsize]
coachees = teams.coach_getcoachees(r)
@@ -213,6 +216,7 @@ def rower_teams_view(request,message='',successmessage=''):
else:
potentialathletes = []
potentialathletes = [a for a in potentialathletes if a.user not in invitingathletes]
# clubsize = teams.count_invites(request.user)+teams.count_club_members(request.user)
# max_clubsize = r.clubsize