This commit is contained in:
Ross
2022-05-21 22:09:37 +01:00
parent 851e681400
commit 781b6bc1fe
26 changed files with 311 additions and 70 deletions
+28
View File
@@ -48,6 +48,22 @@ from sbas.models import Exam as SbasExam
from sbas.models import Question as SbasQuestion
class ExamFormMixin:
class Meta:
fields = [
"name",
"time_limit",
"open_access",
"authors_only",
"exam_mode",
"include_history",
"active",
"publish_results",
"archive",
"cid_user_groups",
"user_user_groups",
#"author",
]
def save(self, commit=True):
instance = ModelForm.save(self, False)
instance.save()
@@ -56,6 +72,18 @@ class ExamFormMixin:
return instance
class ExamAuthorFormMixin(ModelForm):
class Meta:
fields = ["author"]
def __init__(self, *args, **kwargs):
ModelForm.__init__(self, *args, **kwargs)
self.fields["author"] = ModelMultipleChoiceField(
queryset=User.objects.all(),
widget=FilteredSelectMultiple(verbose_name="Authors", is_stacked=False),
)
class ExaminationForm(ModelForm):
class Meta:
model = Examination
@@ -2,6 +2,7 @@
<a href="{% url app_name|add:':exam_update' exam.id %}" title="Edit the Exam">Edit</a>
\ <a href="{% url app_name|add:':exam_delete' exam.id %}" title="Delete the Exam">Delete</a>
\ <a href="{% url app_name|add:':exam_clone' exam.id %}" title="Clone the Exam">Clone</a>
\ <a href="{% url app_name|add:':exam_authors' exam.id %}" title="Edit Exam Authors">Authors</a>
{% endif %}
{% if request.user.is_superuser %}
\ <a href="{% url 'admin:'|add:app_name|add:'_exam_change' exam.id %}" title="Edit the Exam using the admin interface">Admin Edit</a>
+6
View File
@@ -71,6 +71,12 @@ import plotly.express as px
# from rad.views import get_question_and_content_type
from django.db.models import Prefetch
class AuthorRequiredMixin(object):
def get_object(self, *args, **kwargs):
obj = super().get_object(*args, **kwargs)
if self.request.user not in obj.author.all():
raise PermissionDenied() # or Http404
return obj
class CidManagerRequiredMixin(UserPassesTestMixin):
def test_func(self):