From faeea73b0a642968e5692b0376cc428c883835d2 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Thu, 28 Feb 2019 22:52:59 +0100 Subject: [PATCH] passing all tests on py3 --- rowers/c2stuff.py | 19 +++++++++++++++---- rowers/imports.py | 2 +- rowers/management/commands/processemail.py | 11 ++++++++++- rowers/ownapistuff.py | 2 +- rowers/polarstuff.py | 2 +- rowers/runkeeperstuff.py | 8 +++++++- rowers/sporttracksstuff.py | 9 ++++++++- rowers/tests/test_errorpages.py | 5 +++-- rowers/tests/testdata/testdata.csv.gz | Bin 12543 -> 12543 bytes rowers/underarmourstuff.py | 9 ++++++++- rowers/uploads.py | 5 +++++ rowers/views/importviews.py | 12 +++++++++--- rowers/views/statements.py | 11 +++++++---- rowers/views/workoutviews.py | 2 +- 14 files changed, 76 insertions(+), 21 deletions(-) diff --git a/rowers/c2stuff.py b/rowers/c2stuff.py index f58102fb..691f121b 100644 --- a/rowers/c2stuff.py +++ b/rowers/c2stuff.py @@ -16,6 +16,8 @@ import rowers.mytypes as mytypes from rowers.mytypes import otwtypes from iso8601 import ParseError +import numpy + from rowsandall_app.settings import ( C2_CLIENT_ID, C2_REDIRECT_URI, C2_CLIENT_SECRET ) @@ -424,7 +426,11 @@ def createc2workoutdata(w): hr = 0*d stroke_data = [] for i in range(len(t)): - thisrecord = {"t":t[i],"d":d[i],"p":p[i],"spm":spm[i],"hr":hr[i]} + thisrecord = {"t":t[i].astype(int), + "d":d[i].astype(int), + "p":p[i].astype(int), + "spm":spm[i].astype(int), + "hr":hr[i].astype(int)} stroke_data.append(thisrecord) try: @@ -440,7 +446,7 @@ def createc2workoutdata(w): startdatetime = w.startdatetime.isoformat() except AttributeError: startdate = datetime.datetime.combine(w.date,datetime.time()) - + data = { "type": mytypes.c2mapping[workouttype], "date": w.startdatetime.isoformat(), @@ -551,7 +557,7 @@ def make_authorization_url(request): params = {"client_id": C2_CLIENT_ID, "response_type": "code", "redirect_uri": C2_REDIRECT_URI} - url = "https://log.concept2.com/oauth/authorize?"+ urllib.urlencode(params) + url = "https://log.concept2.com/oauth/authorize?"+ urllib.parse.urlencode(params) url += "&scope="+scope return HttpResponseRedirect(url) @@ -697,6 +703,10 @@ def process_callback(request): return HttpResponse("got a user name: %s" % username) +def default(o): + if isinstance(o, numpy.int64): return int(o) + raise TypeError + # Uploading workout def workout_c2_upload(user,w): message = 'trying C2 upload' @@ -717,6 +727,7 @@ def workout_c2_upload(user,w): raise NoTokenError data = createc2workoutdata(w) + if data == 0: return "Error: No data file. Contact info@rowsandall.com if the problem persists",0 @@ -726,7 +737,7 @@ def workout_c2_upload(user,w): 'Content-Type': 'application/json'} import urllib url = "https://log.concept2.com/api/users/%s/results" % (c2userid) - response = requests.post(url,headers=headers,data=json.dumps(data)) + response = requests.post(url,headers=headers,data=json.dumps(data,default=default)) if (response.status_code == 409 ): message = "Concept2 Duplicate error" diff --git a/rowers/imports.py b/rowers/imports.py index ad3f2f4b..6114ad79 100644 --- a/rowers/imports.py +++ b/rowers/imports.py @@ -280,7 +280,7 @@ def imports_make_authorization_url(oauth_data): import urllib - url = oauth_data['authorizaton_uri']+urllib.urlencode(params) + url = oauth_data['authorizaton_uri']+urllib.parse.urlencode(params) return HttpResponseRedirect(url) diff --git a/rowers/management/commands/processemail.py b/rowers/management/commands/processemail.py index ea187d00..6918fe70 100644 --- a/rowers/management/commands/processemail.py +++ b/rowers/management/commands/processemail.py @@ -1,13 +1,17 @@ #!/srv/venv/bin/python + """ Process emails """ import sys import os +PY3K = sys.version_info >= (3, 0) import zipfile import re import time from time import strftime +import io + from django.core.management.base import BaseCommand from django_mailbox.models import Message, MessageAttachment,Mailbox from django.core.urlresolvers import reverse @@ -62,7 +66,7 @@ def processattachment(rower, fileobj, title, uploadoptions,testing=False): # test if file exists and is not empty try: - with open('media/'+filename,'r') as fop: + with io.open('media/'+filename,'rb') as fop: line = fop.readline() except (IOError, UnicodeEncodeError): if testing: @@ -164,6 +168,11 @@ def get_from_address(message): except IndexError: first_line = '' + try: + first_line = first_line.decode('utf-8') + except AttributeError: + pass + if "quiske" in first_line: match = re.search(r'[\w\.-]+@[\w\.-]+', first_line) return match.group(0) diff --git a/rowers/ownapistuff.py b/rowers/ownapistuff.py index da548559..49c53e3f 100644 --- a/rowers/ownapistuff.py +++ b/rowers/ownapistuff.py @@ -128,7 +128,7 @@ def make_authorization_url(request): import urllib - url = "http://localhost:8000/rowers/o/authorize" +urllib.urlencode(params) + url = "http://localhost:8000/rowers/o/authorize" +urllib.parse.urlencode(params) return HttpResponseRedirect(url) diff --git a/rowers/polarstuff.py b/rowers/polarstuff.py index 6e251328..21b0792e 100644 --- a/rowers/polarstuff.py +++ b/rowers/polarstuff.py @@ -106,7 +106,7 @@ def make_authorization_url(): "redirect_uri": POLAR_REDIRECT_URI, "scope":"write"} import urllib - url = "https://flow.polar.com/oauth2/authorization" +urllib.urlencode(params) + url = "https://flow.polar.com/oauth2/authorization" +urllib.parse.urlencode(params) return HttpResponseRedirect(url) diff --git a/rowers/runkeeperstuff.py b/rowers/runkeeperstuff.py index 5f9cd15f..0800c08a 100644 --- a/rowers/runkeeperstuff.py +++ b/rowers/runkeeperstuff.py @@ -29,6 +29,8 @@ oauth_data = { } +import numpy + def splitrunkeeperlatlongdata(lijst,tname,latname,lonname): t = [] lat = [] @@ -262,6 +264,10 @@ def get_userid(access_token): return str(res) +def default(o): + if isinstance(o, numpy.int64): return int(o) + raise TypeError + def workout_runkeeper_upload(user,w): message = "Uploading to Runkeeper" rkid = 0 @@ -287,7 +293,7 @@ def workout_runkeeper_upload(user,w): 'Content-Length':'nnn'} url = "https://api.runkeeper.com/fitnessActivities" - response = requests.post(url,headers=headers,data=json.dumps(data)) + response = requests.post(url,headers=headers,data=json.dumps(data,default=default)) # check for duplicate error first if (response.status_code == 409 ): diff --git a/rowers/sporttracksstuff.py b/rowers/sporttracksstuff.py index 186340e0..9729d69d 100644 --- a/rowers/sporttracksstuff.py +++ b/rowers/sporttracksstuff.py @@ -6,6 +6,8 @@ from __future__ import unicode_literals from __future__ import unicode_literals, absolute_import # All the functionality to connect to SportTracks +import numpy + from rowers.imports import * import re from rowsandall_app.settings import ( @@ -235,6 +237,11 @@ def getidfromresponse(response): return int(id) +def default(o): + if isinstance(o, numpy.int64): return int(o) + raise TypeError + + def workout_sporttracks_upload(user,w): message = "Uploading to SportTracks" @@ -257,7 +264,7 @@ def workout_sporttracks_upload(user,w): 'Content-Type': 'application/json'} url = "https://api.sporttracks.mobi/api/v2/fitnessActivities.json" - response = requests.post(url,headers=headers,data=json.dumps(data)) + response = requests.post(url,headers=headers,data=json.dumps(data,default=default)) # check for duplicate error first if (response.status_code == 409 ): diff --git a/rowers/tests/test_errorpages.py b/rowers/tests/test_errorpages.py index 6d973366..671514df 100644 --- a/rowers/tests/test_errorpages.py +++ b/rowers/tests/test_errorpages.py @@ -16,11 +16,12 @@ class TestErrorPages(TestCase): factory = RequestFactory() request = factory.get('/') response = error404_view(request) + self.assertEqual(response.status_code, 404) - self.assertIn('404 Page not found', unicode(response)) + self.assertIn('404 Page not found', str(response.content)) response = error500_view(request) self.assertEqual(response.status_code, 500) - self.assertIn('500 Internal Server Error', unicode(response)) + self.assertIn('500 Internal Server Error', str(response.content)) response = error400_view(request) self.assertEqual(response.status_code, 400) diff --git a/rowers/tests/testdata/testdata.csv.gz b/rowers/tests/testdata/testdata.csv.gz index 3098c1b69ebecf455efddc569bb0f26102b13177..3798b4a7b98f1ff1b992f89f329af0107f222aa5 100644 GIT binary patch delta 16 XcmeyL_&0: + elif cached_progress is not None and cached_progress>0: progress = cached_progress else: progress = 0 diff --git a/rowers/views/workoutviews.py b/rowers/views/workoutviews.py index b60b2c91..9b65d9f3 100644 --- a/rowers/views/workoutviews.py +++ b/rowers/views/workoutviews.py @@ -4595,7 +4595,7 @@ def workout_split_view(request,id=0): pass qdict = {'q':rowname} - url+='?'+urllib.urlencode(qdict) + url+='?'+urllib.parse.urlencode(qdict) return HttpResponseRedirect(url)