Private
Public Access
1
0

Merge branch 'release/v7.25'

This commit is contained in:
Sander Roosendaal
2018-07-08 21:15:41 +02:00
4 changed files with 71 additions and 8 deletions

View File

@@ -78,21 +78,27 @@ def imports_open(user,oauth_data):
token = getattr(r,oauth_data['tokenname'])
try:
refreshtoken = getattr(r,oauth_data['refreshtokenname'])
except (AttributeError,KeyError):
except (TypeError,AttributeError,KeyError):
refreshtoken = None
try:
tokenexpirydate = getattr(r,oauth_data['expirydatename'])
except (AttributeError,KeyError):
except (TypeError,AttributeError,KeyError):
tokenexpirydate = None
if (token == '') or (token is None):
s = "Token doesn't exist. Need to authorize"
raise NoTokenError("User has no token")
else:
tokenname = oauth_data['tokenname']
refreshtokenname = oauth_data['refreshtokenname']
expirydatename = oauth_data['expirydatename']
if tokenexpirydate and timezone.now()>tokenexpirydate:
token = imports_token_refresh(
user,oauth_data,
user,
tokenname,
refreshtokenname,
expirydatename,
)
return token
@@ -236,8 +242,10 @@ def imports_token_refresh(user,tokenname,refreshtokenname,expirydatename):
expirydatetime = timezone.now()+timedelta(seconds=expires_in)
setattr(r,tokenname,access_token)
setattr(r,expirydatename,expirydatetime)
setattr(r,refreshtokenname,refresh_token)
if expirydatename is not None:
setattr(r,expirydatename,expirydatetime)
if refreshtokenname is not None:
setattr(r,refreshtokenname,refresh_token)
r.save()
return r.sporttrackstoken

View File

@@ -15,6 +15,8 @@ oauth_data = {
'autorization_uri': "https://www.runkeeper.com/opps/authorize",
'content_type': 'application/x-www-form-urlencoded',
'tokenname': 'runkeepertoken',
'refreshtokenname': None,
'expirydatename': None,
'bearer_auth': True,
'base_url': "https://runkeeper.com/apps/token",
}

View File

@@ -5,7 +5,8 @@ import re
from rowsandall_app.settings import (
C2_CLIENT_ID, C2_REDIRECT_URI, C2_CLIENT_SECRET,
STRAVA_CLIENT_ID, STRAVA_REDIRECT_URI, STRAVA_CLIENT_SECRET,
SPORTTRACKS_CLIENT_SECRET, SPORTTRACKS_CLIENT_ID, SPORTTRACKS_REDIRECT_URI
SPORTTRACKS_CLIENT_SECRET, SPORTTRACKS_CLIENT_ID,
SPORTTRACKS_REDIRECT_URI
)
oauth_data = {
@@ -232,8 +233,7 @@ def workout_sporttracks_upload(user,w):
# ready to upload. Hurray
r = w.user
res = sporttracks_open(user)
thetoken = res[0]
thetoken = sporttracks_open(user)
if (checkworkoutuser(user,w)):
data = createsporttracksworkoutdata(w)

View File

@@ -959,6 +959,59 @@ class NewUserRegistrationTest(TestCase):
status_code=302,target_status_code=200)
from django_mailbox.models import Mailbox,MessageAttachment,Message
class AutoExportTests(TestCase):
def setUp(self):
redis_connection.publish('tasks','KILL')
u = User.objects.create_user('john',
'sander@ds.ds',
'koeinsloot')
r = Rower.objects.create(user=u,gdproptin=True,
gdproptindate=timezone.now()
)
r.c2_auto_export = True
r.sporttracks_auto_export = True
r.mapmyfitness_auto_export = True
r.trainingpeaks_auto_export = True
r.save()
nu = datetime.datetime.now()
workoutsbox = Mailbox.objects.create(name='workouts')
workoutsbox.save()
failbox = Mailbox.objects.create(name='Failed')
failbox.save()
filename = 'testdata.csv'
m = Message(mailbox=workoutsbox,
from_header = u.email,
subject = filename,
body="""
---
workouttype: water
boattype: 2x
...
""")
m.save()
a2 = 'media/mailbox_attachments/'+filename
copyfile('rowers/testdata/'+filename,a2)
a = MessageAttachment(message=m,document=a2[6:])
a.save()
def tearDown(self):
for filename in os.listdir('media/mailbox_attachments'):
path = os.path.join('media/mailbox_attachments/',filename)
if not os.path.isdir(path):
os.remove(path)
@patch('rowers.tpstuff.requests.post', side_effect=mocked_requests)
@patch('rowers.tpstuff.requests.get', side_effect=mocked_requests)
def test_emailprocessing(self, mock_post, mock_get):
out = StringIO()
call_command('processemail', stdout=out, testing=True)
self.assertIn('Successfully processed email attachments',out.getvalue())
class EmailTests(TestCase):
def setUp(self):