allow adding users to exams by group
This commit is contained in:
+49
-45
@@ -68,6 +68,7 @@ from django.forms.utils import from_current_timezone, to_current_timezone
|
||||
from crispy_forms.helper import FormHelper
|
||||
from crispy_forms.layout import Submit
|
||||
|
||||
|
||||
class SplitDateTimeFieldDefaultTime(SplitDateTimeField):
|
||||
def compress(self, data_list):
|
||||
if data_list:
|
||||
@@ -79,9 +80,9 @@ class SplitDateTimeFieldDefaultTime(SplitDateTimeField):
|
||||
)
|
||||
if data_list[1] in self.empty_values:
|
||||
data_list[1] = datetime.time(0, 1)
|
||||
#raise ValidationError(
|
||||
# raise ValidationError(
|
||||
# self.error_messages["invalid_time"], code="invalid_time"
|
||||
#)
|
||||
# )
|
||||
result = datetime.datetime.combine(*data_list)
|
||||
return from_current_timezone(result)
|
||||
return None
|
||||
@@ -98,9 +99,9 @@ class SplitDateTimeFieldDefaultTimeEnd(SplitDateTimeField):
|
||||
)
|
||||
if data_list[1] in self.empty_values:
|
||||
data_list[1] = datetime.time(23, 59)
|
||||
#raise ValidationError(
|
||||
# raise ValidationError(
|
||||
# self.error_messages["invalid_time"], code="invalid_time"
|
||||
#)
|
||||
# )
|
||||
result = datetime.datetime.combine(*data_list)
|
||||
return from_current_timezone(result)
|
||||
return None
|
||||
@@ -111,29 +112,28 @@ class ExamFormMixin:
|
||||
super(ModelForm, self).__init__(*args, **kwargs)
|
||||
|
||||
self.helper = FormHelper()
|
||||
self.helper.form_id = 'id-exam-form'
|
||||
self.helper.form_class = 'exam-form'
|
||||
self.helper.form_method = 'post'
|
||||
self.helper.form_action = 'submit'
|
||||
self.helper.form_id = "id-exam-form"
|
||||
self.helper.form_class = "exam-form"
|
||||
self.helper.form_method = "post"
|
||||
self.helper.form_action = "submit"
|
||||
|
||||
self.helper.add_input(Submit("submit", "Submit"))
|
||||
|
||||
self.helper.add_input(Submit('submit', 'Submit'))
|
||||
|
||||
#if user.is_superuser or user.groups.filter(name="cid_user_manager").exists():
|
||||
# if user.is_superuser or user.groups.filter(name="cid_user_manager").exists():
|
||||
# cid_user_group_queryset = CidUserGroup.objects.filter(archive=False)
|
||||
# user_user_group_queryset = UserUserGroup.objects.filter(archive=False)
|
||||
#else:
|
||||
# else:
|
||||
# cid_user_group_queryset = CidUserGroup.objects.none()
|
||||
# user_user_group_queryset = UserUserGroup.objects.none()
|
||||
|
||||
#self.fields["cid_user_groups"] = ModelMultipleChoiceField(
|
||||
# self.fields["cid_user_groups"] = ModelMultipleChoiceField(
|
||||
# required=False,
|
||||
# queryset=cid_user_group_queryset,
|
||||
#)
|
||||
#self.fields["user_user_groups"] = ModelMultipleChoiceField(
|
||||
# )
|
||||
# self.fields["user_user_groups"] = ModelMultipleChoiceField(
|
||||
# required=False,
|
||||
# queryset=user_user_group_queryset,
|
||||
#)
|
||||
# )
|
||||
self.fields["start_date"] = SplitDateTimeFieldDefaultTime(
|
||||
widget=SplitDateTimeWidget(
|
||||
date_attrs={"type": "date", "class": "datepicker"},
|
||||
@@ -169,8 +169,8 @@ class ExamFormMixin:
|
||||
"active",
|
||||
"publish_results",
|
||||
"archive",
|
||||
#"cid_user_groups",
|
||||
#"user_user_groups",
|
||||
# "cid_user_groups",
|
||||
# "user_user_groups",
|
||||
# "author",
|
||||
]
|
||||
|
||||
@@ -199,6 +199,7 @@ class ExamAuthorFormMixin(ModelForm):
|
||||
widget=FilteredSelectMultiple(verbose_name="Authors", is_stacked=False),
|
||||
)
|
||||
|
||||
|
||||
class ExamMarkerFormMixin(ModelForm):
|
||||
class Meta:
|
||||
fields = ["markers"]
|
||||
@@ -213,37 +214,41 @@ class ExamMarkerFormMixin(ModelForm):
|
||||
|
||||
|
||||
class ExamGroupsFormMixin(ModelForm):
|
||||
class Meta:
|
||||
#model = ExamCollection
|
||||
fields = ("cid_user_groups", "user_user_groups")
|
||||
class Meta:
|
||||
# model = ExamCollection
|
||||
fields = ("cid_user_groups", "user_user_groups")
|
||||
|
||||
def __init__(self, *args, user, **kwargs) -> None:
|
||||
super(ModelForm, self).__init__(*args, **kwargs)
|
||||
def __init__(self, *args, user, **kwargs) -> None:
|
||||
super(ModelForm, self).__init__(*args, **kwargs)
|
||||
|
||||
# TODO: decide how we should handle managing user groups
|
||||
# i.e who should be able to access a list of all users?
|
||||
# TODO: decide how we should handle managing user groups
|
||||
# i.e who should be able to access a list of all users?
|
||||
|
||||
if user.is_superuser or user.groups.filter(name="cid_user_manager").exists():
|
||||
cid_user_group_queryset = CidUserGroup.objects.filter(archive=False)
|
||||
user_user_group_queryset = UserUserGroup.objects.filter(archive=False)
|
||||
else:
|
||||
cid_user_group_queryset = CidUserGroup.objects.filter(archive=False, open_access=True)
|
||||
user_user_group_queryset = UserUserGroup.objects.none(archive=False, open_access=True)
|
||||
#cid_user_group_queryset = CidUserGroup.objects.none()
|
||||
#user_user_group_queryset = UserUserGroup.objects.none()
|
||||
|
||||
self.fields["cid_user_groups"] = ModelMultipleChoiceField(
|
||||
required=False,
|
||||
queryset=cid_user_group_queryset,
|
||||
label="CID User Groups",
|
||||
if user.is_superuser or user.groups.filter(name="cid_user_manager").exists():
|
||||
cid_user_group_queryset = CidUserGroup.objects.filter(archive=False)
|
||||
user_user_group_queryset = UserUserGroup.objects.filter(archive=False)
|
||||
else:
|
||||
cid_user_group_queryset = CidUserGroup.objects.filter(
|
||||
archive=False, open_access=True
|
||||
)
|
||||
self.fields["user_user_groups"] = ModelMultipleChoiceField(
|
||||
required=False,
|
||||
queryset=user_user_group_queryset,
|
||||
label="User Groups",
|
||||
user_user_group_queryset = UserUserGroup.objects.none(
|
||||
archive=False, open_access=True
|
||||
)
|
||||
self.fields["cid_user_groups"].widget.attrs["size"] = 8
|
||||
self.fields["user_user_groups"].widget.attrs["size"] = 8
|
||||
# cid_user_group_queryset = CidUserGroup.objects.none()
|
||||
# user_user_group_queryset = UserUserGroup.objects.none()
|
||||
|
||||
self.fields["cid_user_groups"] = ModelMultipleChoiceField(
|
||||
required=False,
|
||||
queryset=cid_user_group_queryset,
|
||||
label="CID User Groups",
|
||||
)
|
||||
self.fields["user_user_groups"] = ModelMultipleChoiceField(
|
||||
required=False,
|
||||
queryset=user_user_group_queryset,
|
||||
label="User Groups",
|
||||
)
|
||||
self.fields["cid_user_groups"].widget.attrs["size"] = 8
|
||||
self.fields["user_user_groups"].widget.attrs["size"] = 8
|
||||
|
||||
|
||||
class ExaminationForm(ModelForm):
|
||||
@@ -751,4 +756,3 @@ class ExamCollectionCloneForm(ModelForm):
|
||||
class Meta:
|
||||
model = ExamCollection
|
||||
fields = ("name", "date")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user