예제 #1
0
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)
예제 #2
0
파일: _mediadb.py 프로젝트: cmeier76/ZMS5
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)
예제 #3
0
파일: _mediadb.py 프로젝트: cmeier76/ZMS5
 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