Merge branch 'release/v11.91'
This commit is contained in:
@@ -7,6 +7,12 @@ from __future__ import unicode_literals, absolute_import
|
||||
from rowers.imports import *
|
||||
import re
|
||||
|
||||
import django_rq
|
||||
queue = django_rq.get_queue('default')
|
||||
queuelow = django_rq.get_queue('low')
|
||||
queuehigh = django_rq.get_queue('low')
|
||||
from rowers.utils import myqueue
|
||||
|
||||
from rowers.rower_rules import is_workout_user
|
||||
|
||||
from rowsandall_app.settings import (
|
||||
@@ -276,7 +282,7 @@ def default(o):
|
||||
if isinstance(o, numpy.int64): return int(o)
|
||||
raise TypeError
|
||||
|
||||
def workout_runkeeper_upload(user,w):
|
||||
def workout_runkeeper_upload(user,w,asynchron=False):
|
||||
message = "Uploading to Runkeeper"
|
||||
rkid = 0
|
||||
|
||||
@@ -301,6 +307,10 @@ def workout_runkeeper_upload(user,w):
|
||||
'Content-Length':'nnn'}
|
||||
|
||||
url = "https://api.runkeeper.com/fitnessActivities"
|
||||
if asynchron:
|
||||
job = myqueue(queue,handle_runkeeper_sync,
|
||||
w.id,url,headers,json.dumps(data,default=default))
|
||||
return "Asynchronous sync",0
|
||||
response = requests.post(url,headers=headers,data=json.dumps(data,default=default))
|
||||
|
||||
# check for duplicate error first
|
||||
|
||||
@@ -8,6 +8,12 @@ from __future__ import unicode_literals, absolute_import
|
||||
|
||||
import numpy
|
||||
|
||||
import django_rq
|
||||
queue = django_rq.get_queue('default')
|
||||
queuelow = django_rq.get_queue('low')
|
||||
queuehigh = django_rq.get_queue('low')
|
||||
from rowers.utils import myqueue
|
||||
|
||||
from rowers.imports import *
|
||||
import re
|
||||
from rowsandall_app.settings import (
|
||||
@@ -280,7 +286,8 @@ def workout_sporttracks_upload(user,w,asynchron=False):
|
||||
|
||||
url = "https://api.sporttracks.mobi/api/v2/fitnessActivities.json"
|
||||
if asynchron:
|
||||
job = myqueue(w.id,url,headers,json.dumps(data,default=default))
|
||||
job = myqueue(queue,handle_sporttracks_sync,
|
||||
w.id,url,headers,json.dumps(data,default=default))
|
||||
return "Asynchronous sync",0
|
||||
|
||||
response = requests.post(url,headers=headers,data=json.dumps(data,default=default))
|
||||
|
||||
@@ -151,6 +151,21 @@ def handle_sporttracks_sync(workoutid,url,headers,data,debug=False,**kwargs):
|
||||
|
||||
res = update_workout_field_sql(workoutid,'uploadedtosporttracks',id,debug=debug)
|
||||
|
||||
app.task
|
||||
def handle_runkeeper_sync(workoutid,url,headers,data,debug=False,**kwargs):
|
||||
response = requests.post(url,headers=headers,data=data)
|
||||
if response.status_code not in [200,201]:
|
||||
return 0
|
||||
|
||||
t = response.json()
|
||||
uri = t['uris'][0]
|
||||
regex = '.*?sporttracks\.mobi\/api\/v2\/fitnessActivities/(\d+)\.json$'
|
||||
m = re.compile(regex).match(uri).group(1)
|
||||
|
||||
id = int(m)
|
||||
|
||||
res = update_workout_field_sql(workoutid,'uploadedtorunkeeper',id,debug=debug)
|
||||
|
||||
|
||||
|
||||
@app.task
|
||||
@@ -2177,7 +2192,7 @@ def handle_sendemail_message(email,fromemail,rowername,message,teamname,managern
|
||||
|
||||
fullemail = email
|
||||
subject = 'New message from team ' + teamname
|
||||
from_email = fromemail
|
||||
from_email = 'Rowsandall <info@rowsandall.com>'
|
||||
|
||||
d = {
|
||||
'rowername':rowername,
|
||||
|
||||
@@ -42,7 +42,7 @@ from rowers.tasks import (
|
||||
handle_sendemail_message,
|
||||
)
|
||||
|
||||
from rowers.models import ValidationError
|
||||
from rowers.models import ValidationError, PlannedSession
|
||||
|
||||
# Low level functions - to be called by higher level methods
|
||||
|
||||
@@ -133,6 +133,11 @@ def add_member(id,rower):
|
||||
|
||||
res = 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:
|
||||
res = ps.rower.add(rower)
|
||||
|
||||
# set_teamplanexpires(rower)
|
||||
|
||||
return (id,'Member added')
|
||||
|
||||
@@ -555,7 +555,7 @@ def do_sync(w,options, quick=False):
|
||||
if ('upload_to_RunKeeper' in options and options['upload_to_RunKeeper']) or (w.user.runkeeper_auto_export and ispromember(w.user.user)):
|
||||
try:
|
||||
message,id = runkeeperstuff.workout_runkeeper_upload(
|
||||
w.user.user,w
|
||||
w.user.user,w,asynchron=True,
|
||||
)
|
||||
except NoTokenError:
|
||||
message = "Please connect to Runkeeper first"
|
||||
|
||||
Reference in New Issue
Block a user