Re-factored ResetPasswordConfirm using the open-closed principle #115
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
I would actually like to do bigger changes in the repository for the functionality that I need, but I wanted to initialize the discussion with this commit because it's the safest bet and shows an example of what I want to implement.
The views have a very bulky post method, so subclassing them to try to change a little bit of functionality ends up re-creating the class almost entirely and makes subclassing useless, going against the open-closed principle. I ended up re-writing a lot of code because of that.
The .post method in ResetPasswordConfirm was very bulky and much of the functionality inside the post method made more sense as a collection of smaller methods with a more precise task, because they could be re-defined for another developer's use-case (this is my use-case; I have three user types and boolean properties attached to the user model that I can use to tell the user types apart, and I needed to re-define "eligible_for_reset"). Functionality is left unchanged but the steps can now be adjusted if a developer subclasses this view. The post method is also now much more readable.