Extract some common logic about dirty serializers into a helper method
This commit is contained in:
@@ -506,3 +506,13 @@ def shim_student_view(view_func, check_logged_in=False):
|
||||
return response
|
||||
|
||||
return _inner
|
||||
|
||||
|
||||
def serializer_is_dirty(preference_serializer):
|
||||
"""
|
||||
Return True if saving the supplied (Raw)UserPreferenceSerializer would change the database.
|
||||
"""
|
||||
return (
|
||||
preference_serializer.instance is None or
|
||||
preference_serializer.instance.value != preference_serializer.validated_data['value']
|
||||
)
|
||||
|
||||
@@ -20,7 +20,7 @@ from ..errors import (
|
||||
UserAPIInternalError, UserAPIRequestError, UserNotFound, UserNotAuthorized,
|
||||
PreferenceValidationError, PreferenceUpdateError, CountryCodeError
|
||||
)
|
||||
from ..helpers import intercept_errors
|
||||
from ..helpers import intercept_errors, serializer_is_dirty
|
||||
from ..models import UserOrgTag, UserPreference
|
||||
from ..serializers import UserSerializer, RawUserPreferenceSerializer
|
||||
|
||||
@@ -143,7 +143,7 @@ def update_user_preferences(requesting_user, update, user=None):
|
||||
try:
|
||||
serializer = serializers[preference_key]
|
||||
|
||||
if serializer.instance is None or serializer.instance.value != serializer.validated_data['value']:
|
||||
if serializer_is_dirty(serializer):
|
||||
serializer.save()
|
||||
except Exception as error:
|
||||
raise _create_preference_update_error(preference_key, preference_value, error)
|
||||
@@ -179,7 +179,8 @@ def set_user_preference(requesting_user, preference_key, preference_value, usern
|
||||
existing_user = _get_authorized_user(requesting_user, username)
|
||||
serializer = create_user_preference_serializer(existing_user, preference_key, preference_value)
|
||||
validate_user_preference_serializer(serializer, preference_key, preference_value)
|
||||
if serializer.instance is None or serializer.instance.value != serializer.validated_data['value']:
|
||||
|
||||
if serializer_is_dirty(serializer):
|
||||
try:
|
||||
serializer.save()
|
||||
except Exception as error:
|
||||
|
||||
Reference in New Issue
Block a user