Michael,

thanks for the tip. rum looks like what I need here. It seems to
provide the flexibility to do things like
determine what exactly a users permissions are with respect to a
particular group of which he is a member
 - read group contracts
 - write group contracts
 - manage group membership (add/remove other users, grant/revoke
permissions to other members)

Thus, then a user enters a contract, he would specify the groups to
which can access the contract and with which permission
they should be able to do so -
For example if user johndoe enters contract with id 10:
 - group johndoe can access contract with id 10 with read and write
permission
 - group A can access contract with id 10 with read and write
permission
 - group B can access contract with id 10 with read permission
etc

My problem is, I have absolutely no idea how to go about this with
rum. I'll need to spend time with the documentation and will
definitely need to
overhaul the schema I defined at
http://code.google.com/p/pycontraxx/source/browse/trunk/pycontraxx/model/schema.py

On 8 Apr., 15:11, Michael Brickenstein <[email protected]> wrote:
> Hi!
> Sounds like some row level permission problem.
> This is possible with the
> mercurial version of rumhttp://python-rum.org/
>
> See TgRumDemo's 
> policyhttp://hg.python-rum.org/TgRumDemo/file/5f744fb4f973/tgrumdemo/policy...
>
> http://groups.google.com/group/rum-discuss/browse_thread/thread/526e1...
>
> Michael
>
> On 7 Apr., 22:10, frankentux <[email protected]> wrote:
>
> > Is there a suggestion for how to implement something like this
> > efficiently:
>
> > group    |     contract      |         permission
> > -----------------------------------------------------------------
> >      1     |          3           |         2
> >      1     |          4           |         3
> >      2     |          3           |         2
>
> > where for example, permission 2 is read and permission 3 is write
> > Each group would have any number of members - which raises an issue
> > with the permissions.
> > I originally thought about each user having a private group where only
> > he/she has write permission
> > (kind of like the way red hat handles a user's default group on
> > linux). Thus each contract would have
> > at least one group owner with write access - namely the owner's
> > private group.
>
> > What I'm trying to achieve is a clear permissions based model where
> > the typical business setup of
> > a human contract manager (user) existing in a contract management team
> > (group A) can read/write group
> > contracts from group A but can only read contracts from group B.
> > Additionally, it might be a good idea to
> > allow contract managers to grant read only permission to either
> > anonymous users or to anyone logged in but not
> > a member of a generic "contract_manager_group".
>
> > For each contract_manager group, a designated user could be granted
> > permission to allow users to join and to grant them
> > read and/or write permission.
>
> > Currently, this is implemented in model/schema.py 
> > (http://code.google.com/p/pycontraxx/source/browse/trunk/pycontraxx/mo...
> > ).
> > When a user visitshttp://app/contract/manage/$contract_idheis
> > denied access unless logged in. If access is granted, the scope of the
> > access is tested by
> > checking what id is requested ($contract_id) and checking if the user
> > is in any group listed in contract.groups and if said group has e.g.
> > rw permission listed in groups.permissions. This seems a bit primitive
> > though and I'm sure there's a much more elegant way of doing this
> > using repoze.... but so far I'm stuck
> > on repoze as I seem to have to test using a decorator ( @require
> > (predicates.in_group('contract_managers', msg=l_('Only for contract
> > managers'))) ) before accessing the args sent to the controller method
> > (in the case above, the contract_id). If I could manage to get this
> > working using predicates, I'm sure it would make the app much more
> > flexible down the road.
>
> > Any ideas :) ?
>
> > On 7 Apr., 15:08, frankentux <[email protected]> wrote:
>
> > > Started a Google Code Project:http://code.google.com/p/pycontraxx/
>
> > > Anonymous SVN (I think you have to join the project before getting RW
> > > permissions)
> > > svn checkouthttp://pycontraxx.googlecode.com/svn/trunk/pycontraxx-
> > > read-only
>
> > > Currently there is only a standard paster quickstart -s with
> > > authentication enabled plus
> > > a schema.py under pycontraxx/model/ which contains the business logic
> > > (probably should be
> > > split out into multiple files?). There is also some controller code
> > > set up - but this was mostly me
> > > playing with repoze and rapidly figuring out that it was going to be
> > > more difficult than I though
> > > to implement group level access restrictions to contracts and
> > > projects.
>
> > > On Apr 6, 6:33 pm, frankentux <[email protected]> wrote:
>
> > > > Given that the project is only in the starting stages (I've put
> > > > together a rough model which is getting more complicated by the day),
> > > > I'm looking firstly for help with "conceptualising" the project:
> > > >   - improving the model (having problems at the moment with user/group/
> > > > contract where trying to implement ro,rw)
> > > >   - user admin interface (whereby a group "owner" can add/remove group
> > > > members and determine the scope of their access to contracts)
> > > >   - using existing form widgets/creating new form widgets to handle
> > > > entering contracts along with projects, contract parties, contract
> > > > documents
> > > >   - event based notifications on a per user or per group basis (e.g.
> > > > contract xyz will expire in 30 days if not renewed)
> > > >   - timeline showing what's coming up (events such as contract renewal
> > > > deadline, contract expiry)
> > > >   - not sure if this is overkill, but it would be cool to have a kind
> > > > of svn backend to handle uploaded contracts (odt, doc, pdf)
>
> > > > Maybe if I just post the entire model? Or upload everything I have to
> > > > google code or something like that?
>
> > > > On Apr 6, 5:40 pm, Mark Ramm <[email protected]> wrote:
>
> > > > > Right now this mailing list is the right place.   Let us know a couple
> > > > > details of what kind of help you're looking for and when you need it
> > > > > and I'm sure some people will reply to you off list.
>
> > > > > --Mark Ramm
>
> > > > > On Mon, Apr 6, 2009 at 10:32 AM, frankentux 
> > > > > <[email protected]> wrote:
>
> > > > > > I was wondering if there is a kind of a "help wanted" feature - 
> > > > > > either
> > > > > > here on the mailing list, or on the turbogears.org site. 
> > > > > > Specifically,
> > > > > > I want to pick up development of a contract management application
> > > > > > using turbogears2 - it's a pretty big project though.
>
> > > > > > Thus, does anyone know where I could post a "looking for help" 
> > > > > > notice
> > > > > > - somewhere that turbogears users would find it?
>
> > > > > --
> > > > > Mark Ramm-Christensen
> > > > > email: mark at compoundthinking dot com
> > > > > blog:www.compoundthinking.com/blog
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"TurboGears" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/turbogears?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to