Add bulk add functionality for user and CID groups to exam collections
This commit is contained in:
@@ -2,6 +2,7 @@ from django.forms import (
|
||||
Form,
|
||||
ModelForm,
|
||||
ModelMultipleChoiceField,
|
||||
MultipleChoiceField,
|
||||
ModelChoiceField,
|
||||
ChoiceField,
|
||||
CharField,
|
||||
@@ -291,6 +292,43 @@ class ExamGroupsFormMixin(ModelForm):
|
||||
self.fields["user_user_groups"].widget.attrs["size"] = 8
|
||||
|
||||
|
||||
class ExamCollectionBulkAddGroupsForm(Form):
|
||||
"""Form used by the HTMX modal to bulk-add CID/User groups to an ExamCollection.
|
||||
|
||||
Accepts `user` kwarg in __init__ to limit available groups based on permissions
|
||||
(mirrors behaviour of `ExamGroupsFormMixin`).
|
||||
"""
|
||||
cid_user_groups = ModelMultipleChoiceField(required=False, queryset=CidUserGroup.objects.none(), label="CID User Groups")
|
||||
user_user_groups = ModelMultipleChoiceField(required=False, queryset=UserUserGroup.objects.none(), label="User Groups")
|
||||
EXAM_TYPE_CHOICES = [
|
||||
("all", "All"),
|
||||
("anatomy", "Anatomy"),
|
||||
("longs", "Longs"),
|
||||
("rapids", "Rapids"),
|
||||
("shorts", "Shorts"),
|
||||
("physics", "Physics"),
|
||||
("sbas", "SBAs"),
|
||||
]
|
||||
exam_types = MultipleChoiceField(required=False, choices=EXAM_TYPE_CHOICES, label="Exam types (leave empty for all)")
|
||||
|
||||
def __init__(self, *args, user=None, **kwargs):
|
||||
# keep compatibility with other forms that pass user as kwarg
|
||||
# This is a plain Form (not a ModelForm) so call Form.__init__
|
||||
Form.__init__(self, *args, **kwargs)
|
||||
# choose queryset depending on permissions
|
||||
if user and (user.is_superuser or user.groups.filter(name="cid_user_manager").exists()):
|
||||
cid_qs = CidUserGroup.objects.filter(archive=False)
|
||||
user_qs = UserUserGroup.objects.filter(archive=False)
|
||||
else:
|
||||
cid_qs = CidUserGroup.objects.filter(archive=False, open_access=True)
|
||||
user_qs = UserUserGroup.objects.filter(archive=False, open_access=True)
|
||||
|
||||
self.fields["cid_user_groups"].queryset = cid_qs
|
||||
self.fields["user_user_groups"].queryset = user_qs
|
||||
self.fields["cid_user_groups"].widget.attrs["size"] = 8
|
||||
self.fields["user_user_groups"].widget.attrs["size"] = 8
|
||||
|
||||
|
||||
class ExaminationForm(ModelForm):
|
||||
def __init__(self, *args, **kwargs):
|
||||
# Where is this coming from?
|
||||
|
||||
Reference in New Issue
Block a user