Changeset 752 for ZMS/trunk/ZMSItem.py
- Timestamp:
- 26.10.2009 17:53:28 (3 years ago)
- File:
-
- 1 edited
-
ZMS/trunk/ZMSItem.py (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
ZMS/trunk/ZMSItem.py
r121 r752 25 25 from __future__ import nested_scopes 26 26 from DateTime.DateTime import DateTime 27 from Globals import HTMLFile, Persistent 27 from App.special_dtml import HTMLFile 28 from Persistence import Persistent 28 29 from Acquisition import Implicit 29 from OFS.PropertySheets import PropertySheets, vps 30 from webdav.Lockable import ResourceLockedError 31 import OFS.SimpleItem, OFS.ObjectManager, webdav.Collection 30 import OFS.SimpleItem, OFS.ObjectManager 32 31 import string 33 import _webdav34 32 35 33 … … 43 41 class ZMSItem( 44 42 OFS.ObjectManager.ObjectManager, 45 webdav.Collection.Collection,46 43 OFS.SimpleItem.Item, 47 44 Persistent, # Persistent. … … 127 124 return RESPONSE.redirect('manage?lang=%s'%lang) 128 125 129 130 ############################################################################131 ###132 ### WebDAV133 ###134 ############################################################################135 136 # Standard DAVProperties + ZMSProperties.137 # ---------------------------------------138 propertysheets=vps(_webdav.ZMSPropertySheets)139 140 141 # --------------------------------------------------------------------------142 # ZMSItem._checkWebDAVLock143 # --------------------------------------------------------------------------144 def _checkWebDAVLock(self):145 if self.wl_isLocked():146 raise ResourceLockedError, 'This %s Object is locked via WebDAV' % self.meta_type147 148 149 # --------------------------------------------------------------------------150 # ZMSItem.document_src151 # --------------------------------------------------------------------------152 def document_src(self, REQUEST={}):153 """ document_src returns ZMSAttributes as XML """154 return self.toXml(REQUEST, incl_embedded=False, deep=False, data2hex=True)155 156 157 manage_FTPget = manage_DAVget = document_src158 159 # --------------------------------------------------------------------------160 # ZMSItem.PUT161 # --------------------------------------------------------------------------162 def PUT(self, REQUEST, RESPONSE):163 """Handle HTTP PUT requests"""164 self.dav__init(REQUEST, RESPONSE)165 self.dav__simpleifhandler(REQUEST, RESPONSE, refresh=1)166 167 file=REQUEST['BODYFILE']168 169 builder = _webdav.XmlWebDAVBuilder()170 171 v = builder.parse(file)172 173 lang = REQUEST.get('lang', None)174 175 if lang is None:176 lang = self.getPrimaryLanguage()177 REQUEST.set('lang', lang)178 179 if _globals.debug( self):180 for key in v.keys():181 _globals.writeLog( self, '%s: %s' %(key, v.get(key, lang)))182 183 attrs = self.getObjAttrs()184 185 if _globals.debug( self):186 _globals.writeLog( 'Updating %s via WebDAV' % self.absolute_url())187 188 self.setObjStateModified(REQUEST)189 190 for attr in attrs.keys():191 if attr in v.keys():192 # get new value193 value_new = v.get(attr, lang)194 195 # if value is used as datetime, convert to correct form196 datatype = attrs[attr].get('datatype', 'string')197 if datatype == 'datetime':198 if value_new[0] == '(':199 value_new = value_new[1:-1].split(',')200 value_new = map(int, value_new)201 value_new = _globals.getDateTime(tuple(value_new))202 203 # if value is used as boolea, convert to correct form204 if datatype == 'boolean':205 value_new = bool(value_new)206 207 # get old value208 value_old = self.getObjProperty(attr, REQUEST)209 210 # if value has changed211 if value_new != value_old:212 if _globals.debug( self):213 _globals.writeLog( 'Updating property %s: %s' % (attr, value_new))214 self.setObjProperty(attr, value_new, forced=1)215 216 self.onChangeObj(REQUEST)217 218 RESPONSE.setStatus(204)219 return RESPONSE220 221 222 # --------------------------------------------------------------------------223 # ZMSItem.listDAVObjects224 # --------------------------------------------------------------------------225 def listDAVObjects(self):226 objectValues = getattr(self, 'objectValues', None)227 if objectValues is not None:228 spec = [ 'BTreeFolder2',229 'DTML Document',230 'DTML Method',231 'File',232 'Folder',233 'Folder (Ordered)',234 'Image',235 'Script (Python)']236 spec.extend( self.dGlobalAttrs.keys())237 return objectValues(spec = spec)238 return []239 240 126 ################################################################################
Note: See TracChangeset
for help on using the changeset viewer.
