def put(self, request):
"""
Take the user object from the request and updates user info if it exists in the DB. If the email (which is
unique) is to be updated this will be in a new attribute within the PUT message called new_username.
If this succeeds then we can report a success.
:param request:
:param args:
:param kwargs:
:return: Serialised JSON Response Object to indicate the resource has been created
"""
stdlogger.debug("Hitting HTTP PUT account view")
# Try and persist the user to the DB. Remember this could fail a data integrity check if some other system has
# saved this user before we run this line of code!
try:
# Check to see if this PUT is changing the user ID. If it is, then keep the same user object with Primary
# Key and change the email to the new one.
if request.new_username:
stdlogger.info("Admin is updating a user ID to a new value")
request.user.email = request.new_username
request.user.save()
except (IntegrityError, InternalError, DataError, DatabaseError):
# The chances of this happening are slim to none! And this line of code should never happen. So we really
# need to tell the other system we are not capable of creating the resource.
raise DatabaseFailureException
context = {'account': request.user.email, 'updated': 'success'}
json_context = JSONRenderer().render(context)
return Response(data=json_context, status=status.HTTP_201_CREATED,)
评论列表
文章目录