code: def get_item_properties(item, fields, mixed_case_fields=(), formatters=None):
      
      if formatters is None:
          formatters = {}
  
      row = []
  
      for field in fields:
          if field in formatters:
              row.append(formatters[field](item))
          else:
              if field in mixed_case_fields:
                  field_name = field.replace(' ', '_')
              else:
                  field_name = field.lower().replace(' ', '_')
              if not hasattr(item, field_name) and isinstance(item, dict):
                  data = item[field_name]
              else:
                  data = getattr(item, field_name, '')
              if data is None:
                  data = ''
              row.append(data)
      return tuple(row)
docs: Return a tuple containing the item properties.
  
      :param item: a single item resource (e.g. Server, Tenant, etc)
      :param fields: tuple of strings with the desired field names
      :param mixed_case_fields: tuple of field names to preserve case
      :param formatters: dictionary mapping field names to callables
         to format the values