@@ -117,6 +117,46 @@ class Meta:
117
117
}
118
118
119
119
120
+ class StaffMemberForm (forms .ModelForm ):
121
+ class Meta :
122
+ model = StaffMember
123
+ fields = ['user' , 'services_offered' , 'slot_duration' , 'lead_time' , 'finish_time' ,
124
+ 'appointment_buffer_time' , 'work_on_saturday' , 'work_on_sunday' ]
125
+ widgets = {
126
+ 'user' : forms .Select (attrs = {'class' : 'form-control' }),
127
+ 'service_offered' : forms .Select (attrs = {'class' : 'form-control' }),
128
+ 'slot_duration' : forms .NumberInput (attrs = {
129
+ 'class' : 'form-control' ,
130
+ 'placeholder' : _ ('Example value: 30, 60, 90, 120... (in minutes)' )
131
+ }),
132
+ 'lead_time' : forms .TimeInput (attrs = {
133
+ 'class' : 'form-control' ,
134
+ 'placeholder' : _ ('Example value: 08:00:00, 09:00:00... (24-hour format)' )
135
+ }),
136
+ 'finish_time' : forms .TimeInput (attrs = {
137
+ 'class' : 'form-control' ,
138
+ 'placeholder' : _ ('Example value: 17:00:00, 18:00:00... (24-hour format)' )
139
+ }),
140
+ 'appointment_buffer_time' : forms .NumberInput (attrs = {
141
+ 'class' : 'form-control' ,
142
+ 'placeholder' : _ ('Example value: 15, 30, 45, 60... (in minutes)' )
143
+ }),
144
+ 'work_on_saturday' : forms .CheckboxInput (attrs = {'class' : 'form-check-input' }),
145
+ 'work_on_sunday' : forms .CheckboxInput (attrs = {'class' : 'form-check-input' }),
146
+ }
147
+
148
+ def __init__ (self , * args , ** kwargs ):
149
+ super (StaffMemberForm , self ).__init__ (* args , ** kwargs )
150
+ # Exclude users who are already staff members
151
+ existing_staff_user_ids = StaffMember .objects .values_list ('user' , flat = True )
152
+ # Filter queryset for user field to include only superusers or users not already staff members
153
+ self .fields ['user' ].queryset = get_user_model ().objects .filter (
154
+ is_superuser = True
155
+ ).exclude (id__in = existing_staff_user_ids ) | get_user_model ().objects .exclude (
156
+ id__in = existing_staff_user_ids
157
+ )
158
+
159
+
120
160
class StaffDaysOffForm (forms .ModelForm ):
121
161
class Meta :
122
162
model = DayOff
0 commit comments