Private
Public Access
1
0
This commit is contained in:
Sander Roosendaal
2022-02-18 12:59:18 +01:00
parent f80dbdb4de
commit 508ebfd9a1
5 changed files with 87 additions and 115 deletions

View File

@@ -1,4 +1,3 @@
from rowers.models import VirtualRace, GeoCourse
from rowers.utils import rankingdistances, rankingdurations
from rowers.utils import (
workflowleftpanel, workflowmiddlepanel,
@@ -18,7 +17,7 @@ from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.models import User
from django.contrib.admin.widgets import AdminDateWidget
from django.forms.widgets import SelectDateWidget, HiddenInput
#from django.forms.extras.widgets import SelectDateWidget
from django.utils import timezone, translation
from django.forms import ModelForm, Select
import rowers.dataprep as dataprep
@@ -573,11 +572,17 @@ class UploadOptionsForm(forms.Form):
choices3 = [(0, '---')]
noregistrations = []
for ra in VirtualRace.objects.filter(registration_closure__gt=timezone.now(), sessiontype='race'): # pragma: no cover
for ra in VirtualRace.objects.filter(
registration_closure__gt=timezone.now(),
sessiontype='race'
): # pragma: no cover
rs = VirtualRaceResult.objects.filter(race=ra, userid=r.id)
if rs.count() == 0:
noregistrations.append((-ra.id, ra.name))
for ra in VirtualRace.objects.filter(registration_closure__gt=timezone.now(), sessiontype='indoorrace'): # pragma: no cover
for ra in VirtualRace.objects.filter(
registration_closure__gt=timezone.now(),
sessiontype='indoorrace'
): # pragma: no cover
rs = IndoorVirtualRaceResult.objects.filter(race=ra, userid=r.id)
if rs.count() == 0:
noregistrations.append((-ra.id, ra.name))
@@ -1055,20 +1060,6 @@ class RegistrationFormSex(RegistrationFormUniqueEmail):
adaptiveclass = forms.ChoiceField(label='Adaptive Classification',
choices=adaptivecategories, initial='None', required=False)
# def __init__(self, *args, **kwargs):
# self.fields['sex'].initial = 'not specified'
# Time field supporting microseconds. Not used, I believe.
class MyTimeField(forms.TimeField):
def __init__(self, *args, **kwargs): # pragma: no cover
super(MyTimeField, self).__init__(*args, **kwargs)
supports_microseconds = True
# Form used to automatically define intervals by pace or power
class PowerIntervalUpdateForm(forms.Form):
selectorchoices = (
@@ -1847,14 +1838,13 @@ class StravaChartForm(forms.Form):
choices=yaxchoices2, label='Fourth Chart', required=True)
def __init__(self, request, *args, **kwargs):
extrametrics = kwargs.pop('extrametrics', [])
super(StravaChartForm, self).__init__(*args, **kwargs)
rower = Rower.objects.get(user=request.user)
axchoicespro = (
('', ax[1]) if ax[4] == 'pro' and ax[0] else (ax[0], ax[1]) for ax in axes
)
# axchoicespro = (
# ('', ax[1]) if ax[4] == 'pro' and ax[0] else (ax[0], ax[1]) for ax in axes
# )
axchoicesbasicx = []
axchoicesbasicy = []
@@ -1889,14 +1879,13 @@ class FlexAxesForm(forms.Form):
choices=yaxchoices2, label='Right Axis', required=True)
def __init__(self, request, *args, **kwargs):
extrametrics = kwargs.pop('extrametrics', [])
super(FlexAxesForm, self).__init__(*args, **kwargs)
rower = Rower.objects.get(user=request.user)
axchoicespro = (
('', ax[1]) if ax[4] == 'pro' and ax[0] else (ax[0], ax[1]) for ax in axes
)
# axchoicespro = (
# ('', ax[1]) if ax[4] == 'pro' and ax[0] else (ax[0], ax[1]) for ax in axes
# )
axchoicesbasicx = []
axchoicesbasicy = []

View File

