def recurse_addMediaDb(self, mediadb): # Process recordset. if self.getType() == 'ZMSRecordSet': key = self.getMetaobjAttrIds(self.meta_id, types=['list'])[0] obj_attr = self.getObjAttr(key) lang = self.getPrimaryLanguage() for obj_vers in self.getObjVersions(): v = _objattrs.getobjattr(self, obj_vers, obj_attr, lang) c = 0 for r in v: for k in r: u = r[k] if isinstance(u, _blobfields.MyBlob): mediadbfile = mediadb.storeFile(u) u.mediadbfile = mediadbfile u.data = '' c += 1 # Process object. else: for key in self.getObjAttrs(): obj_attr = self.getObjAttr(key) datatype = obj_attr['datatype_key'] if datatype in _globals.DT_BLOBS: for lang in self.getLangIds(): for obj_vers in self.getObjVersions(): v = _objattrs.getobjattr(self, obj_vers, obj_attr, lang) if isinstance(v, _blobfields.MyBlob): mediadbfile = mediadb.storeFile(v) v.aq_parent = None v.mediadbfile = mediadbfile v.data = '' _objattrs.setobjattr(self, obj_vers, obj_attr, v, lang) # Process children. for ob in self.objectValues(self.dGlobalAttrs): recurse_addMediaDb(ob, mediadb)
def recurse_delMediaDb(self, mediadb): # Process recordset. if self.getType() == 'ZMSRecordSet': key = self.getMetaobjAttrIds(self.meta_id, types=['list'])[0] obj_attr = self.getObjAttr(key) lang = self.getPrimaryLanguage() for obj_vers in self.getObjVersions(): v = _objattrs.getobjattr(self, obj_vers, obj_attr, lang) for r in v: for k in r: u = r[k] mediadbfile = getattr(u, 'mediadbfile', None) if mediadbfile is not None: u.mediadbfile = None u.data = mediadb.retrieveFile(mediadbfile) # Process object. else: for key in self.getObjAttrs(): obj_attr = self.getObjAttr(key) datatype = obj_attr['datatype_key'] if datatype in _globals.DT_BLOBS: for lang in self.getLangIds(): for obj_vers in self.getObjVersions(): v = _objattrs.getobjattr(self, obj_vers, obj_attr, lang) if v is not None: mediadbfile = getattr(v, 'mediadbfile', None) if mediadbfile is not None: v.aq_parent = None v.mediadbfile = None v.data = mediadb.retrieveFile(mediadbfile) _objattrs.setobjattr(self, obj_vers, obj_attr, v, lang) # Process children. if self.meta_id != 'ZMSLinkElement': for ob in self.getChildNodes(): recurse_delMediaDb(ob, mediadb)
def valid_filenames(self): filenames = [] objs = [self.getSelf()] objs.extend(objs[0].getTreeNodes()) objs.extend(objs[0].getTrashcan().getTreeNodes()) for obj in objs: # Process recordset. if obj.getType() == 'ZMSRecordSet': si = obj.getMetaobjAttrIds(obj.meta_id)[0] obj_attr = obj.getObjAttr(si) for lang in obj.getLangIds(): for obj_vers in obj.getObjVersions(): v = _objattrs.getobjattr(obj, obj_vers, obj_attr, lang) for r in v: for k in r: u = r[k] mediadbfile = getattr(u, 'mediadbfile', None) if mediadbfile is not None: filenamesFromValue = getFilenamesFromValue( u) for filename in filenamesFromValue: if filename not in filenames: filenames.append(filename) # Process object. else: obj_attrs = obj.getObjAttrs() for si in obj_attrs: obj_attr = obj_attrs[si] datatype = obj_attr['datatype'] multilang = obj_attr['multilang'] if datatype in ['file', 'image', 'list', 'dictionary']: for obj_vers in obj.getObjVersions(): obj_attr_names = [] if multilang: for lang in self.getLangIds(): obj_attr_names.append('%s_%s' % (si, lang)) else: obj_attr_names.append(si) for obj_attr_name in obj_attr_names: v = getattr(obj_vers, obj_attr_name, None) filenamesFromValue = getFilenamesFromValue(v) for filename in filenamesFromValue: if filename not in filenames: filenames.append(filename) return filenames