Merge branch 'feature/clubsize' into develop
This commit is contained in:
@@ -24,7 +24,7 @@ class RowerInline(admin.StackedInline):
|
|||||||
('Billing Details',
|
('Billing Details',
|
||||||
{'fields':('street_address','city','postal_code','country','paymentprocessor','customer_id')}),
|
{'fields':('street_address','city','postal_code','country','paymentprocessor','customer_id')}),
|
||||||
('Rower Plan',
|
('Rower Plan',
|
||||||
{'fields':('paidplan','rowerplan','paymenttype','planexpires','teamplanexpires','protrialexpires','plantrialexpires',)}),
|
{'fields':('paidplan','rowerplan','paymenttype','planexpires','teamplanexpires','protrialexpires','plantrialexpires','clubsize','offercoaching')}),
|
||||||
('Rower Settings',
|
('Rower Settings',
|
||||||
{'fields':
|
{'fields':
|
||||||
('gdproptin','gdproptindate','weightcategory','sex','adaptiveclass','birthdate','getemailnotifications',
|
('gdproptin','gdproptindate','weightcategory','sex','adaptiveclass','birthdate','getemailnotifications',
|
||||||
@@ -60,7 +60,7 @@ class RowerInline(admin.StackedInline):
|
|||||||
#class UserAdmin(UserAdmin):
|
#class UserAdmin(UserAdmin):
|
||||||
class UserAdmin(admin.ModelAdmin):
|
class UserAdmin(admin.ModelAdmin):
|
||||||
inlines = (RowerInline,)
|
inlines = (RowerInline,)
|
||||||
list_display = ('username','email','first_name','last_name','rowerplan')
|
list_display = ('username','email','first_name','last_name','rowerplan','clubsize')
|
||||||
|
|
||||||
fieldsets = (
|
fieldsets = (
|
||||||
('Personal info',
|
('Personal info',
|
||||||
@@ -75,6 +75,9 @@ class UserAdmin(admin.ModelAdmin):
|
|||||||
def rowerplan(self, obj):
|
def rowerplan(self, obj):
|
||||||
return obj.rower.rowerplan
|
return obj.rower.rowerplan
|
||||||
|
|
||||||
|
def clubsize(self, obj):
|
||||||
|
return obj.rower.clubsize
|
||||||
|
|
||||||
class WorkoutAdmin(admin.ModelAdmin):
|
class WorkoutAdmin(admin.ModelAdmin):
|
||||||
list_display = ('date','user','name','workouttype','boattype')
|
list_display = ('date','user','name','workouttype','boattype')
|
||||||
|
|
||||||
|
|||||||
@@ -111,16 +111,20 @@ def remove_team(id):
|
|||||||
|
|
||||||
def add_coach(coach,rower):
|
def add_coach(coach,rower):
|
||||||
# get coaching group
|
# get coaching group
|
||||||
|
|
||||||
coachgroup = coach.mycoachgroup
|
coachgroup = coach.mycoachgroup
|
||||||
if coachgroup is None:
|
if coachgroup is None:
|
||||||
coachgroup = CoachingGroup(name=coach.user.first_name)
|
coachgroup = CoachingGroup(name=coach.user.first_name)
|
||||||
coachgroup.save()
|
coachgroup.save()
|
||||||
coach.mycoachgroup = coachgroup
|
coach.mycoachgroup = coachgroup
|
||||||
coach.save()
|
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):
|
def add_member(id,rower):
|
||||||
t= Team.objects.get(id=id)
|
t= Team.objects.get(id=id)
|
||||||
@@ -287,6 +291,15 @@ def create_request(team,user):
|
|||||||
|
|
||||||
return (0,'Something went wrong in create_request')
|
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
|
# request by coach to coach user
|
||||||
def create_coaching_offer(coach,user):
|
def create_coaching_offer(coach,user):
|
||||||
r = user.rower
|
r = user.rower
|
||||||
@@ -299,13 +312,15 @@ def create_coaching_offer(coach,user):
|
|||||||
while code in codes:
|
while code in codes:
|
||||||
code = uuid.uuid4().hex[:10].upper()
|
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 = CoachOffer(coach=coach,user=user,code=code)
|
||||||
rekwest.save()
|
rekwest.save()
|
||||||
|
|
||||||
send_coacheerequest_email(rekwest)
|
send_coacheerequest_email(rekwest)
|
||||||
|
|
||||||
return (rekwest.id,'The request was created')
|
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:
|
else:
|
||||||
return (0,'You are not a coach')
|
return (0,'You are not a coach')
|
||||||
@@ -634,7 +649,7 @@ def process_coachrequest_code(coach,code):
|
|||||||
|
|
||||||
result = add_coach(coach,rekwest.user.rower)
|
result = add_coach(coach,rekwest.user.rower)
|
||||||
if not result:
|
if not result:
|
||||||
return (result,"Something went wrong")
|
return result
|
||||||
else:
|
else:
|
||||||
send_coachrequest_accepted_email(rekwest)
|
send_coachrequest_accepted_email(rekwest)
|
||||||
|
|
||||||
@@ -655,7 +670,7 @@ def process_coachoffer_code(user,code):
|
|||||||
|
|
||||||
result = add_coach(rekwest.coach,rekwest.user.rower)
|
result = add_coach(rekwest.coach,rekwest.user.rower)
|
||||||
if not result:
|
if not result:
|
||||||
return (result,"Something went wrong")
|
return result
|
||||||
else:
|
else:
|
||||||
send_coachoffer_accepted_email(rekwest)
|
send_coachoffer_accepted_email(rekwest)
|
||||||
|
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ class PermissionsBasicsTests(TestCase):
|
|||||||
self.rcoach = Rower.objects.create(user=self.ucoach,
|
self.rcoach = Rower.objects.create(user=self.ucoach,
|
||||||
birthdate=faker.profile()['birthdate'],
|
birthdate=faker.profile()['birthdate'],
|
||||||
gdproptin=True,gdproptindate=timezone.now(),
|
gdproptin=True,gdproptindate=timezone.now(),
|
||||||
rowerplan='coach')
|
rowerplan='coach',clubsize=10)
|
||||||
|
|
||||||
self.ucoach_workouts = WorkoutFactory.create_batch(5, user=self.rcoach)
|
self.ucoach_workouts = WorkoutFactory.create_batch(5, user=self.rcoach)
|
||||||
self.coachinggroup = CoachingGroup.objects.create()
|
self.coachinggroup = CoachingGroup.objects.create()
|
||||||
@@ -280,7 +280,7 @@ class PermissionsViewTests(TestCase):
|
|||||||
self.rcoach = Rower.objects.create(user=self.ucoach,
|
self.rcoach = Rower.objects.create(user=self.ucoach,
|
||||||
birthdate=faker.profile()['birthdate'],
|
birthdate=faker.profile()['birthdate'],
|
||||||
gdproptin=True,gdproptindate=timezone.now(),
|
gdproptin=True,gdproptindate=timezone.now(),
|
||||||
rowerplan='coach')
|
rowerplan='coach',clubsize=10)
|
||||||
|
|
||||||
self.ucoach_workouts = WorkoutFactory.create_batch(5, user=self.rcoach)
|
self.ucoach_workouts = WorkoutFactory.create_batch(5, user=self.rcoach)
|
||||||
self.coachinggroup = CoachingGroup.objects.create()
|
self.coachinggroup = CoachingGroup.objects.create()
|
||||||
@@ -1009,7 +1009,7 @@ class PermissionsCoachingTests(TestCase):
|
|||||||
self.rcoach = Rower.objects.create(user=self.ucoach,
|
self.rcoach = Rower.objects.create(user=self.ucoach,
|
||||||
birthdate=faker.profile()['birthdate'],
|
birthdate=faker.profile()['birthdate'],
|
||||||
gdproptin=True,gdproptindate=timezone.now(),
|
gdproptin=True,gdproptindate=timezone.now(),
|
||||||
rowerplan='coach')
|
rowerplan='coach',clubsize=10)
|
||||||
|
|
||||||
self.ucoach_workouts = WorkoutFactory.create_batch(5, user=self.rcoach)
|
self.ucoach_workouts = WorkoutFactory.create_batch(5, user=self.rcoach)
|
||||||
self.coachinggroup = CoachingGroup.objects.create()
|
self.coachinggroup = CoachingGroup.objects.create()
|
||||||
|
|||||||
BIN
rowers/tests/testdata/testdata.csv.gz
vendored
BIN
rowers/tests/testdata/testdata.csv.gz
vendored
Binary file not shown.
@@ -189,7 +189,9 @@ def rower_teams_view(request,message='',successmessage=''):
|
|||||||
coachrequests = CoachRequest.objects.filter(coach=r)
|
coachrequests = CoachRequest.objects.filter(coach=r)
|
||||||
|
|
||||||
invitedathletes = [rekwest.user for rekwest in mycoachoffers]
|
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)
|
coaches = teams.rower_get_coaches(r)
|
||||||
|
|
||||||
@@ -200,6 +202,7 @@ def rower_teams_view(request,message='',successmessage=''):
|
|||||||
]
|
]
|
||||||
potentialcoaches = list(set(potentialcoaches+offercoaches))
|
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 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)
|
coachees = teams.coach_getcoachees(r)
|
||||||
@@ -213,6 +216,7 @@ def rower_teams_view(request,message='',successmessage=''):
|
|||||||
else:
|
else:
|
||||||
potentialathletes = []
|
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)
|
# clubsize = teams.count_invites(request.user)+teams.count_club_members(request.user)
|
||||||
# max_clubsize = r.clubsize
|
# max_clubsize = r.clubsize
|
||||||
|
|||||||
Reference in New Issue
Block a user