def get_types(self): types_ = [] pt = getToolByName(self.context, "portal_types") for type_ in pt.listTypeInfo(): meta_type = type_.Metatype() product = type_.product try: t = getType(meta_type, product) except KeyError: continue if "schema" in t: for f in t["schema"].fields(): if IAWSField.providedBy(f): tid = type_.id if tid not in types_: types_.append(tid) return types_
def getAWSFields(obj): """ Collect aws fields for provided object. Goes through object schema fields and collects all aws fields. :param obj: content object. """ aws_fields = [] for f in obj.schema.fields(): if IAWSField.providedBy(f): accessor = f.getAccessor(obj) field_content = accessor() if isinstance(field_content, AWSFile): aws_fields.append((f, field_content)) return aws_fields
def get_types(self): types_ = [] pt = getToolByName(self.context, 'portal_types') for type_ in pt.listTypeInfo(): meta_type = type_.Metatype() product = type_.product try: t = getType(meta_type, product) except KeyError: continue if 'schema' in t: for f in t['schema'].fields(): #if 'File' in t['name']: #import pdb; pdb.set_trace() if IAWSField.providedBy(f): print t, f tid = type_.id if tid not in types_: types_.append(tid) return types_
def _migrate(self, query, types): count = 0 results = {} pc = getToolByName(self.context, 'portal_catalog') for ptype in types: query['portal_type'] = ptype results[ptype] = 0 for b in pc(**query): obj = b.getObject() for f in obj.schema.fields(): if IAWSField.providedBy(f): name = f.getName() migrate = '%s_migrate' % name obj.REQUEST[migrate] = True f.get(obj) self._update_metadata(pc, obj) count = count + 1 if count % self.get_bsize() == 0: transaction.savepoint(optimistic=True) results[ptype] = results[ptype] + 1 return results
def aws_sources(obj): sids = {} if not hasattr(obj, 'schema'): return obj_fields = obj.schema.fields() for f in obj_fields: if IAWSField.providedBy(f): accessor= f.getAccessor(obj) field_content = accessor() if not isinstance(field_content, AWSFile): return fname = f.getName() sids[fname] = field_content.source_id if IAWSImageField.providedBy(f): for n in f.getAvailableSizes(obj).keys(): scale = f.getScale(obj, scale=n) if isinstance(scale, AWSFile): scale_name = '%s_%s' % (fname, n) sids[scale_name] = scale.source_id if sids: return sids