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 *
|
from rowers.imports import *
|
||||||
import re
|
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 rowers.rower_rules import is_workout_user
|
||||||
|
|
||||||
from rowsandall_app.settings import (
|
from rowsandall_app.settings import (
|
||||||
@@ -276,7 +282,7 @@ def default(o):
|
|||||||
if isinstance(o, numpy.int64): return int(o)
|
if isinstance(o, numpy.int64): return int(o)
|
||||||
raise TypeError
|
raise TypeError
|
||||||
|
|
||||||
def workout_runkeeper_upload(user,w):
|
def workout_runkeeper_upload(user,w,asynchron=False):
|
||||||
message = "Uploading to Runkeeper"
|
message = "Uploading to Runkeeper"
|
||||||
rkid = 0
|
rkid = 0
|
||||||
|
|
||||||
@@ -301,6 +307,10 @@ def workout_runkeeper_upload(user,w):
|
|||||||
'Content-Length':'nnn'}
|
'Content-Length':'nnn'}
|
||||||
|
|
||||||
url = "https://api.runkeeper.com/fitnessActivities"
|
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))
|
response = requests.post(url,headers=headers,data=json.dumps(data,default=default))
|
||||||
|
|
||||||
# check for duplicate error first
|
# check for duplicate error first
|
||||||
|
|||||||
@@ -8,6 +8,12 @@ from __future__ import unicode_literals, absolute_import
|
|||||||
|
|
||||||
import numpy
|
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 *
|
from rowers.imports import *
|
||||||
import re
|
import re
|
||||||
from rowsandall_app.settings import (
|
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"
|
url = "https://api.sporttracks.mobi/api/v2/fitnessActivities.json"
|
||||||
if asynchron:
|
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
|
return "Asynchronous sync",0
|
||||||
|
|
||||||
response = requests.post(url,headers=headers,data=json.dumps(data,default=default))
|
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)
|
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
|
@app.task
|
||||||
@@ -2177,7 +2192,7 @@ def handle_sendemail_message(email,fromemail,rowername,message,teamname,managern
|
|||||||
|
|
||||||
fullemail = email
|
fullemail = email
|
||||||
subject = 'New message from team ' + teamname
|
subject = 'New message from team ' + teamname
|
||||||
from_email = fromemail
|
from_email = 'Rowsandall <info@rowsandall.com>'
|
||||||
|
|
||||||
d = {
|
d = {
|
||||||
'rowername':rowername,
|
'rowername':rowername,
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ from rowers.tasks import (
|
|||||||
handle_sendemail_message,
|
handle_sendemail_message,
|
||||||
)
|
)
|
||||||
|
|
||||||
from rowers.models import ValidationError
|
from rowers.models import ValidationError, PlannedSession
|
||||||
|
|
||||||
# Low level functions - to be called by higher level methods
|
# 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)
|
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)
|
# set_teamplanexpires(rower)
|
||||||
|
|
||||||
return (id,'Member added')
|
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)):
|
if ('upload_to_RunKeeper' in options and options['upload_to_RunKeeper']) or (w.user.runkeeper_auto_export and ispromember(w.user.user)):
|
||||||
try:
|
try:
|
||||||
message,id = runkeeperstuff.workout_runkeeper_upload(
|
message,id = runkeeperstuff.workout_runkeeper_upload(
|
||||||
w.user.user,w
|
w.user.user,w,asynchron=True,
|
||||||
)
|
)
|
||||||
except NoTokenError:
|
except NoTokenError:
|
||||||
message = "Please connect to Runkeeper first"
|
message = "Please connect to Runkeeper first"
|
||||||
|
|||||||
Reference in New Issue
Block a user