# HG changeset patch # User Sylvain Thénault # Date 1475748950 -7200 # Node ID 6ab14a1afb6574a98c5267851bda2f37bf9b276f # Parent 39df042f4ab4c23f6ac5248554aa80b7944290c6 [entity] Reimplement and deprecate entity.cw_metainformation It shouldn't rely anymore on cnx.entity_metas which is itself deprecated, and the cw_metainformation API is similarly not needed anymore, access directly to cwuri / cw_source if needed. Related to #15538288 diff -r 39df042f4ab4 -r 6ab14a1afb65 cubicweb/entity.py --- a/cubicweb/entity.py Fri Sep 30 17:39:17 2016 +0200 +++ b/cubicweb/entity.py Thu Oct 06 12:15:50 2016 +0200 @@ -623,9 +623,13 @@ """ return self.has_eid() and self._cw_is_saved + @deprecated('[3.24] cw_metainformation is deprecated') @cached def cw_metainformation(self): - return self._cw.entity_metas(self.eid) + source = self.cw_source[0].name + return {'type': self.cw_etype, + 'extid': self.cwuri if source != 'system' else None, + 'source': {'uri': source}} def cw_check_perm(self, action): self.e_schema.check_perm(self._cw, action, eid=self.eid) diff -r 39df042f4ab4 -r 6ab14a1afb65 cubicweb/server/test/unittest_datafeed.py --- a/cubicweb/server/test/unittest_datafeed.py Fri Sep 30 17:39:17 2016 +0200 +++ b/cubicweb/server/test/unittest_datafeed.py Thu Oct 06 12:15:50 2016 +0200 @@ -84,10 +84,6 @@ self.assertEqual(entity.content, 'the cw web site') self.assertEqual(entity.cwuri, 'http://www.cubicweb.org/') self.assertEqual(entity.cw_source[0].name, u'ô myfeed') - self.assertEqual(entity.cw_metainformation(), - {'type': 'Card', - 'extid': b'http://www.cubicweb.org/'} - ) # test repo cache keys self.assertEqual(self.repo._type_extid_cache[entity.eid], ('Card', b'http://www.cubicweb.org/')) @@ -104,12 +100,7 @@ entity = cnx.execute('Card X').get_entity(0, 0) self.assertEqual(entity.cwuri, 'http://www.cubicweb.org/') self.assertEqual(entity.cw_source[0].name, 'myrenamedfeed') - self.assertEqual(entity.cw_metainformation(), - {'type': 'Card', - 'extid': b'http://www.cubicweb.org/'} - ) - self.assertEqual(self.repo._type_extid_cache[entity.eid], - ('Card', b'http://www.cubicweb.org/')) + self.assertEqual(self.repo._type_cache[entity.eid], 'Card') # test_delete_source cnx.execute('DELETE CWSource S WHERE S name "myrenamedfeed"') diff -r 39df042f4ab4 -r 6ab14a1afb65 cubicweb/server/test/unittest_ldapsource.py --- a/cubicweb/server/test/unittest_ldapsource.py Fri Sep 30 17:39:17 2016 +0200 +++ b/cubicweb/server/test/unittest_ldapsource.py Thu Oct 06 12:15:50 2016 +0200 @@ -284,8 +284,6 @@ self.assertEqual(len(rset), 1) e = rset.get_entity(0, 0) self.assertEqual(e.eid, eid) - self.assertEqual(e.cw_metainformation(), {'type': 'CWUser', - 'extid': None}) self.assertEqual(e.cw_source[0].name, 'system') self.assertTrue(e.creation_date) self.assertTrue(e.modification_date) @@ -294,11 +292,10 @@ self.assertEqual(len(rset), 1) self.assertTrue(self.repo.system_source.authenticate(cnx, 'syt', password='syt')) # make sure the pull from ldap have not "reverted" user as a ldap-feed user - self.assertEqual(e.cw_metainformation(), {'type': 'CWUser', - 'extid': None}) # and that the password stored in the system source is not empty or so user = cnx.execute('CWUser U WHERE U login "syt"').get_entity(0, 0) user.cw_clear_all_caches() + self.assertEqual(user.cw_source[0].name, 'system') cu = cnx.system_sql("SELECT cw_upassword FROM cw_cwuser WHERE cw_login='syt';") pwd = cu.fetchall()[0][0] self.assertIsNotNone(pwd) diff -r 39df042f4ab4 -r 6ab14a1afb65 cubicweb/test/unittest_entity.py --- a/cubicweb/test/unittest_entity.py Fri Sep 30 17:39:17 2016 +0200 +++ b/cubicweb/test/unittest_entity.py Thu Oct 06 12:15:50 2016 +0200 @@ -832,10 +832,14 @@ self.assertEqual(len(person.reverse_ecrit_par), 2) def test_metainformation(self): - with self.admin_access.web_request() as req: - note = req.create_entity('Note', type=u'z') + with self.admin_access.client_cnx() as cnx: + note = cnx.create_entity('Note', type=u'z') + cnx.commit() + note.cw_clear_all_caches() metainf = note.cw_metainformation() - self.assertEqual(metainf, {'type': u'Note', 'extid': None}) + self.assertEqual(metainf, {'type': u'Note', + 'extid': None, + 'source': {'uri': 'system'}}) def test_absolute_url_empty_field(self): with self.admin_access.web_request() as req: