Ty Sarna <[EMAIL PROTECTED]> wrote: >Itai Tavor <[EMAIL PROTECTED]> wrote: >> - I'm not sure how to customize a UserSource to access the >> propertysheets on the Customer and Reseller classes. The easiest way >> seems to be to define userExists, userRoles and userAuthenticate >> methods in a GenericUserSource, but I don't think it's a good idea - >> I still wouldn't know how to make changes to the propertysheet from >> the LoginManager (for example, changePassword should be a method of >> acl_users, not of the user classes, because it does the same thing >> for all user types), and there is no caching. Should I write my own >> UserSource? Or can I do it with Data Plug-ins? I'd like to keep the >> solution simple, but I do want it to be efficient (fast and cached). > >Generic User Source is basically for people who are familar with GUF and >want some degree of backward compatability. There was also a time where >it was the only choice :-) > >Now there is "User Source", which is to LoginManager what Rack is to >Specialist. It's completely general, defaulting to storing things >persistently, but overrideable with SkinScript and the "load from >existence of attribute blah" to do anything you want. It's much more >Generic than Generic User Source, actually :) > >Have a look at the SkinScript reference for the "Object Remapping" >example (last one under WITH ... COMPUTE ...) of how to make a Rack >that retrieves proxyies for objects from a different Specialist. You >can direcly apply this same technique to have a User Source provide >users based on objects in other Specialists. I guess I still don't understand enough about object remapping... I got a CustomerUserSource with this SkinScript: WITH Customers.getCustomerByName(self.id) COMPUTE login_name, password, roles, original_object=RESULT NOTE: I use getCustomerByName rather than getItem because I use auto-generated codes for the customer objects id's, this lets me allow users to change their login name - but it means that finding a user is a more expensive operation than getItem, which is another reason I worry about speed and caching. Now I need to set the 'loaded by accessing attribute' bit, because the UserSource has no persistent items in it, right? What do I set it to? I tried to set it to 'id' but it does nothing - CustomerUserSource.getItem(some_user) always returns None. Also, if a Rack is using object remapping, can I still use getPersistentItemIDs() on it? -- Itai Tavor "Je sautille, donc je suis." C3Works [EMAIL PROTECTED] - Kermit the Frog "If you haven't got your health, you haven't got anything" _______________________________________________ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )