def __init__(self, resource_type, extra_fields=(), include_default_fields=True, include_region=False, include_policy=False, fields=()): # Lookup default fields for resource type. model = resource_type self._id_field = model.id self._date_field = getattr(model, 'date', None) fields = OrderedDict(fields) mfields = getattr(model, 'default_report_fields', None) if mfields is None: mfields = [model.id] if model.name != model.id: mfields.append(model.name) if getattr(model, 'date', None): mfields.append(model.date) if include_default_fields: fields.update(OrderedDict(zip(mfields, mfields))) for index, field in enumerate(extra_fields): # TODO this type coercion should be done at cli input, not here h, cexpr = field.split('=', 1) fields[h] = cexpr # Add these at the end so that they are the last fields if include_default_fields: if include_region: fields['Region'] = 'region' if include_policy: fields['Policy'] = 'policy' self.fields = fields