@@ -14,7 +14,6 @@ redis_connection = StrictRedis()
def getvalue(data): # pragma: no cover
perc = 0
total = 1
done = 0
id = 0
@@ -43,8 +42,7 @@ def longtask(aantal, jobid=None, debug=False,
if counter > 10:
counter = 0
if debug:
progress = 100.*i/aantal
if jobid != None:
if jobid is not None:
redis_connection.publish(channel, json.dumps(
{
'done': i,
@@ -60,7 +58,6 @@ def longtask(aantal, jobid=None, debug=False,
def longtask2(aantal, jobid=None, debug=False, secret=''): # pragma: no cover
counter = 0
channel = 'tasks'
for i in range(aantal):
time.sleep(1)
counter += 1
@@ -69,7 +66,7 @@ def longtask2(aantal, jobid=None, debug=False, secret=''): # pragma: no cover
progress = int(100.*i/aantal)
if debug:
print(progress)
if jobid != None:
if jobid is not None:
if debug:
url = SITE_URL_DEV
else:

View File

@@ -358,7 +358,6 @@ rowtypes = (
checktypes = [i[0] for i in workouttypes_ordered.items()]
#colors = Category10[9]
colors = list(set(Category10[9]))+list(set(Category20[19]+Category20c[19]))
color_map = {checktypes[i]: colors[i] for i in range(len(checktypes))}
@@ -557,7 +556,7 @@ polaraccesslink_sports = {
'DUATHLON_CYCLING': 'bike',
'DUATHLON_RUNNING': 'Run',
'FIELD_HOCKEY': 'other',
'FINNISH_BASEBALL': 'other',
'FINNISH_BASEBALL': 'other',
'FITNESS_DANCING': 'other',
'FITNESS_MARTIAL_ARTS': 'other',
'FITNESS_STEP': 'Workout',
@@ -625,7 +624,7 @@ polaraccesslink_sports = {
'ROLLER_BLADING': 'InlineSkate',
'ROLLER_SKIING_CLASSIC': 'NordicSki',
'ROLLER_SKIING_FREESTYLE': 'NordicSki',
'ROWING': 'water',
'ROWING': 'water',
'RUGBY': 'other',
'RUNNING': 'Run',
'SHOW_DANCING': 'other',
@@ -664,5 +663,5 @@ polaraccesslink_sports = {
'WATERSPORTS_WINDSURFING': 'other',
'XC_SKIING_CLASSIC': 'NordicSki',
'XC_SKIING_FREESTYLE': 'NordicSki',
'YOGA': 'Yoga'
'YOGA': 'Yoga'
}

View File

@@ -82,7 +82,7 @@ def strava_open(user):
f.write('\n')
token = imports_open(user, oauth_data)
if user.rower.strava_owner_id == 0: # pragma: no cover
strava_owner_id = set_strava_athlete_id(user)
_ = set_strava_athlete_id(user)
return token
@@ -120,9 +120,6 @@ def strava_establish_push(): # pragma: no cover
'callback_url': webhooklink,
'verify_token': webhookverification,
}
headers = {'user-agent': 'sanderroosendaal',
'Accept': 'application/json',
'Content-Type': oauth_data['content_type']}
response = requests.post(url, data=post_data)
@@ -160,7 +157,7 @@ def set_strava_athlete_id(user):
s = "Token doesn't exist. Need to authorize"
return custom_exception_handler(401, s)
elif (r.stravatokenexpirydate is None or timezone.now()+timedelta(seconds=3599) > r.stravatokenexpirydate):
token = imports_open(user, oauth_data)
_ = imports_open(user, oauth_data)
authorizationstring = str('Bearer ' + r.stravatoken)
headers = {'Authorization': authorizationstring,
@@ -185,7 +182,9 @@ def get_strava_workout_list(user, limit_n=0):
if (r.stravatoken == '') or (r.stravatoken is None): # pragma: no cover
s = "Token doesn't exist. Need to authorize"
return custom_exception_handler(401, s)
elif (r.stravatokenexpirydate is None or timezone.now()+timedelta(seconds=3599) > r.stravatokenexpirydate): # pragma: no cover
elif (
r.stravatokenexpirydate is None or timezone.now()+timedelta(seconds=3599) > r.stravatokenexpirydate
): # pragma: no cover
s = "Token expired. Needs to refresh."
return custom_exception_handler(401, s)
else:
@@ -209,7 +208,7 @@ def get_strava_workout_list(user, limit_n=0):
def async_get_workout(user, stravaid):
try:
token = strava_open(user)
_ = strava_open(user)
except NoTokenError: # pragma: no cover
return 0
@@ -246,9 +245,9 @@ def createstravaworkoutdata(w, dozip=True):
if datalength != 0:
data.rename(columns=columndict, inplace=True)
res = data.to_csv(w.csvfilename+'.gz',
index_label='index',
compression='gzip')
_ = data.to_csv(w.csvfilename+'.gz',
index_label='index',
compression='gzip')
try:
row = rowingdata(csvfile=filename)
except IOError:
@@ -317,7 +316,7 @@ def handle_stravaexport(f2, workoutname, stravatoken, description='',
def workout_strava_upload(user, w, quick=False, asynchron=True):
try:
thetoken = strava_open(user)
_ = strava_open(user)
except NoTokenError: # pragma: no cover
return "Please connect to Strava first", 0
@@ -326,7 +325,6 @@ def workout_strava_upload(user, w, quick=False, asynchron=True):
r = Rower.objects.get(user=user)
res = -1
if (r.stravatoken == '') or (r.stravatoken is None): # pragma: no cover
s = "Token doesn't exist. Need to authorize"
raise NoTokenError("Your hovercraft is full of eels")
if (is_workout_user(user, w)):
@@ -340,13 +338,12 @@ def workout_strava_upload(user, w, quick=False, asynchron=True):
activity_type = mytypes.stravamapping[w.workouttype]
except KeyError: # pragma: no cover
activity_type = 'Rowing'
job = myqueue(queue,
handle_strava_sync,
r.stravatoken,
w.id,
tcxfile, w.name, activity_type,
w.notes
)
_ = myqueue(queue,
handle_strava_sync,
r.stravatoken,
w.id,
tcxfile, w.name, activity_type,
w.notes)
dologging('strava_export_log.log', 'Exporting as {t} from {w}'.format(
t=activity_type, w=w.workouttype))
return "Asynchronous sync", -1

View File

@@ -88,7 +88,7 @@ def create_team(name, manager, private='open', notes='', viewing='allmembers'):
private=private, viewing=viewing)
t.save()
r = Rower.objects.get(user=manager)
res = add_member(t.id, r)
_ = add_member(t.id, r)
except IntegrityError:
return (0, 'Team name duplication')
return (t.id, 'Team created')
@@ -131,13 +131,13 @@ def add_member(id, rower):
# code to add all workouts
ws = Workout.objects.filter(user=rower)
res = handle_add_workouts_team(ws, t)
_ = handle_add_workouts_team(ws, t)
# code to add plannedsessions
plannedsessions = PlannedSession.objects.filter(
team=t, enddate__gte=timezone.now().date())
for ps in plannedsessions: # pragma: no cover
res = ps.rower.add(rower)
_ = ps.rower.add(rower)
# set_teamplanexpires(rower)
# code for Stuck At Home Team (temporary)
@@ -154,7 +154,7 @@ def remove_member(id, rower):
# remove the team from rower's workouts:
ws = Workout.objects.filter(user=rower, team=t)
res = handle_remove_workouts_team(ws, t)
_ = handle_remove_workouts_team(ws, t)
# set_teamplanexpires(rower)
return (id, 'Member removed')
@@ -270,9 +270,9 @@ def send_coachrequest_email(rekwest):
coachname = rekwest.coach.user.first_name + " " + rekwest.coach.user.last_name
res = myqueue(queuehigh,
handle_sendemail_coachrequest,
email, name, code, coachname)
_ = myqueue(queuehigh,
handle_sendemail_coachrequest,
email, name, code, coachname)
def send_coacheerequest_email(rekwest):
@@ -283,14 +283,13 @@ def send_coacheerequest_email(rekwest):
coachname = rekwest.coach.user.first_name + " " + rekwest.coach.user.last_name
res = myqueue(queuehigh,
handle_sendemail_coacheerequest,
email, name, code, coachname)
_ = myqueue(queuehigh,
handle_sendemail_coacheerequest,
email, name, code, coachname)
def create_request(team, user):
r2 = Rower.objects.get(user=user)
r = Rower.objects.get(user=team.manager)
if r2 in Rower.objects.filter(team=team): # pragma: no cover
return (0, 'Already a member of that team')
@@ -323,8 +322,6 @@ def get_coach_club_size(coach):
# request by coach to coach user
def create_coaching_offer(coach, user):
r = user.rower
if coach in rower_get_coaches(user.rower): # pragma: no cover
return (0, 'You are already coaching this person.')
@@ -348,7 +345,6 @@ def create_coaching_offer(coach, user):
def create_invite(team, manager, user=None, email=''):
r = Rower.objects.get(user=manager)
if not is_team_manager(manager, team):
return (0, 'Not the team manager')
if user:
@@ -359,7 +355,7 @@ def create_invite(team, manager, user=None, email=''):
return (0, 'Rower does not exist')
if r2 in Rower.objects.filter(team=team):
return (0, 'Already member of that team')
elif email == None or email == '': # pragma: no cover
elif email is None or email == '': # pragma: no cover
return (0, 'Invalid request - missing email or user')
else:
try:
@@ -390,13 +386,11 @@ def revoke_request(user, id):
except TeamRequest.DoesNotExist: # pragma: no cover
return (0, 'The request is invalid')
t = rekwest.team
if rekwest.user == user:
rekwest.delete()
return (1, 'Request revoked')
else: # pragma: no cover
return (0, 'You are not the requestor')
return (0, 'You are not the requestor') # pragma: no cover
def reject_revoke_coach_offer(user, id):
@@ -493,9 +487,9 @@ def send_invite_email(id):
manager = invitation.team.manager.first_name + \
' '+invitation.team.manager.last_name
res = myqueue(queuehigh,
handle_sendemail_invite,
email, name, code, teamname, manager)
_ = myqueue(queuehigh,
handle_sendemail_invite,
email, name, code, teamname, manager)
return (1, 'Invitation email sent')
@@ -506,9 +500,9 @@ def send_team_delete_mail(t, rower):
email = u.email
name = u.first_name+' '+u.last_name
manager = t.manager.first_name+' '+t.manager.last_name
res = myqueue(queuehigh,
handle_sendemail_team_removed,
email, name, teamname, manager)
_ = myqueue(queuehigh,
handle_sendemail_team_removed,
email, name, teamname, manager)
return (1, 'Team delete email sent')
@@ -521,41 +515,38 @@ def send_email_member_dropped(teamid, rower):
name = u.first_name+' '+u.last_name
manager = t.manager.first_name+' '+t.manager.last_name
res = myqueue(queuehigh, handle_sendemail_member_dropped,
email, name, teamname, manager)
_ = myqueue(queuehigh, handle_sendemail_member_dropped,
email, name, teamname, manager)
return (1, 'Member dropped email sent')
def send_request_accept_email(rekwest): # pragma: no cover
id = rekwest.id
email = rekwest.user.email
teamname = rekwest.team.name
name = rekwest.user.first_name+' '+rekwest.user.last_name
manager = rekwest.team.manager.first_name+' '+rekwest.team.manager.last_name
res = myqueue(queuehigh,
handle_sendemail_request_accept,
email, name, teamname, manager)
_ = myqueue(queuehigh,
handle_sendemail_request_accept,
email, name, teamname, manager)
return (1, 'Invitation email sent')
def send_request_reject_email(rekwest):
id = rekwest.id
teamname = rekwest.team.name
email = rekwest.user.email
name = rekwest.user.first_name+' '+rekwest.user.last_name
manager = rekwest.team.manager.first_name+' '+rekwest.team.manager.last_name
res = myqueue(queuehigh,
handle_sendemail_request_reject,
email, name, teamname, manager)
_ = myqueue(queuehigh,
handle_sendemail_request_reject,
email, name, teamname, manager)
return (1, 'Invitation email sent')
def send_invite_reject_email(invitation):
id = invitation.id
email = invitation.team.manager.email
if invitation.user:
name = invitation.user.first_name+' '+invitation.user.last_name
@@ -566,15 +557,14 @@ def send_invite_reject_email(invitation):
manager = invitation.team.manager.first_name + \
' '+invitation.team.manager.last_name
res = myqueue(queuehigh,
handle_sendemail_invite_reject,
email, name, teamname, manager)
_ = myqueue(queuehigh,
handle_sendemail_invite_reject,
email, name, teamname, manager)
return (1, 'Invitation email sent')
def send_invite_accept_email(invitation): # pragma: no cover
id = invitation.id
email = invitation.team.manager.email
if invitation.user:
name = invitation.user.first_name+' '+invitation.user.last_name
@@ -585,9 +575,9 @@ def send_invite_accept_email(invitation): # pragma: no cover
manager = invitation.team.manager.first_name + \
' '+invitation.team.manager.last_name
res = myqueue(queuehigh,
handle_sendemail_invite_accept,
email, name, teamname, manager)
_ = myqueue(queuehigh,
handle_sendemail_invite_accept,
email, name, teamname, manager)
return (1, 'Invitation email sent')
@@ -598,9 +588,9 @@ def send_team_message(team, message): # pragma: no cover
for rower in rowers:
rowername = rower.user.first_name + " " + rower.user.last_name
res = myqueue(queuehigh,
handle_sendemail_message,
rower.user.email, team.manager.email, rowername, message, team.name, managername)
_ = myqueue(queuehigh,
handle_sendemail_message,
rower.user.email, team.manager.email, rowername, message, team.name, managername)
return (1, 'message sent')
@@ -613,9 +603,9 @@ def send_request_email(rekwest):
teamname = rekwest.team.name
requestor = rekwest.user.first_name+' '+rekwest.user.last_name
res = myqueue(queuehigh,
handle_sendemail_request,
email, name, code, teamname, requestor, id)
_ = myqueue(queuehigh,
handle_sendemail_request,
email, name, code, teamname, requestor, id)
return (1, 'Invitation email sent')
@@ -729,9 +719,9 @@ def send_coachoffer_rejected_email(rekwest):
name = rekwest.user.first_name + " " + rekwest.user.last_name
res = myqueue(queuehigh,
handle_sendemail_coachoffer_rejected,
coachemail, coachname, name)
_ = myqueue(queuehigh,
handle_sendemail_coachoffer_rejected,
coachemail, coachname, name)
def send_coachrequest_rejected_email(rekwest):
@@ -740,9 +730,9 @@ def send_coachrequest_rejected_email(rekwest):
name = rekwest.user.first_name + " " + rekwest.user.last_name
res = myqueue(queuehigh,
handle_sendemail_coachrequest_rejected,
email, coachname, name)
_ = myqueue(queuehigh,
handle_sendemail_coachrequest_rejected,
email, coachname, name)
def send_coachrequest_accepted_email(rekwest):
@@ -751,9 +741,9 @@ def send_coachrequest_accepted_email(rekwest):
name = rekwest.user.first_name + " " + rekwest.user.last_name
res = myqueue(queuehigh,
handle_sendemail_coachrequest_accepted,
email, coachname, name)
_ = myqueue(queuehigh,
handle_sendemail_coachrequest_accepted,
email, coachname, name)
def send_coachoffer_accepted_email(rekwest):
@@ -762,6 +752,6 @@ def send_coachoffer_accepted_email(rekwest):
name = rekwest.user.first_name + " " + rekwest.user.last_name
res = myqueue(queuehigh,
handle_sendemail_coachoffer_accepted,
coachemail, coachname, name)
_ = myqueue(queuehigh,
handle_sendemail_coachoffer_accepted,
coachemail, coachname, name)