Changeset 752 for ZMS/trunk/ZMSItem.py


Ignore:
Timestamp:
26.10.2009 17:53:28 (3 years ago)
Author:
chris
Message:

zms-2.11.4-02

File:
1 edited

Legend:

Unmodified
Added
Removed
  • ZMS/trunk/ZMSItem.py

    r121 r752  
    2525from __future__ import nested_scopes 
    2626from DateTime.DateTime import DateTime 
    27 from Globals import HTMLFile, Persistent 
     27from App.special_dtml import HTMLFile 
     28from Persistence import Persistent 
    2829from Acquisition import Implicit 
    29 from OFS.PropertySheets import PropertySheets, vps 
    30 from webdav.Lockable import ResourceLockedError 
    31 import OFS.SimpleItem, OFS.ObjectManager, webdav.Collection 
     30import OFS.SimpleItem, OFS.ObjectManager 
    3231import string 
    33 import _webdav 
    3432 
    3533 
     
    4341class ZMSItem( 
    4442        OFS.ObjectManager.ObjectManager, 
    45         webdav.Collection.Collection, 
    4643        OFS.SimpleItem.Item, 
    4744        Persistent,                             # Persistent.  
     
    127124      return RESPONSE.redirect('manage?lang=%s'%lang) 
    128125 
    129  
    130     ############################################################################ 
    131     ### 
    132     ###  WebDAV 
    133     ### 
    134     ############################################################################ 
    135  
    136     # Standard DAVProperties + ZMSProperties. 
    137     # --------------------------------------- 
    138     propertysheets=vps(_webdav.ZMSPropertySheets) 
    139  
    140  
    141     # -------------------------------------------------------------------------- 
    142     #  ZMSItem._checkWebDAVLock 
    143     # -------------------------------------------------------------------------- 
    144     def _checkWebDAVLock(self): 
    145       if self.wl_isLocked(): 
    146         raise ResourceLockedError, 'This %s Object is locked via WebDAV' % self.meta_type 
    147  
    148  
    149     # -------------------------------------------------------------------------- 
    150     #  ZMSItem.document_src 
    151     # -------------------------------------------------------------------------- 
    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_src 
    158  
    159     # -------------------------------------------------------------------------- 
    160     #  ZMSItem.PUT 
    161     # -------------------------------------------------------------------------- 
    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 value 
    193             value_new = v.get(attr, lang) 
    194              
    195             # if value is used as datetime, convert to correct form 
    196             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 form 
    204             if datatype == 'boolean': 
    205                 value_new = bool(value_new) 
    206              
    207             # get old value 
    208             value_old = self.getObjProperty(attr, REQUEST) 
    209              
    210             # if value has changed 
    211             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 RESPONSE 
    220  
    221  
    222     # -------------------------------------------------------------------------- 
    223     #  ZMSItem.listDAVObjects 
    224     # -------------------------------------------------------------------------- 
    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  
    240126################################################################################ 
Note: See TracChangeset for help on using the changeset viewer.