Skip to content

Instantly share code, notes, and snippets.

@kracekumar
Created July 24, 2016 14:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kracekumar/78557dd6e2bf0e5176b3d6783300fdbb to your computer and use it in GitHub Desktop.
Save kracekumar/78557dd6e2bf0e5176b3d6783300fdbb to your computer and use it in GitHub Desktop.
Simple view where control flow is determined by exception
def get_user():
# Get request token from request object
user = get_user_by_token(token)
if user:
return user
raise HTTPException(status=401)
def check_and_create_new_bucket(name, user):
if bucket_exists(name, user):
raise HTTPException(status=400, data={'name': 'Already exists'})
return create_bucket(name, user)
class TodoBucketListAPIView(BaseMethodView):
def post(self):
try:
user = get_user()
validator = NewBucketValidator(request.POST)
validator.validate(raise_exception=True)
bucket = check_and_create_new_bucket(validator.name, user=user)
resp_data = format_new_bucket(bucket)
return make_response(data=resp_data, status=201)
except HTTPException as e:
return make_response(status=e.status, data=e.data)
except ValidationError as e:
return make_response(status=400, data=e.errors)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment