From 7aa426c4766e2b8c55084b68b9d0d6d3ce4397c7 Mon Sep 17 00:00:00 2001 From: Bob Collins Date: Tue, 8 Sep 2015 15:41:58 -0400 Subject: [PATCH 1/2] Issue 43. Create PasswordHistory and delete PasswordChangeRequired only when form commit is True. --- password_policies/forms/__init__.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/password_policies/forms/__init__.py b/password_policies/forms/__init__.py index 21b60f9..e6735cd 100644 --- a/password_policies/forms/__init__.py +++ b/password_policies/forms/__init__.py @@ -93,11 +93,11 @@ def save(self, commit=True): self.user.set_password(new_password) if commit: self.user.save() - if settings.PASSWORD_USE_HISTORY: - password = make_password(new_password) - PasswordHistory.objects.create(password=password, user=self.user) - PasswordHistory.objects.delete_expired(self.user) - PasswordChangeRequired.objects.filter(user=self.user).delete() + if settings.PASSWORD_USE_HISTORY: + password = make_password(new_password) + PasswordHistory.objects.create(password=password, user=self.user) + PasswordHistory.objects.delete_expired(self.user) + PasswordChangeRequired.objects.filter(user=self.user).delete() return self.user @@ -155,7 +155,7 @@ def clean(self): def save(self, commit=True): user = super(PasswordPoliciesChangeForm, self).save(commit=commit) try: - if user.password_change_required: + if user.password_change_required and user.password_change_required.id: user.password_change_required.delete() except ObjectDoesNotExist: pass From 276451da5eadfcf888e1aad8f75ff81df5eb0aba Mon Sep 17 00:00:00 2001 From: Bob Collins Date: Tue, 8 Sep 2015 16:21:22 -0400 Subject: [PATCH 2/2] Issue 43. Check the existance of the user.password_change_required.id before calling the object.delete() method to prevent the AssertionError that the id is None. --- password_policies/forms/__init__.py | 1 + 1 file changed, 1 insertion(+) diff --git a/password_policies/forms/__init__.py b/password_policies/forms/__init__.py index e6735cd..297df66 100644 --- a/password_policies/forms/__init__.py +++ b/password_policies/forms/__init__.py @@ -155,6 +155,7 @@ def clean(self): def save(self, commit=True): user = super(PasswordPoliciesChangeForm, self).save(commit=commit) try: + # Checking the object id to prevent AssertionError id is None when deleting. if user.password_change_required and user.password_change_required.id: user.password_change_required.delete() except ObjectDoesNotExist: