X-Git-Url: https://git.mdrn.pl/edumed.git/blobdiff_plain/e0ca24b203011b28d4fe07fb3c1c76f00fdea959..3fd04fa811ccc4be2c8f949d06faef9b0325a393:/wtem/models.py?ds=sidebyside diff --git a/wtem/models.py b/wtem/models.py index b6858cc..90492bf 100644 --- a/wtem/models.py +++ b/wtem/models.py @@ -2,10 +2,16 @@ import random import string from django.db import models +from django.contrib.auth.models import User +from django.core.exceptions import ValidationError +from django.utils.translation import ugettext as _ +from jsonfield import JSONField from contact.models import Contact +DEBUG_KEY = '12345' + class Submission(models.Model): contact = models.ForeignKey(Contact, null = True) key = models.CharField(max_length = 30, unique = True) @@ -13,40 +19,42 @@ class Submission(models.Model): last_name = models.CharField(max_length = 100) email = models.EmailField(max_length = 100, unique = True) answers = models.CharField(max_length = 65536, null = True, blank = True) + key_sent = models.BooleanField(default = False) @classmethod def generate_key(cls): key = '' - while not key and key in [record['key'] for record in cls.objects.values('key')]: + while not key or key in [record['key'] for record in cls.objects.values('key')]: key = ''.join(random.choice(string.ascii_uppercase + string.ascii_lowercase + string.digits) for i in range(30)) return key @classmethod - def create(cls, first_name, last_name, email, contact = None, key = None): - submissions = [] - - if contact: - students = contact['students'] - else: - students = [dict(first_name = first_name, last_name = last_name, email = email)] - - if key is None: - key = Submission.generate_key() - - for student in students: - submission = cls( - contact = contact, - key = key, - first_name = student['first_name'], - last_name = student['last_name'], - email = student['email'] - ) - submission.save() - submissions.append(submission) - return submissions + def create(cls, first_name, last_name, email, key = None, contact = None): + submission = cls( + contact = contact, + key = key if key else Submission.generate_key(), + first_name = first_name, + last_name = last_name, + email = email + ) + + submission.save() + return submission class Attachment(models.Model): submission = models.ForeignKey(Submission) name = models.CharField(max_length=100) - file = models.FileField(upload_to = 'wtem/attachment') \ No newline at end of file + file = models.FileField(upload_to = 'wtem/attachment') + + +class Assignment(models.Model): + user = models.ForeignKey(User) + exercises = JSONField() + + def clean(self): + if not isinstance(self.exercises, list): + raise ValidationError(_('Assigned exercises must be declared in a list format')) + for exercise in self.exercises: + if not isinstance(exercise, int) or exercise < 1: + raise ValidationError(_('Invalid exercise id: %s' % exercise))