X-Git-Url: https://git.mdrn.pl/edumed.git/blobdiff_plain/243f4c5eef6c3f1d6e6d2875080e5830cf5382a8..566ee7cbbf5ad86cc0fe154a4c592c522d97ead2:/wtem/models.py?ds=sidebyside diff --git a/wtem/models.py b/wtem/models.py index abeb56b..4139efc 100644 --- a/wtem/models.py +++ b/wtem/models.py @@ -236,7 +236,7 @@ class Submission(models.Model): mark = self.get_final_exercise_mark(exercise_id) if mark is not None: final += mark - return final + return round(final, 2) @property def final_result_as_string(self): @@ -265,14 +265,33 @@ class Assignment(models.Model): return self.user.username + ': ' + ','.join(map(str, self.exercises)) -class Confirmation(models.Model): - first_name = models.CharField(max_length=100) - last_name = models.CharField(max_length=100) - email = models.EmailField(max_length=100, unique=True) +class AbstractConfirmation(models.Model): contact = models.ForeignKey(Contact, null=True) key = models.CharField(max_length=30) confirmed = models.BooleanField(default=False) + class Meta: + abstract = True + + def readable_contact(self): + return '%s <%s>' % (self.contact.body.get('przewodniczacy'), self.contact.contact) + + def school_phone(self): + return '%s, tel. %s' % (self.contact.body.get('school'), self.contact.body.get('school_phone')) + + def age(self): + return timezone.now() - self.contact.created_at + + def readable_age(self): + td = self.age() + return '%s dni, %s godzin' % (td.days, td.seconds/3600) + + +class Confirmation(AbstractConfirmation): + first_name = models.CharField(max_length=100) + last_name = models.CharField(max_length=100) + email = models.EmailField(max_length=100, unique=True) + class Meta: ordering = ['contact__contact'] @@ -292,19 +311,6 @@ class Confirmation(models.Model): def absolute_url(self): return reverse('student_confirmation', args=(self.id, self.key)) - def readable_contact(self): - return '%s <%s>' % (self.contact.body.get('przewodniczacy'), self.contact.contact) - - def school_phone(self): - return '%s, tel. %s' % (self.contact.body.get('school'), self.contact.body.get('school_phone')) - - def age(self): - return timezone.now() - self.contact.created_at - - def readable_age(self): - td = self.age() - return '%s dni, %s godzin' % (td.days, td.seconds/3600) - def send_mail(self): mail_subject = render_to_string('contact/olimpiada/student_mail_subject.html').strip() mail_body = render_to_string( @@ -318,5 +324,23 @@ class Confirmation(models.Model): fail_silently=True) +class TeacherConfirmation(AbstractConfirmation): + + class Meta: + ordering = ['contact__contact'] + + @classmethod + def create(cls, contact=None, key=None): + confirmation = cls( + contact=contact, + key=key if key else make_key(30), + ) + confirmation.save() + return confirmation + + def absolute_url(self): + return reverse('teacher_confirmation', args=(self.id, self.key)) + + def exercise_checked_manually(exercise): return (exercise['type'] in ('open', 'file_upload')) or 'open_part' in exercise