diff --git a/compile_server/app/checker.py b/compile_server/app/checker.py new file mode 100644 index 0000000..675ab9c --- /dev/null +++ b/compile_server/app/checker.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- + +import json + +from rest_framework.response import Response +from rest_framework.decorators import api_view + +from compile_server.app.models import Resource, Example + + +@api_view(['POST']) +def check_program(request): + received_json = json.loads(request.body) + + matches = Example.objects.filter(name=received_json['example_name']) + + if not matches: + return Response() + + e = matches[0] + print received_json + print e + result = {'output': "bla\nbla\nbla"} + return Response(result) diff --git a/compile_server/app/management/commands/fill_examples.py b/compile_server/app/management/commands/fill_examples.py index 4a26c74..c014bef 100644 --- a/compile_server/app/management/commands/fill_examples.py +++ b/compile_server/app/management/commands/fill_examples.py @@ -67,6 +67,7 @@ class Command(BaseCommand): resources.append(r) e = Example(description=metadata['description'], + original_dir=d, name=metadata['name']) e.save() e.resources.add(*resources) diff --git a/compile_server/app/models.py b/compile_server/app/models.py index 1c11e82..8a5c33e 100644 --- a/compile_server/app/models.py +++ b/compile_server/app/models.py @@ -40,5 +40,8 @@ class Example(models.Model): # A description description = models.TextField() + # The directory which contains the original contents + original_dir = models.TextField() + # An example is a contains a set of resources resources = models.ManyToManyField(Resource) diff --git a/compile_server/app/serializers.py b/compile_server/app/serializers.py index 17a6614..c9390d3 100644 --- a/compile_server/app/serializers.py +++ b/compile_server/app/serializers.py @@ -1,6 +1,6 @@ from django.contrib.auth.models import User, Group from rest_framework import serializers -from compile_server.app.models import Resource +from compile_server.app.models import Resource, Example class UserSerializer(serializers.HyperlinkedModelSerializer): @@ -31,3 +31,9 @@ class ResourceSerializer(serializers.Serializer): instance.basename = validated_data.get('basename', instance.basename) instance.save() return instance + + +class ExampleSerializer(serializers.ModelSerializer): + class Meta: + model = Example + fields = ('name', 'description') diff --git a/compile_server/app/static/editors.js b/compile_server/app/static/editors.js index d2f0b6f..cda006b 100644 --- a/compile_server/app/static/editors.js +++ b/compile_server/app/static/editors.js @@ -1,4 +1,5 @@ -function query_check_result(editors, container) { +// Launch a check on the given example editor +function query_check_result(example_name, editors, container) { files = [] @@ -7,7 +8,8 @@ function query_check_result(editors, container) { 'contents': e.getValue()}) }) - data = {"files": files} + data = {"example_name": example_name, + "files": files} // request the examples $.ajax({ @@ -124,7 +126,7 @@ function fill_editor(container, example_name) { check_button = $('