Base YadisServiceManager, OpenIDServiceEndpoint on dict to make them serializable #68
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.
Both objects end up as data in a serialized object, when used with
django-openid-auth
. Django switched to JSONSerializer that can no longer serialize these objects (in contrast to the Picke-based serializer) and hence throws an error. The easiest solution is to base both on dict objects that can be easily be serialized by JSON, but it also requires us to create corresponding getter/setter methods, plus ensure if we end up with a plain dict, we "convert" that to the real object: The new_from_dict()
functions.This problem has been described in the past, but the usual workaround was to switch to PickleSerializer, which poses a security risk and isn't actually a real fix. Pre-Django 5.x using the Pickle-based serializer worked, but now it's completely gone and that workaround is no longer an option.
This is my take on fixing the underlying issue of
YaidServiceManager
andOpenIDServiceEndpoint
not being serializable with JSON session serializer.Refs: