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.

Reply via email to