diff --git a/rowers/dataprep.py b/rowers/dataprep.py index dca076d2..1246d74d 100644 --- a/rowers/dataprep.py +++ b/rowers/dataprep.py @@ -13,6 +13,7 @@ import itertools from django.conf import settings from sqlalchemy import create_engine import sqlalchemy as sa +import sys user = settings.DATABASES['default']['USER'] password = settings.DATABASES['default']['PASSWORD'] @@ -79,6 +80,40 @@ def timedeltaconv(x): return dt +def compare_data(id): + row = Workout.objects.get(id=id) + f1 = row.csvfilename + rowdata = rdata(f1) + try: + l1 = len(rowdata.df) + except AttributeError: + l1 = 0 + + engine = create_engine(database_url, echo=False) + query = sa.text('SELECT COUNT(*) FROM strokedata WHERE workoutid={id};'.format( + id=id, + )) + with engine.connect() as conn, conn.begin(): + try: + res = conn.execute(query) + l2 = res.fetchall()[0][0] + except: + print "Database Locked" + conn.close() + engine.dispose() + return l1==l2 + +def repair_data(verbose=False): + ws = Workout.objects.all() + for w in ws: + if verbose: + sys.stdout.write(".") + if not compare_data(w.id): + if verbose: + print w.id + rowdata = rdata(w.csvfilename) + update_strokedata(w.id,rowdata.df) + def rdata(file,rower=rrower()): try: res = rrdata(file,rower=rower) diff --git a/rowers/interactiveplots.py b/rowers/interactiveplots.py index 049e238d..4560905c 100644 --- a/rowers/interactiveplots.py +++ b/rowers/interactiveplots.py @@ -907,7 +907,7 @@ def interactive_flex_chart2(id=0,promember=0, return "","CSV Data File Not Found" else: rowdata.sort_values(by='time',ascending=True,inplace=True) - + workoutstateswork = [1,4,5,8,9,6,7] workoutstatesrest = [3] workoutstatetransition = [0,2,10,11,12,13] @@ -983,7 +983,7 @@ def interactive_flex_chart2(id=0,promember=0, source2 = ColumnDataSource( rowdata.copy() ) - + # Add hover to this comma-separated string and see what changes if (promember==1): TOOLS = 'save,pan,box_zoom,wheel_zoom,reset,tap,hover,resize,crosshair' @@ -996,7 +996,7 @@ def interactive_flex_chart2(id=0,promember=0, plot = Figure(x_axis_type=x_axis_type,y_axis_type=y_axis_type, tools=TOOLS, - toolbar_sticky=False, + toolbar_sticky=False ) x1means = Span(location=x1mean,dimension='height',line_color='green', @@ -1235,8 +1235,6 @@ def interactive_flex_chart2(id=0,promember=0, js_resources = INLINE.render_js() css_resources = INLINE.render_css() - - return [script,div,js_resources,css_resources] diff --git a/rowers/management/commands/repairstrokedata.py b/rowers/management/commands/repairstrokedata.py new file mode 100644 index 00000000..c6400461 --- /dev/null +++ b/rowers/management/commands/repairstrokedata.py @@ -0,0 +1,25 @@ +#!/srv/venv/bin/python +import sys +import os +# If you find a solution that does not need the two paths, please comment! +sys.path.append('$path_to_root_of_project$') +sys.path.append('$path_to_root_of_project$/$project_name$') + +os.environ['DJANGO_SETTINGS_MODULE'] = '$project_name$.settings' + +from django.core.management.base import BaseCommand, CommandError +from django.conf import settings +#from rowers.mailprocessing import processattachments +import time +from django.conf import settings +from rowers.models import Workout, User, Rower, WorkoutForm,RowerForm,GraphImage,AdvancedWorkoutForm +from django.core.files.base import ContentFile + +from rowsandall_app.settings import BASE_DIR + +from rowers.dataprep import * + +class Command(BaseCommand): + def handle(self, *args, **options): + repair_data(verbose=True) + self.stdout.write(self.style.SUCCESS('Successfully cleaned data')) diff --git a/rowers/views.py b/rowers/views.py index b179a94f..20e235cf 100644 --- a/rowers/views.py +++ b/rowers/views.py @@ -2683,14 +2683,14 @@ def workout_flexchart3_view(request,*args,**kwargs): workstrokesonly = False # create interactive plot - res = interactive_flex_chart2(id,xparam=xparam,yparam1=yparam1, + script,div,js_resources,css_resources = interactive_flex_chart2(id,xparam=xparam,yparam1=yparam1, yparam2=yparam2, promember=promember,plottype=plottype, workstrokesonly=workstrokesonly) - script = res[0] - div = res[1] - js_resources = res[2] - css_resources = res[3] + # script = res[0] + # div = res[1] + # js_resources = res[2] + # css_resources = res[3] if row.workouttype == 'water': return render(request, diff --git a/rowsandall_app/settings.py b/rowsandall_app/settings.py index 1e78bec2..89c356ab 100644 --- a/rowsandall_app/settings.py +++ b/rowsandall_app/settings.py @@ -60,6 +60,9 @@ AUTHENTICATION_BACKENDS = ( ) MIDDLEWARE_CLASSES = [ + 'django.middleware.gzip.GZipMiddleware', + 'htmlmin.middleware.HtmlMinifyMiddleware', + 'htmlmin.middleware.MarkRequestMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware',