Annotation of OSA_system2/OSAS_root.py, revision 1.1.1.1
1.1 dwinter 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>