[ZPatterns] Deleting a DataSkin propertysheet?

Jean Jordaan [email protected]
Thu, 27 Sep 2001 15:24:55 +0200


Hi Philip 

> AFAIK, you can't delete a propertysheet which is defined in the
> ZClass, 

Thanks for the answer! It helps. However, it shows I wasn't asking the
right question. 

Here is the problem I was trying to solve. On the live, remote site, the
CommonProperties propertysheet sometimes vanishes (see below). This is
what one user looks like remotely::

    FekoUser at /acl_users/[email protected]/propertysheets
    
    RestrictedProperties ()
    SystemProperties ()
    UserProfile ()
    webdav (DAV:)

To investigate, I exported the remote UserSource, and imported it
locally. (In order to import it, I had to upgrade ZPatterns, which
triggered the '_v_parent' issue I posted about seperately.) To my
surprise, the imported users *do* have CommonProperties, *with* the
correct values::

    FekoUser at /feko_usa/acl_users/[email protected]/propertysheets
    
    CommonProperties ()
    RestrictedProperties ()
    SystemProperties ()
    UserProfile ()
    webdav (DAV:)

So where are the remote CommonProperties hiding? This is the Python
Script code which adds these users::

    user = acl_users.UserSource.addUser( user_id
                                       , password
                                       , ['Anonymous'] # roles
                                       , [] 
                                       )

    user_common_ps      = user.propertysheets.CommonProperties
    user_userprofile_ps = user.propertysheets.UserProfile

    user_common_ps.manage_changeProperties(email=REQUEST['Email'])
    user_userprofile_ps.manage_changeProperties(
        REQUEST
      , ApplicationDate=application_date
      , URLCookie=URLCookie) 

I mentioned that CommonProperties seems to vanish *sometimes*. The first
time I looked for all the amputated users, I found 48 instances. I just
tried again, and this time there are only 37. The next time I ran it,
47. When I look at the user missing from the latest list, he does have
CommonProperties, with its values. I didn't look at individual users
after the check that reported 37. Here is the Python Script I use to
test::

    users = container.getMembers()
    missing_common = []

    for user in users:
    if getattr( user.propertysheets
              , 'CommonProperties'
              , None
              ) == None:
        missing_common.append(user.id)

    return missing_common

What else should I be trying? At the moment, I'm stumped. 

I should mention that we're using LoginManager with a modified version
of Bill Anderson's Membership implementation.

Regards,
Jean Jordaan