.
This commit is contained in:
+38
-3
@@ -1,6 +1,7 @@
|
||||
from django.contrib.auth.mixins import LoginRequiredMixin
|
||||
from django.db import models
|
||||
from django.http import HttpRequest
|
||||
from django.utils import timezone
|
||||
from smtplib import SMTPException
|
||||
|
||||
from django.urls import reverse
|
||||
@@ -13,7 +14,7 @@ import tagulous.models
|
||||
from sortedm2m.fields import SortedManyToManyField
|
||||
from django.conf import settings
|
||||
|
||||
from django.contrib.contenttypes.fields import GenericForeignKey
|
||||
from django.contrib.contenttypes.fields import GenericForeignKey, GenericRelation
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
|
||||
from django.core.mail import send_mail
|
||||
@@ -114,6 +115,8 @@ class ExamBase(models.Model):
|
||||
|
||||
stats_graph = models.TextField(default=0)
|
||||
|
||||
notes = GenericRelation("generic.CidUserExam")
|
||||
|
||||
# time_limit = models.IntegerField(
|
||||
# help_text="Exam time limit (in seconds). Default is 2100 secondse (35 minutes)",
|
||||
# default=2100,
|
||||
@@ -163,6 +166,38 @@ class ExamBase(models.Model):
|
||||
|
||||
return True
|
||||
|
||||
def get_or_create_cid_user_exam(self, cid_user, start_time=None):
|
||||
content_type = ContentType.objects.get_for_model(self)
|
||||
c = CidUserExam.objects.filter(
|
||||
content_type=content_type, object_id=self.pk, cid_user=cid_user
|
||||
).first()
|
||||
print(c)
|
||||
if c:
|
||||
return c
|
||||
|
||||
if start_time is None:
|
||||
start_time = timezone.now()
|
||||
new = CidUserExam(
|
||||
content_type=content_type,
|
||||
object_id=self.pk,
|
||||
cid_user=cid_user,
|
||||
start_time=start_time,
|
||||
)
|
||||
new.save()
|
||||
return new
|
||||
|
||||
def get_cid_user_exams(self, cid_user=None):
|
||||
content_type = ContentType.objects.get_for_model(self)
|
||||
if cid_user is None:
|
||||
return CidUserExam.objects.filter(
|
||||
content_type=content_type,
|
||||
object_id=self.pk,
|
||||
)
|
||||
else:
|
||||
return CidUserExam.objects.filter(
|
||||
content_type=content_type, object_id=self.pk, cid_user=cid_user
|
||||
)
|
||||
|
||||
|
||||
class NoteType(models.Model):
|
||||
note_type = models.CharField(max_length=200)
|
||||
@@ -248,7 +283,7 @@ class CidUser(models.Model):
|
||||
return str(self.cid)
|
||||
|
||||
def get_absolute_url(self):
|
||||
return reverse('generic:manage_cids')
|
||||
return reverse("generic:manage_cids")
|
||||
|
||||
def check_passcode(self, passcode) -> bool:
|
||||
return self.passcode == passcode
|
||||
@@ -332,7 +367,7 @@ class CidUser(models.Model):
|
||||
class CidUserExam(models.Model):
|
||||
content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
|
||||
object_id = models.PositiveIntegerField()
|
||||
question = GenericForeignKey("content_type", "object_id")
|
||||
exam = GenericForeignKey("content_type", "object_id")
|
||||
|
||||
start_time = models.DateTimeField(blank=True, null=True)
|
||||
end_time = models.DateTimeField(blank=True, null=True)
|
||||
|
||||
Reference in New Issue
Block a user