def _make_key(self, data): """ Generate a unique identifier for an entry. This is better than SQL auto-increment because it is stable across mutltiple loads and thus creates stable URIs for entries. """ uniques = [self.name] for field in self.fields: if not field.key: continue obj = data.get(field.name) if isinstance(obj, dict): obj = obj.get('name', obj.get('id')) uniques.append(obj) return hash_values(uniques)
def _cell_id_for_row(self, row, query_dimensions): cell_keys = [] for dimension in query_dimensions: value = util.deep_get(row, dimension) if isinstance(value, dict): from_day = util.deep_get(value, 'from.day') if from_day: cell_keys.append(from_day) cell_keys.append(util.deep_get(value, 'to.day')) elif '_id' in value: cell_keys.append(value['_id']) elif 'name' in value: cell_keys.append(value['name']) else: cell_keys.append(value) return util.hash_values(map(lambda x: unicode(x).encode('utf8'), cell_keys))
def test_hash_values(): util.hash_values([u'fóo&bañ'])
def test_hash_values(self): hash_value = util.hash_values([u'fóo&bañ']) assert hash_value == 'a2a4c050e75206e5fe84dbb7fe525c5dde8c848d'
def test_hash(): h.assert_equal(hash_values(["foo", "bar", "baz"]), '976cbe6da83475797cbb55f3fc50bf174b138a60')