Merge branch 'release/v22.1.14'
This commit is contained in:
BIN
rowers/tests/testdata/testdata.tcx.gz
vendored
BIN
rowers/tests/testdata/testdata.tcx.gz
vendored
Binary file not shown.
@@ -275,6 +275,7 @@ urlpatterns = [
|
|||||||
views.instroke_data, name='instroke_data'),
|
views.instroke_data, name='instroke_data'),
|
||||||
re_path(r'^exportallworkouts/?/$', views.workouts_summaries_email_view,
|
re_path(r'^exportallworkouts/?/$', views.workouts_summaries_email_view,
|
||||||
name='workouts_summaries_email_view'),
|
name='workouts_summaries_email_view'),
|
||||||
|
path('sessionstats/', views.sessions_stats, name='sessions_stats'),
|
||||||
path('failedjobs/', views.failed_queue_view, name='failed_queue_view'),
|
path('failedjobs/', views.failed_queue_view, name='failed_queue_view'),
|
||||||
path('sleep/', views.sleep_view, name='sleep_view'),
|
path('sleep/', views.sleep_view, name='sleep_view'),
|
||||||
path('filmdeaths/', views.filmdeaths_view, name='filmdeaths_view'),
|
path('filmdeaths/', views.filmdeaths_view, name='filmdeaths_view'),
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
|
|
||||||
from rowers.views.statements import *
|
from rowers.views.statements import *
|
||||||
from rowers.interactiveplots import sleep
|
from rowers.interactiveplots import sleep
|
||||||
|
from rowers.plannedsessions import is_session_complete
|
||||||
|
|
||||||
from rq import Queue
|
from rq import Queue
|
||||||
from redis import Redis
|
from redis import Redis
|
||||||
@@ -55,6 +56,47 @@ def download_fit(request, filename=''):
|
|||||||
|
|
||||||
return response # pragma: no cover
|
return response # pragma: no cover
|
||||||
|
|
||||||
|
@login_required()
|
||||||
|
def sessions_stats(request):
|
||||||
|
if not request.user.is_staff: # pragma: no cover
|
||||||
|
raise PermissionDenied("Not Allowed")
|
||||||
|
|
||||||
|
ws = Workout.objects.filter(plannedsession__isnull=False)
|
||||||
|
|
||||||
|
results = []
|
||||||
|
|
||||||
|
for w in ws:
|
||||||
|
ps = w.plannedsession
|
||||||
|
r = w.user
|
||||||
|
ratio, status, cdate = is_session_complete(r, ps)
|
||||||
|
d = {
|
||||||
|
'date':w.date,
|
||||||
|
'session_id':ps.id,
|
||||||
|
'session_name':ps.name,
|
||||||
|
'complete': ratio,
|
||||||
|
'status': status,
|
||||||
|
'rscore': w.rscore,
|
||||||
|
'duration': w.duration,
|
||||||
|
}
|
||||||
|
results.append(d)
|
||||||
|
|
||||||
|
df = pd.DataFrame(results)
|
||||||
|
|
||||||
|
code = str(uuid4())
|
||||||
|
filename = code+'.csv'
|
||||||
|
|
||||||
|
df.to_csv(filename)
|
||||||
|
|
||||||
|
with open(filename,'r') as f:
|
||||||
|
response = HttpResponse(f)
|
||||||
|
response['Content-Disposition'] = 'attachment; filename="%s"' % filename
|
||||||
|
response['Content-Type'] = 'application/octet-stream'
|
||||||
|
|
||||||
|
os.remove(filename)
|
||||||
|
return response
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@login_required()
|
@login_required()
|
||||||
def failed_queue_view(request):
|
def failed_queue_view(request):
|
||||||
|
|||||||
Reference in New Issue
Block a user