Commit 359462fa by Stephen Sanchez

Last changes to basic prototype (probably to be deleted soon)

parent d680d1c1
from django.db import models
MAX_LENGTH = 1028
class Essay(models.Model):
student_id = models.CharField(max_length=MAX_LENGTH, db_index=True)
problem_id = models.CharField(max_length=MAX_LENGTH, default="")
essay_body = models.CharField(max_length=MAX_LENGTH, default="")
grading_type = models.CharField(max_length=MAX_LENGTH, default="")
grades = models.CharField(max_length=MAX_LENGTH, default="")
status = models.CharField(max_length=MAX_LENGTH, default="")
\ No newline at end of file
from rest_framework import serializers
from models import Essay
class EssaySerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Essay
fields = ('student_id', 'problem_id', 'essay_body', 'grades', 'status', 'grading_type')
\ No newline at end of file
......@@ -12,7 +12,7 @@ MANAGERS = ADMINS
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
'NAME': 'timdb', # Or path to database file if using sqlite3.
'NAME': '../timdb', # Or path to database file if using sqlite3.
'USER': '', # Not used with sqlite3.
'PASSWORD': '', # Not used with sqlite3.
'HOST': '', # Set to empty string for localhost. Not used with sqlite3.
......@@ -100,7 +100,7 @@ MIDDLEWARE_CLASSES = (
# 'django.middleware.clickjacking.XFrameOptionsMiddleware',
)
ROOT_URLCONF = 'peer_grading.urls'
ROOT_URLCONF = 'common_grading.urls'
# Python dotted path to the WSGI application used by Django's runserver.
WSGI_APPLICATION = 'peer_grading.wsgi.application'
......@@ -121,7 +121,8 @@ INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.admindocs',
'rest_framework',
'peer_grading'
'peer_grading',
'common_grading'
)
REST_FRAMEWORK = {
......
from django.conf.urls import patterns, url, include
from rest_framework import routers
router = routers.DefaultRouter()
# Interface for communicating with the Peer Grading Module in LMS.
urlpatterns = patterns('',
url(r'^', include(router.urls)),
url(r'^peer_grading/', include('peer_grading.urls')),
url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework'))
)
\ No newline at end of file
......@@ -3,7 +3,7 @@ import os
import sys
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "peer_grading.settings")
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "common_grading.settings")
from django.core.management import execute_from_command_line
......
from django.db import models
from common_grading.models import MAX_LENGTH
MAX_LENGTH = 1028
class PeerGradedEssay(models.Model):
student_id = models.CharField(max_length=MAX_LENGTH, db_index=True)
problem_id = models.CharField(max_length=MAX_LENGTH, default="")
essay_body = models.CharField(max_length=MAX_LENGTH, default="")
grades = models.CharField(max_length=MAX_LENGTH, default="")
status = models.CharField(max_length=MAX_LENGTH, default="")
class PeerGradingStatus(models.Model):
class Status(models.Model):
student_id = models.CharField(max_length=MAX_LENGTH, db_index=True)
problem_id = models.CharField(max_length=MAX_LENGTH, default="")
grading_status = models.CharField(max_length=MAX_LENGTH, default="")
\ No newline at end of file
from rest_framework import serializers
from models import PeerGradingStatus, PeerGradedEssay
from models import Status
class PeerGradedEssaySerializer(serializers.HyperlinkedModelSerializer):
class StatusSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = PeerGradedEssay
fields = ('student_id', 'problem_id', 'essay_body', 'grades', 'status')
class PeerGradingStatusSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = PeerGradingStatus
model = Status
fields = ('student_id', 'problem_id', 'grading_status')
\ No newline at end of file
from django.conf.urls import patterns, url, include
from rest_framework import routers
from peer_grading.views import PeerGradedEssayViewSet, PeerGradingStatusViewSet
from views import EssayViewSet, StatusViewSet
router = routers.DefaultRouter()
router.register(r'peergradedessay', PeerGradedEssayViewSet)
router.register(r'peergradingstatus', PeerGradingStatusViewSet)
router.register(r'essay', EssayViewSet)
router.register(r'status', StatusViewSet)
# Interface for communicating with the Peer Grading Module in LMS.
urlpatterns = patterns('',
......
"""
Interface for all Peer Grading Workflow. Covers all requests made for Peer Grading.
"""
import json
from rest_framework import viewsets
from rest_framework import viewsets, status
from rest_framework.response import Response
from models import PeerGradedEssay, PeerGradingStatus
from serializers import PeerGradedEssaySerializer, PeerGradingStatusSerializer
from models import Status
from common_grading.models import Essay
from serializers import StatusSerializer
from common_grading.serializers import EssaySerializer
class PeerGradedEssayViewSet(viewsets.ModelViewSet):
class EssayViewSet(viewsets.ModelViewSet):
queryset = PeerGradedEssay.objects.all()
serializer_class = PeerGradedEssaySerializer
queryset = Essay.objects.all()
serializer_class = EssaySerializer
def create(self, request, *args, **kwargs):
"""
......@@ -21,10 +22,20 @@ class PeerGradedEssayViewSet(viewsets.ModelViewSet):
@return: Once an essay has been submitted, the student's status for beginning peer grading should be immediately
returned. See student_status for more information.
"""
# TODO Copied 99% of this from Django REST mixins.py to inject 'peer' to grading_type. Figure out what I actually want...
data = request.DATA.copy()
data['grading_type'] = "peer"
serializer = self.get_serializer(data=data, files=request.FILES)
response = {'success': True,
'message': "Nothing happened."}
return Response(json.dumps(response))
if serializer.is_valid():
self.pre_save(serializer.object)
self.object = serializer.save(force_insert=True)
self.post_save(self.object, created=True)
headers = self.get_success_headers(serializer.data)
return Response(serializer.data, status=status.HTTP_201_CREATED,
headers=headers)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def retrieve(self, request, *args, **kwargs):
"""
......@@ -59,10 +70,10 @@ class PeerGradedEssayViewSet(viewsets.ModelViewSet):
pass
class PeerGradingStatusViewSet(viewsets.ModelViewSet):
class StatusViewSet(viewsets.ModelViewSet):
queryset = PeerGradingStatus.objects.all()
serializer_class = PeerGradingStatusSerializer
queryset = Status.objects.all()
serializer_class = StatusSerializer
def get(self, request):
"""
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment