Private
Public Access
1
0

Merge branch 'release/v15.47'

This commit is contained in:
Sander Roosendaal
2021-02-10 20:23:10 +01:00
6 changed files with 46 additions and 24 deletions

View File

@@ -68,6 +68,8 @@ def process_webhook(notification):
subscription = notification.subscription
rs = Rower.objects.filter(subscription_id=subscription.id)
if rs.count() == 0:
with open('braintreewebhooks.log','a') as f:
f.write('Could not find rowers with subscription ID '+subscription.id+'\n')
return 0
r = rs[0]
result,mesg,errormsg = cancel_subscription(r,subscription.id)

View File

@@ -1076,7 +1076,6 @@ class CourseSelectForm(forms.Form):
manager = kwargs.pop('manager',None)
super(CourseSelectForm,self).__init__(*args,**kwargs)
if course is not None:
print('aap',course)
d_min = 0.5*course.distance
d_max = 2*course.distance
country = course.country

View File

@@ -748,6 +748,7 @@ class CoachingGroup(models.Model):
class Rower(models.Model):
adaptivetypes = mytypes.adaptivetypes
stravatypes = (
('match','Variable - try to match the type'),
('Ride','Ride'),
('Kitesurf','Kitesurf'),
('Run','Run'),
@@ -965,7 +966,7 @@ class Rower(models.Model):
stravatokenexpirydate = models.DateTimeField(blank=True,null=True)
stravarefreshtoken = models.CharField(default='',max_length=1000,
blank=True,null=True)
stravaexportas = models.CharField(default="Rowing",
stravaexportas = models.CharField(default="match",
max_length=30,
choices=stravatypes,
verbose_name="Export Workouts to Strava as")
@@ -2292,7 +2293,7 @@ class PlannedSession(models.Model):
if self.sessionvalue <= 0:
self.sessionvalue = 1
manager = self.manager
if self.sessiontype not in ['race','indoorrace']:
if not can_add_session(self.manager):

View File

@@ -752,23 +752,36 @@ def workout_strava_upload(user,w, quick=False,asynchron=True):
tcxfile, tcxmesg = createstravaworkoutdata(w)
if not tcxfile:
return "Failed to create workout data",0
activity_type = r.stravaexportas
if r.stravaexportas == 'match':
try:
activity_type = mytypes.stravamapping[w.workouttype]
except KeyError:
activity_type = 'Rowing'
job = myqueue(queue,
handle_strava_sync,
r.stravatoken,
w.id,
tcxfile,w.name,r.stravaexportas,
tcxfile,w.name,activity_type,
w.notes
)
return "Asynchronous sync",-1
try:
tcxfile,tcxmesg = createstravaworkoutdata(w)
if tcxfile:
activity_type = r.stravaexportas
if r.stravaexportas == 'match':
try:
activity_type = mytypes.stravamapping[w.workouttype]
except KeyError:
activity_type = 'Rowing'
print(w.workouttype,activity_type)
with open(tcxfile,'rb') as f:
res,mes = handle_stravaexport(
f,w.name,
r.stravatoken,
description=w.notes+'\n from '+w.workoutsource+' via rowsandall.com',
activity_type=r.stravaexportas,quick=quick,asynchron=asynchron)
activity_type=activity_type,quick=quick,asynchron=asynchron)
if res==0:
message = mes
w.uploadedtostrava = -1

View File

@@ -93,8 +93,14 @@ def workout_strava_upload_view(request,id=0):
newnotes = w.notes+'\n from '+w.workoutsource+' via rowsandall.com'
except TypeError:
newnotes = 'from '+w.workoutsource+' via rowsandall.com'
activity_type = 'Ride'
if w.workouttype in mytypes.rowtypes:
activity_type = r.stravaexportas
if activity_type == 'match':
try:
activity_type = mytypes.stravamapping[w.workouttype]
except KeyError:
activity_type = 'Ride'
else:
try:
activity_type = mytypes.stravamapping[w.workouttype]
@@ -1669,26 +1675,14 @@ def workout_getc2workout_all(request,page=1,message=""):
except NoTokenError:
return HttpResponseRedirect("/rowers/me/c2authorize/")
res = c2stuff.get_c2_workout_list(request.user,page=page)
r = getrequestrower(request)
if (res.status_code != 200):
message = "Something went wrong in workout_c2import_view (C2 token refresh)"
messages.error(request,message)
result = c2stuff.get_c2_workouts(r,do_async=True)
if result:
messages.info(request,'Your C2 workouts will be imported in the coming few minutes')
else:
r = getrower(request.user)
c2ids = [item['id'] for item in res.json()['data']]
alldata = {}
for item in res.json()['data']:
alldata[item['id']] = item
knownc2ids = uniqify([
w.uploadedtoc2 for w in Workout.objects.filter(user=r)
])
newids = [c2id for c2id in c2ids if not c2id in knownc2ids]
for c2id in newids:
workoutid = c2stuff.create_async_workout(alldata,
request.user,c2id)
messages.error(request,'Your C2 workouts import failed')
url = reverse('workouts_view')
return HttpResponseRedirect(url)
@@ -1718,6 +1712,19 @@ def workout_c2import_view(request,page=1,userid=0,message=""):
knownc2ids = uniqify([
w.uploadedtoc2 for w in Workout.objects.filter(user=r)
])
tombstones = [
t.uploadedtoc2 for t in TombStone.objects.filter(user=r)
]
parkedids = []
try:
with open('c2blocked.json','r') as c2blocked:
jsondata = json.load(c2blocked)
parkedids = jsondata['ids']
except FileNotFoundError:
pass
knownc2ids = uniqify(knownc2ids+tombstones+parkedids)
newids = [c2id for c2id in c2ids if not c2id in knownc2ids]
for item in res.json()['data']:
d = item['distance']

View File

@@ -118,7 +118,7 @@ from rowers.models import (
PlannedSessionComment,CoachRequest,CoachOffer,
VideoAnalysis,ShareKey,
StandardCollection,CourseStandard,
VirtualRaceFollower,
VirtualRaceFollower,TombStone
)
from rowers.models import (
RowerPowerForm,RowerHRZonesForm,RowerForm,RowerCPForm,GraphImage,AdvancedWorkoutForm,