Private
Public Access
1
0

c2 import list

This commit is contained in:
Sander Roosendaal
2021-10-31 16:01:23 +01:00
parent 70e85d6665
commit a12fcfdd85
5 changed files with 58 additions and 14 deletions

View File

@@ -1499,7 +1499,7 @@ def workout_getc2workout_all(request,page=1,message=""): # pragma: no cover
r = getrequestrower(request)
result = c2stuff.get_c2_workouts(r,do_async=True)
result = c2stuff.get_c2_workouts(r,page=page,do_async=True)
if result:
messages.info(request,'Your C2 workouts will be imported in the coming few minutes')
@@ -1534,8 +1534,8 @@ def workout_getrp3workout_all(request): # pragma: no cover
@permission_required('rower.is_not_freecoach',fn=get_user_by_userid, raise_exception=True)
def workout_c2import_view(request,page=1,userid=0,message=""):
r = getrequestrower(request,userid=userid)
if r.user != request.user:
rower = getrequestrower(request,userid=userid)
if rower.user != request.user:
messages.error(request,'You can only access your own workouts on the NK Logbook, not those of your athletes')
url = reverse('workout_c2import_view',kwargs={'userid':request.user.id})
return HttpResponseRedirect(url)
@@ -1556,17 +1556,17 @@ def workout_c2import_view(request,page=1,userid=0,message=""):
workouts = []
c2ids = [item['id'] for item in res.json()['data']]
knownc2ids = uniqify([
w.uploadedtoc2 for w in Workout.objects.filter(user=r)
w.uploadedtoc2 for w in Workout.objects.filter(user=rower)
])
tombstones = [
t.uploadedtoc2 for t in TombStone.objects.filter(user=r)
t.uploadedtoc2 for t in TombStone.objects.filter(user=rower)
]
parkedids = []
try:
with open('c2blocked.json','r') as c2blocked:
jsondata = json.load(c2blocked)
parkedids = jsondata['ids']
except FileNotFoundError: # pragma: no cover
except (FileNotFoundError,JSONDecodeError): # pragma: no cover
pass
knownc2ids = uniqify(knownc2ids+tombstones+parkedids)
@@ -1586,8 +1586,38 @@ def workout_c2import_view(request,page=1,userid=0,message=""):
nnn = 'NEW'
keys = ['id','distance','duration','starttime','rowtype','source','comment','new']
values = [i,d,ttot,s,r,s2,c,nnn]
res = dict(zip(keys,values))
workouts.append(res)
ress = dict(zip(keys,values))
workouts.append(ress)
if request.method == "POST":
try: # pragma: no cover
tdict = dict(request.POST.lists())
ids = tdict['workoutid']
c2ids = [int(id) for id in ids]
alldata = {}
for item in res.json()['data']:
alldata[item['id']] = item
counter = 0
for c2id in c2ids:
csvfilename = 'media/{code}_{c2id}.csv'.format(code=uuid4().hex[:16],c2id=c2id)
result = myqueue(
queue,
handle_c2_async_workout,
alldata,
rower.user.id,
rower.c2token,
c2id,
counter,
rower.defaulttimezone
)
counter = counter+1
# done, redirect to workouts list
messages.info(request,'Your Concept2 workouts will be imported in the background. It may take a few minutes before it appears.'.format(c2id=c2id))
url = reverse('workouts_view')
return HttpResponseRedirect(url)
except KeyError:
pass
breadcrumbs = [
@@ -1605,16 +1635,19 @@ def workout_c2import_view(request,page=1,userid=0,message=""):
}
]
r = getrower(request.user)
rower = getrower(request.user)
checknew = request.GET.get('selectallnew',False)
return render(request,
'c2_list_import2.html',
{'workouts':workouts,
'rower':r,
'rower':rower,
'active':'nav-workouts',
'breadcrumbs':breadcrumbs,
'teams':get_my_teams(request.user),
'page':page,
'checknew':checknew,
})
importlistviews = {