Skip to content

Commit a33b58c

Browse files
Added password update to contest dash view
1 parent 3aaa648 commit a33b58c

File tree

1 file changed

+24
-2
lines changed

1 file changed

+24
-2
lines changed

src/contestadmin/views.py

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from django.contrib.auth.decorators import login_required, user_passes_test
55
from django.contrib.auth.mixins import LoginRequiredMixin
66
from django.contrib.auth.models import User
7+
from django.contrib.auth.password_validation import validate_password
78
from django.db import transaction
89
from django.http import HttpResponse
910
from django.utils.encoding import force_str
@@ -256,10 +257,10 @@ def dashboard(request):
256257
file_form = forms.ResultsForm(request.POST, request.FILES)
257258
checkin_form = forms.CheckinUsersForm(request.POST)
258259
channel_form = forms.ClearChannelForm(request.POST)
260+
update_password_form = forms.UpdatePasswordForm(request.POST)
259261
profile_role_form = forms.UpdateProfileRoleForm(request.POST)
260262
activate_account_form = forms.ActivateAccountForm(request.POST)
261-
faculty_team_form = forms.DesignateFacultyTeamForm(
262-
request.POST)
263+
faculty_team_form = forms.DesignateFacultyTeamForm(request.POST)
263264

264265
# Process walk-in team creation form
265266
if walkin_form.is_valid():
@@ -277,6 +278,25 @@ def dashboard(request):
277278
channel_form.cleaned_data['channel_id'])
278279
messages.info(request, 'Clear channel task scheduled.',
279280
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)
280300
# Process profile role change form
281301
elif profile_role_form.is_valid():
282302
try:
@@ -350,6 +370,7 @@ def dashboard(request):
350370
file_form = forms.ResultsForm()
351371
checkin_form = forms.CheckinUsersForm()
352372
channel_form = forms.ClearChannelForm()
373+
update_password_form = forms.UpdatePasswordForm()
353374
profile_role_form = forms.UpdateProfileRoleForm()
354375
activate_account_form = forms.ActivateAccountForm()
355376
faculty_team_form = forms.DesignateFacultyTeamForm()
@@ -384,6 +405,7 @@ def dashboard(request):
384405
context['file_form'] = file_form
385406
context['gen_walkin_form'] = walkin_form
386407
context['channel_form'] = channel_form
408+
context['update_password_form'] = update_password_form
387409
context['profile_role_form'] = profile_role_form
388410
context['activate_account_form'] = activate_account_form
389411
context["faculty_team_form"] = faculty_team_form

0 commit comments

Comments
 (0)