Esempio n. 1
0
 def _fields(self, resource, fields):
     if fields:
         resource = {
             key: item
             for key, item in resource.items() if key in fields
         }
     return attributes.populate_project_info(resource)
Esempio n. 2
0
 def to_dict(self):
     dict_ = {}
     # not using obj_to_primitive because it skips extra fields
     for name, value in self.items():
         # we have to check if item is in fields because obj_extra_fields
         # is included in self.items()
         if name in self.fields and name not in self.synthetic_fields:
             value = self.fields[name].to_primitive(self, name, value)
         dict_[name] = value
     for field_name, value in self._synthetic_fields_items():
         field = self.fields[field_name]
         if isinstance(field, obj_fields.ListOfObjectsField):
             dict_[field_name] = [obj.to_dict() for obj in value]
         elif isinstance(field, obj_fields.ObjectField):
             dict_[field_name] = (
                 dict_[field_name].to_dict() if value else None)
         else:
             dict_[field_name] = field.to_primitive(self, field_name, value)
     attributes.populate_project_info(dict_)
     return dict_
Esempio n. 3
0
def resource_fields(resource, fields):
    """Return only the resource items that are in fields.

    :param resource: a resource dictionary
    :type resource: dict
    :param fields: a list of fields to select from the resource
    :type fields: list

    """
    if fields:
        resource = {key: item for key, item in resource.items()
                    if key in fields}
    return attributes.populate_project_info(resource)
Esempio n. 4
0
 def _get_collection(self, context, model, dict_func, filters=None,
                     fields=None, sorts=None, limit=None, marker_obj=None,
                     page_reverse=False):
     query = self._get_collection_query(context, model, filters=filters,
                                        sorts=sorts,
                                        limit=limit,
                                        marker_obj=marker_obj,
                                        page_reverse=page_reverse)
     items = [attributes.populate_project_info(dict_func(c, fields))
              for c in query]
     if limit and page_reverse:
         items.reverse()
     return items
Esempio n. 5
0
 def _get_collection(self, context, model, dict_func, filters=None,
                     fields=None, sorts=None, limit=None, marker_obj=None,
                     page_reverse=False):
     query = self._get_collection_query(context, model, filters=filters,
                                        sorts=sorts,
                                        limit=limit,
                                        marker_obj=marker_obj,
                                        page_reverse=page_reverse)
     items = [attributes.populate_project_info(dict_func(c, fields))
              for c in query]
     if limit and page_reverse:
         items.reverse()
     return items
Esempio n. 6
0
 def to_dict(self):
     dict_ = {}
     # not using obj_to_primitive because it skips extra fields
     for name, value in self.items():
         # we have to check if item is in fields because obj_extra_fields
         # is included in self.items()
         if name in self.fields and name not in self.synthetic_fields:
             value = self.fields[name].to_primitive(self, name, value)
         if name == 'tenant_id':
             if ('project_id' in self.fields and
                     not self.obj_attr_is_set('project_id')):
                 continue
         dict_[name] = value
     for field_name, value in self._synthetic_fields_items():
         field = self.fields[field_name]
         if isinstance(field, obj_fields.ListOfObjectsField):
             dict_[field_name] = [obj.to_dict() for obj in value]
         elif isinstance(field, obj_fields.ObjectField):
             dict_[field_name] = (
                 dict_[field_name].to_dict() if value else None)
         else:
             dict_[field_name] = field.to_primitive(self, field_name, value)
     attributes.populate_project_info(dict_)
     return dict_
Esempio n. 7
0
def resource_fields(resource, fields):
    """Return only the resource items that are in fields.

    :param resource: a resource dictionary
    :type resource: dict
    :param fields: a list of fields to select from the resource
    :type fields: list

    """
    if fields:
        resource = {
            key: item
            for key, item in resource.items() if key in fields
        }
    return attributes.populate_project_info(resource)
Esempio n. 8
0
 def _fields(self, resource, fields):
     if fields:
         resource = {key: item for key, item in resource.items()
                     if key in fields}
     return attributes.populate_project_info(resource)