Rémi Cardona <remi.cardona@logilab.fr> [Tue, 30 Jun 2015 15:06:36 +0200] rev 10464
[test] Fix unittest_i18n to run properly with "pytest -t" (closes #5576169)
When running "pytest -t", many tests modules will be imported and run
within a single python process. unittest_i18n fails when run after tests
such as unittest_webtest.py or unittest_httptest.py.
The main reason is that unittest_i18n does various tricks to add a test
cube to the search path, which badly fails when a previous test module
has already loaded "stuff" (for lack of a better word).
Instead, let's just call the 'i18ncube' command with subprocess.
The change from logilab.common.testlib to unittest is not directly
needed, but comes as a free cleanup with the above changes.
Julien Cristau <julien.cristau@logilab.fr> [Mon, 29 Jun 2015 16:58:43 +0200] rev 10463
[server/test] fix random error in unittest_security
When entering a new Connection, we cache the user and its 'login'
attribute (with no permissions checking).
This test makes 'CWUser.login' unreadable by guests, and then proceeds
to make sure the 'anon' user can actually not read any 'login'
attribute. However, due to the above cnx initialization, anon's login
is actually cached, hence readable. This happens to make the test fail
sometimes depending on the order in which CWUser entities are returned,
because one of them has .complete() called, which as a side effect sets
the attribute cache to None for unreadable attributes.
Call .complete() on both entities to reset the login cache. While this
is still highly debatable, at least it's consistent.
Julien Cristau <julien.cristau@logilab.fr> [Mon, 29 Jun 2015 16:41:36 +0200] rev 10462
[entity] fix typo in comment
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 26 Jun 2015 16:10:33 +0200] rev 10461
[doc] Add a tutorial and extend documentation for ExtEntityImporter
Related to #5414753.
Yann Voté <yann.vote@logilab.fr> [Fri, 26 Jun 2015 16:09:27 +0200] rev 10460
[dataimport] introduce the importer and extentity classes
This introduces the ``ExtEntity`` class which is a transitional state between
data at external source and the actual CubicWeb entities.
``ExtEntitiesImporter`` is then in charge to turn a bunch of ext entities into
CW entities in repository, using a given store.
This changeset also introduces ``SimpleImportLog`` and ``HTMLImportLog`` which
implement the CW DataImportLog interface in order to show log messages in UI
using simple text and HTML formats respectively, instead of storing these
messages in database.
Both have mostly been backported from cubes.skos.dataimport.
Closes #5414753.
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 26 Jun 2015 17:01:03 +0200] rev 10459
[test] Use store.prepare_insert_relation instead of deprecated relate method
Follow-up for 1f5026e7d848.
Related to #5040344.
Sylvain Thénault <sylvain.thenault@logilab.fr> [Wed, 24 Jun 2015 23:30:47 +0200] rev 10458
[dataimport] since we have foreign key constraints in the database, 'entities' table should be updated first
Yann Voté <yann.vote@logilab.fr> [Wed, 24 Jun 2015 23:23:57 +0200] rev 10457
[dataimport] Move stores to new API.
Here is the final store API:
* ``prepare_insert_entity(<entity type>, **kwargs) -> eid``: given an entity
type, attributes and inlined relations, return the eid of the entity to be
inserted, *with no guarantee that anything has been inserted in database*,
* ``prepare_update_entity(<entity type>, eid, **kwargs) -> None``: given an
entity type and eid, promise for update given attributes and inlined
relations *with no guarantee that anything has been inserted in database*,
* ``prepare_insert_relation(eid_from, rtype, eid_to) -> None``: indicate that a
relation ``rtype`` should be added between entities with eids ``eid_from``
and ``eid_to``. Similarly to ``prepare_insert_entity()``, *there is no
guarantee that the relation will be inserted in database*,
* ``flush() -> None``: flush any temporary data to database. May be called
several times during an import,
* ``finish() -> None``: additional stuff to do after import is terminated.
**Warning:** ``prepare_update_entity()`` still needs to be implemented for
NoHookRQLObjectStore.
Related to #5040344