Impacted versions: 8.0

Steps to reproduce:
- Create a database with demo data
- Go to sales, product categories & attributes, attribute values
- Click on 'attribute' column name

Current behavior:
Attribute values are sorted by attribute database ID

Expected behavior:
Attribute values are sorted by attribute name

addons/product/product.py
return factor and (1.0 / factor) or 0.0
    def _factor_inv(self, cursor, user, ids, name, arg, context=None):
        res = {}
        for uom in self.browse(cursor, user, ids, context=context):
            res[uom.id] = self._compute_factor_inv(uom.factor)
        return res
    def _factor_inv_write(self, cursor, user, id, name, value, arg, context=None):
        return self.write(cursor, user, id, {'factor': self._compute_factor_inv(value)}, context=context)
    def name_create(self, cr, uid, name, context=None):
        """ The UoM category and factor are required, so we'll have to add temporary values
            for imported UoMs """
        if not context:
            context = {}
        uom_categ = self.pool.get('product.uom.categ')
        values = {self._rec_name: name, 'factor': 1}
        
        
        if not context.get('default_category_id'):
            categ_misc = 'Unsorted/Imported Units'
            categ_id = uom_categ.search(cr, uid, [('name', '=', categ_misc)])
            if categ_id:
                values['category_id'] = categ_id[0]
            else:
                values['category_id'] = uom_categ.name_create(
                    cr, uid, categ_misc, context=context)[0]
        uom_id = self.create(cr, uid, values, context=context)
        return self.name_get(cr, uid, [uom_id], context=context)[0]
    def create(self, cr, uid, data, context=None):