4
4
from django .contrib .auth .decorators import login_required , user_passes_test
5
5
from django .contrib .auth .mixins import LoginRequiredMixin
6
6
from django .contrib .auth .models import User
7
+ from django .contrib .auth .password_validation import validate_password
7
8
from django .db import transaction
8
9
from django .http import HttpResponse
9
10
from django .utils .encoding import force_str
@@ -256,10 +257,10 @@ def dashboard(request):
256
257
file_form = forms .ResultsForm (request .POST , request .FILES )
257
258
checkin_form = forms .CheckinUsersForm (request .POST )
258
259
channel_form = forms .ClearChannelForm (request .POST )
260
+ update_password_form = forms .UpdatePasswordForm (request .POST )
259
261
profile_role_form = forms .UpdateProfileRoleForm (request .POST )
260
262
activate_account_form = forms .ActivateAccountForm (request .POST )
261
- faculty_team_form = forms .DesignateFacultyTeamForm (
262
- request .POST )
263
+ faculty_team_form = forms .DesignateFacultyTeamForm (request .POST )
263
264
264
265
# Process walk-in team creation form
265
266
if walkin_form .is_valid ():
@@ -277,6 +278,25 @@ def dashboard(request):
277
278
channel_form .cleaned_data ['channel_id' ])
278
279
messages .info (request , 'Clear channel task scheduled.' ,
279
280
fail_silently = True )
281
+ # Process password update form
282
+ elif update_password_form .is_valid ():
283
+ try :
284
+ user = User .objects .get (username = update_password_form .cleaned_data ['username' ])
285
+ except :
286
+ messages .error (request , 'User not found.' , fail_silently = True )
287
+ else :
288
+ try :
289
+ validate_password (update_password_form .cleaned_data ['password' ], user )
290
+ except :
291
+ messages .error (request , 'Please try a different password.' , fail_silently = True )
292
+ else :
293
+ try :
294
+ user .set_password (update_password_form .cleaned_data ['password' ])
295
+ user .save ()
296
+ except :
297
+ messages .error (request , 'Password save failed.' , fail_silently = True )
298
+ else :
299
+ messages .success (request , 'Password updated.' , fail_silently = True )
280
300
# Process profile role change form
281
301
elif profile_role_form .is_valid ():
282
302
try :
@@ -350,6 +370,7 @@ def dashboard(request):
350
370
file_form = forms .ResultsForm ()
351
371
checkin_form = forms .CheckinUsersForm ()
352
372
channel_form = forms .ClearChannelForm ()
373
+ update_password_form = forms .UpdatePasswordForm ()
353
374
profile_role_form = forms .UpdateProfileRoleForm ()
354
375
activate_account_form = forms .ActivateAccountForm ()
355
376
faculty_team_form = forms .DesignateFacultyTeamForm ()
@@ -384,6 +405,7 @@ def dashboard(request):
384
405
context ['file_form' ] = file_form
385
406
context ['gen_walkin_form' ] = walkin_form
386
407
context ['channel_form' ] = channel_form
408
+ context ['update_password_form' ] = update_password_form
387
409
context ['profile_role_form' ] = profile_role_form
388
410
context ['activate_account_form' ] = activate_account_form
389
411
context ["faculty_team_form" ] = faculty_team_form
0 commit comments