import Globals from Globals import Persistent, Acquisition import AccessControl import OFS import sys from AccessControl import ClassSecurityInfo class XTemplate ( Acquisition.Implicit, Persistent, #AccessControl.Role.RoleManager, #OFS.PropertyManager.PropertyManager, #OFS.ObjectManager.ObjectManager, OFS.Folder.Folder ): "Classe que define o XTemplate." data_inicial = "1970/01/01" data_final = "2100/01/01" all_meta_types = ( {'name' : 'Folder', 'action' : 'manage_addProduct/OFSP/folderAdd'}, {'name' : 'File', 'action' : 'manage_addProduct/OFSP/fileAdd'}, {'name' : 'DTML Method', 'action' : 'manage_addProduct/OFSP/methodAdd'}, {'name' : 'DTML Document', 'action' : 'manage_addProduct/OFSP/documentAdd'}, {'name' : 'Image', 'action' : 'manage_addProduct/OFSP/imageAdd'}, {'name' : 'Script (Python)', 'action' : 'manage_addProduct/PythonScripts/pyScriptAdd'} ) _properties = ( {'id':'title','type':'string','mode':'w'}, {'id':'data_inicial','type':'date','mode':'w' }, {'id':'data_final','type':'date','mode':'w' }, ) security = ClassSecurityInfo() manage_options=OFS.Folder.Folder.manage_options[:1] +( {'label':'Propriedades', 'action':'manage_editXTemplateForm'}, ) + OFS.Folder.Folder.manage_options[1:2] + OFS.Folder.Folder.manage_options[3:] meta_type = 'XTemplate' security.declareProtected('Modificar Propriedades do XTemplate','manage_editXTemplateForm') manage_editXTemplateForm = Globals.DTMLFile("dtml/editXTemplateForm", globals()) def __init__(self, id, title): self.id = id self.title = title def __bobo_traverse__(self, request, entry_name): '''Faz um Mirror do Template Principal.''' mid= self.template_principal; mf= getattr(self,mid,None) path= getattr(request,'TraversalRequestNameStack',None) if entry_name != mid and mf and path is not None: path= path[:] context= mf; path.reverse() for s in path: try: ncontext= context.unrestrictedTraverse(s) except: break if not hasattr(ncontext,'__basicnew__'): break context= ncontext self= self.__of__(context) return getattr(self,entry_name) security.declareProtected('Modificar Propriedades do XTemplate','manage_editXTemplate') def manage_editXTemplate(self, title, data_inicial='1970/01/01', data_final='2100/01/01', REQUEST=None): "Modifica as Propriedades do XTemplate" self.title = title self.data_inicial = data_inicial self.data_final = data_final if REQUEST is not None: return self.manage_editXTemplateForm(REQUEST, management_view='Propriedades', manage_tabs_message='O XTemplate %s foi editado.' % self.id ) Globals.default__class_init__(XTemplate) def manage_addXTemplate(self, id, title, data_inicial='1970/01/01', data_final='2100/01/01', REQUEST=None): """Cria um XTemplate e o adiciona ao seu parent Folder. O argumento 'self' referencia o parent Folder. """ template = XTemplate(id, title) template.data_inicial = data_inicial template.data_final = data_final self._setObject(id, template) if REQUEST is not None: return self.manage_main(self, REQUEST) manage_addXTemplateForm = Globals.HTMLFile('dtml/addXTemplateForm', globals())