Mercurial > p > roundup > code
annotate roundup/__init__.py @ 5710:0b79bfcb3312
Add support for making an idempotent POST. This allows retrying a POST
that was interrupted. It involves creating a post once only (poe) url
/rest/data/<class>/@poe/<random_token>. This url acts the same as a
post to /rest/data/<class>. However once the @poe url is used, it
can't be used for a second POST.
To make these changes:
1) Take the body of post_collection into a new post_collection_inner
function. Have post_collection call post_collection_inner.
2) Add a handler for POST to rest/data/class/@poe. This will return a
unique POE url. By default the url expires after 30 minutes. The
POE random token is only good for a specific user and is stored in
the session db.
3) Add a handler for POST to rest/data/<class>/@poe/<random token>.
The random token generated in 2 is validated for proper class (if
token is not generic) and proper user and must not have expired.
If everything is valid, call post_collection_inner to process the
input and generate the new entry.
To make recognition of 2 stable (so it's not confused with
rest/data/<:class_name>/<:item_id>), removed @ from
Routing::url_to_regex.
The current Routing.execute method stops on the first regular
expression to match the URL. Since item_id doesn't accept a POST, I
was getting 405 bad method sometimes. My guess is the order of the
regular expressions is not stable, so sometime I would get the right
regexp for /data/<class>/@poe and sometime I would get the one for
/data/<class>/<item_id>. By removing the @ from the url_to_regexp,
there was no way for the item_id case to match @poe.
There are alternate fixes we may need to look at. If a regexp matches
but the method does not, return to the regexp matching loop in
execute() looking for another match. Only once every possible match
has failed should the code return a 405 method failure.
Another fix is to implement a more sophisticated mechanism so that
@Routing.route("/data/<:class_name>/<:item_id>/<:attr_name>", 'PATCH')
has different regexps for matching <:class_name> <:item_id> and
<:attr_name>. Currently the regexp specified by url_to_regex is used
for every component.
Other fixes:
Made failure to find any props in props_from_args return an empty
dict rather than throwing an unhandled error.
Make __init__ for SimulateFieldStorageFromJson handle an empty json
doc. Useful for POSTing to rest/data/class/@poe with an empty
document.
Testing:
added testPostPOE to test/rest_common.py that I think covers
all the code that was added.
Documentation:
Add doc to rest.txt in the "Client API" section titled: Safely
Re-sending POST". Move existing section "Adding new rest endpoints" in
"Client API" to a new second level section called "Programming the
REST API". Also a minor change to the simple rest client moving the
header setting to continuation lines rather than showing one long
line.
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Sun, 14 Apr 2019 21:07:11 -0400 |
| parents | 70f6a3ede190 |
| children | b68d3d8531d5 573b688fffeb |
| rev | line source |
|---|---|
|
213
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
127
diff
changeset
|
1 # |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
127
diff
changeset
|
2 # Copyright (c) 2001 Bizar Software Pty Ltd (http://www.bizarsoftware.com.au/) |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
127
diff
changeset
|
3 # This module is free software, and you may redistribute it and/or modify |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
127
diff
changeset
|
4 # under the same terms as Python, so long as this copyright message and |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
127
diff
changeset
|
5 # disclaimer are retained in their original form. |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
127
diff
changeset
|
6 # |
| 214 | 7 # IN NO EVENT SHALL BIZAR SOFTWARE PTY LTD BE LIABLE TO ANY PARTY FOR |
|
213
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
127
diff
changeset
|
8 # DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
127
diff
changeset
|
9 # OUT OF THE USE OF THIS CODE, EVEN IF THE AUTHOR HAS BEEN ADVISED OF THE |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
127
diff
changeset
|
10 # POSSIBILITY OF SUCH DAMAGE. |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
127
diff
changeset
|
11 # |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
127
diff
changeset
|
12 # BIZAR SOFTWARE PTY LTD SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
127
diff
changeset
|
13 # BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
127
diff
changeset
|
14 # FOR A PARTICULAR PURPOSE. THE CODE PROVIDED HEREUNDER IS ON AN "AS IS" |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
127
diff
changeset
|
15 # BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE, |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
127
diff
changeset
|
16 # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. |
|
3938
083e280165a8
Pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
3819
diff
changeset
|
17 # |
|
106
25216cb3ff79
Added some documentation to the roundup package.
Richard Jones <richard@users.sourceforge.net>
parents:
26
diff
changeset
|
18 |
|
2005
fc52d57c6c3e
documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents:
1980
diff
changeset
|
19 '''Roundup - issue tracking for knowledge workers. |
|
1244
8dd4f736370b
merge from maintenance branch
Richard Jones <richard@users.sourceforge.net>
parents:
1227
diff
changeset
|
20 |
|
106
25216cb3ff79
Added some documentation to the roundup package.
Richard Jones <richard@users.sourceforge.net>
parents:
26
diff
changeset
|
21 This is a simple-to-use and -install issue-tracking system with |
|
25216cb3ff79
Added some documentation to the roundup package.
Richard Jones <richard@users.sourceforge.net>
parents:
26
diff
changeset
|
22 command-line, web and e-mail interfaces. |
|
25216cb3ff79
Added some documentation to the roundup package.
Richard Jones <richard@users.sourceforge.net>
parents:
26
diff
changeset
|
23 |
|
25216cb3ff79
Added some documentation to the roundup package.
Richard Jones <richard@users.sourceforge.net>
parents:
26
diff
changeset
|
24 Roundup manages a number of issues (with properties such as |
|
25216cb3ff79
Added some documentation to the roundup package.
Richard Jones <richard@users.sourceforge.net>
parents:
26
diff
changeset
|
25 "description", "priority", and so on) and provides the ability to (a) submit |
|
25216cb3ff79
Added some documentation to the roundup package.
Richard Jones <richard@users.sourceforge.net>
parents:
26
diff
changeset
|
26 new issues, (b) find and edit existing issues, and (c) discuss issues with |
|
25216cb3ff79
Added some documentation to the roundup package.
Richard Jones <richard@users.sourceforge.net>
parents:
26
diff
changeset
|
27 other participants. The system will facilitate communication among the |
|
25216cb3ff79
Added some documentation to the roundup package.
Richard Jones <richard@users.sourceforge.net>
parents:
26
diff
changeset
|
28 participants by managing discussions and notifying interested parties when |
|
3938
083e280165a8
Pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
3819
diff
changeset
|
29 issues are edited. |
|
106
25216cb3ff79
Added some documentation to the roundup package.
Richard Jones <richard@users.sourceforge.net>
parents:
26
diff
changeset
|
30 |
|
1244
8dd4f736370b
merge from maintenance branch
Richard Jones <richard@users.sourceforge.net>
parents:
1227
diff
changeset
|
31 Roundup's structure is that of a cake:: |
|
26
c7c14960f413
Final commit of Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
25
diff
changeset
|
32 |
|
1244
8dd4f736370b
merge from maintenance branch
Richard Jones <richard@users.sourceforge.net>
parents:
1227
diff
changeset
|
33 _________________________________________________________________________ |
|
8dd4f736370b
merge from maintenance branch
Richard Jones <richard@users.sourceforge.net>
parents:
1227
diff
changeset
|
34 | E-mail Client | Web Browser | Detector Scripts | Shell | |
|
8dd4f736370b
merge from maintenance branch
Richard Jones <richard@users.sourceforge.net>
parents:
1227
diff
changeset
|
35 |------------------+-----------------+----------------------+-------------| |
|
3938
083e280165a8
Pre-release stuff
Richard Jones <richard@users.sourceforge.net>
parents:
3819
diff
changeset
|
36 | E-mail User | Web User | Detector | Command | |
|
1244
8dd4f736370b
merge from maintenance branch
Richard Jones <richard@users.sourceforge.net>
parents:
1227
diff
changeset
|
37 |-------------------------------------------------------------------------| |
|
8dd4f736370b
merge from maintenance branch
Richard Jones <richard@users.sourceforge.net>
parents:
1227
diff
changeset
|
38 | Roundup Database Layer | |
|
8dd4f736370b
merge from maintenance branch
Richard Jones <richard@users.sourceforge.net>
parents:
1227
diff
changeset
|
39 |-------------------------------------------------------------------------| |
|
8dd4f736370b
merge from maintenance branch
Richard Jones <richard@users.sourceforge.net>
parents:
1227
diff
changeset
|
40 | Hyperdatabase Layer | |
|
8dd4f736370b
merge from maintenance branch
Richard Jones <richard@users.sourceforge.net>
parents:
1227
diff
changeset
|
41 |-------------------------------------------------------------------------| |
|
8dd4f736370b
merge from maintenance branch
Richard Jones <richard@users.sourceforge.net>
parents:
1227
diff
changeset
|
42 | Storage Layer | |
|
8dd4f736370b
merge from maintenance branch
Richard Jones <richard@users.sourceforge.net>
parents:
1227
diff
changeset
|
43 ------------------------------------------------------------------------- |
|
106
25216cb3ff79
Added some documentation to the roundup package.
Richard Jones <richard@users.sourceforge.net>
parents:
26
diff
changeset
|
44 |
|
2005
fc52d57c6c3e
documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents:
1980
diff
changeset
|
45 1. The first layer represents the users (chocolate). |
|
fc52d57c6c3e
documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents:
1980
diff
changeset
|
46 2. The second layer is the Roundup interface to the users (vanilla). |
|
fc52d57c6c3e
documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents:
1980
diff
changeset
|
47 3. The third and fourth layers are the internal Roundup database storage |
|
fc52d57c6c3e
documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents:
1980
diff
changeset
|
48 mechanisms (strawberry). |
|
fc52d57c6c3e
documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents:
1980
diff
changeset
|
49 4. The final, lowest layer is the underlying database storage (rum). |
|
106
25216cb3ff79
Added some documentation to the roundup package.
Richard Jones <richard@users.sourceforge.net>
parents:
26
diff
changeset
|
50 |
|
1244
8dd4f736370b
merge from maintenance branch
Richard Jones <richard@users.sourceforge.net>
parents:
1227
diff
changeset
|
51 These are implemented in the code in the following manner:: |
|
8dd4f736370b
merge from maintenance branch
Richard Jones <richard@users.sourceforge.net>
parents:
1227
diff
changeset
|
52 |
|
106
25216cb3ff79
Added some documentation to the roundup package.
Richard Jones <richard@users.sourceforge.net>
parents:
26
diff
changeset
|
53 E-mail User: roundup-mailgw and roundup.mailgw |
|
25216cb3ff79
Added some documentation to the roundup package.
Richard Jones <richard@users.sourceforge.net>
parents:
26
diff
changeset
|
54 Web User: cgi-bin/roundup.cgi or roundup-server over |
|
1244
8dd4f736370b
merge from maintenance branch
Richard Jones <richard@users.sourceforge.net>
parents:
1227
diff
changeset
|
55 roundup.cgi.client and roundup.cgi.template |
|
106
25216cb3ff79
Added some documentation to the roundup package.
Richard Jones <richard@users.sourceforge.net>
parents:
26
diff
changeset
|
56 Detector: roundup.roundupdb and templates/<template>/detectors |
|
25216cb3ff79
Added some documentation to the roundup package.
Richard Jones <richard@users.sourceforge.net>
parents:
26
diff
changeset
|
57 Command: roundup-admin |
|
25216cb3ff79
Added some documentation to the roundup package.
Richard Jones <richard@users.sourceforge.net>
parents:
26
diff
changeset
|
58 Roundup DB: roundup.roundupdb |
|
25216cb3ff79
Added some documentation to the roundup package.
Richard Jones <richard@users.sourceforge.net>
parents:
26
diff
changeset
|
59 Hyper DB: roundup.hyperdb, roundup.date |
|
25216cb3ff79
Added some documentation to the roundup package.
Richard Jones <richard@users.sourceforge.net>
parents:
26
diff
changeset
|
60 Storage: roundup.backends.* |
|
25216cb3ff79
Added some documentation to the roundup package.
Richard Jones <richard@users.sourceforge.net>
parents:
26
diff
changeset
|
61 |
|
25216cb3ff79
Added some documentation to the roundup package.
Richard Jones <richard@users.sourceforge.net>
parents:
26
diff
changeset
|
62 Additionally, there is a directory of unit tests in "test". |
|
25216cb3ff79
Added some documentation to the roundup package.
Richard Jones <richard@users.sourceforge.net>
parents:
26
diff
changeset
|
63 |
|
25216cb3ff79
Added some documentation to the roundup package.
Richard Jones <richard@users.sourceforge.net>
parents:
26
diff
changeset
|
64 For more information, see the original overview and specification documents |
|
25216cb3ff79
Added some documentation to the roundup package.
Richard Jones <richard@users.sourceforge.net>
parents:
26
diff
changeset
|
65 written by Ka-Ping Yee in the "doc" directory. If nothing else, it has a |
|
25216cb3ff79
Added some documentation to the roundup package.
Richard Jones <richard@users.sourceforge.net>
parents:
26
diff
changeset
|
66 much prettier cake :) |
|
25216cb3ff79
Added some documentation to the roundup package.
Richard Jones <richard@users.sourceforge.net>
parents:
26
diff
changeset
|
67 ''' |
|
2005
fc52d57c6c3e
documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents:
1980
diff
changeset
|
68 __docformat__ = 'restructuredtext' |
|
26
c7c14960f413
Final commit of Grande Splite
Richard Jones <richard@users.sourceforge.net>
parents:
25
diff
changeset
|
69 |
|
5359
70f6a3ede190
change version from 1.6 to 1.6.0 to match prior minor release versioning.
John Rouillard <rouilj@ieee.org>
parents:
5335
diff
changeset
|
70 __version__ = '1.6.0' |
|
773
6e6c63a57df9
[SF#569415] {version]]
Richard Jones <richard@users.sourceforge.net>
parents:
214
diff
changeset
|
71 |
|
127
0791d13baea7
Added vim command to all source so that we don't get no steenkin' tabs :)
Richard Jones <richard@users.sourceforge.net>
parents:
106
diff
changeset
|
72 # vim: set filetype=python ts=4 sw=4 et si |
