Private
Public Access
1
0

added js logging

This commit is contained in:
2024-07-16 10:08:17 +02:00
parent 5f60a3910d
commit 34de0252e5
5 changed files with 61 additions and 3 deletions

View File

@@ -6,6 +6,7 @@ from xml.etree import ElementTree as ET
import arrow
import pendulum
from pendulum.parsing.exceptions import ParserError
from rowsandall_app.settings import UPLOAD_SERVICE_SECRET, UPLOAD_SERVICE_URL
from rowers.dataroutines import get_workouttype_from_tcx, get_startdate_time_zone
@@ -34,7 +35,51 @@ class XMLParser(BaseParser):
# Stroke data form to test API upload
@csrf_exempt
def javascript_log(request):
if request.method != 'POST':
message = {'status': 'false',
'message': 'this view cannot be accessed through GET'}
return JSONResponse(status=403, data=message)
# test if JSON
try:
json_data = json.loads(request.body)
secret = json_data['secret']
post_data = json_data
except:
q = request.POST
post_data = {k: q.getlist(k) if len(
q.getlist(k)) > 1 else v for k, v in q.items()}
# only allow local host
hostt = request.get_host().split(':')
if hostt[0] not in ['localhost', '127.0.0.1', 'dev.rowsandall.com', 'rowsandall.com']:
message = {'status': 'false',
'message': 'permission denied for host '+hostt[0]}
return JSONResponse(status=403, data=message)
# check credentials here
try:
secret = post_data['secret']
except KeyError:
dologging('own_api.log','Missing credentials')
message = {'status': 'false', 'message': 'missing credentials'}
return JSONResponse(status=400, data=message)
if secret != settings.LOG_SECRET:
message = {'status': 'false', 'message': 'invalid credentials'}
return JSONResponse(status=403, data=message)
try:
message = post_data['message']
except KeyError:
dologging('javascript_log.log','no message received')
message = {'status': 'false', 'message': 'no filename given'}
return JSONResponse(status=400, data=message)
dologging('javascript_log.log', message)
return JSONResponse(status=200, data = {'status': 'true', 'message': message})
@login_required()
@permission_required('rower.is_not_freecoach', fn=get_user_by_userid, raise_exception=True)
def strokedataform(request, id=0):
@@ -547,7 +592,10 @@ def strokedatajson_v3(request):
rpe = request.data.get('rpe',0)
startdatetime = request.data.get('startdatetime',"%s" % timezone.now())
startdatetime = pendulum.parse(startdatetime)
try:
startdatetime = pendulum.parse(startdatetime)
except ParserError:
startdatetime = timezone.now()
dologging('apilog.log',workouttype)
dologging('apilog.log',boattype)
@@ -570,7 +618,11 @@ def strokedatajson_v3(request):
except:
return HttpResponse("No JSON Object could be decoded", status=400)
df = df.sort("time")
try:
df = df.sort("time")
except ColumnNotFoundError:
return HttpResponse("No time column", status=400)
status, comment, data = api_get_dataframe(startdatetime, df)
if status != 200: # pragma: no cover

View File

@@ -4819,7 +4819,7 @@ def workout_toggle_ranking(request, id=0):
@csrf_exempt
def workout_upload_api(request):
if request.method!= 'POST': # pragma: no cover
if request.method != 'POST': # pragma: no cover
message = {'status': 'false',
'message': 'this view cannot be accessed through GET'}
return JSONResponse(status=403, data=message)