from opendc.models.user import User from opendc.util import database, exceptions from opendc.util.rest import Response def DELETE(request): """Delete this user.""" # Make sure required parameters are there try: request.check_required_parameters( path = { 'userId': 'int' } ) except exceptions.ParameterError as e: return Response(400, e.message) # Instantiate a User and make sure they exist user = User.from_primary_key((request.params_path['userId'],)) if not user.exists(): return Response(404, '{} not found'.format(user)) # Make sure this User is allowed to delete this User if not user.google_id_has_at_least(request.google_id, 'OWN'): return Response(403, 'Forbidden from deleting {}.'.format(user)) # Delete this User user.delete() # Return this User return Response( 200, 'Succesfully deleted {}'.format(user), user.to_JSON() ) def GET(request): """Get this User.""" # Make sure required parameters are there try: request.check_required_parameters( path = { 'userId': 'int' } ) except exceptions.ParameterError as e: return Response(400, e.message) # Instantiate a User and make sure they exist user = User.from_primary_key((request.params_path['userId'],)) if not user.exists(): return Response(404, '{} not found.'.format(user)) # Return this User return Response( 200, 'Successfully retrieved {}'.format(user), user.to_JSON(), ) def PUT(request): """Update this User's given name and/ or family name.""" # Make sure the required parameters are there try: request.check_required_parameters( body = { 'user': { 'givenName': 'string', 'familyName': 'string' } }, path = { 'userId': 'int' } ) except exceptions.ParameterError as e: return Response(400, e.message) # Instantiate a User and make sure they exist user = User.from_primary_key((request.params_path['userId'],)) if not user.exists(): return Response(404, '{} not found.'.format(user)) # Make sure this User is allowed to edit this User if not user.google_id_has_at_least(request.google_id, 'OWN'): return Response(403, 'Forbidden from editing {}.'.format(user)) # Update this User user.given_name = request.params_body['user']['givenName'] user.family_name = request.params_body['user']['familyName'] user.update() # Return this User return Response( 200, 'Successfully updated {}.'.format(user), user.to_JSON() )