[Zope] make publict product for PythonScripts

Bernd Dorn zope-mailinglist at mopa.at
Thu Apr 15 10:50:59 EDT 2004


debdev at tonelli.sns.it wrote:
> _______________________________________________
> Zope maillist  -  Zope at zope.org
> http://mail.zope.org/mailman/listinfo/zope
> **   No cross posts or HTML encoding!  **
> (Related lists - 
>  http://mail.zope.org/mailman/listinfo/zope-announce
>  http://mail.zope.org/mailman/listinfo/zope-dev )
> 
> 
> 
> ------------------------------------------------------------------------
> 
> Date:
> Thu, 15 Apr 2004 16:39:33 +0200
> 
> MIME-Version:
> 1.0
> Content-Type:
> message/rfc822
> 
> 
> 
> ------------------------------------------------------------------------
> 
> Date:
> Thu, 15 Apr 2004 16:39:33 +0200
> 
> MIME-Version:
> 1.0
> Content-Type:
> multipart/mixed; boundary="----_=_NextPart_004_01C422CC.61B39B90"
> 
> 
> 
> ------------------------------------------------------------------------
> 
> hello
> 
> I have created a few useful functions that I keep in a file
> Products.mennucc (that I attach); I use them in my external
> products
> 
> I would like to use them in Python Scripts; I have then
> imitated what is done e.g. in Products.PythonScripts.standard
> to make my functions 'public'.... but it does not work
> 
> what am I doing wrong?
> 
> 
> thanks.
> a.
> 
> 
> 
> ------------------------------------------------------------------------
> 
> "my own functions"
> 
> from AccessControl import ModuleSecurityInfo, getSecurityManager
> security = ModuleSecurityInfo()
> 
> security.declarePublic('append_par', 'add_par', 'manage_addProperty2')
> 
> 
> from RestrictedPython.Utilities import same_type
> 
> def append_par_old(obj,kp,vp):
>     if not same_type(vp,[]):
>         return '('+kp+' is REALLY NOT a LIST?)'
>     if obj.hasProperty(kp):
>         v=obj.getProperty(kp)
>         v=v+vp
>         obj.manage_changeProperties({kp:v})
>     else:
>         obj.manage_addProperty(kp, vp, 'lines')
>     return '(appended '+kp+')'
> 
> 
> def manage_addProperty2(self,id, value, type, selectionlist=None):
>     if selectionlist is None:
>         selectionlist = id+"_list"
>     if self.hasProperty(id): 
>         self.manage_changeProperties({id:value})
>     else:
>         if type == 'selection' :
>             self.manage_addProperty(id, selectionlist, 'selection')
>             self.manage_changeProperties({id:value})
>         else:
>             self.manage_addProperty(id, value, type)
>                 
> 
> def append_par(obj,kp,vp):
>     "add to 'list' parameters; vp must be a list"
>     if not same_type(vp,[]):
>         raise Exception,' argument vp  is not a LIST? it is = '+repr(vp)
>     if obj.hasProperty(kp):
>         v=obj.getProperty(kp)
>         if  same_type(v,[]):
>             v=v+vp
>         elif  same_type(v,()):
>             v=v+tuple(vp)
>         else:
>             raise Exception, 'in obj '+repr(obj)+', property '+kp+' is not a LIST or a TUPLE'
>         obj.manage_changeProperties({kp:v})
>     else:
>         obj.manage_addProperty(kp, vp, 'lines')
>     return '(appended '+kp+')'
> 
> 
> 
> 
> 
> def add_par(obj,kp,vp):
>     "add parameter; if it is a list in the original request, as lines"
>     #'descr' is standard in ExtFile
>     if obj.hasProperty(kp): 
>         obj.manage_changeProperties({kp:vp})
>         print '(changed '+kp+')'
>     else:
>         #normalizza
>         if request.form.has_key(kp):
>             if same_type(request.form[kp],[]) and not same_type(vp,[]):
>                 vp=[vp]
>                 print '('+kp+' is NOT a LIST?)'
>             if not same_type(request.form[kp],[]) and  same_type(vp,[]):
>                 print '('+kp+' is a LIST?)'
>                 vp=vp[0]
>     #verifica se c'e' una pre selezione per questa variabile nel container
>         if container.hasProperty(kp+"_list"):
>             obj.manage_addProperty(kp, kp+"_list", 'selection')
>             obj.manage_changeProperties({kp:vp})
>         else:
>             if  same_type(vp,[]):
>                 obj.manage_addProperty(kp, vp, 'lines')
>             else:
>                 obj.manage_addProperty(kp, vp, 'string')
>         print '(added '+kp+')'
>     return printed
> 
> 
> 
> 
> #per pigrizia lo ho messo in CMF_ExtFile ma andrebbe qui....
> def manage_beforeDelete(self, item, container):
>         """Both of my parents have a beforeDelete method"""
>         import sys
>         a=PortalContent.manage_beforeDelete(self, item, container)
>         b='PortalContent.manage_beforeDelete = '+repr(a)+'\n'
>         a=EF.ExtFile.manage_beforeDelete(self, item, container)
>         b=b+'EF.ExtFile.manage_beforeDelete = '+repr(a)+'\n'
>         kp='filechilds'
>         try:
>             if item.hasProperty(kp):
>                 for j in item.getProperty(kp):                    
>                     try:
>                         container.manage_delObjects(j)
>                         b=b+' deleted  '+repr(j) + ' alongside \n '
>                     except:
>                         LOG('CMF_ExtFile',ERROR,'error while deleting alongside file '+repr(j), error=sys.exc_info())
>                         b=b+' cant delete '+repr(j)+'\n'+sys.exc_info()+'\n'
>         except:            
>             LOG('CMF_ExtFile',ERROR,'error while deleting filechilds', error=sys.exc_info())
>             pass
>         LOG('CMF_ExtFile',DEBUG, b)
>         return b
> 
> security.apply(globals())

had the same problem

see: http://www.zopelabs.com/cookbook/991933953







More information about the Zope mailing list