""" OSAS_contains the basic classes for configuring the OSAS and basic objects for displaying data. All site specific adaptation should be made in OSAS_Root""" from OSAS_helpers import * import OSAS_helpers from OFS.SimpleItem import SimpleItem from time import localtime,strftime from Acquisition import Implicit from OFS.Folder import Folder from Products.PageTemplates.PageTemplateFile import PageTemplateFile from Products.PageTemplates.PageTemplate import PageTemplate import urllib from urlparse import * import re import xml.dom.minidom from types import * import zLOG import os.path from Globals import package_home class OSAS_viewerObject(Folder): """ Grundlegende Klasse fuer Viewer zur Zeit noch in Entwicklung """ meta_type="OSAS_ViewerObject__neu" def __init__(self,id,title,prefix,objectTypes,ignorePath=""): """inititialisiere die Klasse :Parameters: - `id` : Zope ID des Objektes - `title`: Titel des Objektes - `prefix` : URL bzw. URL Rumpf der Zusammen mit dem Pfad des Objectes die Anzeige URL ergibt - `objectType` : liste von Objekttypen die mittels dieses Viewers angezeigt werden können. - `ignorePath` : Pfad der bei dem übergebenen Pfad element ingnoriert werden soll. Optional. """ self.id=id self.title=title self.prefix=prefix self.objectTypes=toList(objectTypes) self.ignorePath=ignorePath manage_options = Folder.manage_options+( {'label':'Main Config','action':'changeViewerObjectForm'}, ) def changeViewerObjectForm(self): """Main configuration""" pt=PageTemplateFile(os.path.join(package_home(globals()), 'zpt','changeViewerObjectForm.zpt')).__of__(self) return pt() def changeViewerObject(self,title,prefix,objectTypes,ignorePath=None,RESPONSE=None): """Change RootFolderName""" self.title=title self.prefix=prefix self.ignorePath=ignorePath self.objectTypes=toList(objectTypes) if RESPONSE is not None: RESPONSE.redirect('manage_main') def manage_addViewerObjectForm(self): """form for adding a viewer Object""" pt=PageTemplateFile(os.path.join(package_home(globals()), 'zpt','addViewerObjectForm.zpt')).__of__(self) return pt() def manage_addViewerObject(self,id,title,prefix,objectTypes,ignorePath,RESPONSE=None): """add the OSAS_root""" newObj=OSAS_viewerObject(id,title,prefix,objectTypes,ignorePath) self._setObject(id,newObj) if RESPONSE is not None: RESPONSE.redirect('manage_main') class OSAS_root(Folder,Implicit): """Implicit Folder of the Storage Systems""" def __init__(self,id,rootFolderName,uploadServletUrl=None): """initialize a new instance @param id: Zope ID des Objektes @param rootFolderName : path zum root folder des Storagesystems @param uploadServerletUrl : url des UploadServlets (required fuer batch upload) """ self.id = id self.rootFolderName = rootFolderName self.uploadServletUrl=uploadServletUrl meta_type="OSAS_Root__neu" manage_options = Folder.manage_options+( {'label':'Main Config','action':'changeRootForm'}, ) OSASObjectTypes=OSAS_helpers.OSASObjectTypes def changeRootForm(self): """Main configuration""" pt=PageTemplateFile(os.path.join(package_home(globals()), 'zpt','changeRootForm.zpt')).__of__(self) return pt() def changeRoot(self,rootFolderName,uploadServletUrl,RESPONSE=None): """Change RootFolderName""" self.rootFolderName=rootFolderName self.uploadServletUrl=uploadServletUrl if RESPONSE is not None: RESPONSE.redirect('manage_main') localDate=localDate def getUploadServletUrl(self): """gibt url des servlets zurueck""" return self.uploadServletUrl def downloadExternalXML(self,index_meta_url,xml_url): """lade lese ein xml file aus URL und schreibe es in den localen Filebaum @param index_meta_url: url eines index.meta files auf dem lokalen Server, es gilt rootFolderName + pfad teil der url = pfad auf dem Server. @param xml_url: externe url file hier ersetzt obiges index.meta @return: 'error' als String bei Fehler 'ok' bei ok. """ xmlneu=urllib.urlopen(xml_url).read() try: dom=xml.dom.minidom.parseString(xmlneu) except: zLOG.LOG('OSAS_Root (downloadExternalXML)',zLOG.ERROR,'cannot parse: %s', xml_url) return "error" path=self.rootFolderName+urlparse(index_meta_url)[2] fh=open(path,'w') fh.write(xmlneu) fh.close() return "ok" def manage_addOSAS_rootForm(self): """interface for adding the OSAS_root""" pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addOSAS_rootForm.zpt')).__of__(self) return pt() def manage_addOSAS_root(self,id,RootFolderName,uploadServletUrl,RESPONSE=None): """add the OSAS_root""" newObj=OSAS_root(id,RootFolderName,uploadServletUrl) self._setObject(id,newObj) if RESPONSE is not None: RESPONSE.redirect('manage_main')