Private
Public Access
1
0

adding sessions sync

This commit is contained in:
2025-02-15 17:15:45 +01:00
parent 1105854469
commit 0e12ba58cd
3 changed files with 89 additions and 0 deletions

View File

@@ -560,6 +560,75 @@ class IntervalsIntegration(SyncIntegration):
def token_refresh(self, *args, **kwargs):
return super(IntervalsIntegration, self).token_refresh(*args, **kwargs)
def get_plannedsessions(self, *args, **kwargs):
try:
_ = self.open()
except NoTokenError:
return []
r = self.rower
ids = []
headers = {
'Authorization': 'Bearer ' + r.intervals_token,
}
oldest = kwargs.get('oldest', (timezone.now()).strftime('%Y-%m-%d'))
newest = kwargs.get('newest', (timezone.now() + timedelta(days=7)).strftime('%Y-%m-%d'))
url = self.oauth_data['base_url'] + 'athlete/0/events' #'?category=WORKOUT'
url += '?oldest=' + oldest + '&newest=' + newest
response = requests.get(url, headers=headers)
if response.status_code != 200:
return []
sessions = response.json()
for session in sessions:
localsessions = PlannedSession.objects.filter(intervals_icu_id=session['id'], rower__in=[r])
if localsessions.count() == 0:
sessiondata = self.get_plannedsession(session['id'])
if sessiondata['description'] is None:
sessiondata['description'] = ''
if sessiondata:
timetarget = sessiondata['time_target']
if timetarget is None:
timetarget = sessiondata['moving_time']
if timetarget is None:
timetarget = 3600
timetarget = int(timetarget)/60.
ps = PlannedSession(
name=sessiondata['name'],
comment=sessiondata['description'],
sessionmode='time',
sessionvalue=timetarget,
startdate=arrow.get(sessiondata['start_date_local']).datetime,
enddate=arrow.get(sessiondata['end_date_local']).datetime,
preferreddate=arrow.get(sessiondata['start_date_local']).datetime,
sessionsport=mytypes.intervalsmappinginv[sessiondata['type']],
sessiontype='session',
intervals_icu_id=sessiondata['id'],
manager=r.user,
)
ps.save()
ps.rower.add(r)
if sessiondata['category'].lower() == 'workout':
ps.fitfile = sessiondata['fitfile']
ps.save()
ps.update_steps()
if sessiondata['category'].lower() == 'target':
ps.sessiontype = 'cycletarget'
ps.sessionvalue = int(sessiondata['time_target'])/60.
ps.enddate = ps.startdate + datetime.timedelta(days=6)
ps.save()
ids.append(session['id'])
return ids
def get_plannedsessions_list(self, *args, **kwargs):
try:
_ = self.open()