analyzeSite.dtml: DTML-Methode zur Ermittlung großer Daten-Volumina

<html>
<head>
 <title>Analyze site...</title>
</head>
<body>
 <table cellspacing="1" cellpadding="1" border="0" class="zmiNeutralColorStrong0">
 <tr valign="top">
  <th class="form-small">Id</th>
  <th class="form-small">Size</th>
 </tr>
 <dtml-call "REQUEST.set('total_size',0)">
 <dtml-in "objectValues(['Folder'])" sort=id>
 <dtml-try>
 <dtml-let ob_size="_.len(aq_parent.manage_exportObject(id=id,download=1,toxml=None,RESPONSE=None,
   REQUEST=REQUEST))">
  <tr valign="top"
   <dtml-if sequence-odd>
    class="zmiNeutralColorLight0"
   <dtml-else>
    class="zmiNeutralColorMedium0"
   </dtml-if>>
   <td class="form-small"><dtml-var id></td>
   <td class="form-small">
     <dtml-if "ob_size < 1024">
     1 Kb
     <dtml-elif "ob_size > 1048576">
     <dtml-var "ob_size / 1048576.0" fmt="%0.02f"> Mb
     <dtml-else>
     <dtml-var "_.int(ob_size / 1024)"> Kb
     </dtml-if>
   </td>
  </tr>
  <dtml-call "REQUEST.set('total_size',total_size+ob_size)">
 </dtml-let>
<dtml-except>
  <tr valign="top"
   <dtml-if sequence-odd>
    class="zmiNeutralColorLight0"
   <dtml-else>
    class="zmiNeutralColorMedium0"
   </dtml-if>>
   <td class="form-small"><dtml-var id></td>
   <td class="form-small"><dtml-var error_type>: <dtml-var error_value></td>
  </tr>
</dtml-try>
 </dtml-in>
 <tr valign="top">
  <th class="form-small"></th>
  <th class="form-small">
   <dtml-let ob_size=total_size>
     <dtml-if "ob_size < 1024">
     1 Kb
     <dtml-elif "ob_size > 1048576">
     <dtml-var "ob_size / 1048576.0" fmt="%0.02f"> Mb
     <dtml-else>
     <dtml-var "_.int(ob_size / 1024)"> Kb
     </dtml-if>
   </dtml-let>
  </th>
 </tr>
 </table>
</body>
</html>

updateBlobField.dtml: ruft Rekursionsmethode updateBlobFieldRecurse auf

<html>
<body>
<dtml-with "content">
<dtml-call f_standard_html_request>
<dtml-var updateBlobFieldRecurse>
</dtml-with>
</body>
</html>

updateBlobFieldRecurse.dtml: schreibt BLOBs neu

<dtml-in "objectValues(dGlobalAttrs.keys())">
<dtml-if "meta_type=='ZMSFile'">
<dtml-if "id=='dummy'">
<a href="<dtml-var absolute_url>/manage" target="_blank"><dtml-var absolute_url></a>
<dtml-if "aq_parent.meta_type=='ZMSCustom' and aq_parent.meta_id in ['links_dateien','meldung']">
<dtml-call "getParentNode().manage_renameObject(id='dummy',new_id=getNewId('inhalt'))">
<dtml-elif "aq_parent.meta_type!='ZMSCustom'">
<dtml-call "getParentNode().manage_renameObject(id='dummy',new_id=getNewId('e'))">
<dtml-else>
Unknown
</dtml-if>
<br/>
</dtml-if>
<dtml-comment>
<dtml-try>
<dtml-let ob=sequence-item>
<dtml-var id><br/>
<dtml-call "REQUEST.set('newZMSFile',getParentNode().manage_addZMSFile({'id':'dummy'},REQUEST))">
<dtml-call "newZMSFile.setObjStateModified(REQUEST)">
<dtml-in "getObjAttrs().keys()">
<dtml-let key=sequence-item value="getObjProperty(key,REQUEST)">
<dtml-if "key=='file' and value is not _.None">
<dtml-call "newZMSFile.setObjProperty(key,{'data':value.getData(),'filename':value.getFilename(),'content_type':value.getContentType()},lang)">
<dtml-else>
<dtml-call "newZMSFile.setObjProperty(key,value,lang)">
</dtml-if>
</dtml-let>
</dtml-in>
<dtml-call "operator_setattr(newZMSFile,'sort_id',_.getattr(ob,'sort_id',''))">
<dtml-call "newZMSFile.onChangeObj(REQUEST)">
</dtml-let>
<dtml-call "REQUEST.set('old_id',id)">
<dtml-call "getParentNode().manage_delObjects(ids=[old_id],REQUEST=REQUEST)">
<dtml-call "getParentNode().manage_renameObject(id='dummy',new_id=old_id)">
<dtml-except>
<dtml-var error_type>: <dtml-var error_value><br/>
</dtml-try>
</dtml-comment>
<dtml-else>
<dtml-var updateBlobFieldRecurse>
</dtml-if>
</dtml-in>