Help on __before_publishing_traverse__.
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hello everyone. Im developing a product in python that does some content management functions, and one of the features I`m trying to implement is to make the content public based on some properties, so, i`ve add the following code to my product: def __before_publishing_traverse__(self, REQUEST=None, *args, **kw): if hasattr(self, 'data_inicial') and hasattr(self, 'data_final'): if (DateTime.DateTime(self.data_inicial).ISO() < DateTime.DateTime().ISO()) \ and (DateTime.DateTime(self.data_final).ISO() > DateTime.DateTime().ISO()) \ and self.getStatus()=='publicado': self.manage_permission(permission_to_manage='View', roles=[], acquire=1, REQUEST=None) self.manage_permission(permission_to_manage='Access contents information', roles=[], acquire=1, REQUEST=None) else: self.manage_permission(permission_to_manage='View', roles=['Manager'], acquire=0, REQUEST=None) self.manage_permission(permission_to_manage='Access contents information', roles=['Manager'], acquire=0, REQUEST=None) My doubt is: This code works OK for the view property. When a user tries to access the page, and the date range is outside the permitted range, it gets a login screen. But then is the following problem: I have a dtml-in that lists the documents inside this folder, and i want it not to list the document which is outside the range. But i want to do this based on the permission. For what i know, the permission to access the properties of the document is "Access content information". But the strange thing is that the __before_publishing_traverse__ code is run, the permissions are set ok but the document keeps listing, except when i click the security tab. Then, suddenly the document isnt listed anymore. I think that im missing some operation that the security tab performs to make the permissions begin to work. Can anybody help me? Anyone know of a method that gets accessed when i access a property, so i can hook my code on the right place?? Excuse me for writing a book, but i wanted to keep it clear. []'s - -- Sidnei da Silva X3ng Web Technology sidnei@x3ng.com.br -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.6 (GNU/Linux) Comment: For info see http://www.gnupg.org iD8DBQE8Tr3kjMbPQxgR5X0RApA+AJ9NEBZXOPoT1brQXmuFdS+1dMCEfQCgvoIr WLNtkFrFQ4M1drzMEvXdNFo= =YA8b -----END PGP SIGNATURE-----
Sidnei da Silva writes:
Im developing a product in python that does some content management functions, and one of the features I`m trying to implement is to make the content public based on some properties, so, i`ve add the following code to my product:
def __before_publishing_traverse__(self, REQUEST=None, *args, **kw): if hasattr(self, 'data_inicial') and hasattr(self, 'data_final'): if (DateTime.DateTime(self.data_inicial).ISO() < DateTime.DateTime().ISO()) \ and (DateTime.DateTime(self.data_final).ISO() > DateTime.DateTime().ISO()) \ and self.getStatus()=='publicado': self.manage_permission(permission_to_manage='View', roles=[], acquire=1, REQUEST=None) self.manage_permission(permission_to_manage='Access contents information', roles=[], acquire=1, REQUEST=None) else: self.manage_permission(permission_to_manage='View', roles=['Manager'], acquire=0, REQUEST=None) self.manage_permission(permission_to_manage='Access contents information', roles=['Manager'], acquire=0, REQUEST=None) I do not think, you should use this code.
At least to me, it seems to modify the object for every request. That might give you quite an interesting growth of the ZODB. Dieter
participants (2)
-
Dieter Maurer -
Sidnei da Silva