PMA-2020 / pma-api

The best way to programmatically access PMA2020 data.
http://api.pma2020.org
MIT License
1 stars 3 forks source link

No error messages returned for /v1/<endpoint>/<invalid-code>, various endpoints #23

Open joeflack4 opened 6 years ago

joeflack4 commented 6 years ago

Description

When accessing a URL pattern such as /v1/<endpoint>/<code> where <code> is malformed or not recognized, rather than the API returning an explicit error message or "0 results" screen, there is an internal server error.

Examples

http://localhost:5000/v1/surveys/gh Should have been "PMA2013_GHR1" rather than "gh".

builtins.AttributeError
AttributeError: 'NoneType' object has no attribute 'full_json'

Traceback (most recent call last)
File "/Users/joeflack4/virtualenvs/pma-api/lib/python3.6/site-packages/flask/app.py", line 1997, in __call__
return self.wsgi_app(environ, start_response)
File "/Users/joeflack4/virtualenvs/pma-api/lib/python3.6/site-packages/flask/app.py", line 1985, in wsgi_app
response = self.handle_exception(e)
File "/Users/joeflack4/virtualenvs/pma-api/lib/python3.6/site-packages/flask_cors/extension.py", line 161, in wrapped_function
return cors_after_request(app.make_response(f(*args, **kwargs)))
File "/Users/joeflack4/virtualenvs/pma-api/lib/python3.6/site-packages/flask/app.py", line 1540, in handle_exception
reraise(exc_type, exc_value, tb)
File "/Users/joeflack4/virtualenvs/pma-api/lib/python3.6/site-packages/flask/_compat.py", line 33, in reraise
raise value
File "/Users/joeflack4/virtualenvs/pma-api/lib/python3.6/site-packages/flask/app.py", line 1982, in wsgi_app
response = self.full_dispatch_request()
File "/Users/joeflack4/virtualenvs/pma-api/lib/python3.6/site-packages/flask/app.py", line 1614, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/Users/joeflack4/virtualenvs/pma-api/lib/python3.6/site-packages/flask_cors/extension.py", line 161, in wrapped_function
return cors_after_request(app.make_response(f(*args, **kwargs)))
File "/Users/joeflack4/virtualenvs/pma-api/lib/python3.6/site-packages/flask/app.py", line 1517, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/Users/joeflack4/virtualenvs/pma-api/lib/python3.6/site-packages/flask/_compat.py", line 33, in reraise
raise value
File "/Users/joeflack4/virtualenvs/pma-api/lib/python3.6/site-packages/flask/app.py", line 1612, in full_dispatch_request
rv = self.dispatch_request()
File "/Users/joeflack4/virtualenvs/pma-api/lib/python3.6/site-packages/flask/app.py", line 1598, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/Users/joeflack4/projects/pma-api/pma_api/api_1_0/collection.py", line 178, in get_survey
json_obj = survey.full_json()
AttributeError: 'NoneType' object has no attribute 'full_json'

http://localhost:5000/v1/countries/bf No evident valid query to retrieve instance.

sqlalchemy.exc.InvalidRequestError
sqlalchemy.exc.InvalidRequestError: Entity '<class 'pma_api.models.core.Country'>' has no property 'country_code'

Traceback (most recent call last)
File "/Users/joeflack4/virtualenvs/pma-api/lib/python3.6/site-packages/flask/app.py", line 1997, in __call__
return self.wsgi_app(environ, start_response)
File "/Users/joeflack4/virtualenvs/pma-api/lib/python3.6/site-packages/flask/app.py", line 1985, in wsgi_app
response = self.handle_exception(e)
File "/Users/joeflack4/virtualenvs/pma-api/lib/python3.6/site-packages/flask_cors/extension.py", line 161, in wrapped_function
return cors_after_request(app.make_response(f(*args, **kwargs)))
File "/Users/joeflack4/virtualenvs/pma-api/lib/python3.6/site-packages/flask/app.py", line 1540, in handle_exception
reraise(exc_type, exc_value, tb)
File "/Users/joeflack4/virtualenvs/pma-api/lib/python3.6/site-packages/flask/_compat.py", line 33, in reraise
raise value
File "/Users/joeflack4/virtualenvs/pma-api/lib/python3.6/site-packages/flask/app.py", line 1982, in wsgi_app
response = self.full_dispatch_request()
File "/Users/joeflack4/virtualenvs/pma-api/lib/python3.6/site-packages/flask/app.py", line 1614, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/Users/joeflack4/virtualenvs/pma-api/lib/python3.6/site-packages/flask_cors/extension.py", line 161, in wrapped_function
return cors_after_request(app.make_response(f(*args, **kwargs)))
File "/Users/joeflack4/virtualenvs/pma-api/lib/python3.6/site-packages/flask/app.py", line 1517, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/Users/joeflack4/virtualenvs/pma-api/lib/python3.6/site-packages/flask/_compat.py", line 33, in reraise
raise value
File "/Users/joeflack4/virtualenvs/pma-api/lib/python3.6/site-packages/flask/app.py", line 1612, in full_dispatch_request
rv = self.dispatch_request()
File "/Users/joeflack4/virtualenvs/pma-api/lib/python3.6/site-packages/flask/app.py", line 1598, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/Users/joeflack4/projects/pma-api/pma_api/api_1_0/collection.py", line 74, in get_country
country = Country.query.filter_by(country_code=code).first()
File "/Users/joeflack4/virtualenvs/pma-api/lib/python3.6/site-packages/sqlalchemy/orm/query.py", line 1562, in filter_by
for key, value in kwargs.items()]
File "/Users/joeflack4/virtualenvs/pma-api/lib/python3.6/site-packages/sqlalchemy/orm/query.py", line 1562, in <listcomp>
for key, value in kwargs.items()]
File "/Users/joeflack4/virtualenvs/pma-api/lib/python3.6/site-packages/sqlalchemy/orm/base.py", line 383, in _entity_descriptor
(description, key)
sqlalchemy.exc.InvalidRequestError: Entity '<class 'pma_api.models.core.Country'>' has no property 'country_code'

http://api.pma2020.org/v1/characteristicGroups/kljlfsdfsdfsdfs

kljlfsdfsdfsdfs