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 ...@@ -12,7 +12,7 @@ MANAGERS = ADMINS
DATABASES = { DATABASES = {
'default': { 'default': {
'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'. '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. 'USER': '', # Not used with sqlite3.
'PASSWORD': '', # Not used with sqlite3. 'PASSWORD': '', # Not used with sqlite3.
'HOST': '', # Set to empty string for localhost. Not used with sqlite3. 'HOST': '', # Set to empty string for localhost. Not used with sqlite3.
...@@ -100,7 +100,7 @@ MIDDLEWARE_CLASSES = ( ...@@ -100,7 +100,7 @@ MIDDLEWARE_CLASSES = (
# 'django.middleware.clickjacking.XFrameOptionsMiddleware', # '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. # Python dotted path to the WSGI application used by Django's runserver.
WSGI_APPLICATION = 'peer_grading.wsgi.application' WSGI_APPLICATION = 'peer_grading.wsgi.application'
...@@ -121,7 +121,8 @@ INSTALLED_APPS = ( ...@@ -121,7 +121,8 @@ INSTALLED_APPS = (
'django.contrib.admin', 'django.contrib.admin',
'django.contrib.admindocs', 'django.contrib.admindocs',
'rest_framework', 'rest_framework',
'peer_grading' 'peer_grading',
'common_grading'
) )
REST_FRAMEWORK = { 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 ...@@ -3,7 +3,7 @@ import os
import sys import sys
if __name__ == "__main__": 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.core.management import execute_from_command_line
......
from django.db import models from django.db import models
from common_grading.models import MAX_LENGTH
MAX_LENGTH = 1028
class PeerGradedEssay(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="")
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):
student_id = models.CharField(max_length=MAX_LENGTH, db_index=True) student_id = models.CharField(max_length=MAX_LENGTH, db_index=True)
problem_id = models.CharField(max_length=MAX_LENGTH, default="") problem_id = models.CharField(max_length=MAX_LENGTH, default="")
grading_status = 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 rest_framework import serializers
from models import PeerGradingStatus, PeerGradedEssay from models import Status
class PeerGradedEssaySerializer(serializers.HyperlinkedModelSerializer): class StatusSerializer(serializers.HyperlinkedModelSerializer):
class Meta: class Meta:
model = PeerGradedEssay model = Status
fields = ('student_id', 'problem_id', 'essay_body', 'grades', 'status')
class PeerGradingStatusSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = PeerGradingStatus
fields = ('student_id', 'problem_id', 'grading_status') fields = ('student_id', 'problem_id', 'grading_status')
\ No newline at end of file
from django.conf.urls import patterns, url, include from django.conf.urls import patterns, url, include
from rest_framework import routers from rest_framework import routers
from peer_grading.views import PeerGradedEssayViewSet, PeerGradingStatusViewSet from views import EssayViewSet, StatusViewSet
router = routers.DefaultRouter() router = routers.DefaultRouter()
router.register(r'peergradedessay', PeerGradedEssayViewSet) router.register(r'essay', EssayViewSet)
router.register(r'peergradingstatus', PeerGradingStatusViewSet) router.register(r'status', StatusViewSet)
# Interface for communicating with the Peer Grading Module in LMS. # Interface for communicating with the Peer Grading Module in LMS.
urlpatterns = patterns('', urlpatterns = patterns('',
......
""" """
Interface for all Peer Grading Workflow. Covers all requests made for Peer Grading. Interface for all Peer Grading Workflow. Covers all requests made for Peer Grading.
""" """
import json from rest_framework import viewsets, status
from rest_framework import viewsets
from rest_framework.response import Response from rest_framework.response import Response
from models import PeerGradedEssay, PeerGradingStatus from models import Status
from serializers import PeerGradedEssaySerializer, PeerGradingStatusSerializer 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() queryset = Essay.objects.all()
serializer_class = PeerGradedEssaySerializer serializer_class = EssaySerializer
def create(self, request, *args, **kwargs): def create(self, request, *args, **kwargs):
""" """
...@@ -21,10 +22,20 @@ class PeerGradedEssayViewSet(viewsets.ModelViewSet): ...@@ -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 @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. 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, if serializer.is_valid():
'message': "Nothing happened."} self.pre_save(serializer.object)
return Response(json.dumps(response)) 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): def retrieve(self, request, *args, **kwargs):
""" """
...@@ -59,10 +70,10 @@ class PeerGradedEssayViewSet(viewsets.ModelViewSet): ...@@ -59,10 +70,10 @@ class PeerGradedEssayViewSet(viewsets.ModelViewSet):
pass pass
class PeerGradingStatusViewSet(viewsets.ModelViewSet): class StatusViewSet(viewsets.ModelViewSet):
queryset = PeerGradingStatus.objects.all() queryset = Status.objects.all()
serializer_class = PeerGradingStatusSerializer serializer_class = StatusSerializer
def get(self, request): 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