'default_get(fields) -> default_values
Return default values for the fields in ``fields_list``. Default
values are determined by the context, user defaults, and the model
itself.
:param fields_list: a list of field names
:return: a dictionary mapping each field name to its corresponding
default value, if it has one.'

@api.model
def default_get(self, fields_list):

    self.view_init(fields_list)
    defaults = {}
    parent_fields = defaultdict(list)
    for name in fields_list:
        key = ('default_' + name)
        if (key in self._context):
            defaults[name] = self._context[key]
            continue
        ir_values_dict = self.env['ir.values'].get_defaults_dict(self._name)
        if (name in ir_values_dict):
            defaults[name] = ir_values_dict[name]
            continue
        field = self._fields.get(name)
        if (field and field.default):
            defaults[name] = field.default(self)
            continue
        if (field and field.inherited):
            field = field.related_field
            parent_fields[field.model_name].append(field.name)
    defaults = self._convert_to_write(defaults)
    for (model, names) in parent_fields.iteritems():
        defaults.update(self.env[model].default_get(names))
    return defaults
