File:  [Repository] / OSA_system2 / OSAS_root.py
Revision 1.1: download - view: text, annotated - select for diffs - revision graph
Mon Nov 29 09:48:07 2004 UTC (19 years, 6 months ago) by dwinter
Branches: MAIN
CVS tags: HEAD
Initial revision

    1: """ 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"""
    2: 
    3: from OSAS_helpers import *
    4: import OSAS_helpers
    5: from OFS.SimpleItem import SimpleItem
    6: from time import localtime,strftime
    7: from Acquisition import Implicit
    8: from OFS.Folder import Folder
    9: from Products.PageTemplates.PageTemplateFile import PageTemplateFile
   10: from Products.PageTemplates.PageTemplate import PageTemplate
   11: import urllib
   12: from urlparse import *
   13: import re
   14: import xml.dom.minidom
   15: from types import *
   16: import zLOG
   17: import os.path
   18: from Globals import package_home
   19: 
   20: 
   21: class OSAS_viewerObject(Folder):
   22:     """
   23:     Grundlegende Klasse fuer Viewer zur Zeit noch in Entwicklung
   24: 
   25:     """
   26:     meta_type="OSAS_ViewerObject__neu"
   27:     
   28:     def __init__(self,id,title,prefix,objectTypes,ignorePath=""):
   29:         """inititialisiere die Klasse
   30: 
   31:         :Parameters:
   32:          - `id` : Zope ID des Objektes
   33:          - `title`: Titel des Objektes
   34:          - `prefix` : URL bzw. URL Rumpf der Zusammen mit dem Pfad des Objectes die Anzeige URL ergibt
   35:          - `objectType` : liste von Objekttypen die mittels dieses Viewers angezeigt werden können.
   36:          - `ignorePath` : Pfad der bei dem übergebenen Pfad element ingnoriert werden soll. Optional.
   37:         """
   38:         self.id=id
   39:         self.title=title
   40:         self.prefix=prefix
   41:         self.objectTypes=toList(objectTypes)
   42:         self.ignorePath=ignorePath
   43: 
   44:     manage_options = Folder.manage_options+(
   45:         {'label':'Main Config','action':'changeViewerObjectForm'},
   46:         )
   47: 
   48:     def changeViewerObjectForm(self):
   49:         """Main configuration"""
   50:         pt=PageTemplateFile(os.path.join(package_home(globals()), 'zpt','changeViewerObjectForm.zpt')).__of__(self)
   51:         return pt()
   52: 
   53:     def changeViewerObject(self,title,prefix,objectTypes,ignorePath=None,RESPONSE=None):
   54:         """Change RootFolderName"""
   55:         self.title=title
   56:         self.prefix=prefix
   57:         self.ignorePath=ignorePath
   58:         self.objectTypes=toList(objectTypes)
   59:         
   60:         if RESPONSE is not None:
   61:             RESPONSE.redirect('manage_main')
   62: 
   63: 
   64: def manage_addViewerObjectForm(self):
   65:     """form for adding a viewer Object"""
   66:     pt=PageTemplateFile(os.path.join(package_home(globals()), 'zpt','addViewerObjectForm.zpt')).__of__(self)
   67:     return pt()
   68: 
   69: def manage_addViewerObject(self,id,title,prefix,objectTypes,ignorePath,RESPONSE=None):
   70:     """add the OSAS_root"""
   71:     newObj=OSAS_viewerObject(id,title,prefix,objectTypes,ignorePath)
   72:     self._setObject(id,newObj)
   73:     
   74:     if RESPONSE is not None:
   75:         RESPONSE.redirect('manage_main')
   76: 
   77:     
   78: class OSAS_root(Folder,Implicit):
   79:     """Implicit Folder of the  Storage Systems"""
   80:     def __init__(self,id,rootFolderName,uploadServletUrl=None):
   81:         """initialize a new instance
   82: 
   83: 
   84:         @param id: Zope ID des Objektes
   85:         @param rootFolderName : path zum root folder des Storagesystems
   86:         @param uploadServerletUrl : url des UploadServlets (required fuer batch upload)
   87: 
   88:         """
   89:         
   90:         self.id = id
   91:         self.rootFolderName = rootFolderName
   92:         self.uploadServletUrl=uploadServletUrl
   93:         
   94:     meta_type="OSAS_Root__neu"
   95: 
   96:     manage_options = Folder.manage_options+(
   97:         {'label':'Main Config','action':'changeRootForm'},
   98:         )
   99: 
  100: 
  101:     OSASObjectTypes=OSAS_helpers.OSASObjectTypes
  102:     
  103:     def changeRootForm(self):
  104:         """Main configuration"""
  105:         pt=PageTemplateFile(os.path.join(package_home(globals()), 'zpt','changeRootForm.zpt')).__of__(self)
  106:         
  107:         return pt()
  108: 
  109:     def changeRoot(self,rootFolderName,uploadServletUrl,RESPONSE=None):
  110:         """Change RootFolderName"""
  111:         self.rootFolderName=rootFolderName
  112: 
  113:         self.uploadServletUrl=uploadServletUrl
  114:         
  115:         if RESPONSE is not None:
  116:             RESPONSE.redirect('manage_main')
  117: 
  118:     localDate=localDate
  119:     
  120:     def getUploadServletUrl(self):
  121:         """gibt  url des servlets zurueck"""
  122:         return self.uploadServletUrl
  123:         
  124: 
  125:     def downloadExternalXML(self,index_meta_url,xml_url):
  126:         """lade lese ein xml file aus URL und schreibe es in den localen Filebaum
  127:         
  128:         @param index_meta_url: url eines index.meta files auf dem lokalen Server, es gilt rootFolderName + pfad teil der url = pfad auf dem Server. 
  129:         @param xml_url: externe url file hier ersetzt obiges index.meta
  130:         @return: 'error' als String bei Fehler 'ok' bei ok.
  131:         """
  132:         
  133: 
  134:         xmlneu=urllib.urlopen(xml_url).read()
  135:         
  136:         try:
  137:             dom=xml.dom.minidom.parseString(xmlneu)
  138:         except:
  139: 
  140:             zLOG.LOG('OSAS_Root (downloadExternalXML)',zLOG.ERROR,'cannot parse: %s', xml_url)
  141:             return "error"
  142: 
  143: 
  144:         path=self.rootFolderName+urlparse(index_meta_url)[2]
  145: 
  146:         fh=open(path,'w')
  147: 
  148:         fh.write(xmlneu)
  149:         fh.close()
  150:         return "ok"
  151: 
  152:         
  153: def manage_addOSAS_rootForm(self):
  154:     """interface for adding the OSAS_root"""
  155:     pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addOSAS_rootForm.zpt')).__of__(self)
  156:     return pt()
  157: 
  158: def manage_addOSAS_root(self,id,RootFolderName,uploadServletUrl,RESPONSE=None):
  159:     """add the OSAS_root"""
  160:     newObj=OSAS_root(id,RootFolderName,uploadServletUrl)
  161:     self._setObject(id,newObj)
  162:     if RESPONSE is not None:
  163:         RESPONSE.redirect('manage_main')
  164: 
  165:     

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>