paulb@68 | 1 | Introduction
|
paulb@68 | 2 | ------------
|
paulb@68 | 3 |
|
paulb@301 | 4 | WebStack is a package which provides a common API for Python Web
|
paulb@301 | 5 | applications, regardless of the underlying server or framework environment.
|
paulb@301 | 6 | It should be possible with WebStack to design and implement an application,
|
paulb@301 | 7 | to choose a deployment environment, and then to be able to deploy the
|
paulb@301 | 8 | application in a different environment later on without having to go back
|
paulb@301 | 9 | and rewrite substantial parts of the application.
|
paulb@60 | 10 |
|
paulb@362 | 11 | Quick Start
|
paulb@362 | 12 | -----------
|
paulb@362 | 13 |
|
paulb@362 | 14 | Try running the demo:
|
paulb@362 | 15 |
|
paulb@362 | 16 | python tools/demo.py
|
paulb@362 | 17 |
|
paulb@363 | 18 | An introductory guide to creating applications can be found in the docs
|
paulb@363 | 19 | directory - see docs/index.html for the start page.
|
paulb@363 | 20 |
|
paulb@363 | 21 | Contact, Copyright and Licence Information
|
paulb@363 | 22 | ------------------------------------------
|
paulb@363 | 23 |
|
paulb@363 | 24 | The current Web page for WebStack at the time of release is:
|
paulb@363 | 25 |
|
paulb@363 | 26 | http://www.boddie.org.uk/python/WebStack.html
|
paulb@363 | 27 |
|
paulb@363 | 28 | Copyright and licence information can be found in the docs directory - see
|
paulb@413 | 29 | docs/COPYING.txt, docs/LICENCE.txt and docs/LICENCE-PyServlet.txt for more
|
paulb@413 | 30 | information.
|
paulb@363 | 31 |
|
paulb@68 | 32 | Framework Support
|
paulb@68 | 33 | -----------------
|
paulb@68 | 34 |
|
paulb@580 | 35 | See the docs/supported-frameworks.html document for more information.
|
paulb@388 | 36 |
|
paulb@758 | 37 | Dependencies
|
paulb@758 | 38 | ------------
|
paulb@758 | 39 |
|
paulb@758 | 40 | WebStack has the following basic dependencies:
|
paulb@758 | 41 |
|
paulb@758 | 42 | Packages Release Information
|
paulb@758 | 43 | -------- -------------------
|
paulb@758 | 44 |
|
paulb@758 | 45 | libxml2dom 0.4.3 (for OpenID support)
|
paulb@758 | 46 | libxml2 and libxslt Some combinations may not be reliable!
|
paulb@758 | 47 | Tested with libxml2 2.6.17 and libxslt 1.1.12
|
paulb@758 | 48 | Tested with libxml2 2.6.27 and libxslt 1.1.20
|
paulb@758 | 49 | libxslt 1.1.17 should be avoided
|
paulb@758 | 50 |
|
paulb@758 | 51 | If the OpenID support is not used, the above packages need not be installed.
|
paulb@758 | 52 |
|
paulb@741 | 53 | New in WebStack 1.3 (Changes since WebStack 1.2.7)
|
paulb@741 | 54 | --------------------------------------------------
|
paulb@731 | 55 |
|
paulb@750 | 56 | * Changed the default_charset on WebStack.Generic.Transaction to UTF-8,
|
paulb@750 | 57 | introducing a safe_default_charset attribute which employs ISO-8859-1, and
|
paulb@750 | 58 | removing the default encoding on various resources, making them rely on
|
paulb@753 | 59 | the default_charset property instead.
|
paulb@753 | 60 | WARNING: These changes could upset some applications. The EncodingSelector
|
paulb@753 | 61 | should be used to override the default_charset setting if appropriate.
|
paulb@753 | 62 | * Added an encode_url_without_query to Transaction for use with combined
|
paulb@753 | 63 | protocol, address and path values.
|
paulb@731 | 64 | * Added a StringResource to WebStack.Resources.Static, serving strings as
|
paulb@731 | 65 | responses.
|
paul@767 | 66 | * Added Last-Modified headers to DirectoryResource and FileResource
|
paul@767 | 67 | responses.
|
paulb@731 | 68 | * Added experimental OpenID support; improved the authentication resources
|
paulb@731 | 69 | and mechanisms.
|
paulb@745 | 70 | * Added a StoreSelector to WebStack.Resources.Selectors in order to provide
|
paulb@745 | 71 | a convenient mechanism for database-related applications.
|
paul@767 | 72 | * Changed LoginRedirectResource to use class attributes for various optional
|
paul@767 | 73 | parameters, rather than having these supplied to the initialiser.
|
paul@767 | 74 | WARNING: These changes could affect some applications.
|
paul@767 | 75 | * Added a SiteLoginRedirectResource for site-specific login redirection to
|
paul@767 | 76 | WebStack.Resources.LoginRedirect.
|
paul@767 | 77 | * Added AuthInfoSelector for the retrieval of authentication details and
|
paul@767 | 78 | ConditionalAuthSelector for conditional authentication to
|
paul@767 | 79 | WebStack.Resources.Selectors.
|
paul@770 | 80 | * Added a filename attribute to FileContent instances, provided for file
|
paul@770 | 81 | upload parameters.
|
paulb@731 | 82 |
|
paulb@712 | 83 | New in WebStack 1.2.7 (Changes since WebStack 1.2.6)
|
paulb@712 | 84 | ----------------------------------------------------
|
paulb@712 | 85 |
|
paulb@712 | 86 | * Fixed the MessageBodyStream class, adding an optional parameter to the
|
paulb@712 | 87 | readline method which seems to be necessary when handling multipart
|
paulb@712 | 88 | requests.
|
paulb@712 | 89 | * Introduced stream usage for file uploads where possible, in order to
|
paulb@719 | 90 | reduce memory usage (suggested by Kevin Glynn), adding a stream attribute
|
paulb@719 | 91 | to the FileContent class and making the content attribute a property.
|
paulb@719 | 92 | * Removed error handling in the examples in order to make troubleshooting
|
paulb@719 | 93 | easier.
|
paulb@723 | 94 | * Fixed header issues by introducing a special HeaderDict class which
|
paulb@723 | 95 | enforces the case-insensitivity expected of header dictionaries.
|
paulb@712 | 96 |
|
paulb@672 | 97 | New in WebStack 1.2.6 (Changes since WebStack 1.2.5)
|
paulb@672 | 98 | ----------------------------------------------------
|
paulb@672 | 99 |
|
paulb@697 | 100 | * Added a jython-webstack package for Ubuntu Feisty (7.04).
|
paulb@672 | 101 | * Improved support for Jython on Ubuntu Feisty (7.04), adding python.path
|
paulb@672 | 102 | and python.cachedir settings which respectively avoid issues with missing
|
paulb@672 | 103 | libraries (due to the separation of libraries in the Ubuntu package) and
|
paulb@672 | 104 | with failed imports (due to a read-only class cache directory).
|
paulb@686 | 105 | * Improved the webstack_java_build.py script and added a deployment
|
paulb@686 | 106 | descriptor for JSP to accompany the new Java Servlet-specific JSPTest
|
paulb@686 | 107 | example.
|
paulb@686 | 108 | * Added a special Java Servlet-specific get_servlet method to support the
|
paulb@686 | 109 | JSPTest example. It is envisaged that a more general method could be made
|
paulb@686 | 110 | available for all frameworks in order to support access to underlying
|
paulb@686 | 111 | request dispatchers and other framework facilities.
|
paulb@672 | 112 | * Added more Jython-related documentation as suggested by Kevin Glynn.
|
paulb@672 | 113 | * Added missing request headers for CGI/WSGI environment variables.
|
paulb@674 | 114 | * Fixed Webware support to work with Webware 0.9.4.
|
paulb@684 | 115 | * Fixed/improved Zope path value retrieval.
|
paulb@705 | 116 | * Added support for wsgiref, changing the WSGI deploy function for CGI-based
|
paulb@705 | 117 | applications to deploy_as_cgi and adding a deploy_with_wsgiref function.
|
paulb@672 | 118 |
|
paulb@649 | 119 | New in WebStack 1.2.5 (Changes since WebStack 1.2.4)
|
paulb@649 | 120 | ----------------------------------------------------
|
paulb@649 | 121 |
|
paulb@649 | 122 | * Fixed mod_python status codes using a solution proposed by John Krukoff.
|
paulb@650 | 123 | * Fixed a Twisted deprecation warning when accessing port numbers, thanks to
|
paulb@650 | 124 | John Krukoff.
|
paulb@649 | 125 | * Added Ubuntu Feisty (7.04) package support.
|
paulb@653 | 126 | * Tidied up the documentation HTML.
|
paulb@649 | 127 |
|
paulb@636 | 128 | New in WebStack 1.2.4 (Changes since WebStack 1.2.3)
|
paulb@636 | 129 | ----------------------------------------------------
|
paulb@636 | 130 |
|
paulb@640 | 131 | * Made a SessionDirectoryRepository which uses directories for data produced
|
paulb@640 | 132 | by the shelve module, rather than attempting to manipulate files produced
|
paulb@640 | 133 | by the shelve module, since the details of such files may differ between
|
paulb@640 | 134 | environments: a situation noticed by John Krukoff in an environment
|
paulb@640 | 135 | without the bsddb module installed.
|
paulb@636 | 136 |
|
paulb@631 | 137 | New in WebStack 1.2.3 (Changes since WebStack 1.2.2)
|
paulb@631 | 138 | ----------------------------------------------------
|
paulb@631 | 139 |
|
paulb@631 | 140 | * Fixed inadvertent OpenSSL dependency, noticed by John Krukoff.
|
paulb@631 | 141 |
|
paulb@619 | 142 | New in WebStack 1.2.2 (Changes since WebStack 1.2.1)
|
paulb@619 | 143 | ----------------------------------------------------
|
paulb@619 | 144 |
|
paulb@619 | 145 | * Added an EncodingSelector class for the setting of default encodings on
|
paulb@619 | 146 | transactions.
|
paulb@619 | 147 | * Added some documentation about path processing strategies.
|
paulb@625 | 148 | * Added a secure variant of the BaseHTTPServer provided in the adapter for
|
paulb@625 | 149 | BaseHTTPRequestHandler.
|
paulb@619 | 150 |
|
paulb@606 | 151 | New in WebStack 1.2.1 (Changes since WebStack 1.2)
|
paulb@606 | 152 | --------------------------------------------------
|
paulb@606 | 153 |
|
paulb@606 | 154 | * Fixed mod_python get_content_type method.
|
paulb@615 | 155 | * Fixed LoginResource form field processing; changed the field type to
|
paulb@615 | 156 | password.
|
paulb@615 | 157 | * Exposed LoginResource and LoginRedirectResource page contents as
|
paulb@615 | 158 | attributes.
|
paulb@615 | 159 | * Added documentation about extending LoginRedirectResource and using
|
paulb@615 | 160 | PathSelector to remember an application's root path.
|
paulb@615 | 161 | * Changed handle_errors to 1 throughout the examples.
|
paulb@606 | 162 |
|
paulb@542 | 163 | New in WebStack 1.2 (Changes since WebStack 1.1.2)
|
paulb@542 | 164 | --------------------------------------------------
|
paulb@542 | 165 |
|
paulb@542 | 166 | * Added support for Django.
|
paulb@542 | 167 | * Fixed documentation about the representation of file upload fields.
|
paulb@552 | 168 | * Changed mod_python, Java Servlet and Webware (> 0.8.1) deployment to use a
|
paulb@552 | 169 | deploy function instead of more complicated configuration mechanisms.
|
paulb@542 | 170 | * Improved mod_python deployment documentation and tools so that cleaner
|
paulb@542 | 171 | application paths/URLs can now be used.
|
paulb@542 | 172 | * Moved user and path_info default definitions into WebStack.Generic as
|
paulb@542 | 173 | class attributes.
|
paulb@542 | 174 | * Fixed encoding usage issues with path fields when using get_fields in a
|
paulb@542 | 175 | Zope environment.
|
paulb@550 | 176 | * Added a FileResource class to WebStack.Resources.Static.
|
paulb@565 | 177 | * Made DirectoryRepository convert filenames to Unicode in all cases.
|
paulb@568 | 178 | * Renamed the Apache and Java Servlet tools, making them scripts which are
|
paulb@568 | 179 | installed by setup.py.
|
paulb@584 | 180 | * Fixed CGI content charsets and languages support.
|
paulb@587 | 181 | * Fixed CGI cookie output.
|
paulb@587 | 182 | * Added URL overriding in the LoginRedirectResource.
|
paulb@587 | 183 | * Exposed a get_target function from WebStack.Resources.Login in order to
|
paulb@587 | 184 | better support alternative login resources.
|
paulb@592 | 185 | * Added improved error reporting for BaseHTTPRequestHandler, CGI, Django and
|
paulb@592 | 186 | WSGI.
|
paulb@597 | 187 | * Added a traverse_path method to the Transaction class.
|
paulb@597 | 188 | * Made a path_encoding alias for urlencoding in the initialisation of
|
paulb@597 | 189 | WebStack.Resources.ResourceMap objects.
|
paulb@597 | 190 | * Added a Selectors module to WebStack.Resources in order to support common
|
paulb@597 | 191 | resource selection patterns.
|
paulb@542 | 192 |
|
paulb@536 | 193 | New in WebStack 1.1.2 (Changes since WebStack 1.1.1)
|
paulb@536 | 194 | ----------------------------------------------------
|
paulb@536 | 195 |
|
paulb@536 | 196 | * Fixed missing import in WebStack.Repositories.Directory.
|
paulb@536 | 197 |
|
paulb@530 | 198 | New in WebStack 1.1.1 (Changes since WebStack 1.1)
|
paulb@530 | 199 | --------------------------------------------------
|
paulb@530 | 200 |
|
paulb@530 | 201 | * Fixed update_path to handle the root path properly.
|
paulb@530 | 202 |
|
paulb@495 | 203 | New in WebStack 1.1 (Changes since WebStack 1.0)
|
paulb@495 | 204 | ------------------------------------------------
|
paulb@492 | 205 |
|
paulb@495 | 206 | * Added a Repositories package to provide session-like support for
|
paulb@495 | 207 | different kinds of storage.
|
paulb@495 | 208 | * Added an explicit filesystem encoding to the Calendar example and adopted
|
paulb@495 | 209 | the DirectoryRepository from the Repositories package.
|
paulb@504 | 210 | * Added get_path_without_info, update_path and redirect methods to the
|
paulb@504 | 211 | Transaction class.
|
paulb@527 | 212 | * Added get_attributes (attribute support) to the Transaction class.
|
paulb@495 | 213 | * Added a values method to Helpers.Session.Wrapper.
|
paulb@528 | 214 | * Fixed get_processed_virtual_path_info (to match from right to left).
|
paulb@514 | 215 | * Improved/fixed exception handling in the adapters so that transactions are
|
paulb@514 | 216 | committed as the final act of an adapter experiencing an unhandled
|
paulb@514 | 217 | exception. This should result in session stores being closed properly.
|
paulb@517 | 218 | * Changed the Helpers.Session.SessionStore to use DirectoryRepository.
|
paulb@514 | 219 | * Made the "not found" behaviour of DirectoryResource more configurable.
|
paulb@514 | 220 | * Added documentation for MapResource and DirectoryResource.
|
paulb@492 | 221 | * Fixed the distribution names in the Ubuntu changelog.
|
paulb@492 | 222 |
|
paulb@409 | 223 | New in WebStack 1.0 (Changes since WebStack 0.10)
|
paulb@409 | 224 | -------------------------------------------------
|
paulb@409 | 225 |
|
paulb@474 | 226 | * Changed the behaviour of get_path, get_path_without_query, get_path_info,
|
paulb@474 | 227 | get_virtual_path_info, get_processed_virtual_path_info and
|
paulb@474 | 228 | get_fields_from_path to return Unicode data decoded using the optional
|
paulb@474 | 229 | encoding parameter or a common default encoding.
|
paulb@474 | 230 | * Fixed file upload values so that FileContent objects are returned for such
|
paulb@474 | 231 | fields in get_fields_from_body and get_fields.
|
paulb@474 | 232 | (Warning! Except for Twisted!)
|
paulb@474 | 233 | * Fixed the JavaServlet support so that streams and file content are
|
paulb@474 | 234 | obtained as "almost" plain strings.
|
paulb@474 | 235 | * Updated/fixed LoginResource and LoginRedirectResource to use the updated
|
paulb@474 | 236 | path API and to handle special characters properly.
|
paulb@474 | 237 | * Added convenience methods to Transaction for the decoding and encoding of
|
paulb@474 | 238 | path values (to and from Unicode objects) - see the decode_path and
|
paulb@474 | 239 | encode_path methods.
|
paulb@474 | 240 | * Added the notion of processed virtual path info - the part of the original
|
paulb@474 | 241 | path info not represented in the current virtual path info.
|
paulb@474 | 242 | * Added "pass through" behaviour to ResourceMap.MapResource (prompted by a
|
paulb@474 | 243 | patch from Scott Robinson).
|
paulb@474 | 244 | * Fixed ResourceMap.MapResource to handle non-existent resources properly
|
paulb@474 | 245 | (where the virtual path info is only one component in length).
|
paulb@474 | 246 | * Added Debian package support.
|
paulb@474 | 247 | * Added automatic session directory creation for the WebStack sessions
|
paulb@474 | 248 | implementation.
|
paulb@474 | 249 | * Added support for the repeated retrieval of sessions from the same
|
paulb@474 | 250 | WebStack session store, avoiding deadlocks.
|
paulb@474 | 251 | * Fixed the calendar example, making it perform a proper function.
|
paulb@474 | 252 | * Made the BaseHTTPRequestHandler and Twisted SimpleWithLogin applications
|
paulb@474 | 253 | include the Login application, since Konqueror (at least) does not share
|
paulb@474 | 254 | cookies across different port numbers on the same host.
|
paulb@474 | 255 | * Added the SimpleWithLogin and Login applications to the demonstration.
|
paulb@474 | 256 | * Improved the documentation, adding information on request headers, and
|
paulb@474 | 257 | describing file upload and session support limitations.
|
paulb@476 | 258 | * Improved the AOLserver-related notes for CGI and Webware, adding a patch
|
paulb@476 | 259 | for Webware in order to work around AOLserver issues.
|
paulb@409 | 260 |
|
paulb@388 | 261 | New in WebStack 0.10 (Changes since WebStack 0.9)
|
paulb@388 | 262 | -------------------------------------------------
|
paulb@388 | 263 |
|
paulb@474 | 264 | * Changes to make the tools/demo.py script work on Windows (and other)
|
paulb@474 | 265 | platforms (suggested by Jim Madsen).
|
paulb@474 | 266 | * Fixed end of header newlines for CGI (suggested by Matt Harrison).
|
paulb@474 | 267 | * Minor documentation fixes and improvements, adding information on
|
paulb@474 | 268 | AOLserver in the CGI and Webware notes.
|
paulb@474 | 269 | * Changed the mod_python server name method to use the server object rather
|
paulb@474 | 270 | than the connection object.
|
paulb@474 | 271 | * Added a parameter to the ResourceMap.MapResource class to permit automatic
|
paulb@474 | 272 | redirects into resource hierarchies when no trailing "/" was given in the
|
paulb@474 | 273 | URL; changed the updated virtual path info so that empty values may be set
|
paulb@474 | 274 | (the guarantee that "/" will always appear no longer applies).
|
paulb@474 | 275 | * Fixed virtual path info retrieval when the value is an empty string.
|
paulb@192 | 276 |
|
paulb@314 | 277 | New in WebStack 0.9 (Changes since WebStack 0.8)
|
paulb@314 | 278 | ------------------------------------------------
|
paulb@314 | 279 |
|
paulb@474 | 280 | * Standardised error handling in the adapters so that tracebacks can be
|
paulb@474 | 281 | suppressed and an internal server error condition raised.
|
paulb@474 | 282 | * Added overriding of path info in transactions.
|
paulb@474 | 283 | * Added a ResourceMap resource for dispatching to different resources
|
paulb@474 | 284 | according to path components.
|
paulb@474 | 285 | * Standardised deployment for some frameworks (see docs/deploying.html).
|
paulb@474 | 286 | * Introductory documentation in XHTML format.
|
paulb@474 | 287 | * Added server name and port methods to the transaction.
|
paulb@474 | 288 | * Added a simple demonstration application, incorporating many of the
|
paulb@474 | 289 | examples and launched under a single script.
|
paulb@474 | 290 | * Fixed mod_python native sessions.
|
paulb@474 | 291 | * Fixed Zope request stream access.
|
paulb@474 | 292 | * WebStack is now licensed under the LGPL - see docs/COPYING.txt for
|
paulb@474 | 293 | details.
|
paulb@314 | 294 |
|
paulb@300 | 295 | New in WebStack 0.8 (Changes since WebStack 0.7)
|
paulb@295 | 296 | ------------------------------------------------
|
paulb@295 | 297 |
|
paulb@474 | 298 | * Added a standard exception, EndOfResponse, which can be used to
|
paulb@474 | 299 | immediately stop the processing/production of a response; this is useful
|
paulb@474 | 300 | when resources need to issue a redirect without unnecessary content being
|
paulb@474 | 301 | generated, for example.
|
paulb@474 | 302 | * Fixed path information for Zope.
|
paulb@474 | 303 | * Added WSGI support.
|
paulb@474 | 304 | * Verified Twisted 1.3.0 support with Python 2.3.3.
|
paulb@295 | 305 |
|
paulb@300 | 306 | New in WebStack 0.7 (Changes since WebStack 0.6)
|
paulb@192 | 307 | ------------------------------------------------
|
paulb@192 | 308 |
|
paulb@474 | 309 | * Fixed path information semantics.
|
paulb@474 | 310 | * Fixed file upload semantics.
|
paulb@474 | 311 | * Fixed content type handling for Unicode output and for interpreting
|
paulb@474 | 312 | request body fields/parameters (although some improvement remains).
|
paulb@474 | 313 | * Added a method to discover the chosen response stream encoding.
|
paulb@474 | 314 | * Fixed field/parameter retrieval so that path and body fields are distinct,
|
paulb@474 | 315 | regardless of the framework employed.
|
paulb@474 | 316 | * Added a method to get a combination of path and body fields (suggested by
|
paulb@474 | 317 | Jacob Smullyan).
|
paulb@474 | 318 | * Introduced Zope 2 support.
|
paulb@474 | 319 | * Improved Jython/Java Servlet API support (although a special PyServlet
|
paulb@474 | 320 | class must now be used, and certain libraries must be deployed with
|
paulb@474 | 321 | applications).
|
paulb@474 | 322 | * Introduced authentication/authorisation support for Jython/Java Servlet
|
paulb@474 | 323 | API.
|
paulb@474 | 324 | * Session support has been added (except for Webware 0.8.1).
|
paulb@474 | 325 | * Alternative cookie support for mod_python has been added.
|
paulb@474 | 326 | * Cookie support now supports encoded Unicode sequences for names and
|
paulb@474 | 327 | values.
|
paulb@68 | 328 |
|
paulb@300 | 329 | New in WebStack 0.6 (Changes since WebStack 0.5)
|
paulb@178 | 330 | ------------------------------------------------
|
paulb@178 | 331 |
|
paulb@474 | 332 | * Introduced Jython/Java Servlet API support.
|
paulb@474 | 333 | * Minor fixes to example applications and to BaseHTTPRequestHandler.
|
paulb@178 | 334 |
|
paulb@300 | 335 | New in WebStack 0.5 (Changes since WebStack 0.4)
|
paulb@171 | 336 | ------------------------------------------------
|
paulb@171 | 337 |
|
paulb@474 | 338 | * Changed request body fields/parameters so that they are now represented
|
paulb@474 | 339 | using Unicode objects rather than plain strings.
|
paulb@474 | 340 | * Introduced better support for Unicode in response streams.
|
paulb@171 | 341 |
|
paulb@300 | 342 | New in WebStack 0.4 (Changes since WebStack 0.3)
|
paulb@160 | 343 | ------------------------------------------------
|
paulb@140 | 344 |
|
paulb@474 | 345 | * Added application definition of user identity, permitting alternative
|
paulb@474 | 346 | authentication mechanisms.
|
paulb@474 | 347 | * Improved BaseHTTPRequestHandler and mod_python reliability around fields
|
paulb@474 | 348 | from request bodies.
|
paulb@474 | 349 | * Provided stream and environment parameterisation in the CGI adapter.
|
paulb@474 | 350 | * Added LoginRedirect and Login examples.
|
paulb@474 | 351 | * Added get_path_without_query and fixed get_path behaviour.
|
paulb@140 | 352 |
|
paulb@300 | 353 | New in WebStack 0.3 (Changes since WebStack 0.2)
|
paulb@160 | 354 | ------------------------------------------------
|
paulb@120 | 355 |
|
paulb@474 | 356 | * Added better header support for Webware (suggested by Ian Bicking).
|
paulb@474 | 357 | * Introduced CGI and Java Servlet support (the latter is currently
|
paulb@474 | 358 | broken/unfinished).
|
paulb@474 | 359 | * Introduced support for cookies.
|
paulb@120 | 360 |
|
paulb@68 | 361 | Future Work
|
paulb@68 | 362 | -----------
|
paulb@68 | 363 |
|
paulb@308 | 364 | (Essential)
|
paulb@308 | 365 |
|
paulb@460 | 366 | Twisted 1.3.0 does not provide file upload metadata, and Twisted Web 0.5.0
|
paulb@460 | 367 | also seems to be missing this functionality. It isn't obvious whether Twisted
|
paulb@460 | 368 | Web2 will just copy its predecessors and provide a similarly limited API.
|
paulb@460 | 369 | Perhaps the Twisted support needs to resemble the CGI support much more when
|
paulb@460 | 370 | handling fields.
|
paulb@460 | 371 |
|
paulb@308 | 372 | JythonServlet libraries need to be configured using sys.add_package when
|
paulb@308 | 373 | these do not feature in the compiled-in list. Adding such configuration to
|
paulb@308 | 374 | the handler may be most appropriate (since the web.xml file can be too
|
paulb@308 | 375 | arcane), but this needs testing.
|
paulb@308 | 376 |
|
paulb@580 | 377 | The algorithm employed in the WebStack.Helpers.Auth.get_token function
|
paulb@580 | 378 | should be reviewed and improved for better security.
|
paulb@580 | 379 |
|
paulb@308 | 380 | (Important)
|
paulb@308 | 381 |
|
paulb@363 | 382 | Field access needs testing, especially for anything using the
|
paulb@363 | 383 | cgi.FieldStorage class, and the way file uploads are exposed should be
|
paulb@363 | 384 | reviewed (currently the meta-data is not exposed). The acquisition of fields
|
paulb@363 | 385 | from specific sources should be tested with different request methods - some
|
paulb@363 | 386 | frameworks provide path fields in the body fields dictionary, others (eg.
|
paulb@363 | 387 | Zope) change the fields exposed depending on request method.
|
paulb@248 | 388 |
|
paulb@363 | 389 | Interpretation of path field encodings needs to be verified. Currently,
|
paulb@363 | 390 | stray path fields are handled (eg. in WebStack.Helpers.Request) as being
|
paulb@363 | 391 | ISO-8859-1, but it might be the case that some such fields might be
|
paulb@438 | 392 | submitted as UTF-8. The decode_path method on Transaction does do much of the
|
paulb@460 | 393 | work that is likely to be required, however. Still, a good policy for decoding
|
paulb@460 | 394 | path fields, reducing the number of times one might specify the encoding in
|
paulb@460 | 395 | various method calls, may be important.
|
paulb@438 | 396 |
|
paulb@438 | 397 | An interesting test of encodings is to introduce things like the following to
|
paulb@438 | 398 | the path info and query string sections of the URL: %25F0?%E6=%F8&%25F0=%F8
|
paulb@438 | 399 | This should produce the following decoded result: %F0?æ=ø&%F0=ø
|
paulb@438 | 400 | (The above needs to be read in ISO-8859-1 or ISO-8859-15.)
|
paulb@102 | 401 |
|
paulb@102 | 402 | Cookie objects need defining strictly, especially since the standard library
|
paulb@363 | 403 | Cookie object behaves differently to mod_python (and possibly Webware)
|
paulb@363 | 404 | Cookie objects. Moreover, the set_cookie_value method needs to provide
|
paulb@363 | 405 | access to the usual cookie parameters as supported by the frameworks. The
|
paulb@363 | 406 | standard library Cookie module has issues with Unicode cookie names (and
|
paulb@363 | 407 | possibly values) - this is worked around, but it would be best to resolve
|
paulb@363 | 408 | this comprehensively.
|
paulb@90 | 409 |
|
paulb@363 | 410 | UTF-16 (and possibly other encodings) causes problems with HTML form data
|
paulb@363 | 411 | sent in POST requests using the application/x-www-form-urlencoded content
|
paulb@363 | 412 | type. This should be reviewed at a later date when proper standardisation
|
paulb@363 | 413 | has taken place.
|
paulb@218 | 414 |
|
paulb@239 | 415 | Session support, especially through WebStack.Helpers.Session, should be
|
paulb@248 | 416 | reviewed and be made compatible with non-cookie mechanisms.
|
paulb@248 | 417 |
|
paulb@514 | 418 | Locking in the session support and in DirectoryRepository should be improved.
|
paulb@514 | 419 |
|
paulb@248 | 420 | HeaderValue objects should be employed more extensively. Thus, the header
|
paulb@469 | 421 | access methods may need to change their behaviour slightly. The get_headers
|
paulb@469 | 422 | method should potentially return a list for each item in the dictionary.
|
paulb@248 | 423 |
|
paulb@304 | 424 | WSGI support could demand that a special "end of headers" method be
|
paulb@304 | 425 | introduced into WebStack, thus making response output more efficient (and
|
paulb@304 | 426 | probably also for other frameworks, too).
|
paulb@304 | 427 |
|
paulb@336 | 428 | Investigate proper support for HEAD, OPTIONS and other request methods.
|
paulb@336 | 429 |
|
paulb@438 | 430 | Consider packages for different operating systems (other than Debian).
|
paulb@365 | 431 |
|
paulb@542 | 432 | Investigate cStringIO usage.
|
paulb@542 | 433 |
|
paulb@355 | 434 | The location of deployed applications in the filesystem should be exposed to
|
paulb@355 | 435 | those applications. (This is actually available in the __file__ module
|
paulb@580 | 436 | variable.) A resource could be provided to record the "root" path and added to
|
paulb@617 | 437 | a resource hierarchy or site map. Note that PathSelector records the "root"
|
paulb@617 | 438 | path, although it is not automatically deployed.
|
paulb@580 | 439 |
|
paulb@580 | 440 | (Completed/rejected)
|
paulb@355 | 441 |
|
paulb@355 | 442 | Path information should be consistent across all frameworks, and the "path
|
paulb@355 | 443 | info" value should be meaningful. (This should now be correct.)
|
paulb@355 | 444 |
|
paulb@460 | 445 | Investigate the nicer functions in the cgi module, discarding the "magic"
|
paulb@460 | 446 | stuff like FieldStorage. (These nicer functions are used by projects like
|
paulb@460 | 447 | Twisted - as of 1.3.0 at least - and do not give the necessary information we
|
paulb@460 | 448 | require.)
|
paulb@460 | 449 |
|
paulb@159 | 450 | Release Procedures
|
paulb@159 | 451 | ------------------
|
paulb@159 | 452 |
|
paulb@159 | 453 | Update the WebStack/__init__.py __version__ attribute.
|
paulb@329 | 454 | Change the version number and package filename/directory in the documentation.
|
paulb@332 | 455 | Change code examples in the documentation if appropriate.
|
paulb@159 | 456 | Update the release notes (see above).
|
paulb@159 | 457 | Check the setup.py file and ensure that all package directories are mentioned.
|
paulb@417 | 458 | Check the release information in the PKG-INFO file and in the package
|
paulb@417 | 459 | changelog (and other files).
|
paulb@253 | 460 | Tag, export.
|
paulb@247 | 461 | Generate the PyServlet classes.
|
paulb@355 | 462 | Generate the API documentation.
|
paulb@384 | 463 | Remove generated .pyc files: rm `find . -name "*.pyc"`
|
paulb@253 | 464 | Archive, upload.
|
paulb@367 | 465 | Upload the introductory documentation.
|
paulb@678 | 466 | Update PyPI, PythonInfo Wiki entries.
|
paulb@355 | 467 |
|
paulb@705 | 468 | Generating the PyServlet Classes
|
paulb@705 | 469 | --------------------------------
|
paulb@705 | 470 |
|
paulb@705 | 471 | In order to generate the PyServlet classes, it is necessary to run the
|
paulb@705 | 472 | supplied script:
|
paulb@705 | 473 |
|
paulb@705 | 474 | ./tools/JavaServlet/compile.sh
|
paulb@705 | 475 |
|
paulb@705 | 476 | This produces Java classes and a .jar file for use by WebStack applications
|
paulb@705 | 477 | running on the Java platform.
|
paulb@705 | 478 |
|
paulb@355 | 479 | Generating the API Documentation
|
paulb@355 | 480 | --------------------------------
|
paulb@355 | 481 |
|
paulb@363 | 482 | In order to prepare the API documentation, it is necessary to generate some
|
paulb@363 | 483 | Web pages from the Python source code. For this, the epydoc application must
|
paulb@475 | 484 | be available on your system. Then, inside the distribution directory, run the
|
paulb@355 | 485 | apidocs.sh tool script as follows:
|
paulb@355 | 486 |
|
paulb@355 | 487 | ./tools/apidocs.sh
|
paulb@355 | 488 |
|
paulb@355 | 489 | Some warnings may be generated by the script, but the result should be a new
|
paulb@475 | 490 | apidocs directory within the distribution directory.
|
paulb@472 | 491 |
|
paulb@472 | 492 | Making Packages
|
paulb@472 | 493 | ---------------
|
paulb@472 | 494 |
|
paulb@485 | 495 | To make Debian-based packages:
|
paulb@472 | 496 |
|
paulb@485 | 497 | 1. Create new package directories under packages if necessary.
|
paulb@474 | 498 | 2. Make a symbolic link in the distribution's root directory to keep the
|
paulb@727 | 499 | Debian tools happy. For example, one of the following:
|
paulb@472 | 500 |
|
paulb@485 | 501 | ln -s packages/ubuntu-hoary/python2.4-webstack/debian/
|
paulb@649 | 502 | ln -s packages/ubuntu-feisty/python-webstack/debian/
|
paulb@727 | 503 | ln -s packages/ubuntu-feisty/jython-webstack/debian/
|
paulb@472 | 504 |
|
paulb@474 | 505 | 3. Run the package builder:
|
paulb@472 | 506 |
|
paulb@474 | 507 | dpkg-buildpackage -rfakeroot
|
paulb@472 | 508 |
|
paulb@474 | 509 | 4. Locate and tidy up the packages in the parent directory of the
|
paulb@474 | 510 | distribution's root directory.
|