X-Git-Url: https://git.mdrn.pl/koed-quiz.git/blobdiff_plain/b16cd2217f48dd418def72c91ba289b29a781762..refs/heads/master:/apps/quiz/models.py?ds=sidebyside diff --git a/apps/quiz/models.py b/apps/quiz/models.py index 7c71635..f6cdc4a 100644 --- a/apps/quiz/models.py +++ b/apps/quiz/models.py @@ -1,9 +1,9 @@ -# -*- coding: utf-8 -*- # This file is part of KOED-Quiz, licensed under GNU Affero GPLv3 or later. # Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information. # from django.db import models from django.contrib.sites.models import Site +from django.urls import reverse from django.utils.translation import ugettext_lazy as _ from django.conf import settings @@ -11,21 +11,24 @@ from django.conf import settings class Quiz(Site): description = models.TextField() + footer = models.TextField(null=True, blank=True) class Meta: verbose_name = _('quiz') verbose_name_plural = _('quizzes') @classmethod - def current(cls): - return cls.objects.get(id=settings.SITE_ID) + def current(cls, request): + try: + return cls.objects.get(domain=request.get_host().rstrip('.')) + except cls.DoesNotExist: + pass def start(self): return self.question_set.all()[0] - @models.permalink def get_absolute_url(self): - return ('quiz', ) + return reverse('quiz') def where_to(self): try: @@ -36,7 +39,7 @@ class Quiz(Site): class Result(models.Model): - quiz = models.ForeignKey(Quiz) + quiz = models.ForeignKey(Quiz, models.CASCADE) slug = models.SlugField(db_index=True) title = models.CharField(max_length=255) text = models.TextField() @@ -46,16 +49,15 @@ class Result(models.Model): verbose_name_plural = _('results') ordering = ['quiz', 'title'] - def __unicode__(self): + def __str__(self): return self.title - @models.permalink def get_absolute_url(self): - return ('quiz_result', [self.slug]) + return reverse('quiz_result', args=[self.slug]) class Question(models.Model): - quiz = models.ForeignKey(Quiz) + quiz = models.ForeignKey(Quiz, models.CASCADE) slug = models.SlugField(db_index=True) ordering = models.SmallIntegerField() title = models.CharField(max_length=255) @@ -68,12 +70,11 @@ class Question(models.Model): ordering = ['quiz', 'ordering'] unique_together = [['quiz', 'slug'], ['quiz', 'ordering']] - def __unicode__(self): + def __str__(self): return self.title - @models.permalink def get_absolute_url(self): - return ('quiz', [self.slug]) + return reverse('quiz', args=[self.slug]) def where_to(self): later = self.quiz.question_set.filter(ordering__gt=self.ordering) @@ -83,13 +84,12 @@ class Question(models.Model): return self.quiz.where_to() - class Answer(models.Model): title = models.CharField(max_length=255) - question = models.ForeignKey(Question) - go_to = models.ForeignKey(Question, null=True, blank=True, + question = models.ForeignKey(Question, models.CASCADE) + go_to = models.ForeignKey(Question, models.SET_NULL, null=True, blank=True, related_name='go_tos') - result = models.ForeignKey(Result, null=True, blank=True) + result = models.ForeignKey(Result, models.SET_NULL, null=True, blank=True) ordering = models.SmallIntegerField() class Meta: @@ -97,7 +97,7 @@ class Answer(models.Model): verbose_name_plural = _('answers') ordering = ['question', 'ordering'] - def __unicode__(self): + def __str__(self): return self.title def where_to(self):