Commit Graph

97 Commits (0754f4b8235706d266357ff138659f60bf5d2ae7)

Author SHA1 Message Date
Dustin C. Hatch 0754f4b823 meta: ignore coverage cache 2015-02-19 20:39:57 -06:00
Dustin C. Hatch 230da47d5b app: Use _find_attr to locate controller's allowed_methods
Using the `milla.app.Application._find_attr` method to find the
`allowed_methods` of returned controller callables allows the attribute to be
defined e.g. on the class for instance methods, etc.
2015-02-19 20:37:39 -06:00
Dustin C. Hatch 922778ee4c test: Fix tests broken by move 2015-02-19 20:29:01 -06:00
Dustin C. Hatch 7cfb10066e Move tests outside distribution 2015-02-19 20:13:27 -06:00
Dustin C. Hatch e6774204a6 app: Return an empty string for HEAD requests
Some WSGI servers, e.g. Werkzeug, unconditionally attempt to iterate over the
application response, even for HEAD requests. If `None` is returned, then the
server will crash in this case, because it is not iterable. This commit alters
the behavior of `milla.Application` to return an empty string, which is
iterable and has the same effect of not sending a body.
2015-02-19 20:01:05 -06:00
Dustin C. Hatch c69dbed7ee routing: Correctly redirect when path info is empty (fixes #7)
When the application path info is empty (e.g. the WSGI script is mounted
somewhere other than the root), appending a trailing slash and redirecting
causes the new location to be calculated incorrectly. This is because the part
of the request URL before the application path is not taken into account, so
the new path always ends up being a literal `/`. This commit changes the
behavior of the `redir` function that is returned by
`milla.dispatch.routing.Router.resolve` to calculate the new path info
correctly in the redirect response.
2015-02-19 19:58:03 -06:00
Dustin C. Hatch cf94a4d600 app: Fixed an issue with unicode responses in Python 2.7
If a controller callable returns a string, it needs to be wrapped in a
Response object. To determine if this is the case, the Application tests to
see if the returned object is an instance of `basestring`. Since `basestring`
doesn't exist in Python 3, only `str` is a valid return type.

Unfortunately, my way of testing whether the `basestring` type existed was
flawed. Instead of raising `NameError` when it doesn't exist,
`UnboundLocalError` (a subclass `NameError`) is *always* raised. Since the
exception handler sets `basestring` equal to `str` assuming this is Python 3,
most of the time this isn't a problem. If, however, the controller returns a
`unicode` object in Python 2, the `isinstance` call returns `False`, so the
response is not wrapped in a Response object.

Rather than try to reassign the `basestring` name, now we just use `_string`,
which will either be `basestring` (in Python 2) or `str` (in Python 3).

Apparently, the unit tests didn't cover this case...
2014-02-07 23:22:50 -06:00
Dustin C. Hatch a2d8f6f098 Version bump 2013-01-22 13:02:17 -06:00
Dustin C. Hatch 8e699969e2 Added tag 0.2 for changeset 2d04d03ce334 2013-01-22 13:01:28 -06:00
Dustin C. Hatch 872461d515 Remove dev version tag for 0.2 release 2013-01-22 13:01:16 -06:00
Dustin C. Hatch d068d22e38 Added README 2013-01-22 12:00:56 -06:00
Dustin C. Hatch 345333614c New documentation 2013-01-22 10:47:39 -06:00
Dustin C. Hatch 14c8c28b9a Update docstring for util.read_config 2013-01-21 22:10:24 -06:00
Dustin C. Hatch 243df2be47 Mark the milla.cli module as deprecated 2013-01-20 15:14:25 -06:00
Dustin C. Hatch 708e59125e Bump documentation version 2013-01-20 15:00:45 -06:00
Dustin C. Hatch fc42519f0d Bump setup.py version 2013-01-20 14:45:55 -06:00
Dustin C. Hatch 9da12232d4 Add a `defaults` keyword to `milla.util.read_config` 2013-01-20 14:49:24 -06:00
Dustin C. Hatch 65ebf76b45 Move read_config to milla.util 2013-01-20 14:48:23 -06:00
Dustin C. Hatch 3408919faa Merged branch py3k (closes #2) 2013-01-20 14:53:38 -06:00
Dustin C. Hatch 0064f70160 Update read_config for new API in Python 3.2
--HG--
branch : py3k
2013-01-05 10:38:05 -06:00
Dustin C. Hatch fed7d0fb3d Merge default into py3k
--HG--
branch : py3k
2012-12-19 15:38:36 -06:00
Dustin C. Hatch 4085039997 Added simple inifile-to-dictionary parser 2012-12-19 15:26:19 -06:00
Dustin C. Hatch d635e83431 Automatically create a Traverser instance if Application is given a root object 2012-11-30 22:47:06 -06:00
Dustin C. Hatch f5f7e76dae Added tests for Router's trailing slash handling options 2012-11-30 22:46:28 -06:00
Dustin C. Hatch f14b744ef7 Added tests for Request.static_resource 2012-11-30 22:24:35 -06:00
Dustin C. Hatch 32e96f5807 Fixed more Python 3 import errors
--HG--
branch : py3k
2012-11-30 22:16:08 -06:00
Dustin C. Hatch f8e89d46c6 Merge default into py3k
--HG--
branch : py3k
2012-11-30 22:11:23 -06:00
Dustin C. Hatch c4e9397e8c Replace Request.relative_url with Request.create_url and friends 2012-11-30 22:02:28 -06:00
Dustin C. Hatch 11271ebc31 app: Cleaned up imports and fixed Request.blank docstring 2012-11-30 22:01:25 -06:00
Dustin C. Hatch 47103b76a4 Add test for the milla.allow decorator 2012-11-30 21:17:16 -06:00
Dustin C. Hatch 91f2d954e7 test_app: Rename environ maker so nose doesn't think it is a test 2012-11-30 14:58:26 -06:00
Dustin C. Hatch 17cac57721 Clean up __before__ and __after__ handling and make it Python 3-compatible
--HG--
branch : py3k
2012-11-30 14:37:02 -06:00
Dustin C. Hatch 232bb17d6f Fix test_app to run in Python 3
--HG--
branch : py3k
2012-11-30 14:16:57 -06:00
Dustin C. Hatch dc79fea9db Merged default into py3k
--HG--
branch : py3k
2012-11-30 13:19:55 -06:00
Dustin C. Hatch 5cd113ee46 Correctly use options_response for OPTIONS requests (fixes #5) 2012-11-30 13:13:17 -06:00
Dustin C. Hatch 0c7ebae8a9 Added tests for main Application logic 2012-11-30 13:09:13 -06:00
Dustin C. Hatch 5735d2b027 Better handling of string-type responses from controllers
--HG--
branch : py3k
2012-11-28 12:26:58 -06:00
Dustin C. Hatch afcbf3d314 Get rid of unicode business in Permission objects
--HG--
branch : py3k
2012-11-28 12:26:36 -06:00
Dustin C. Hatch a8a90294d2 Call str() instead of unicode() on Exceptions to get the message
--HG--
branch : py3k
2012-11-28 12:13:34 -06:00
Dustin C. Hatch d2705ad18e Better way to determine if a requirement is a Permission
--HG--
branch : py3k
2012-11-28 12:13:03 -06:00
hg c721c7d06a Merge default into py3k
--HG--
branch : py3k
2012-11-28 11:59:25 -06:00
hg e36f17452e Add tests for auth decorators 2012-11-28 11:54:54 -06:00
hg fe54d0a666 Add a blank config dictionary to blank Requests 2012-11-28 11:54:41 -06:00
Dustin C. Hatch a89e2396db Added tests for the permissions framework 2012-11-27 23:08:35 -06:00
Dustin C. Hatch aba45a2107 Merge default into py3k
--HG--
branch : py3k
2012-11-27 19:12:59 -06:00
Dustin C. Hatch fbc58de27a Started unit tests for the auth framework 2012-11-27 18:55:38 -06:00
Dustin C. Hatch 10e2ad803b Bump PyDev interpreter and grammer for Python 3
--HG--
branch : py3k
2012-11-27 17:26:34 -06:00
Dustin C. Hatch 17e7486784 Change version in setup.py to 'py3k' to allow projects to require Milla==py3k
--HG--
branch : py3k
2012-11-19 22:34:44 -06:00
Dustin C. Hatch eb347e7fb5 request: add a static_resource method to Request instances 2012-11-19 21:35:31 -06:00
Dustin C. Hatch 5529b66a57 Add Expires header to favicon controller responses 2012-11-19 17:30:13 -06:00