Awesome. What do you think about having the api for can_move simply either raise an exception or not? If it does it can contain the error message. I'd guess there's no need to define the alternative parent - it should always be the previous parent prior to moving.
On Sat, May 31, 2014 at 8:59 AM, Ahmad Khayyat <[email protected]> wrote: > OK. I took another stab at it: > > https://bitbucket.org/stephenmcd/mezzanine/pull-request/63/can_move-permission/ > > *Pull request description:* > > Implement a new can_move dynamic page permission. > > Content types can override can_move() to control whether a given page > move in the page tree is permitted. can_move() should return a > 3-tuple: the permission (Boolean), an error message (String), and an > alternative new parent (Page). The last two elements are used only > when the permission is False. > > Currently, the error message is used in page moves only to explain why the > page move is reverted. Also, the alternative new parent is used in page > creation only to insert the new page in a legal position. > > During page creation, can_move() is called at the end, after all other > save-related operation > āsā > are performed, including setting the slugs based on the original parent. > This may not be optimal, as it may result in an additional save, but it is > a clean and simple way. Trying to call can_move() any earlier is tricky, > because the specific content type that defines can_move() is attached to > the Page instance only after it has been saved. > > Calling can_move() during page creation is separated into its own commit > (5d2e613 <https://bitbucket.org/stephenmcd/mezzanine/commits/5d2e613>). > ā > > -- > You received this message because you are subscribed to the Google Groups > "Mezzanine Users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/d/optout. > -- Stephen McDonald http://jupo.org -- You received this message because you are subscribed to the Google Groups "Mezzanine Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
