Merge branch 'release/v15.47'
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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']
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user