Mailing List Archive

[bricoleurs/bricolage] 5d442c: Fix handling of publish failures in Ajax publish r...
Branch: refs/heads/rev-2.0
Home: https://github.com/bricoleurs/bricolage

Commit: 5d442c517ecb9f5ad12bb0015f0e524a6d126254
https://github.com/bricoleurs/bricolage/commit/5d442c517ecb9f5ad12bb0015f0e524a6d126254
Author: David E. Wheeler <david@justatheory.com>
Date: 2011-08-16 (Tue, 16 Aug 2011)

Changed paths:
M comp/media/js/lib.js
M lib/Bric/App/Callback.pm
M lib/Bric/App/Callback/Desk.pm

Log Message:
-----------
Fix handling of publish failures in Ajax publish requests.

This fixes the half of bug #277, when one attempts to publish from a desk or workspace.

When `PUBLISH_RELATED_FAIL_BEHAVIOR = fail` and a related asset fails to publish, we now call `raise_conflict` to return a 409 and do a better job displaying *all* the appropriate error messages.

When `PUBLISH_RELATED_FAIL_BEHAVIOR = warn` and related asset fails to publish, we call a new moethod, `show_accepted()`. This method returns a 202 status code, which I'm abusing a bit here, but it comes closest to what we want. The story properly publishes and disappears from the desk, but a new handler in the Ajax code also shows the errors when related failed to publish. I also added code to abort at the end of the Desk `publish` callback when a request is Ajax so that no other stuff gets sent back to the browser. This is because in "warn" mode, we wnt the full request to succeed, with no rollbacks or anything, and all subsequent code should execute, so that the story will properly be published and removed from workflow.

Tomorrow I'll have to figure out what to do about non-ajax publish requests in order to properly and finally fix bug # 277.


Commit: 835b0b8a9189753fd4ad64c6b52bd895dea9f55a
https://github.com/bricoleurs/bricolage/commit/835b0b8a9189753fd4ad64c6b52bd895dea9f55a
Author: David E. Wheeler <david@justatheory.com>
Date: 2011-08-16 (Tue, 16 Aug 2011)

Changed paths:
M lib/Bric/App/Callback/Desk.pm
M lib/Bric/App/Callback/Profile/Story.pm
M lib/Bric/Util/Burner.pm

Log Message:
-----------
Move fixes for Bug #277.

With `PUBLISH_RELATED_FAIL_BEHAVIOR = fail`, things work fine now when publishing via "Check in and Publish" in the story profile and when selecting that option on a desk or workflow, which is an Ajax call.

One side effect is that if the publish fails because the story itself fails to publish (rather than because a related fails), the story is instantly checked out to the user again and put back into workflow. In the interrim, the asset will have been checked in, so the result is a new version number. I think that this is a very minor issue that most folks won't even notice, and is far better than what we had, where things were checked in and sometimes removed from workflow. This is better: other than the new version, it looks like the same page as before, with all the same data, but a nice status message explaining the failure.

In order to properly catch an error when there are no destinations, that exception is now thorwn as an "invalid error" exception rather than a fatal exception. That indicates that it's something to inform the user of, rather than something unexpected (which is a 500). Looking at it, I think it was silly to have been throwing a burn error for that particular error; an invalid error is a much better choice.

Still to do to finish fixing this bug:

* Fix media to follow the same pattern.
* Make sure that `PUBLISH_RELATED_FAIL_BEHAVIOR = warn` works as expected
* Make sure that publishing from search results works as expected
* Make sure that bulk publish works as expected.
* Make sure all tests continue to pass.

[#277 state:open]


Commit: adb204561191a1ee8766dc8f5446c88540a0c1c3
https://github.com/bricoleurs/bricolage/commit/adb204561191a1ee8766dc8f5446c88540a0c1c3
Author: David E. Wheeler <david@justatheory.com>
Date: 2011-08-16 (Tue, 16 Aug 2011)

Changed paths:
M lib/Bric/App/Callback/Profile/Media.pm

Log Message:
-----------
Make media publish work the same as story publish.

More work on [#277 state:open].


Commit: 438aba5c162bd0b94c521ada79fcb5cb7092cf48
https://github.com/bricoleurs/bricolage/commit/438aba5c162bd0b94c521ada79fcb5cb7092cf48
Author: David E. Wheeler <david@justatheory.com>
Date: 2011-08-16 (Tue, 16 Aug 2011)

Changed paths:
M lib/Bric/App/Callback/Desk.pm
M lib/Bric/App/Callback/Profile/Media.pm
M lib/Bric/App/Callback/Profile/Story.pm

Log Message:
-----------
Yet more fixes for Bug #277.

Still with `PUBLISH_RELATED_FAIL_BEHAVIOR = fail`, make sure publishes that fail because realteds fail to publish works properly both from desks and from document profiles.

While at it, I filled in some other gaps in the publish logging and rollback logic in the Desk callback.

[#277 state:open]


Commit: 74b39e626e2c47a6134638829420544b3973f53c
https://github.com/bricoleurs/bricolage/commit/74b39e626e2c47a6134638829420544b3973f53c
Author: David E. Wheeler <david@justatheory.com>
Date: 2011-08-16 (Tue, 16 Aug 2011)

Changed paths:
M lib/Bric/App/Callback/Desk.pm

Log Message:
-----------
More Bug # 277 fixes.

This time, always die on non-ajax requests. This allows the "publish later" option on the Publish desk to throw an error and return to the same page, rather than load the scheduling page and show the error there.


Commit: b8f4919598d8a3270636f79dd3504e06a7892412
https://github.com/bricoleurs/bricolage/commit/b8f4919598d8a3270636f79dd3504e06a7892412
Author: David E. Wheeler <david@justatheory.com>
Date: 2011-08-16 (Tue, 16 Aug 2011)

Changed paths:
M lib/Bric/App/Callback/Desk.pm

Log Message:
-----------
Fold $is_ajax into $allow_fail to simplify things.


Commit: 4f5355384b64f424cb471b44d10c1e746d482b2b
https://github.com/bricoleurs/bricolage/commit/4f5355384b64f424cb471b44d10c1e746d482b2b
Author: David E. Wheeler <david@justatheory.com>
Date: 2011-08-16 (Tue, 16 Aug 2011)

Changed paths:
M lib/Bric/Changes.pod

Log Message:
-----------
Not fix for Bug #277.


Compare: https://github.com/bricoleurs/bricolage/compare/58ee2b9...4f53553