Private
Public Access
1
0

repair stroke data

This commit is contained in:
Sander Roosendaal
2016-12-08 17:02:06 +01:00
parent 28d2664f38
commit 09d6d92cbb
2 changed files with 60 additions and 0 deletions

View File

@@ -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)

View File

@@ -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'))