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