diff --git a/requirements.txt b/requirements.txt index d09e4c29..784be40e 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,5 @@ amqp==2.4.1 +apipkg==1.5 arrow==0.13.1 atomicwrites==1.3.0 attrs==18.2.0 @@ -7,15 +8,18 @@ beautifulsoup4==4.7.1 billiard==3.5.0.5 bleach==3.1.0 bokeh==1.0.4 +boto==2.49.0 braintree==3.51.0 celery==4.2.1 certifi==2018.11.29 chardet==3.0.4 Click==7.0 colorama==0.4.1 +colorclass==2.2.0 cookies==2.2.1 coreapi==2.3.3 coreschema==0.0.4 +coverage==4.5.2 cycler==0.10.0 dask==1.1.1 decorator==4.3.2 @@ -40,6 +44,7 @@ django-rest-framework==0.1.0 django-rest-swagger==2.2.0 django-rq==1.3.0 django-rq-dashboard==0.3.3 +django-ses==0.8.10 django-shell-plus==1.1.7 django-social-share==1.3.2 django-suit==0.2.26 @@ -49,6 +54,7 @@ djangorestframework==3.5.3 docopt==0.6.2 docutils==0.14 entrypoints==0.3 +execnet==1.5.0 factory-boy==2.11.1 Faker==1.0.2 fitparse==1.0.1 @@ -107,6 +113,7 @@ pbr==5.1.2 pexpect==4.6.0 pickleshare==0.7.5 Pillow==5.4.1 +pip-upgrader==1.4.6 pluggy==0.9.0 prometheus-client==0.6.0 prompt-toolkit==2.0.9 @@ -117,9 +124,12 @@ pyparsing==2.3.1 pyrsistent==0.14.11 pytest==4.3.0 pytest-django==3.4.7 +pytest-forked==1.0.2 pytest-runner==4.4 pytest-sugar==0.9.2 +pytest-xdist==1.26.1 python-dateutil==2.8.0 +python-memcached==1.59 python-twitter==3.5 pytz==2018.9 pyviz-comms==0.7.0 @@ -130,7 +140,7 @@ ratelim==0.1.6 redis==3.2.0 requests==2.21.0 requests-oauthlib==1.2.0 -rowingdata==2.0.6 +rowingdata==2.1.2 rowingphysics==0.5.0 rq==0.13.0 scipy==1.2.1 @@ -145,6 +155,7 @@ sqlparse==0.2.4 stravalib==0.10.2 termcolor==1.1.0 terminado==0.8.1 +terminaltables==3.1.0 testpath==0.4.2 text-unidecode==1.2 timezonefinder==3.4.2 diff --git a/rowers/dataprep.py b/rowers/dataprep.py index 6ecbb890..4f62e80d 100644 --- a/rowers/dataprep.py +++ b/rowers/dataprep.py @@ -1638,6 +1638,8 @@ def rdata(file, rower=rrower()): res = rrdata() except: res = rrdata() + except EOFError: + res = rrdata() return res diff --git a/rowers/interactiveplots.py b/rowers/interactiveplots.py index 46f954b3..932198aa 100644 --- a/rowers/interactiveplots.py +++ b/rowers/interactiveplots.py @@ -316,8 +316,8 @@ def interactive_activitychart(workouts,startdate,enddate,stack='type'): bars=table.to.bars(['date',stack],['duration']) bars.opts( opts.Bars(color=hv.Cycle('Category10'), show_legend=True, stacked=True, - tools=['hover'], width=600, xrotation=90,)) -# legend_position='bottom',show_frame=True)) + tools=['hover'], width=550, xrotation=45,padding=(0,(0,.1)), + legend_position='bottom',show_frame=True)) p = hv.render(bars) diff --git a/rowers/rows.py b/rowers/rows.py index 9b6331d6..6393fa02 100644 --- a/rowers/rows.py +++ b/rowers/rows.py @@ -83,15 +83,15 @@ def validate_kml(value): def handle_uploaded_image(i): - import StringIO + from io import StringIO, BytesIO from PIL import Image, ImageOps, ExifTags import os from django.core.files import File - image_str = "" + image_str = b'' for chunk in i.chunks(): image_str += chunk - imagefile = StringIO.StringIO(image_str) + imagefile = BytesIO(image_str) image = Image.open(i) diff --git a/rowers/tests/testdata/testdata.csv.gz b/rowers/tests/testdata/testdata.csv.gz index 55f22803..ca5e2cac 100644 Binary files a/rowers/tests/testdata/testdata.csv.gz and b/rowers/tests/testdata/testdata.csv.gz differ diff --git a/rowers/uploads.py b/rowers/uploads.py index 4a9276a8..83489c8f 100644 --- a/rowers/uploads.py +++ b/rowers/uploads.py @@ -28,7 +28,7 @@ from verbalexpressions import VerEx import django_rq queue = django_rq.get_queue('default') queuelow = django_rq.get_queue('low') -queuehigh = django_rq.get_queue('low') +queuehigh = django_rq.get_queue('high') from rowers.mytypes import workouttypes,boattypes,otwtypes,workoutsources @@ -438,7 +438,7 @@ def make_plot(r,w,f1,f2,plottype,title,imagename='',plotnr=0): plotnr = plotnr+3 - job = myqueue(queue,handle_makeplot,f1,f2, + job = myqueue(queuehigh,handle_makeplot,f1,f2, title,hrpwrdata, plotnr,imagename) diff --git a/rowers/views/workoutviews.py b/rowers/views/workoutviews.py index 4a5328d4..db1018ef 100644 --- a/rowers/views/workoutviews.py +++ b/rowers/views/workoutviews.py @@ -5148,8 +5148,10 @@ class GraphDelete(DeleteView): 'name':'Workouts' }, { - 'url':get_workout_default_page(self.request,self.object.workout.id), - 'name': str(self.object.workout.id) + 'url':get_workout_default_page( + self.request, + encoder.encode_hex(self.object.workout.id)), + 'name': self.object.workout.name }, { 'url':reverse('graph_show_view',kwargs={'id':self.object.pk}), diff --git a/rowsandall_app/settings.py b/rowsandall_app/settings.py index 031f3afb..88aaae22 100644 --- a/rowsandall_app/settings.py +++ b/rowsandall_app/settings.py @@ -303,6 +303,13 @@ RQ_QUEUES = { 'HOST': 'localhost', 'PORT': 6379, 'DB': 0, +# 'PASSWORD': 'some-password', + 'DEFAULT_TIMEOUT': 360, + }, + 'high': { + 'HOST': 'localhost', + 'PORT': 6379, + 'DB': 0, # 'PASSWORD': 'some-password', 'DEFAULT_TIMEOUT': 360, },