From 90d8c132152d29e482edb7ded51748499477c115 Mon Sep 17 00:00:00 2001 From: "Julian M. Kunkel" Date: Sun, 6 May 2018 00:46:11 +0100 Subject: [PATCH] =?UTF-8?q?Anpassungen=20f=C3=BCr=20Reading?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dev/Dockerfile | 2 +- src/courses/views.py | 7 +- .../templates/frontend/attribution.html | 55 ++++++-- src/frontend/templates/frontend/footer.html | 6 +- src/frontend/templates/frontend/index.html | 124 ------------------ src/frontend/templates/frontend/navbar.html | 15 +-- src/main/settings.py | 2 +- src/main/urls.py | 2 +- src/rest/urls.py | 4 +- src/rest/views.py | 95 +++++++------- 10 files changed, 108 insertions(+), 204 deletions(-) diff --git a/dev/Dockerfile b/dev/Dockerfile index 59ef584..73f66d6 100644 --- a/dev/Dockerfile +++ b/dev/Dockerfile @@ -6,7 +6,7 @@ RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y apache2 RUN rm /etc/apache2/sites-enabled/000-default.conf RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y postgresql libapache2-mod-wsgi-py3 # make for testing -RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y virtualenv make sudo +RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y virtualenv make sudo gcc RUN ln -s /data/dev/apache-local.conf /etc/apache2/sites-enabled/ #RUN a2enmod rewrite diff --git a/src/courses/views.py b/src/courses/views.py index 5e0ab69..67a9a16 100644 --- a/src/courses/views.py +++ b/src/courses/views.py @@ -123,12 +123,11 @@ def slide(request, cid, seid, slid): pass - print(user_solution, file=sys.stderr) - + #print(user_solution, file=sys.stderr) result = request - print(result, file=sys.stderr) - print(dir(result), file=sys.stderr) + #print(result, file=sys.stderr) + #print(dir(result), file=sys.stderr) # determine next slide, as necessary for the navigation next_slide = {'course': course, 'section': None, 'slide': None} diff --git a/src/frontend/templates/frontend/attribution.html b/src/frontend/templates/frontend/attribution.html index 78daca7..73f5b6f 100644 --- a/src/frontend/templates/frontend/attribution.html +++ b/src/frontend/templates/frontend/attribution.html @@ -75,9 +75,42 @@

+

Platform

+ +

+ The platform was initially created as a funded project of the Hamburg Open Online University. +

+ +
+ Please see the project details here. +

