Complete supervisor model and start improving forms
This commit is contained in:
+62
-19
@@ -7,14 +7,22 @@ from django.forms import (
|
||||
CharField,
|
||||
HiddenInput,
|
||||
EmailField,
|
||||
IntegerField
|
||||
|
||||
IntegerField,
|
||||
)
|
||||
from django.forms import inlineformset_factory
|
||||
from atlas.models import CaseCollection
|
||||
from django.contrib.auth.models import User
|
||||
|
||||
from generic.models import CidUser, CidUserGroup, Examination, QuestionNote, Supervisor, UserGrades, UserProfile, UserUserGroup
|
||||
from generic.models import (
|
||||
CidUser,
|
||||
CidUserGroup,
|
||||
Examination,
|
||||
QuestionNote,
|
||||
Supervisor,
|
||||
UserGrades,
|
||||
UserProfile,
|
||||
UserUserGroup,
|
||||
)
|
||||
|
||||
from django.contrib.admin.widgets import FilteredSelectMultiple
|
||||
from django.forms.widgets import RadioSelect, TextInput, Textarea
|
||||
@@ -50,6 +58,7 @@ from sbas.models import CidUserAnswer as SbasCidUserAnswer
|
||||
from sbas.models import Exam as SbasExam
|
||||
from sbas.models import Question as SbasQuestion
|
||||
|
||||
|
||||
class ExamFormMixin:
|
||||
class Meta:
|
||||
fields = [
|
||||
@@ -64,7 +73,7 @@ class ExamFormMixin:
|
||||
"archive",
|
||||
"cid_user_groups",
|
||||
"user_user_groups",
|
||||
#"author",
|
||||
# "author",
|
||||
]
|
||||
|
||||
def save(self, commit=True):
|
||||
@@ -75,6 +84,7 @@ class ExamFormMixin:
|
||||
|
||||
return instance
|
||||
|
||||
|
||||
class ExamAuthorFormMixin(ModelForm):
|
||||
class Meta:
|
||||
fields = ["author"]
|
||||
@@ -133,7 +143,6 @@ class QuestionNoteForm(ModelForm):
|
||||
|
||||
|
||||
class CidUserForm(ModelForm):
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
if kwargs.get("instance"):
|
||||
# We get the 'initial' keyword argument or initialize it
|
||||
@@ -141,12 +150,22 @@ class CidUserForm(ModelForm):
|
||||
initial = kwargs.setdefault("initial", {})
|
||||
# The widget for a ModelMultipleChoiceField expects
|
||||
# a list of primary key for the selected data.
|
||||
initial["physics_exams"] = [t.pk for t in kwargs["instance"].physics_exams.all()]
|
||||
initial["anatomy_exams"] = [t.pk for t in kwargs["instance"].anatomy_exams.all()]
|
||||
initial["physics_exams"] = [
|
||||
t.pk for t in kwargs["instance"].physics_exams.all()
|
||||
]
|
||||
initial["anatomy_exams"] = [
|
||||
t.pk for t in kwargs["instance"].anatomy_exams.all()
|
||||
]
|
||||
initial["sba_exams"] = [t.pk for t in kwargs["instance"].sba_exams.all()]
|
||||
initial["rapid_exams"] = [t.pk for t in kwargs["instance"].rapid_exams.all()]
|
||||
initial["longs_exams"] = [t.pk for t in kwargs["instance"].longs_exams.all()]
|
||||
initial["casecollection_exams"] = [t.pk for t in kwargs["instance"].casecollection_exams.all()]
|
||||
initial["rapid_exams"] = [
|
||||
t.pk for t in kwargs["instance"].rapid_exams.all()
|
||||
]
|
||||
initial["longs_exams"] = [
|
||||
t.pk for t in kwargs["instance"].longs_exams.all()
|
||||
]
|
||||
initial["casecollection_exams"] = [
|
||||
t.pk for t in kwargs["instance"].casecollection_exams.all()
|
||||
]
|
||||
|
||||
ModelForm.__init__(self, *args, **kwargs)
|
||||
|
||||
@@ -155,12 +174,16 @@ class CidUserForm(ModelForm):
|
||||
self.fields["physics_exams"] = ModelMultipleChoiceField(
|
||||
required=False,
|
||||
queryset=PhysicsExam.objects.filter(archive=False),
|
||||
widget=FilteredSelectMultiple(verbose_name="Physics Exams", is_stacked=False),
|
||||
widget=FilteredSelectMultiple(
|
||||
verbose_name="Physics Exams", is_stacked=False
|
||||
),
|
||||
)
|
||||
self.fields["anatomy_exams"] = ModelMultipleChoiceField(
|
||||
required=False,
|
||||
queryset=AnatomyExam.objects.filter(archive=False),
|
||||
widget=FilteredSelectMultiple(verbose_name="Anatomy Exams", is_stacked=False),
|
||||
widget=FilteredSelectMultiple(
|
||||
verbose_name="Anatomy Exams", is_stacked=False
|
||||
),
|
||||
)
|
||||
self.fields["sba_exams"] = ModelMultipleChoiceField(
|
||||
required=False,
|
||||
@@ -180,7 +203,9 @@ class CidUserForm(ModelForm):
|
||||
self.fields["casecollection_exams"] = ModelMultipleChoiceField(
|
||||
required=False,
|
||||
queryset=CaseCollection.objects.filter(archive=False),
|
||||
widget=FilteredSelectMultiple(verbose_name="Case Collection", is_stacked=False),
|
||||
widget=FilteredSelectMultiple(
|
||||
verbose_name="Case Collection", is_stacked=False
|
||||
),
|
||||
)
|
||||
|
||||
def save(self, commit=True):
|
||||
@@ -219,7 +244,7 @@ class CidUserForm(ModelForm):
|
||||
self.save_m2m()
|
||||
|
||||
return instance
|
||||
|
||||
|
||||
class Meta:
|
||||
model = CidUser
|
||||
fields = [
|
||||
@@ -234,31 +259,42 @@ class CidUserForm(ModelForm):
|
||||
"group",
|
||||
]
|
||||
|
||||
|
||||
class CidUserGroupModelChoiceField(ModelMultipleChoiceField):
|
||||
def label_from_instance(self, obj):
|
||||
return f"{obj.cid} [{obj.email}]"
|
||||
|
||||
|
||||
class CidUserGroupForm(ModelForm):
|
||||
|
||||
class Meta:
|
||||
model = CidUserGroup
|
||||
fields = ["name", "archive"]
|
||||
|
||||
|
||||
class UserUserGroupModelChoiceField(ModelMultipleChoiceField):
|
||||
def label_from_instance(self, obj):
|
||||
return f"{obj.username} ({obj.userprofile.grade}) [{obj.email}]"
|
||||
|
||||
|
||||
class UserUserGroupForm(ModelForm):
|
||||
users = UserUserGroupModelChoiceField(
|
||||
required=False,
|
||||
queryset=User.objects.all(),
|
||||
widget=FilteredSelectMultiple(verbose_name="Users", is_stacked=False),
|
||||
)
|
||||
|
||||
class Meta:
|
||||
model = UserUserGroup
|
||||
fields = ["name", "archive", "users"]
|
||||
|
||||
#class UserForm(ModelForm):
|
||||
|
||||
# class UserForm(ModelForm):
|
||||
# class Meta:
|
||||
# model = User
|
||||
# fields = ["first_name", "last_name", "email"]
|
||||
#
|
||||
#class UserProfileForm(ModelForm):
|
||||
# class UserProfileForm(ModelForm):
|
||||
# class Meta:
|
||||
# model = UserProfile
|
||||
# fields = ["supervisor_name", "supervisor_email", "registration_number", "peninsula_trainee"]
|
||||
@@ -271,18 +307,25 @@ GRADE_CHOICES = (
|
||||
("ST5", "ST5"),
|
||||
)
|
||||
|
||||
|
||||
class UserUserForm(Form):
|
||||
username = EmailField(required=True, help_text="Username / email should be the same. Ideally this should be an nhs email.")
|
||||
username = EmailField(
|
||||
required=True,
|
||||
help_text="Username / email should be the same. Ideally this should be an nhs email.",
|
||||
)
|
||||
first_name = CharField(max_length=255, required=True)
|
||||
last_name = CharField(max_length=255, required=True)
|
||||
grade = ModelChoiceField(UserGrades.objects.all(), required=False)
|
||||
supervisor = ModelChoiceField(Supervisor.objects.all(), required=False) # Needs to be a user/object ref
|
||||
supervisor = ModelChoiceField(
|
||||
Supervisor.objects.all(), required=False
|
||||
) # Needs to be a user/object ref
|
||||
#
|
||||
# class Meta:
|
||||
#
|
||||
# fields = ("username", "first_name", "last_name")
|
||||
|
||||
|
||||
class SupervisorForm(ModelForm):
|
||||
class Meta:
|
||||
model = Supervisor
|
||||
exclude = ("",)
|
||||
exclude = ("",)
|
||||
|
||||
Reference in New Issue
Block a user