diff --git a/rowers/middleware.py b/rowers/middleware.py index 2995dedf..076c93e6 100644 --- a/rowers/middleware.py +++ b/rowers/middleware.py @@ -19,86 +19,9 @@ def getrower(user): return r -def do_update(user,mode='rower',days=42): - r = getrower(user) - - startdate = timezone.now()-datetime.timedelta(days=days) - - # test if not something already done - now_date = timezone.now().strftime('%Y-%m-%d') - ms = PowerTimeFitnessMetric.objects.filter( - user=user, - workoutmode=mode).order_by("-date") - - if len(ms) == 0: - max_workout_id = 0 - last_update_date = '1972-01-01' - else: - max_workout_id = max([m.last_workout for m in ms]) - last_update_date = ms[0].date.strftime('%Y-%m-%d') - - #last_update_date = max([m.date.strftime('%Y-%m-%d') for m in ms]) - if mode == 'rower': - workouts = Workout.objects.filter( - user=r, - workouttype__in=['rower','dynamic','slides'], - startdatetime__gte=startdate) - else: - workouts = Workout.objects.filter( - user=r, - workouttype__in=otwtypes, - startdatetime__gte=startdate) - - theids = [int(w.id) for w in workouts] - try: - max_id = max(theids) - except ValueError: - max_id = 0 - - if last_update_date < now_date and max_workout_id < max_id: - job = myqueue(queuelow, - handle_updatefitnessmetric, - user.id,mode,theids, - ) - - - return 1 - - -class PowerTimeFitnessMetricMiddleWare(object): - def __init__(self, get_response): - self.get_response = get_response - - def __call__(self, request): - # Code to be executed before the view is called - if request.user.is_authenticated: - result = do_update(request.user,mode='rower') - result = do_update(request.user,mode='water') - - response = self.get_response(request) - - return response - -from django.shortcuts import redirect - - -allowed_paths = [ - '/rowers/me/delete', - '/', - '/logout', - '/logout/', - '/rowers/me/gdpr-optin/', - '/rowers/me/gdpr-optin-confirm/', - '/rowers/me/gdpr-optin', - '/rowers/me/gdpr-optin-confirm' - '/rowers/exportallworkouts/', - '/rowers/exportallworkouts', - '/rowers/survey/' -] - class SurveyMiddleWare(object): def __init__(self, get_response): self.get_response = get_response diff --git a/rowers/tasks.py b/rowers/tasks.py index 8088e313..562021c8 100644 --- a/rowers/tasks.py +++ b/rowers/tasks.py @@ -1940,7 +1940,7 @@ def handle_otwsetpower(self,f1, boattype, boatclass, coastalbrand, weightvalue, rowdata = rdata(csvfile) except IOError: rowdata = rdata(csvfile) - + update_strokedata(workoutid, rowdata.df, debug=debug) totaltime = rowdata.df['TimeStamp (sec)'].max( @@ -2090,45 +2090,6 @@ def cp_from_workoutids(workoutids,debug=False): return powerfourmin,power2k,powerhour -@app.task -def handle_updatefitnessmetric(user_id,mode,workoutids,debug=False, - **kwargs): - - powerfourmin = -1 - power2k = -1 - powerhour = -1 - - mdict = { - 'user_id': user_id, - 'PowerFourMin': powerfourmin, - 'PowerTwoK': power2k, - 'PowerOneHour': powerhour, - 'workoutmode': mode, - 'last_workout': max(workoutids), - 'date': timezone.now().strftime('%Y-%m-%d'), - } - - result = fitnessmetric_to_sql(mdict,debug=debug,doclean=False) - - powerfourmin,power2k,powerhour = cp_from_workoutids(workoutids,debug=debug) - - if powerfourmin > 0 and power2k > 0 and powerhour > 0: - - mdict = { - 'user_id': user_id, - 'PowerFourMin': powerfourmin, - 'PowerTwoK': power2k, - 'PowerOneHour': powerhour, - 'workoutmode': mode, - 'last_workout': max(workoutids), - 'date': timezone.now().strftime('%Y-%m-%d'), - } - - result = fitnessmetric_to_sql(mdict,debug=debug,doclean=True) - else: - result = 0 - - return result @app.task def handle_updatecp(rower_id,workoutids,debug=False,table='cpdata',**kwargs): @@ -2516,6 +2477,8 @@ def handle_send_template_email(template,email,fromemail,rowername, ['info@rowsandall.com'],subject, template,d,cc=[fromemail],bcc=fullemail,**kwargs) + return 1 + @app.task def handle_sendemail_message(email,fromemail,rowername,message,teamname,managername, debug=False,**kwargs): diff --git a/rowers/tests/test_async_tasks.py b/rowers/tests/test_async_tasks.py index a98d0d1e..4c05c1d8 100644 --- a/rowers/tests/test_async_tasks.py +++ b/rowers/tests/test_async_tasks.py @@ -227,6 +227,81 @@ class AsyncTaskTests(TestCase): res = tasks.handle_sendemailfile(userfirstname,userlastname,useremail,filename) self.assertEqual(res,1) + res = tasks.handle_sendemail_coachrequest(useremail,username,'sdsd','Fred') + self.assertEqual(res,1) + + res = tasks.handle_sendemail_coachoffer_rejected(useremail,username,username) + self.assertEqual(res,1) + + res = tasks.handle_sendemail_coachoffer_accepted(useremail,username,username) + self.assertEqual(res,1) + + res = tasks.handle_sendemail_coachrequest_rejected(useremail,username,username) + self.assertEqual(res,1) + + res = tasks.handle_sendemail_coachrequest_accepted(useremail,username,username) + self.assertEqual(res,1) + + res = tasks.handle_sendemail_coacheerequest(useremail,username,'aaee',username) + self.assertEqual(res,1) + + res = tasks.handle_sendemail_invite(useremail,username,'ss','team','Fred Hachee') + self.assertEqual(res,1) + + res = tasks.handle_sendemailnewresponse( + userfirstname, userlastname, + useremail, + userfirstname,userlastname, + 'er staat een paard in de gang', + self.wwater.name, + self.wwater.id, + 1 + ) + self.assertEqual(res,1) + + res = tasks.handle_sendemailnewcomment( + userfirstname, userlastname, + useremail, + userfirstname,userlastname, + 'er staat een paard in de gang', + self.wwater.name, + self.wwater.id, + 1 + ) + self.assertEqual(res,1) + + res = tasks.handle_send_template_email('aa.html',useremail,useremail,userfirstname,'aa','bb') + self.assertEqual(res,1) + + res = tasks.handle_sendemail_message(useremail,useremail,userfirstname,'aap', + 'noot',userlastname) + + self.assertEqual(res,1) + + res = tasks.handle_sendemail_request(useremail,username,'asas','asas',userfirstname,12) + self.assertEqual(res,1) + + res = tasks.handle_sendemail_request_accept(useremail,username,'asas',userfirstname,12) + self.assertEqual(res,1) + + res = tasks.handle_sendemail_request_reject(useremail,username,'asas',userfirstname,12) + self.assertEqual(res,1) + + res = tasks.handle_sendemail_member_dropped(useremail,username,'asas',userfirstname,12) + self.assertEqual(res,1) + + res = tasks.handle_sendemail_team_removed(useremail,username,'asas',userfirstname,12) + self.assertEqual(res,1) + + res = tasks.handle_sendemail_invite_reject(useremail,username,'asas',userfirstname,12) + self.assertEqual(res,1) + + res = tasks.handle_sendemail_invite_accept(useremail,username,'asas',userfirstname,12) + self.assertEqual(res,1) + + + + def test_sigdig(self): x = 3.14159 @@ -295,7 +370,7 @@ class AsyncTaskTests(TestCase): @patch('rowers.tasks.grpc',side_effect=mocked_grpc) @patch('rowers.tasks.send_template_email',side_effect=mocked_send_template_email) def test_handle_otwsetpower(self,mocked_send_template_email,mocked_grpc): - f1 = result = get_random_file(filename='rowers/tests/testdata/sprintervals.csv')['filename'] + f1 = get_random_file(filename='rowers/tests/testdata/sprintervals.csv')['filename'] boattype = '1x' boatclass = 'water' coastalbrand = 'other' @@ -311,3 +386,33 @@ class AsyncTaskTests(TestCase): jobkey='23') self.assertEqual(res,1) + + @patch('rowers.dataprepnodjango.create_engine') + def test_handle_updateergcp(self,mocked_sqlalchemy): + f1 = get_random_file()['filename'] + res = tasks.handle_updateergcp(1,[f1]) + self.assertEqual(res,1) + + @patch('rowers.dataprepnodjango.getsmallrowdata_db') + def test_cp_from_workoutids(self,mocked_getsmallrowdata_db): + ids = [1] + powerfourmin,power2k,powerhour = tasks.cp_from_workoutids(ids) + self.assertFalse(powerfourmin==0) + self.assertFalse(power2k==0) + self.assertFalse(powerhour==0) + + @patch('rowers.dataprepnodjango.getsmallrowdata_db') + def test_handle_updatecp(self,mocked_getsmallrowdata_db): + rower_id = 1 + workoutids = [1] + res = tasks.handle_updatecp(rower_id,workoutids) + self.assertEqual(res,1) + + @patch('rowers.dataprepnodjango.getsmallrowdata_db') + def test_handle_setcp(self,mocked_getsmallrowdata_db): + strokesdf = pd.read_csv('rowers/tests/testdata/uhfull.csv') + filename = 'rowers/tests/temp/pq.gz' + workoutids = 1 + res = tasks.handle_setcp(strokesdf,filename,1) + self.assertEqual(res,1) + os.remove(filename) diff --git a/rowers/views/statements.py b/rowers/views/statements.py index c69b1d94..c11e3c26 100644 --- a/rowers/views/statements.py +++ b/rowers/views/statements.py @@ -209,7 +209,6 @@ from rowers.tasks import ( handle_sendemailnewresponse, handle_updatedps, handle_updatecp,long_test_task,long_test_task2, handle_zip_file,handle_getagegrouprecords, - handle_updatefitnessmetric, handle_update_empower, handle_sendemailics, handle_sendemail_userdeleted,