+ @@ -89,17 +122,17 @@
  • Created by Lloyd Humphreys: +
  • -
  • Created by alessandra antonetti: +
  • Created by alessandra antonetti:
  • -
  • Created by Arthur Shlain: +
  • Created by Arthur Shlain:
  • -
  • Created by Creative Stall: +
  • Created by Creative Stall: - - diff --git a/src/main/settings.py b/src/main/settings.py index 2c1e9c6..5eda180 100644 --- a/src/main/settings.py +++ b/src/main/settings.py @@ -46,7 +46,7 @@ INSTALLED_APPS = ( 'main', 'courses', 'frontend', - #'rest', + 'rest', 'generated_exercises', #TODO FIXME 'tools' ) diff --git a/src/main/urls.py b/src/main/urls.py index fdc6258..1bce2cc 100644 --- a/src/main/urls.py +++ b/src/main/urls.py @@ -41,7 +41,7 @@ urlpatterns = [ #url(r'^dashboard/', include('dashboard.urls')), # stats etc? -> index? # APIs - # url(r'^api/rest/', include('rest.urls', namespace='rest')), + url(r'^api/rest/', include('rest.urls', namespace='rest')), # Admin (also course managment?) #url(r'^admin/', include(admin.site.urls)), diff --git a/src/rest/urls.py b/src/rest/urls.py index 1b4b5cd..320d00d 100644 --- a/src/rest/urls.py +++ b/src/rest/urls.py @@ -2,6 +2,8 @@ from django.conf.urls import url from rest import views +app_name="rest" + urlpatterns = [ url(r'^$', views.index, name='index'), @@ -12,7 +14,7 @@ urlpatterns = [ # the event stream is only receiving events url(r'^event$', views.event, name='event'), - + # adding jobs yields a jobID which can be used to query the state url(r'^job/new/$', views.job_new, name='job_new'), url(r'^job/(?P.*?)/$', views.job_status, name='job_status'), diff --git a/src/rest/views.py b/src/rest/views.py index a5c733e..f498c50 100644 --- a/src/rest/views.py +++ b/src/rest/views.py @@ -14,8 +14,8 @@ from rest_framework.response import Response from django.shortcuts import get_object_or_404 # mongo -import pymongo -from pymongo import MongoClient +#import pymongo +#from pymongo import MongoClient import json from bson import json_util @@ -34,6 +34,15 @@ from courses.models import Slide from courses.models import UserCourse from courses.models import UserSolution +def local_execute(dic): + print("LOCAL EXECUTE") + print(dic) + return {"id" : 100} + +def local_execute_result(id): + print("Retrieving: " + id) + return {"status" : 201, "result": {"output" : False, "grade" : "PASS"}} + # helpers class JSONResponse(HttpResponse): """ @@ -119,25 +128,26 @@ def entry_list(request, database_id): @api_view(['POST']) @csrf_exempt def event(request): - event_db = mongo["events"] - event_col = event_db["events"] + #event_db = mongo["events"] + #event_col = event_db["events"] + return JSONResponse({"details": "OK"}, status=201) - if request.method == 'POST': + #if request.method == 'POST': - # populate additional fields - request.data["timestamp"] = datetime.datetime.now() - request.data["referrer"] = request.META.get('HTTP_REFERER') # sic - request.data["user_id"] = request.user.id - #print(request.data, file=sys.stderr) + # # populate additional fields + # request.data["timestamp"] = datetime.datetime.now() + # request.data["referrer"] = request.META.get('HTTP_REFERER') # sic + # request.data["user_id"] = request.user.id + # #print(request.data, file=sys.stderr) - try: - _id = event_col.insert(request.data) - print(request.data['type'], _id, file=sys.stderr) - #json_docs = json.dumps(data, default=json_util.default) - return JSONResponse({"details": "OK", "id": str(_id)}, status=201) + # try: + # _id = event_col.insert(request.data) + # print(request.data['type'], _id, file=sys.stderr) + # #json_docs = json.dumps(data, default=json_util.default) + # return JSONResponse({"details": "OK", "id": str(_id)}, status=201) - except: - return JSONResponse({"details": "insert failed."}, status=400) + # except: + # return JSONResponse({"details": "insert failed."}, status=400) #else: # return JSONResponse("""{"error": "HTTP request type not allowed."}""", status=400) @@ -149,7 +159,7 @@ def event(request): #@api_view(['GET','POST']) @csrf_exempt def job_status(request, jid): - print("Job-status " + jid) + #print("Job-status " + jid) data = str({"field1": "value1"}) #job_db = mongo["jobs"] @@ -158,11 +168,11 @@ def job_status(request, jid): #return HttpResponse(status=404) if request.method == 'GET': - - task = celery_task_compile_and_run.AsyncResult(jid) - print("results") - data = {"status": task.status, "data": task.result} - print("DONE!") + #task = celery_task_compile_and_run.AsyncResult(jid) + task = local_execute_result(jid) + #print("results") + data = {"status": task["status"], "data": task["result"]} + #print("DONE!") #json_docs = json.dumps(data, default=json_util.default) #data = JSONParser().parse(json_docs) @@ -175,10 +185,8 @@ def job_status(request, jid): @api_view(['POST']) @csrf_exempt def job_new(request): - job_db = mongo["jobs"] - job_col = job_db["jobs"] - - + #job_db = mongo["jobs"] + #job_col = job_db["jobs"] # Snipped in-case we would like to force the referrer to match the slide. #slid = None #referrer = request.META.get('HTTP_REFERER') @@ -192,14 +200,12 @@ def job_new(request): # #print(slid, file=sys.stderr) - - if request.method == 'POST': - print(datetime.datetime.now(), file=sys.stderr) - print(request.data, file=sys.stderr) + #print(datetime.datetime.now(), file=sys.stderr) + #print(request.data, file=sys.stderr) slide = get_object_or_404(Slide, pk=request.data['slide']) - print("Solution from: ", slide.title, file=sys.stderr) + #print("Solution from: ", slide.title, file=sys.stderr) job_dic = {} #job_dic['timestamp'] = datetime.datetime.now() @@ -209,8 +215,7 @@ def job_new(request): job_dic['type'] = slide.slide_type job_dic['data'] = json.loads(slide.data) job_dic['user_id'] = request.user.id - print('job_dic:', file=sys.stderr) - + #print('job_dic:', file=sys.stderr) # Also create/update the user solution. user_solution = None @@ -221,31 +226,31 @@ def job_new(request): except UserSolution.DoesNotExist: pass - print(user_solution, file=sys.stderr) + #print(user_solution, file=sys.stderr) if user_solution != None: user_solution.data = json.dumps(request.data) user_solution.save() - - pprint.pprint(job_dic, sys.stderr) + #pprint.pprint(job_dic, sys.stderr) try: - task = celery_task_compile_and_run.delay(job_dic) - print(dir(task), file=sys.stderr) - print("PREP") + #task = celery_task_compile_and_run.delay(job_dic) + task = local_execute(job_dic) - print(task.id, file=sys.stderr) + #print(dir(task), file=sys.stderr) + #print("PREP") + #print(task.id, file=sys.stderr) #print(task.status, file=sys.stderr) - job_dic["_id"] = task.id - print("DONE") + job_dic["_id"] = task["id"] + #print("DONE") #_id = job_col.insert(request.data) #print(_id, file=sys.stderr) #json_docs = json.dumps(data, default=json_util.default) - return JSONResponse({"details": "OK", "id": str(task.id)}, status=201) - + return JSONResponse({"details": "OK", "id": str(task["id"])}, status=201) except: + print(sys.exc_info()[0]) return JSONResponse({"details": "Job submission failed."}, status=400)