# HG changeset patch # User sylvain.thenault@logilab.fr # Date 1239980137 -7200 # Node ID 5fe84a5f7035f88a5ffcd7f01c11a3eae6cf4df4 # Parent 6cbc7bc8ea6d19fc5b4c252db1ebc2561e9c2c5e rename internal entity types to have CW prefix instead of E diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 __init__.py --- a/__init__.py Fri Apr 17 13:21:05 2009 +0200 +++ b/__init__.py Fri Apr 17 16:55:37 2009 +0200 @@ -212,16 +212,29 @@ # XXX 2.45 is allowing nicer entity type names, use this map for bw compat -ETYPE_NAME_MAP = {'Eetype': 'EEType', - 'Ertype': 'ERType', - 'Efrdef': 'EFRDef', - 'Enfrdef': 'ENFRDef', - 'Econstraint': 'EConstraint', - 'Econstrainttype': 'EConstraintType', - 'Epermission': 'EPermission', - 'Egroup': 'EGroup', - 'Euser': 'EUser', - 'Eproperty': 'EProperty', +ETYPE_NAME_MAP = {# 3.2 migration + 'ECache': 'CWCache', + 'EUser': 'CWUser', + 'EGroup': 'CWGroup', + 'EProperty': 'CWProperty', + 'EFRDef': 'CWAttribute', + 'ENFRDef': 'CWRelation', + 'ERType': 'CWRType', + 'EEType': 'CWEType', + 'EConstraintType': 'CWConstraintType', + 'EConstraint': 'CWConstraint', + 'EPermission': 'CWPermission', + # 2.45 migration + 'Eetype': 'CWEType', + 'Ertype': 'CWRType', + 'Efrdef': 'CWAttribute', + 'Enfrdef': 'CWRelation', + 'Econstraint': 'CWConstraint', + 'Econstrainttype': 'CWConstraintType', + 'Epermission': 'CWPermission', + 'Egroup': 'CWGroup', + 'Euser': 'CWUser', + 'Eproperty': 'CWProperty', 'Emailaddress': 'EmailAddress', 'Rqlexpression': 'RQLExpression', 'Trinfo': 'TrInfo', @@ -269,11 +282,6 @@ 'agueol': 'agueol', 'docaster': 'docaster', 'asteretud': 'asteretud', - - # XXX temp - 'keywords': 'keyword', - 'folders': 'folder', - 'tags': 'tag', } def neg_role(role): diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 __pkginfo__.py --- a/__pkginfo__.py Fri Apr 17 13:21:05 2009 +0200 +++ b/__pkginfo__.py Fri Apr 17 16:55:37 2009 +0200 @@ -6,7 +6,7 @@ distname = "cubicweb" modname = "cubicweb" -numversion = (3, 1, 4) +numversion = (3, 2, 0) version = '.'.join(str(num) for num in numversion) license = 'LGPL v2' diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 appobject.py --- a/appobject.py Fri Apr 17 13:21:05 2009 +0200 +++ b/appobject.py Fri Apr 17 16:55:37 2009 +0200 @@ -77,7 +77,7 @@ return cls(*args, **kwargs) # Eproperties definition: - # key: id of the property (the actual EProperty key is build using + # key: id of the property (the actual CWProperty key is build using # .. # value: tuple (property type, vocabfunc, default value, property description) # possible types are those used by `logilab.common.configuration` @@ -132,7 +132,7 @@ CACHE_REGISTRY[cachename] = cache _now = datetime.now() if _now > cache.latest_cache_lookup + ONESECOND: - ecache = self.req.execute('Any C,T WHERE C is ECache, C name %(name)s, C timestamp T', + ecache = self.req.execute('Any C,T WHERE C is CWCache, C name %(name)s, C timestamp T', {'name':cachename}).get_entity(0,0) cache.latest_cache_lookup = _now if not ecache.valid(cache.cache_creation_date): diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 common/test/unittest_mixins.py --- a/common/test/unittest_mixins.py Fri Apr 17 13:21:05 2009 +0200 +++ b/common/test/unittest_mixins.py Fri Apr 17 16:55:37 2009 +0200 @@ -7,14 +7,14 @@ self.execute('SET X state_of ET WHERE ET name "Bookmark", X eid %(x)s', {'x': s.eid}) es = self.user().wf_state('activated') - self.assertEquals(es.state_of[0].name, 'EUser') + self.assertEquals(es.state_of[0].name, 'CWUser') def test_wf_transition(self): t = self.add_entity('Transition', name=u'deactivate') self.execute('SET X transition_of ET WHERE ET name "Bookmark", X eid %(x)s', {'x': t.eid}) et = self.user().wf_transition('deactivate') - self.assertEquals(et.transition_of[0].name, 'EUser') + self.assertEquals(et.transition_of[0].name, 'CWUser') def test_change_state(self): user = self.user() diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 common/test/unittest_rest.py --- a/common/test/unittest_rest.py Fri Apr 17 13:21:05 2009 +0200 +++ b/common/test/unittest_rest.py Fri Apr 17 16:55:37 2009 +0200 @@ -5,7 +5,7 @@ class RestTC(EnvBasedTC): def context(self): - return self.execute('EUser X WHERE X login "admin"').get_entity(0, 0) + return self.execute('CWUser X WHERE X login "admin"').get_entity(0, 0) def test_eid_role(self): context = self.context() diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 dbapi.py --- a/dbapi.py Fri Apr 17 13:21:05 2009 +0200 +++ b/dbapi.py Fri Apr 17 16:55:37 2009 +0200 @@ -430,9 +430,9 @@ eid, login, groups, properties = self._repo.user_info(self.sessionid, props) if req is None: req = self.request() - rset = req.eid_rset(eid, 'EUser') - user = self.vreg.etype_class('EUser')(req, rset, row=0, groups=groups, - properties=properties) + rset = req.eid_rset(eid, 'CWUser') + user = self.vreg.etype_class('CWUser')(req, rset, row=0, groups=groups, + properties=properties) user['login'] = login # cache login return user diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 devtools/_apptest.py --- a/devtools/_apptest.py Fri Apr 17 13:21:05 2009 +0200 +++ b/devtools/_apptest.py Fri Apr 17 16:55:37 2009 +0200 @@ -21,10 +21,10 @@ from cubicweb.devtools import ApptestConfiguration, init_test_database from cubicweb.devtools.fake import FakeRequest -SYSTEM_ENTITIES = ('EGroup', 'EUser', - 'EFRDef', 'ENFRDef', - 'EConstraint', 'EConstraintType', 'EProperty', - 'EEType', 'ERType', +SYSTEM_ENTITIES = ('CWGroup', 'CWUser', + 'CWAttribute', 'CWRelation', + 'CWConstraint', 'CWConstraintType', 'CWProperty', + 'CWEType', 'CWRType', 'State', 'Transition', 'TrInfo', 'RQLExpression', ) @@ -50,7 +50,7 @@ ) def unprotected_entities(app_schema, strict=False): - """returned a Set of each non final entity type, excluding EGroup, and EUser... + """returned a Set of each non final entity type, excluding CWGroup, and CWUser... """ if strict: protected_entities = yams.schema.BASE_TYPES @@ -90,7 +90,7 @@ schema = self.vreg.schema # else we may run into problems since email address are ususally share in app tests # XXX should not be necessary anymore - schema.rschema('primary_email').set_rproperty('EUser', 'EmailAddress', 'composite', False) + schema.rschema('primary_email').set_rproperty('CWUser', 'EmailAddress', 'composite', False) self.deletable_entities = unprotected_entities(schema) def restore_database(self): @@ -119,7 +119,7 @@ def create_user(self, login, groups=('users',), req=None): req = req or self.create_request() cursor = self._orig_cnx.cursor(req) - rset = cursor.execute('INSERT EUser X: X login %(login)s, X upassword %(passwd)s,' + rset = cursor.execute('INSERT CWUser X: X login %(login)s, X upassword %(passwd)s,' 'X in_state S WHERE S name "activated"', {'login': unicode(login), 'passwd': login.encode('utf8')}) user = rset.get_entity(0, 0) diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 devtools/apptest.py --- a/devtools/apptest.py Fri Apr 17 13:21:05 2009 +0200 +++ b/devtools/apptest.py Fri Apr 17 16:55:37 2009 +0200 @@ -355,7 +355,7 @@ def create_user(self, user, groups=('users',), password=None, commit=True): if password is None: password = user - eid = self.execute('INSERT EUser X: X login %(x)s, X upassword %(p)s,' + eid = self.execute('INSERT CWUser X: X login %(x)s, X upassword %(p)s,' 'X in_state S WHERE S name "activated"', {'x': unicode(user), 'p': password})[0][0] groups = ','.join(repr(group) for group in groups) diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 devtools/fill.py --- a/devtools/fill.py Fri Apr 17 13:21:05 2009 +0200 +++ b/devtools/fill.py Fri Apr 17 16:55:37 2009 +0200 @@ -236,7 +236,7 @@ returns acceptable values for this attribute """ # XXX HACK, remove or fix asap - if etype in (('String', 'Int', 'Float', 'Boolean', 'Date', 'EGroup', 'EUser')): + if etype in (('String', 'Int', 'Float', 'Boolean', 'Date', 'CWGroup', 'CWUser')): return [] queries = [] for index in xrange(entity_num): diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 devtools/test/data/schema/relations.rel --- a/devtools/test/data/schema/relations.rel Fri Apr 17 13:21:05 2009 +0200 +++ b/devtools/test/data/schema/relations.rel Fri Apr 17 16:55:37 2009 +0200 @@ -23,11 +23,11 @@ Project uses Project Version version_of Project inline -Version todo_by EUser +Version todo_by CWUser Comment about Bug inline Comment about Story inline Comment about Comment inline -EUser interested_in Project +CWUser interested_in Project diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 devtools/test/unittest_testlib.py --- a/devtools/test/unittest_testlib.py Fri Apr 17 13:21:05 2009 +0200 +++ b/devtools/test/unittest_testlib.py Fri Apr 17 16:55:37 2009 +0200 @@ -24,7 +24,7 @@ self.view('raising', self.execute('Bug B'), template=None) def test_correct_view(self): - self.view('primary', self.execute('EUser U'), template=None) + self.view('primary', self.execute('CWUser U'), template=None) tests = [MyWebTest('test_error_view'), MyWebTest('test_correct_view')] result = self.runner.run(TestSuite(tests)) diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 doc/book/en/A03a-concepts.en.txt --- a/doc/book/en/A03a-concepts.en.txt Fri Apr 17 13:21:05 2009 +0200 +++ b/doc/book/en/A03a-concepts.en.txt Fri Apr 17 16:55:37 2009 +0200 @@ -267,7 +267,7 @@ * `set_header(header, value)`, adds an arbitrary header in the response * `cursor()` returns a RQL cursor on the session * `execute(*args, **kwargs)`, shortcut to ``.cursor().execute()`` - * `property_value(key)`, properties management (`EProperty`) + * `property_value(key)`, properties management (`CWProperty`) * dictionary `data` to store data to share informations between components *while a request is executed* diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 doc/book/en/B0011-schema-stdlib.en.txt --- a/doc/book/en/B0011-schema-stdlib.en.txt Fri Apr 17 13:21:05 2009 +0200 +++ b/doc/book/en/B0011-schema-stdlib.en.txt Fri Apr 17 16:55:37 2009 +0200 @@ -12,10 +12,10 @@ `````````````` The available system entities are: -* `EUser`, system users -* `EGroup`, users groups -* `EEType`, entity type -* `ERType`, relation type +* `CWUser`, system users +* `CWGroup`, users groups +* `CWEType`, entity type +* `CWRType`, relation type * `State`, workflow state * `Transition`, workflow transition @@ -24,8 +24,8 @@ * `EmailAddress`, email address, used by the system to send notifications to the users and also used by others optionnals schemas -* `EProperty`, used to configure the application -* `EPermission`, used to configure the security of the application +* `CWProperty`, used to configure the application +* `CWPermission`, used to configure the security of the application * `Card`, generic documenting card * `Bookmark`, an entity type used to allow a user to customize his links within diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 doc/book/en/B0012-schema-definition.en.txt --- a/doc/book/en/B0012-schema-definition.en.txt Fri Apr 17 13:21:05 2009 +0200 +++ b/doc/book/en/B0012-schema-definition.en.txt Fri Apr 17 16:55:37 2009 +0200 @@ -36,12 +36,12 @@ - `modification_date` (`Datetime`) - - `created_by` (`EUser`) (which user created the entity) + - `created_by` (`CWUser`) (which user created the entity) - - `owned_by` (`EUser`) (to whom the entity belongs; by default the + - `owned_by` (`CWUser`) (to whom the entity belongs; by default the creator but not necessary, and it could have multiple owners) - - `is` (`EEType`) + - `is` (`CWEType`) * relations can be defined by using `ObjectRelation` or `SubjectRelation`. @@ -165,7 +165,7 @@ inlined = True cardinality = '?*' subject = '*' - object = 'EUser' + object = 'CWUser' In addition to the permissions, the properties of the relation types (shared also by all definition of relation of this type) are : @@ -290,15 +290,15 @@ - the permissions `add` and `delete` are equivalent. Only `add`/`read` are actually taken in consideration. -In addition to that the entity type `EPermission` from the standard library +In addition to that the entity type `CWPermission` from the standard library allow to build very complex and dynamic security architecture. The schema of this entity type is as follow : :: - class EPermission(MetaEntityType): + class CWPermission(MetaEntityType): """entity type that may be used to construct some advanced security configuration """ name = String(required=True, indexed=True, internationalizable=True, maxsize=100) - require_group = SubjectRelation('EGroup', cardinality='+*', + require_group = SubjectRelation('CWGroup', cardinality='+*', description=_('groups to which the permission is granted')) require_state = SubjectRelation('State', description=_("entity'state in which the permission is applyable")) @@ -338,14 +338,14 @@ } inlined = True -This configuration indicates that an entity `EPermission` named +This configuration indicates that an entity `CWPermission` named "add_version" can be associated to a project and provides rights to create new versions on this project to specific groups. It is important to notice that : * in such case, we have to protect both the entity type "Version" and the relation associating a version to a project ("version_of") -* because of the genricity of the entity type `EPermission`, we have to execute +* because of the genricity of the entity type `CWPermission`, we have to execute a unification with the groups and/or the states if necessary in the expression ("U in_group G, P require_group G" in the above example) diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 doc/book/en/B0020-define-workflows.en.txt --- a/doc/book/en/B0020-define-workflows.en.txt Fri Apr 17 13:21:05 2009 +0200 +++ b/doc/book/en/B0020-define-workflows.en.txt Fri Apr 17 16:55:37 2009 +0200 @@ -69,7 +69,7 @@ _ = unicode - moderators = add_entity('EGroup', name=u"moderators") + moderators = add_entity('CWGroup', name=u"moderators") This adds the `moderators` user group. diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 doc/book/en/B1070-ui-components.en.txt --- a/doc/book/en/B1070-ui-components.en.txt Fri Apr 17 13:21:05 2009 +0200 +++ b/doc/book/en/B1070-ui-components.en.txt Fri Apr 17 16:55:37 2009 +0200 @@ -9,6 +9,6 @@ --------------------- XXXFILLME -EProperty +CWProperty --------- XXXFILLME diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 doc/book/en/C030-instance-config.en.txt --- a/doc/book/en/C030-instance-config.en.txt Fri Apr 17 13:21:05 2009 +0200 +++ b/doc/book/en/C030-instance-config.en.txt Fri Apr 17 16:55:37 2009 +0200 @@ -30,7 +30,7 @@ :`main.anonymous-user`, `main.anonymous-password`: login and password to use to connect to the RQL server with - HTTP anonymous connection. EUser account should exist. + HTTP anonymous connection. CWUser account should exist. :`main.base-url`: url base site to be used to generate the urls of web pages @@ -146,7 +146,7 @@ Configuring Eproperties ----------------------- -Other configuration settings are in the form of entities `EProperty` +Other configuration settings are in the form of entities `CWProperty` in the database. It must be edited via the web interface or by RQL queries. diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 doc/book/en/D070-cookbook.en.txt --- a/doc/book/en/D070-cookbook.en.txt Fri Apr 17 13:21:05 2009 +0200 +++ b/doc/book/en/D070-cookbook.en.txt Fri Apr 17 16:55:37 2009 +0200 @@ -42,7 +42,7 @@ update = "UPDATE entities SET source='system' WHERE eid=%(eid)s;" cursor.execute("SELECT eid,type,source,extid,mtime FROM entities WHERE source!='system'") for eid, type, source, extid, mtime in cursor.fetchall(): - if type != 'EUser': + if type != 'CWUser': print "don't know what to do with entity type", type continue if source != 'ldapuser': diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 doc/book/en/MERGE_ME-tut-create-app.en.txt --- a/doc/book/en/MERGE_ME-tut-create-app.en.txt Fri Apr 17 13:21:05 2009 +0200 +++ b/doc/book/en/MERGE_ME-tut-create-app.en.txt Fri Apr 17 16:55:37 2009 +0200 @@ -323,7 +323,7 @@ _ = unicode - moderators = add_entity('EGroup', name=u"moderators") + moderators = add_entity('CWGroup', name=u"moderators") submitted = add_state(_('submitted'), 'BlogEntry', initial=True) published = add_state(_('published'), 'BlogEntry') diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 doc/book/fr/02-foundation.fr.txt --- a/doc/book/fr/02-foundation.fr.txt Fri Apr 17 13:21:05 2009 +0200 +++ b/doc/book/fr/02-foundation.fr.txt Fri Apr 17 16:55:37 2009 +0200 @@ -258,7 +258,7 @@ réponse * `cursor()` retourne un curseur RQL sur la session * `execute(*args, **kwargs)`, raccourci vers .cursor().execute() - * `property_value(key)`, gestion des propriétés (`EProperty`) + * `property_value(key)`, gestion des propriétés (`CWProperty`) * le dictionaire `data` pour stocker des données pour partager de l'information entre les composants *durant l'éxécution de la requête*. diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 doc/book/fr/04-01-schema-stdlib.fr.txt --- a/doc/book/fr/04-01-schema-stdlib.fr.txt Fri Apr 17 13:21:05 2009 +0200 +++ b/doc/book/fr/04-01-schema-stdlib.fr.txt Fri Apr 17 16:55:37 2009 +0200 @@ -11,10 +11,10 @@ Schémas "systèmes" `````````````````` -* `EUser`, utilisateurs du système -* `EGroup`, groupes d'utilisateurs -* `EEType`, types d'entité -* `ERType`, types de relation +* `CWUser`, utilisateurs du système +* `CWGroup`, groupes d'utilisateurs +* `CWEType`, types d'entité +* `CWRType`, types de relation * `State`, état d'un workflow * `Transition`, transition d'un workflow @@ -23,8 +23,8 @@ * `EmailAddress`, adresse électronique, utilisé par le système de notification pour les utilisateurs et par d'autres schéma optionnels -* `EProperty`, utilisé pour configurer l'application -* `EPermission`, utilisé pour configurer la sécurité de l'application +* `CWProperty`, utilisé pour configurer l'application +* `CWPermission`, utilisé pour configurer la sécurité de l'application * `Card`, fiche documentaire générique * `Bookmark`, un type d'entité utilisé pour permetter à un utilisateur de diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 doc/book/fr/04-02-schema-definition.fr.txt --- a/doc/book/fr/04-02-schema-definition.fr.txt Fri Apr 17 13:21:05 2009 +0200 +++ b/doc/book/fr/04-02-schema-definition.fr.txt Fri Apr 17 16:55:37 2009 +0200 @@ -32,12 +32,12 @@ - `modification_date` (`Datetime`) - - `created_by` (`EUser`) (quel utilisateur a créé l'entité) + - `created_by` (`CWUser`) (quel utilisateur a créé l'entité) - - `owned_by` (`EUser`) (à qui appartient l'entité, par défaut le + - `owned_by` (`CWUser`) (à qui appartient l'entité, par défaut le créateur mais pas forcément et il peut exister plusieurs propriétaires) - - `is` (`EEType`) + - `is` (`CWEType`) * il est également possible de définir des relations dont le type d'entité est @@ -167,7 +167,7 @@ inlined = True cardinality = '?*' subject = '*' - object = 'EUser' + object = 'CWUser' En plus des permissions, les propriétés propres aux types de relation (et donc partagés par toutes les définitions de relation de ce type) sont : @@ -263,16 +263,16 @@ 'add'/'read' son pris en considération -En plus de cela, le type d'entité `EPermission` de la librairie standard permet +En plus de cela, le type d'entité `CWPermission` de la librairie standard permet de construire des modèles de sécurités très complexes et dynamiques. Le schéma de ce type d'entité est le suivant : :: - class EPermission(MetaEntityType): + class CWPermission(MetaEntityType): """entity type that may be used to construct some advanced security configuration """ name = String(required=True, indexed=True, internationalizable=True, maxsize=100) - require_group = SubjectRelation('EGroup', cardinality='+*', + require_group = SubjectRelation('CWGroup', cardinality='+*', description=_('groups to which the permission is granted')) require_state = SubjectRelation('State', description=_("entity'state in which the permission is applyable")) @@ -311,7 +311,7 @@ } inlined = True -Cette configuration suppose indique qu'une entité `EPermission` de nom +Cette configuration suppose indique qu'une entité `CWPermission` de nom "add_version" peut-être associée à un projet et donner le droit de créer des versions sur ce projet à des groupes spécifiques. Il est important de noter les points suivants : @@ -319,7 +319,7 @@ * dans ce cas il faut protéger à la fois le type d'entité "Version" et la relation liant une version à un projet ("version_of") -* du fait de la généricité du type d'entité `EPermission`, il faut effectuer +* du fait de la généricité du type d'entité `CWPermission`, il faut effectuer l'unification avec les groupes et / ou les états le cas échéant dans l'expression ("U in_group G, P require_group G" dans l'exemple ci-dessus) diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 doc/book/fr/06-define-workflows.fr.txt --- a/doc/book/fr/06-define-workflows.fr.txt Fri Apr 17 13:21:05 2009 +0200 +++ b/doc/book/fr/06-define-workflows.fr.txt Fri Apr 17 16:55:37 2009 +0200 @@ -117,7 +117,7 @@ _ = unicode - moderators = add_entity('EGroup', name=u"moderators") + moderators = add_entity('CWGroup', name=u"moderators") submitted = add_state(_('submitted'), 'BlogEntry', initial=True) published = add_state(_('published'), 'BlogEntry') diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 doc/book/fr/09-instance-config.fr.txt --- a/doc/book/fr/09-instance-config.fr.txt Fri Apr 17 13:21:05 2009 +0200 +++ b/doc/book/fr/09-instance-config.fr.txt Fri Apr 17 16:55:37 2009 +0200 @@ -29,7 +29,7 @@ :`main.anonymous-user`, `main.anonymous-password`: login et mot de passe à utiliser pour se connecter au serveur RQL lors des - connexions HTTP anonymes. Il faut que le compte EUser associé existe. + connexions HTTP anonymes. Il faut que le compte CWUser associé existe. :`main.base-url`: url de base du site, à utiliser pour générer les urls des pages web @@ -145,7 +145,7 @@ Configuration Eproperties ------------------------- -D'autres paramètres de configuration sont sous la forme d'entités `EProperty` +D'autres paramètres de configuration sont sous la forme d'entités `CWProperty` dans la base de données. Il faut donc les éditer via l'interface web ou par des requêtes rql. diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 doc/book/fr/12-ui-components.fr.txt --- a/doc/book/fr/12-ui-components.fr.txt Fri Apr 17 13:21:05 2009 +0200 +++ b/doc/book/fr/12-ui-components.fr.txt Fri Apr 17 16:55:37 2009 +0200 @@ -9,6 +9,6 @@ --------------------- XXXFILLME -EProperty +CWProperty --------- XXXFILLME diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 doc/book/fr/MERGE_ME-tut-create-app.fr.txt --- a/doc/book/fr/MERGE_ME-tut-create-app.fr.txt Fri Apr 17 13:21:05 2009 +0200 +++ b/doc/book/fr/MERGE_ME-tut-create-app.fr.txt Fri Apr 17 16:55:37 2009 +0200 @@ -331,7 +331,7 @@ _ = unicode - moderators = add_entity('EGroup', name=u"moderators") + moderators = add_entity('CWGroup', name=u"moderators") submitted = add_state(_('submitted'), 'BlogEntry', initial=True) published = add_state(_('published'), 'BlogEntry') diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 entities/__init__.py --- a/entities/__init__.py Fri Apr 17 13:21:05 2009 +0200 +++ b/entities/__init__.py Fri Apr 17 16:55:37 2009 +0200 @@ -124,7 +124,7 @@ @property def creator(self): - """return the EUser entity which has created this entity, or None if + """return the CWUser entity which has created this entity, or None if unknown or if the curent user doesn't has access to this euser """ try: diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 entities/authobjs.py --- a/entities/authobjs.py Fri Apr 17 13:21:05 2009 +0200 +++ b/entities/authobjs.py Fri Apr 17 16:55:37 2009 +0200 @@ -5,22 +5,23 @@ :contact: http://www.logilab.fr/ -- mailto:contact@logilab.fr """ __docformat__ = "restructuredtext en" + from logilab.common.decorators import cached from cubicweb import Unauthorized from cubicweb.entities import AnyEntity, fetch_config -class EGroup(AnyEntity): - id = 'EGroup' +class CWGroup(AnyEntity): + id = 'CWGroup' fetch_attrs, fetch_order = fetch_config(['name']) fetch_unrelated_order = fetch_order def db_key_name(self): """XXX goa specific""" return self.get('name') - -class EUser(AnyEntity): - id = 'EUser' + +class CWUser(AnyEntity): + id = 'CWUser' fetch_attrs, fetch_order = fetch_config(['login', 'firstname', 'surname']) fetch_unrelated_order = fetch_order @@ -31,7 +32,7 @@ def __init__(self, *args, **kwargs): groups = kwargs.pop('groups', None) properties = kwargs.pop('properties', None) - super(EUser, self).__init__(*args, **kwargs) + super(CWUser, self).__init__(*args, **kwargs) if groups is not None: self._groups = groups if properties is not None: @@ -91,7 +92,7 @@ def owns(self, eid): if hasattr(self.req, 'unsafe_execute'): # use unsafe_execute on the repository side, in case - # session's user doesn't have access to EUser + # session's user doesn't have access to CWUser execute = self.req.unsafe_execute else: execute = self.req.execute @@ -103,7 +104,7 @@ owns = cached(owns, keyarg=1) def has_permission(self, pname, contexteid=None): - rql = 'Any P WHERE P is EPermission, U eid %(u)s, U in_group G, '\ + rql = 'Any P WHERE P is CWPermission, U eid %(u)s, U in_group G, '\ 'P name %(pname)s, P require_group G' kwargs = {'pname': pname, 'u': self.eid} cachekey = None @@ -138,5 +139,5 @@ return self.get('login') from logilab.common.deprecation import class_renamed -Euser = class_renamed('Euser', EUser) -Euser.id = 'Euser' +EUser = class_renamed('EUser', CWUser) +EGroup = class_renamed('EGroup', CWGroup) diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 entities/lib.py --- a/entities/lib.py Fri Apr 17 13:21:05 2009 +0200 +++ b/entities/lib.py Fri Apr 17 16:55:37 2009 +0200 @@ -88,8 +88,8 @@ Emailaddress.id = 'Emailaddress' -class EProperty(AnyEntity): - id = 'EProperty' +class CWProperty(AnyEntity): + id = 'CWProperty' fetch_attrs, fetch_order = fetch_config(['pkey', 'value']) rest_attr = 'pkey' @@ -144,9 +144,9 @@ return self.synopsis or u'' -class ECache(AnyEntity): +class CWCache(AnyEntity): """Cache""" - id = 'ECache' + id = 'CWCache' fetch_attrs, fetch_order = fetch_config(['name']) diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 entities/schemaobjs.py --- a/entities/schemaobjs.py Fri Apr 17 13:21:05 2009 +0200 +++ b/entities/schemaobjs.py Fri Apr 17 16:55:37 2009 +0200 @@ -14,8 +14,8 @@ from cubicweb.entities import AnyEntity, fetch_config -class EEType(AnyEntity): - id = 'EEType' +class CWEType(AnyEntity): + id = 'CWEType' fetch_attrs, fetch_order = fetch_config(['name']) def dc_title(self): @@ -37,8 +37,8 @@ return self.get('name') -class ERType(AnyEntity): - id = 'ERType' +class CWRType(AnyEntity): + id = 'CWRType' fetch_attrs, fetch_order = fetch_config(['name']) def dc_title(self): @@ -85,8 +85,8 @@ return self.get('name') -class ENFRDef(AnyEntity): - id = 'ENFRDef' +class CWRelation(AnyEntity): + id = 'CWRelation' fetch_attrs = fetch_config(['cardinality'])[0] def dc_title(self): @@ -113,11 +113,11 @@ """ if self.relation_type: return self.relation_type[0].rest_path(), {} - return super(ENFRDef, self).after_deletion_path() + return super(CWRelation, self).after_deletion_path() -class EFRDef(ENFRDef): - id = 'EFRDef' +class CWAttribute(CWRelation): + id = 'CWAttribute' def dc_long_title(self): card = self.cardinality @@ -130,8 +130,8 @@ self.to_entity[0].name) -class EConstraint(AnyEntity): - id = 'EConstraint' +class CWConstraint(AnyEntity): + id = 'CWConstraint' fetch_attrs, fetch_order = fetch_config(['value']) def dc_title(self): @@ -143,7 +143,7 @@ """ if self.reverse_constrained_by: return self.reverse_constrained_by[0].rest_path(), {} - return super(EConstraint, self).after_deletion_path() + return super(CWConstraint, self).after_deletion_path() @property def type(self): @@ -184,8 +184,8 @@ return super(RQLExpression, self).after_deletion_path() -class EPermission(AnyEntity): - id = 'EPermission' +class CWPermission(AnyEntity): + id = 'CWPermission' fetch_attrs, fetch_order = fetch_config(['name', 'label']) def dc_title(self): @@ -200,4 +200,4 @@ permissionof = getattr(self, 'reverse_require_permission', ()) if len(permissionof) == 1: return permissionof[0].rest_path(), {} - return super(EPermission, self).after_deletion_path() + return super(CWPermission, self).after_deletion_path() diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 entities/test/unittest_base.py --- a/entities/test/unittest_base.py Fri Apr 17 13:21:05 2009 +0200 +++ b/entities/test/unittest_base.py Fri Apr 17 16:55:37 2009 +0200 @@ -10,7 +10,7 @@ from cubicweb import ValidationError from cubicweb.interfaces import IMileStone, IWorkflowable from cubicweb.entities import AnyEntity -from cubicweb.entities.authobjs import EUser +from cubicweb.entities.authobjs import CWUser from cubicweb.web.widgets import AutoCompletionWidget @@ -36,20 +36,20 @@ def test_entity_meta_attributes(self): # XXX move to yams - self.assertEquals(self.schema['EUser'].meta_attributes(), {}) + self.assertEquals(self.schema['CWUser'].meta_attributes(), {}) self.assertEquals(dict((str(k), v) for k, v in self.schema['Card'].meta_attributes().iteritems()), {'content_format': ('format', 'content')}) -class EUserTC(BaseEntityTC): +class CWUserTC(BaseEntityTC): def test_dc_title_and_name(self): - e = self.entity('EUser U WHERE U login "member"') + e = self.entity('CWUser U WHERE U login "member"') self.assertEquals(e.dc_title(), 'member') self.assertEquals(e.name(), 'member') - self.execute(u'SET X firstname "bouah" WHERE X is EUser, X login "member"') + self.execute(u'SET X firstname "bouah" WHERE X is CWUser, X login "member"') self.assertEquals(e.dc_title(), 'member') self.assertEquals(e.name(), u'bouah') - self.execute(u'SET X surname "lôt" WHERE X is EUser, X login "member"') + self.execute(u'SET X surname "lôt" WHERE X is CWUser, X login "member"') self.assertEquals(e.dc_title(), 'member') self.assertEquals(e.name(), u'bouah lôt') @@ -57,7 +57,7 @@ class StateAndTransitionsTC(BaseEntityTC): def test_transitions(self): - user = self.entity('EUser X') + user = self.entity('CWUser X') e = self.entity('State S WHERE S name "activated"') trs = list(e.transitions(user)) self.assertEquals(len(trs), 1) @@ -71,12 +71,12 @@ e = self.entity('State S WHERE S name "activated"') trs = list(e.transitions(user)) self.assertEquals(len(trs), 0) - user = self.entity('EUser X') + user = self.entity('CWUser X') self.assert_(not user.can_pass_transition('deactivate')) self.assert_(not user.can_pass_transition('activate')) def test_transitions_with_dest_specfied(self): - user = self.entity('EUser X') + user = self.entity('CWUser X') e = self.entity('State S WHERE S name "activated"') e2 = self.entity('State S WHERE S name "deactivated"') trs = list(e.transitions(user, e2.eid)) @@ -132,9 +132,9 @@ state3 = self.add_entity('State', name=u'state3') tr1 = self.add_entity('Transition', name=u'tr1') tr2 = self.add_entity('Transition', name=u'tr2') - self.execute('SET X state_of Y WHERE X eid in (%s, %s), Y is EEType, Y name "Card"' % + self.execute('SET X state_of Y WHERE X eid in (%s, %s), Y is CWEType, Y name "Card"' % (state1.eid, state2.eid)) - self.execute('SET X state_of Y WHERE X eid in (%s, %s), Y is EEType, Y name "Bookmark"' % + self.execute('SET X state_of Y WHERE X eid in (%s, %s), Y is CWEType, Y name "Bookmark"' % (state1.eid, state3.eid)) self.execute('SET X transition_of Y WHERE X eid %s, Y name "Card"' % tr1.eid) self.execute('SET X transition_of Y WHERE X eid %s, Y name "Bookmark"' % tr2.eid) @@ -171,9 +171,9 @@ state2 = self.add_entity('State', name=u'state2') tr1 = self.add_entity('Transition', name=u'tr1') tr2 = self.add_entity('Transition', name=u'tr2') - self.execute('SET X state_of Y WHERE X eid in (%s, %s), Y is EEType, Y name "Card"' % + self.execute('SET X state_of Y WHERE X eid in (%s, %s), Y is CWEType, Y name "Card"' % (state1.eid, state2.eid)) - self.execute('SET X state_of Y WHERE X eid in (%s, %s), Y is EEType, Y name "Bookmark"' % + self.execute('SET X state_of Y WHERE X eid in (%s, %s), Y is CWEType, Y name "Bookmark"' % (state1.eid, state2.eid)) self.execute('SET X transition_of Y WHERE X eid %s, Y name "Card"' % tr1.eid) self.execute('SET X transition_of Y WHERE X eid %s, Y name "Bookmark"' % tr2.eid) @@ -225,15 +225,15 @@ self.assertEquals(email.printable_value('address'), 'syt') -class EUserTC(BaseEntityTC): +class CWUserTC(BaseEntityTC): def test_complete(self): - e = self.entity('EUser X WHERE X login "admin"') + e = self.entity('CWUser X WHERE X login "admin"') e.complete() def test_matching_groups(self): - e = self.entity('EUser X WHERE X login "admin"') + e = self.entity('CWUser X WHERE X login "admin"') self.failUnless(e.matching_groups('managers')) self.failIf(e.matching_groups('xyz')) self.failUnless(e.matching_groups(('xyz', 'managers'))) @@ -251,7 +251,7 @@ e.change_state(deactivatedeid, u'deactivate 2') self.commit() # get a fresh user to avoid potential cache issues - e = self.entity('EUser X WHERE X eid %s' % e.eid) + e = self.entity('CWUser X WHERE X eid %s' % e.eid) self.assertEquals([tr.comment for tr in e.reverse_wf_info_for], [None, 'deactivate 1', 'activate 1', 'deactivate 2']) self.assertEquals(e.latest_trinfo().comment, 'deactivate 2') @@ -260,11 +260,11 @@ class InterfaceTC(EnvBasedTC): def test_nonregr_subclasses_and_mixins_interfaces(self): - class MyUser(EUser): + class MyUser(CWUser): __implements__ = (IMileStone,) self.vreg._loadedmods[__name__] = {} self.vreg.register_vobject_class(MyUser) - self.failUnless(implements(EUser, IWorkflowable)) + self.failUnless(implements(CWUser, IWorkflowable)) self.failUnless(implements(MyUser, IMileStone)) self.failUnless(implements(MyUser, IWorkflowable)) diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 goa/appobjects/dbmgmt.py --- a/goa/appobjects/dbmgmt.py Fri Apr 17 13:21:05 2009 +0200 +++ b/goa/appobjects/dbmgmt.py Fri Apr 17 16:55:37 2009 +0200 @@ -168,7 +168,7 @@ class ContentClear(StartupView): id = 'contentclear' __select__ = none_rset() & match_user_groups('managers') - skip_etypes = ('EGroup', 'EUser') + skip_etypes = ('CWGroup', 'CWUser') def call(self): # XXX should use unsafe_execute with all hooks deactivated diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 goa/appobjects/gauthservice.py --- a/goa/appobjects/gauthservice.py Fri Apr 17 13:21:05 2009 +0200 +++ b/goa/appobjects/gauthservice.py Fri Apr 17 16:55:37 2009 +0200 @@ -12,7 +12,7 @@ from google.appengine.api import users -class GAEUserLink(UserLink): +class GACWUserLink(UserLink): def anon_user_link(self): self.w(self.req._('anonymous')) @@ -26,5 +26,5 @@ def registration_callback(vreg): if hasattr(vreg.config, 'has_resource'): - vreg.register(GAEUserLink, clear=True) + vreg.register(GACWUserLink, clear=True) vreg.register(GAELogoutAction, clear=True) diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 goa/dbinit.py --- a/goa/dbinit.py Fri Apr 17 13:21:05 2009 +0200 +++ b/goa/dbinit.py Fri Apr 17 16:55:37 2009 +0200 @@ -15,7 +15,7 @@ try: return _GROUP_CACHE[groupname] except KeyError: - key = Key.from_path('EGroup', 'key_' + groupname, parent=None) + key = Key.from_path('CWGroup', 'key_' + groupname, parent=None) try: group = Get(key) except datastore_errors.EntityNotFoundError: @@ -29,7 +29,7 @@ def create_user(login, password, groups): """create a cubicweb user""" from cubicweb.server.utils import crypt_password - user = Entity('EUser', name=login) + user = Entity('CWUser', name=login) user['s_login'] = unicode(login) user['s_upassword'] = crypt_password(password) set_user_groups(user, groups) @@ -39,7 +39,7 @@ def create_groups(): """create initial cubicweb groups""" for groupname in ('managers', 'users', 'guests'): - group = Entity('EGroup', name='key_' + groupname) + group = Entity('CWGroup', name='key_' + groupname) group['s_name'] = unicode(groupname) Put(group) _GROUP_CACHE[groupname] = group @@ -74,23 +74,23 @@ gaeentity[dsrelation] = None def fix_entities(schema): - for etype in ('EUser', 'EGroup'): + for etype in ('CWUser', 'CWGroup'): eschema = schema.eschema(etype) for gaeentity in Query(etype).Run(): init_relations(gaeentity, eschema) - # XXX o_is on EEType entity - gaeentity['s_is'] = Key.from_path('EEType', 'key_' + etype, parent=None) + # XXX o_is on CWEType entity + gaeentity['s_is'] = Key.from_path('CWEType', 'key_' + etype, parent=None) Put(gaeentity) def init_persistent_schema(ssession, schema): execute = ssession.unsafe_execute - rql = ('INSERT EEType X: X name %(name)s, X description %(descr)s,' + rql = ('INSERT CWEType X: X name %(name)s, X description %(descr)s,' 'X final FALSE, X meta %(meta)s') - eschema = schema.eschema('EEType') - execute(rql, {'name': u'EEType', 'descr': unicode(eschema.description), + eschema = schema.eschema('CWEType') + execute(rql, {'name': u'CWEType', 'descr': unicode(eschema.description), 'meta': eschema.meta}) for eschema in schema.entities(): - if eschema.is_final() or eschema == 'EEType': + if eschema.is_final() or eschema == 'CWEType': continue execute(rql, {'name': unicode(eschema), 'meta': eschema.meta, 'descr': unicode(eschema.description)}) @@ -98,11 +98,11 @@ def insert_versions(ssession, config): execute = ssession.unsafe_execute # insert versions - execute('INSERT EProperty X: X pkey %(pk)s, X value%(v)s', + execute('INSERT CWProperty X: X pkey %(pk)s, X value%(v)s', {'pk': u'system.version.cubicweb', 'v': unicode(config.cubicweb_version())}) for cube in config.cubes(): - execute('INSERT EProperty X: X pkey %(pk)s, X value%(v)s', + execute('INSERT CWProperty X: X pkey %(pk)s, X value%(v)s', {'pk': u'system.version.%s' % cube, 'v': unicode(config.cube_version(cube))}) diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 goa/dbmyams.py --- a/goa/dbmyams.py Fri Apr 17 13:21:05 2009 +0200 +++ b/goa/dbmyams.py Fri Apr 17 16:55:37 2009 +0200 @@ -179,7 +179,7 @@ for obj in vars(appschema).values(): if isinstance(obj, type) and issubclass(obj, goadb.Model) and obj.__module__ == appschema.__name__: loader.load_dbmodel(obj.__name__, goadb.extract_dbmodel(obj)) - for erschema in ('EGroup', 'EEType', 'ERType', 'RQLExpression', + for erschema in ('CWGroup', 'CWEType', 'CWRType', 'RQLExpression', 'is_', 'is_instance_of', 'read_permission', 'add_permission', 'delete_permission', 'update_permission'): @@ -194,18 +194,18 @@ if extrahook is not None: extrahook(loader) if config['use-google-auth']: - loader.defined['EUser'].remove_relation('upassword') - loader.defined['EUser'].permissions['add'] = () - loader.defined['EUser'].permissions['delete'] = () - for etype in ('EGroup', 'RQLExpression'): + loader.defined['CWUser'].remove_relation('upassword') + loader.defined['CWUser'].permissions['add'] = () + loader.defined['CWUser'].permissions['delete'] = () + for etype in ('CWGroup', 'RQLExpression'): read_perm_rel = loader.defined[etype].get_relations('read_permission').next() read_perm_rel.cardinality = '**' - # XXX not yet ready for EUser workflow - loader.defined['EUser'].remove_relation('in_state') - loader.defined['EUser'].remove_relation('wf_info_for') - # remove RQLConstraint('NOT O name "owners"') on EUser in_group EGroup + # XXX not yet ready for CWUser workflow + loader.defined['CWUser'].remove_relation('in_state') + loader.defined['CWUser'].remove_relation('wf_info_for') + # remove RQLConstraint('NOT O name "owners"') on CWUser in_group CWGroup # since "owners" group is not persistent with gae - loader.defined['EUser'].get_relations('in_group').next().constraints = [] + loader.defined['CWUser'].get_relations('in_group').next().constraints = [] # return the full schema including the cubes' schema for ertype in loader.defined.values(): if getattr(ertype, 'inlined', False): diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 goa/doc/devmanual_fr/chap_autres_composants_ui.txt --- a/goa/doc/devmanual_fr/chap_autres_composants_ui.txt Fri Apr 17 13:21:05 2009 +0200 +++ b/goa/doc/devmanual_fr/chap_autres_composants_ui.txt Fri Apr 17 16:55:37 2009 +0200 @@ -9,6 +9,6 @@ --------------------- XXXFILLME -EProperty +CWProperty --------- XXXFILLME diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 goa/doc/devmanual_fr/chap_bases_framework_erudi.txt --- a/goa/doc/devmanual_fr/chap_bases_framework_erudi.txt Fri Apr 17 13:21:05 2009 +0200 +++ b/goa/doc/devmanual_fr/chap_bases_framework_erudi.txt Fri Apr 17 16:55:37 2009 +0200 @@ -127,7 +127,7 @@ réponse * `cursor()` retourne un curseur RQL sur la session * `execute(*args, **kwargs)`, raccourci vers .cursor().execute() - * `property_value(key)`, gestion des propriétés (`EProperty`) + * `property_value(key)`, gestion des propriétés (`CWProperty`) * le dictionaire `data` pour stocker des données pour partager de l'information entre les composants *durant l'éxécution de la requête*. diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 goa/doc/devmanual_fr/chap_configuration_instance.txt --- a/goa/doc/devmanual_fr/chap_configuration_instance.txt Fri Apr 17 13:21:05 2009 +0200 +++ b/goa/doc/devmanual_fr/chap_configuration_instance.txt Fri Apr 17 16:55:37 2009 +0200 @@ -27,7 +27,7 @@ :`main.anonymous-user`, `main.anonymous-password`: login et mot de passe à utiliser pour se connecter au serveur RQL lors des - connexions HTTP anonymes. Il faut que le compte EUser associé existe. + connexions HTTP anonymes. Il faut que le compte CWUser associé existe. :`main.base-url`: url de base du site, à utiliser pour générer les urls des pages web @@ -143,7 +143,7 @@ Configuration Eproperties ------------------------- -D'autres paramètres de configuration sont sous la forme d'entités `EProperty` +D'autres paramètres de configuration sont sous la forme d'entités `CWProperty` dans la base de données. Il faut donc les éditer via l'interface web ou par des requêtes rql. diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 goa/doc/devmanual_fr/sect_definition_schema.txt --- a/goa/doc/devmanual_fr/sect_definition_schema.txt Fri Apr 17 13:21:05 2009 +0200 +++ b/goa/doc/devmanual_fr/sect_definition_schema.txt Fri Apr 17 16:55:37 2009 +0200 @@ -27,8 +27,8 @@ - `eid` (`Int`) - `creation_date` (`Datetime`) - `modification_date` (`Datetime`) - - `owned_by` (`EUser`) - - `is` (`EEType`) + - `owned_by` (`CWUser`) + - `is` (`CWEType`) * il est également possible de définir des relations dont le type d'entité est l'objet en utilisant `ObjectRelation` plutôt que `SubjectRelation` @@ -158,7 +158,7 @@ inlined = True cardinality = '?*' subject = '*' - object = 'EUser' + object = 'CWUser' En plus des permissions, les propriétés propres aux types de relation (et donc partagés par toutes les définitions de relation de ce type) sont : @@ -254,16 +254,16 @@ 'add'/'read' son pris en considération -En plus de cela, le type d'entité `EPermission` de la librairie standard permet +En plus de cela, le type d'entité `CWPermission` de la librairie standard permet de construire des modèles de sécurités très complexes et dynamiques. Le schéma de ce type d'entité est le suivant : :: - class EPermission(MetaEntityType): + class CWPermission(MetaEntityType): """entity type that may be used to construct some advanced security configuration """ name = String(required=True, indexed=True, internationalizable=True, maxsize=100) - require_group = SubjectRelation('EGroup', cardinality='+*', + require_group = SubjectRelation('CWGroup', cardinality='+*', description=_('groups to which the permission is granted')) require_state = SubjectRelation('State', description=_("entity'state in which the permission is applyable")) @@ -302,7 +302,7 @@ } inlined = True -Cette configuration suppose indique qu'une entité `EPermission` de nom +Cette configuration suppose indique qu'une entité `CWPermission` de nom "add_version" peut-être associée à un projet et donner le droit de créer des versions sur ce projet à des groupes spécifiques. Il est important de noter les points suivants : @@ -310,7 +310,7 @@ * dans ce cas il faut protéger à la fois le type d'entité "Version" et la relation liant une version à un projet ("version_of") -* du fait de la généricité du type d'entité `EPermission`, il faut effectuer +* du fait de la généricité du type d'entité `CWPermission`, il faut effectuer l'unification avec les groupes et / ou les états le cas échéant dans l'expression ("U in_group G, P require_group G" dans l'exemple ci-dessus) diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 goa/doc/devmanual_fr/sect_stdlib_schemas.txt --- a/goa/doc/devmanual_fr/sect_stdlib_schemas.txt Fri Apr 17 13:21:05 2009 +0200 +++ b/goa/doc/devmanual_fr/sect_stdlib_schemas.txt Fri Apr 17 16:55:37 2009 +0200 @@ -9,10 +9,10 @@ Schémas "systèmes" `````````````````` -* `EUser`, utilisateurs du système -* `EGroup`, groupes d'utilisateurs -* `EEType`, types d'entité -* `ERType`, types de relation +* `CWUser`, utilisateurs du système +* `CWGroup`, groupes d'utilisateurs +* `CWEType`, types d'entité +* `CWRType`, types de relation * `State`, état d'un workflow * `Transition`, transition d'un workflow @@ -21,8 +21,8 @@ * `EmailAddress`, adresse électronique, utilisé par le système de notification pour les utilisateurs et par d'autres schéma optionnels -* `EProperty`, utilisé pour configurer l'application -* `EPermission`, utilisé pour configurer la sécurité de l'application +* `CWProperty`, utilisé pour configurer l'application +* `CWPermission`, utilisé pour configurer la sécurité de l'application * `Card`, fiche documentaire générique * `Bookmark`, un type d'entité utilisé pour permetter à un utilisateur de diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 goa/gaesource.py --- a/goa/gaesource.py Fri Apr 17 13:21:05 2009 +0200 +++ b/goa/gaesource.py Fri Apr 17 16:55:37 2009 +0200 @@ -36,11 +36,11 @@ pass else: entity.clear_related_cache(rtype, role) - if gaesubject.kind() == 'EUser': + if gaesubject.kind() == 'CWUser': for asession in session.repo._sessions.itervalues(): if asession.user.eid == subject: asession.user.clear_related_cache(rtype, 'subject') - if gaeobject.kind() == 'EUser': + if gaeobject.kind() == 'CWUser': for asession in session.repo._sessions.itervalues(): if asession.user.eid == object: asession.user.clear_related_cache(rtype, 'object') @@ -114,9 +114,9 @@ class GAESource(AbstractSource): """adapter for a system source on top of google appengine datastore""" - passwd_rql = "Any P WHERE X is EUser, X login %(login)s, X upassword P" - auth_rql = "Any X WHERE X is EUser, X login %(login)s, X upassword %(pwd)s" - _sols = ({'X': 'EUser', 'P': 'Password'},) + passwd_rql = "Any P WHERE X is CWUser, X login %(login)s, X upassword P" + auth_rql = "Any X WHERE X is CWUser, X login %(login)s, X upassword %(pwd)s" + _sols = ({'X': 'CWUser', 'P': 'Password'},) options = () @@ -157,7 +157,7 @@ """set the application'schema""" self.interpreter = RQLInterpreter(schema) self.schema = schema - if 'EUser' in schema and not self.repo.config['use-google-auth']: + if 'CWUser' in schema and not self.repo.config['use-google-auth']: # rql syntax trees used to authenticate users self._passwd_rqlst = self.compile_rql(self.passwd_rql) self._auth_rqlst = self.compile_rql(self.auth_rql) @@ -185,7 +185,7 @@ # XXX http://code.google.com/appengine/docs/users/userobjects.html # use a reference property to automatically work with email address # changes after the propagation feature is implemented - key = Key.from_path('EUser', 'key_' + login, parent=None) + key = Key.from_path('CWUser', 'key_' + login, parent=None) try: euser = session.datastore_get(key) # XXX fix user. Required until we find a better way to fix broken records @@ -195,14 +195,14 @@ return str(key) except datastore_errors.EntityNotFoundError: # create a record for this user - euser = Entity('EUser', name='key_' + login) + euser = Entity('CWUser', name='key_' + login) euser['s_login'] = login _init_groups(guser, euser) Put(euser) return str(euser.key()) def authenticate_local(self, session, login, password): - """return EUser eid for the given login/password if this account is + """return CWUser eid for the given login/password if this account is defined in this source, else raise `AuthenticationError` two queries are needed since passwords are stored crypted, so we have @@ -249,7 +249,7 @@ """replace an entity in the source""" gaeentity = entity.to_gae_model() _mark_modified(session, entity.to_gae_model()) - if gaeentity.kind() == 'EUser': + if gaeentity.kind() == 'CWUser': for asession in self.repo._sessions.itervalues(): if asession.user.eid == entity.eid: asession.user.update(dict(gaeentity)) diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 goa/test/unittest_db.py --- a/goa/test/unittest_db.py Fri Apr 17 13:21:05 2009 +0200 +++ b/goa/test/unittest_db.py Fri Apr 17 16:55:37 2009 +0200 @@ -18,20 +18,20 @@ MODEL_CLASSES = (Blog,) def test_set_none_relation(self): - eprop = self.add_entity('EProperty', pkey=u'ui.language', value=u'en') + eprop = self.add_entity('CWProperty', pkey=u'ui.language', value=u'en') self.failUnless('s_for_user' in eprop._dbmodel) self.assertEquals(eprop._dbmodel['s_for_user'], None) def test_euser_key(self): - euser = self.add_entity('EUser', login=u'toto', upassword='toto') + euser = self.add_entity('CWUser', login=u'toto', upassword='toto') self.assertEquals(euser.key().name(), 'key_toto') def test_egroup_key(self): - egroup = self.add_entity('EGroup', name=u'toto') + egroup = self.add_entity('CWGroup', name=u'toto') self.assertEquals(egroup.key().name(), 'key_toto') def test_password_encryption(self): - euser = self.add_entity('EUser', login=u'toto', upassword='toto') + euser = self.add_entity('CWUser', login=u'toto', upassword='toto') self.failUnless(euser.upassword != 'toto', euser.upassword) self.assertEquals(crypt_password('toto', euser.upassword[:2]), euser.upassword) diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 goa/test/unittest_editcontroller.py --- a/goa/test/unittest_editcontroller.py Fri Apr 17 13:21:05 2009 +0200 +++ b/goa/test/unittest_editcontroller.py Fri Apr 17 16:55:37 2009 +0200 @@ -8,7 +8,7 @@ from cubicweb.web import INTERNAL_FIELD_VALUE, Redirect from cubicweb.goa.goaconfig import GAEConfiguration -from cubicweb.entities.authobjs import EUser +from cubicweb.entities.authobjs import CWUser class EditControllerTC(GAEBasedTC): @@ -73,7 +73,7 @@ def test_validation_unique(self): """test creation of two linked entities""" user = self.user - self.req.form = {'eid': 'X', '__type:X': 'EUser', + self.req.form = {'eid': 'X', '__type:X': 'CWUser', 'login:X': self.user.login, 'edits-login:X': u'', 'upassword:X': u'toto', 'upassword-confirm:X': u'toto', 'edits-upassword:X': u'', } @@ -84,13 +84,13 @@ """checking that a manager user can edit itself""" self.skip('missing actual gae support, retry latter') user = self.user - basegroups = [str(eid) for eid, in self.req.execute('EGroup G WHERE X in_group G, X eid %(x)s', {'x': user.eid})] - groupeids = [eid for eid, in self.req.execute('EGroup G WHERE G name in ("managers", "users")')] + basegroups = [str(eid) for eid, in self.req.execute('CWGroup G WHERE X in_group G, X eid %(x)s', {'x': user.eid})] + groupeids = [eid for eid, in self.req.execute('CWGroup G WHERE G name in ("managers", "users")')] groups = [str(eid) for eid in groupeids] stateeid = [eid for eid, in self.req.execute('State S WHERE S name "activated"')][0] self.req.form = { 'eid': user.eid, - '__type:'+user.eid: 'EUser', + '__type:'+user.eid: 'CWUser', 'login:'+user.eid: unicode(user.login), 'firstname:'+user.eid: u'Th\xe9nault', 'surname:'+user.eid: u'Sylvain', @@ -115,10 +115,10 @@ user = self.create_user('user') cnx = self.login('user') req = self.request() - #self.assertEquals(self.ctrl.schema['EUser']._groups['read'], + #self.assertEquals(self.ctrl.schema['CWUser']._groups['read'], # ('managers', 'users')) req.form = { - 'eid': user.eid, '__type:'+user.eid: 'EUser', + 'eid': user.eid, '__type:'+user.eid: 'CWUser', '__maineid' : str(user.eid), 'upassword:'+user.eid: 'tournicoton', 'upassword-confirm:'+user.eid: 'tournicoton', @@ -134,10 +134,10 @@ relations (meaning no changes) """ user = self.user - groupeids = [eid for eid, in self.req.execute('EGroup G WHERE X in_group G, X eid %(x)s', {'x': user.eid})] + groupeids = [eid for eid, in self.req.execute('CWGroup G WHERE X in_group G, X eid %(x)s', {'x': user.eid})] self.req.form = { 'eid': user.eid, - '__type:'+user.eid: 'EUser', + '__type:'+user.eid: 'CWUser', 'login:'+user.eid: unicode(user.login), 'firstname:'+user.eid: u'Th\xe9nault', 'surname:'+user.eid: u'Sylvain', @@ -158,10 +158,10 @@ def test_create_multiple_linked(self): - gueid = self.req.execute('EGroup G WHERE G name "users"')[0][0] + gueid = self.req.execute('CWGroup G WHERE G name "users"')[0][0] self.req.form = {'eid': ['X', 'Y'], - '__type:X': 'EUser', + '__type:X': 'CWUser', '__maineid' : 'X', 'login:X': u'adim', 'edits-login:X': u'', 'upassword:X': u'toto', 'upassword-confirm:X': u'toto', 'edits-upassword:X': u'', @@ -184,7 +184,7 @@ def test_edit_multiple_linked(self): peid = self.create_user('adim').eid self.req.form = {'eid': [peid, 'Y'], - '__type:%s'%peid: 'EUser', + '__type:%s'%peid: 'CWUser', 'surname:%s'%peid: u'Di Masci', 'edits-surname:%s'%peid: '', '__type:Y': 'EmailAddress', @@ -203,7 +203,7 @@ emaileid = email.eid self.req.form = {'eid': [peid, emaileid], - '__type:%s'%peid: 'EUser', + '__type:%s'%peid: 'CWUser', 'surname:%s'%peid: u'Di Masci', 'edits-surname:%s'%peid: 'Di Masci', '__type:%s'%emaileid: 'EmailAddress', 'address:%s'%emaileid: u'adim@logilab.fr', 'edits-address:%s'%emaileid: 'dima@logilab.fr', @@ -226,13 +226,13 @@ """ user = self.user self.req.form = {'__cloned_eid:X': user.eid, - 'eid': 'X', '__type:X': 'EUser', + 'eid': 'X', '__type:X': 'CWUser', 'login:X': u'toto', 'edits-login:X': u'', 'upassword:X': u'toto', 'edits-upassword:X': u'', } self.assertRaises(ValidationError, self.publish, self.req) self.req.form = {'__cloned_eid:X': user.eid, - 'eid': 'X', '__type:X': 'EUser', + 'eid': 'X', '__type:X': 'CWUser', 'login:X': u'toto', 'edits-login:X': u'', 'upassword:X': u'toto', 'upassword-confirm:X': u'tutu', 'edits-upassword:X': u'', } @@ -241,7 +241,7 @@ def test_req_pending_insert(self): """make sure req's pending insertions are taken into account""" - tmpgroup = self.add_entity('EGroup', name=u"test") + tmpgroup = self.add_entity('CWGroup', name=u"test") user = self.user self.req.set_session_data('pending_insert', set([(user.eid, 'in_group', tmpgroup.eid)])) path, params = self.expect_redirect_publish() @@ -254,7 +254,7 @@ def test_req_pending_delete(self): """make sure req's pending deletions are taken into account""" user = self.user - groupeid = self.req.execute('INSERT EGroup G: G name "test", U in_group G WHERE U eid %(x)s', + groupeid = self.req.execute('INSERT CWGroup G: G name "test", U in_group G WHERE U eid %(x)s', {'x': user.eid})[0][0] usergroups = [gname for gname, in self.req.execute('Any N WHERE G name N, U in_group G, U eid %(u)s', {'u': user.eid})] @@ -273,13 +273,13 @@ def custom_login_edit(self, formparams, value, relations): formparams['login'] = value.upper() relations.append('X login %(login)s') - EUser.custom_login_edit = custom_login_edit + CWUser.custom_login_edit = custom_login_edit try: user = self.user eid = repr(user.eid) self.req.form = { 'eid': eid, - '__type:'+eid: 'EUser', + '__type:'+eid: 'CWUser', 'login:'+eid: u'foo', 'edits-login:'+eid: unicode(user.login), } @@ -287,7 +287,7 @@ rset = self.req.execute('Any L WHERE X eid %(x)s, X login L', {'x': user.eid}, 'x') self.assertEquals(rset[0][0], 'FOO') finally: - del EUser.custom_login_edit + del CWUser.custom_login_edit def test_redirect_apply_button(self): redirectrql = rql_for_eid(4012) # whatever @@ -358,10 +358,10 @@ def test_nonregr_multiple_empty_email_addr(self): - gueid = self.req.execute('EGroup G WHERE G name "users"')[0][0] + gueid = self.req.execute('CWGroup G WHERE G name "users"')[0][0] self.req.form = {'eid': ['X', 'Y'], - '__type:X': 'EUser', + '__type:X': 'CWUser', 'login:X': u'adim', 'edits-login:X': u'', 'upassword:X': u'toto', 'upassword-confirm:X': u'toto', 'edits-upassword:X': u'', 'in_group:X': gueid, 'edits-in_group:X': INTERNAL_FIELD_VALUE, @@ -385,7 +385,7 @@ self.req.execute('SET P use_email E, P primary_email E WHERE P eid %(p)s, E eid %(e)s', {'p' : p.eid, 'e' : e.eid}) self.req.form = {'__cloned_eid:X': p.eid, - 'eid': 'X', '__type:X': 'EUser', + 'eid': 'X', '__type:X': 'CWUser', 'login': u'dodo', 'edits-login': u'dodo', 'surname:X': u'Boom', 'edits-surname:X': u'', '__errorurl' : "whatever but required", @@ -400,7 +400,7 @@ self.req.form['rql'] = 'Any X WHERE X eid %s' % p.eid self.req.form['vid'] = 'copy' self.env.app.publish('view', self.req) - rset = self.req.execute('EUser P WHERE P surname "Boom"') + rset = self.req.execute('CWUser P WHERE P surname "Boom"') self.assertEquals(len(rset), 0) finally: p.__class__.skip_copy_for = old_skips diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 goa/test/unittest_metadata.py --- a/goa/test/unittest_metadata.py Fri Apr 17 13:21:05 2009 +0200 +++ b/goa/test/unittest_metadata.py Fri Apr 17 16:55:37 2009 +0200 @@ -26,7 +26,7 @@ GAEBasedTC.setUp(self) self.req = self.request() self.a = self.add_entity('Article') - self.p = self.add_entity('EProperty', pkey=u'ui.language', value=u'en') + self.p = self.add_entity('CWProperty', pkey=u'ui.language', value=u'en') self.session.commit() def _test_timestamp(self, entity, attr, sleep=0.1): @@ -96,9 +96,9 @@ en = self.execute('Any EN WHERE E name EN, X is E, X eid %(x)s', {'x': self.a.eid}, 'x')[0][0] self.assertEquals(en, 'Article') en = self.execute('Any EN WHERE E name EN, X is E, X eid %(x)s', {'x': self.p.eid}, 'x')[0][0] - self.assertEquals(en, 'EProperty') + self.assertEquals(en, 'CWProperty') en = self.execute('Any EN WHERE E name EN, X is E, X eid %(x)s', {'x': self.req.user.eid}, 'x')[0][0] - self.assertEquals(en, 'EUser') + self.assertEquals(en, 'CWUser') if __name__ == '__main__': diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 goa/test/unittest_rql.py --- a/goa/test/unittest_rql.py Fri Apr 17 13:21:05 2009 +0200 +++ b/goa/test/unittest_rql.py Fri Apr 17 16:55:37 2009 +0200 @@ -566,13 +566,13 @@ self.assertEquals(rset.rows, [[article2.eid]]) def test_8_not_relation_final_1(self): - rset = self.req.execute('Any G WHERE G is EGroup, NOT G name "guests"') + rset = self.req.execute('Any G WHERE G is CWGroup, NOT G name "guests"') self._check_rset_size(rset, 2, 1) self.assertUnorderedIterableEquals([g.name for g in rset.entities()], ['users', 'managers']) def test_8_not_relation_final_2(self): - rset = self.req.execute('Any GN WHERE G is EGroup, NOT G name "guests", G name GN') + rset = self.req.execute('Any GN WHERE G is CWGroup, NOT G name "guests", G name GN') self._check_rset_size(rset, 2, 1) self.assertUnorderedIterableEquals([gn for gn, in rset.rows], ['users', 'managers']) diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 goa/test/unittest_schema.py --- a/goa/test/unittest_schema.py Fri Apr 17 13:21:05 2009 +0200 +++ b/goa/test/unittest_schema.py Fri Apr 17 16:55:37 2009 +0200 @@ -21,8 +21,8 @@ set(('Boolean', 'Bytes', 'Date', 'Datetime', 'Float', 'Decimal', 'Int', 'Interval', 'Password', 'String', 'Time', - 'EEType', 'EGroup', 'EPermission', 'EProperty', 'ERType', - 'EUser', 'EmailAddress', + 'CWEType', 'CWGroup', 'CWPermission', 'CWProperty', 'CWRType', + 'CWUser', 'EmailAddress', 'RQLExpression', 'State', 'Transition', 'TrInfo', 'Article', 'Blog', 'YamsEntity'))) self.assertSetEquals(set(str(e) for e in schema.relations()), @@ -66,7 +66,7 @@ ('ambiguous_relation', 'talks_about', 'identity')) def test_yams_imported(self): - eschema = self.schema['EProperty'] + eschema = self.schema['CWProperty'] # only relations defined in the class are actually ordered orels = [str(e) for e in eschema.ordered_relations()] orels, others = orels[:3], orels[3:] @@ -87,7 +87,7 @@ ('Blog', 'Article')) def test_euser(self): - eschema = self.schema['EUser'] + eschema = self.schema['CWUser'] # XXX pretend to have some relations it has not self.assertEquals([str(e) for e in eschema.ordered_relations()], ['login', 'firstname', 'surname', 'last_login_time', diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 goa/testlib.py --- a/goa/testlib.py Fri Apr 17 13:21:05 2009 +0200 +++ b/goa/testlib.py Fri Apr 17 16:55:37 2009 +0200 @@ -177,7 +177,7 @@ def create_user(self, login, groups=('users',), req=None): assert not self.config['use-google-auth'] - user = self.add_entity('EUser', upassword=str(login), login=unicode(login)) + user = self.add_entity('CWUser', upassword=str(login), login=unicode(login)) cu = self.session.cursor() cu.execute('SET X in_group G WHERE X eid %%(x)s, G name IN(%s)' % ','.join(repr(g) for g in groups), diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 i18n/en.po --- a/i18n/en.po Fri Apr 17 13:21:05 2009 +0200 +++ b/i18n/en.po Fri Apr 17 16:55:37 2009 +0200 @@ -227,70 +227,70 @@ msgid "Do you want to delete the following element(s) ?" msgstr "" -msgid "ECache" -msgstr "" - -msgid "ECache_plural" -msgstr "" - -msgid "EConstraint" +msgid "CWCache" +msgstr "" + +msgid "CWCache_plural" +msgstr "" + +msgid "CWConstraint" msgstr "Constraint" -msgid "EConstraintType" +msgid "CWConstraintType" msgstr "Constraint type" -msgid "EConstraintType_plural" +msgid "CWConstraintType_plural" msgstr "Constraint types" -msgid "EConstraint_plural" +msgid "CWConstraint_plural" msgstr "Constraints" -msgid "EEType" +msgid "CWEType" msgstr "Entity type" -msgid "EEType_plural" +msgid "CWEType_plural" msgstr "Entity types" -msgid "EFRDef" +msgid "CWAttribute" msgstr "Attribute" -msgid "EFRDef_plural" +msgid "CWAttribute_plural" msgstr "Attributes" -msgid "EGroup" +msgid "CWGroup" msgstr "Group" -msgid "EGroup_plural" +msgid "CWGroup_plural" msgstr "Groups" -msgid "ENFRDef" +msgid "CWRelation" msgstr "Relation" -msgid "ENFRDef_plural" +msgid "CWRelation_plural" msgstr "Relations" -msgid "EPermission" +msgid "CWPermission" msgstr "Permission" -msgid "EPermission_plural" +msgid "CWPermission_plural" msgstr "Permissions" -msgid "EProperty" +msgid "CWProperty" msgstr "Property" -msgid "EProperty_plural" +msgid "CWProperty_plural" msgstr "Properties" -msgid "ERType" +msgid "CWRType" msgstr "Relation type" -msgid "ERType_plural" +msgid "CWRType_plural" msgstr "Relation types" -msgid "EUser" +msgid "CWUser" msgstr "User" -msgid "EUser_plural" +msgid "CWUser_plural" msgstr "Users" msgid "Email body: " @@ -335,37 +335,37 @@ msgid "New Card" msgstr "New card" -msgid "New ECache" -msgstr "" - -msgid "New EConstraint" +msgid "New CWCache" +msgstr "" + +msgid "New CWConstraint" msgstr "New constraint" -msgid "New EConstraintType" +msgid "New CWConstraintType" msgstr "New constraint type" -msgid "New EEType" +msgid "New CWEType" msgstr "New entity type" -msgid "New EFRDef" +msgid "New CWAttribute" msgstr "New attribute" -msgid "New EGroup" +msgid "New CWGroup" msgstr "New group" -msgid "New ENFRDef" +msgid "New CWRelation" msgstr "New relation" -msgid "New EPermission" +msgid "New CWPermission" msgstr "New permission" -msgid "New EProperty" +msgid "New CWProperty" msgstr "New property" -msgid "New ERType" +msgid "New CWRType" msgstr "New relation type" -msgid "New EUser" +msgid "New CWUser" msgstr "New user" msgid "New EmailAddress" @@ -474,37 +474,37 @@ msgid "This Card" msgstr "This card" -msgid "This ECache" -msgstr "" - -msgid "This EConstraint" +msgid "This CWCache" +msgstr "" + +msgid "This CWConstraint" msgstr "This constraint" -msgid "This EConstraintType" +msgid "This CWConstraintType" msgstr "This constraint type" -msgid "This EEType" +msgid "This CWEType" msgstr "This entity type" -msgid "This EFRDef" +msgid "This CWAttribute" msgstr "This attribute" -msgid "This EGroup" +msgid "This CWGroup" msgstr "This group" -msgid "This ENFRDef" +msgid "This CWRelation" msgstr "This relation" -msgid "This EPermission" +msgid "This CWPermission" msgstr "This permission" -msgid "This EProperty" +msgid "This CWProperty" msgstr "This property" -msgid "This ERType" +msgid "This CWRType" msgstr "This relation type" -msgid "This EUser" +msgid "This CWUser" msgstr "This user" msgid "This EmailAddress" @@ -745,49 +745,49 @@ msgid "add" msgstr "" -msgid "add Bookmark bookmarked_by EUser object" +msgid "add Bookmark bookmarked_by CWUser object" msgstr "bookmark" -msgid "add EEType add_permission RQLExpression subject" +msgid "add CWEType add_permission RQLExpression subject" msgstr "rql expression for the add permission" -msgid "add EEType delete_permission RQLExpression subject" +msgid "add CWEType delete_permission RQLExpression subject" msgstr "rql expression for the delete permission" -msgid "add EEType read_permission RQLExpression subject" +msgid "add CWEType read_permission RQLExpression subject" msgstr "rql expression for the read permission" -msgid "add EEType update_permission RQLExpression subject" +msgid "add CWEType update_permission RQLExpression subject" msgstr "rql expression for the update permission" -msgid "add EFRDef constrained_by EConstraint subject" +msgid "add CWAttribute constrained_by CWConstraint subject" msgstr "constraint" -msgid "add EFRDef relation_type ERType object" +msgid "add CWAttribute relation_type CWRType object" msgstr "attribute definition" -msgid "add ENFRDef constrained_by EConstraint subject" +msgid "add CWRelation constrained_by CWConstraint subject" msgstr "constraint" -msgid "add ENFRDef relation_type ERType object" +msgid "add CWRelation relation_type CWRType object" msgstr "relation definition" -msgid "add EProperty for_user EUser object" +msgid "add CWProperty for_user CWUser object" msgstr "property" -msgid "add ERType add_permission RQLExpression subject" +msgid "add CWRType add_permission RQLExpression subject" msgstr "rql expression for the add permission" -msgid "add ERType delete_permission RQLExpression subject" +msgid "add CWRType delete_permission RQLExpression subject" msgstr "rql expression for the delete permission" -msgid "add ERType read_permission RQLExpression subject" +msgid "add CWRType read_permission RQLExpression subject" msgstr "rql expression for the read permission" -msgid "add EUser in_group EGroup object" +msgid "add CWUser in_group CWGroup object" msgstr "user" -msgid "add EUser use_email EmailAddress subject" +msgid "add CWUser use_email EmailAddress subject" msgstr "email address" msgid "add State allowed_transition Transition object" @@ -796,7 +796,7 @@ msgid "add State allowed_transition Transition subject" msgstr "allowed transition" -msgid "add State state_of EEType object" +msgid "add State state_of CWEType object" msgstr "state" msgid "add Transition condition RQLExpression subject" @@ -808,7 +808,7 @@ msgid "add Transition destination_state State subject" msgstr "destination state" -msgid "add Transition transition_of EEType object" +msgid "add Transition transition_of CWEType object" msgstr "transition" msgid "add a Bookmark" @@ -817,37 +817,37 @@ msgid "add a Card" msgstr "add a card" -msgid "add a ECache" -msgstr "" - -msgid "add a EConstraint" +msgid "add a CWCache" +msgstr "" + +msgid "add a CWConstraint" msgstr "add a constraint" -msgid "add a EConstraintType" +msgid "add a CWConstraintType" msgstr "add a constraint type" -msgid "add a EEType" +msgid "add a CWEType" msgstr "add an entity type" -msgid "add a EFRDef" +msgid "add a CWAttribute" msgstr "add an attribute" -msgid "add a EGroup" +msgid "add a CWGroup" msgstr "add a group" -msgid "add a ENFRDef" +msgid "add a CWRelation" msgstr "add a relation" -msgid "add a EPermission" +msgid "add a CWPermission" msgstr "add a permission" -msgid "add a EProperty" +msgid "add a CWProperty" msgstr "add a property" -msgid "add a ERType" +msgid "add a CWRType" msgstr "add a relation type" -msgid "add a EUser" +msgid "add a CWUser" msgstr "add a user" msgid "add a EmailAddress" @@ -1342,54 +1342,54 @@ msgid "created_by_object" msgstr "has created" -msgid "creating Bookmark (Bookmark bookmarked_by EUser %(linkto)s)" +msgid "creating Bookmark (Bookmark bookmarked_by CWUser %(linkto)s)" msgstr "creating bookmark for %(linkto)s" -msgid "creating EConstraint (EFRDef %(linkto)s constrained_by EConstraint)" +msgid "creating CWConstraint (CWAttribute %(linkto)s constrained_by CWConstraint)" msgstr "creating constraint for attribute %(linkto)s" -msgid "creating EConstraint (ENFRDef %(linkto)s constrained_by EConstraint)" +msgid "creating CWConstraint (CWRelation %(linkto)s constrained_by CWConstraint)" msgstr "creating constraint for relation %(linkto)s" -msgid "creating EFRDef (EFRDef relation_type ERType %(linkto)s)" +msgid "creating CWAttribute (CWAttribute relation_type CWRType %(linkto)s)" msgstr "creating attribute %(linkto)s" -msgid "creating ENFRDef (ENFRDef relation_type ERType %(linkto)s)" +msgid "creating CWRelation (CWRelation relation_type CWRType %(linkto)s)" msgstr "creating relation %(linkto)s" -msgid "creating EProperty (EProperty for_user EUser %(linkto)s)" +msgid "creating CWProperty (CWProperty for_user CWUser %(linkto)s)" msgstr "creating property for user %(linkto)s" -msgid "creating EUser (EUser in_group EGroup %(linkto)s)" +msgid "creating CWUser (CWUser in_group CWGroup %(linkto)s)" msgstr "creating a new user in group %(linkto)s" -msgid "creating EmailAddress (EUser %(linkto)s use_email EmailAddress)" +msgid "creating EmailAddress (CWUser %(linkto)s use_email EmailAddress)" msgstr "creating email address for user %(linkto)s" -msgid "creating RQLExpression (EEType %(linkto)s add_permission RQLExpression)" +msgid "creating RQLExpression (CWEType %(linkto)s add_permission RQLExpression)" msgstr "creating rql expression for add permission on %(linkto)s" msgid "" -"creating RQLExpression (EEType %(linkto)s delete_permission RQLExpression)" +"creating RQLExpression (CWEType %(linkto)s delete_permission RQLExpression)" msgstr "creating rql expression for delete permission on %(linkto)s" msgid "" -"creating RQLExpression (EEType %(linkto)s read_permission RQLExpression)" +"creating RQLExpression (CWEType %(linkto)s read_permission RQLExpression)" msgstr "creating rql expression for read permission on %(linkto)s" msgid "" -"creating RQLExpression (EEType %(linkto)s update_permission RQLExpression)" +"creating RQLExpression (CWEType %(linkto)s update_permission RQLExpression)" msgstr "creating rql expression for update permission on %(linkto)s" -msgid "creating RQLExpression (ERType %(linkto)s add_permission RQLExpression)" +msgid "creating RQLExpression (CWRType %(linkto)s add_permission RQLExpression)" msgstr "creating rql expression for add permission on relations %(linkto)s" msgid "" -"creating RQLExpression (ERType %(linkto)s delete_permission RQLExpression)" +"creating RQLExpression (CWRType %(linkto)s delete_permission RQLExpression)" msgstr "creating rql expression for delete permission on relations %(linkto)s" msgid "" -"creating RQLExpression (ERType %(linkto)s read_permission RQLExpression)" +"creating RQLExpression (CWRType %(linkto)s read_permission RQLExpression)" msgstr "creating rql expression for read permission on relations %(linkto)s" msgid "creating RQLExpression (Transition %(linkto)s condition RQLExpression)" @@ -1398,7 +1398,7 @@ msgid "creating State (State allowed_transition Transition %(linkto)s)" msgstr "creating a state able to trigger transition %(linkto)s" -msgid "creating State (State state_of EEType %(linkto)s)" +msgid "creating State (State state_of CWEType %(linkto)s)" msgstr "creating state for the %(linkto)s entity type" msgid "creating State (Transition %(linkto)s destination_state State)" @@ -1410,7 +1410,7 @@ msgid "creating Transition (Transition destination_state State %(linkto)s)" msgstr "creating transition leading to state %(linkto)s" -msgid "creating Transition (Transition transition_of EEType %(linkto)s)" +msgid "creating Transition (Transition transition_of CWEType %(linkto)s)" msgstr "creating transition for the %(linkto)s entity type" msgid "creation" @@ -2349,37 +2349,37 @@ msgid "remove this Card" msgstr "remove this card" -msgid "remove this ECache" -msgstr "" - -msgid "remove this EConstraint" +msgid "remove this CWCache" +msgstr "" + +msgid "remove this CWConstraint" msgstr "remove this constraint" -msgid "remove this EConstraintType" +msgid "remove this CWConstraintType" msgstr "remove this constraint type" -msgid "remove this EEType" +msgid "remove this CWEType" msgstr "remove this entity type" -msgid "remove this EFRDef" +msgid "remove this CWAttribute" msgstr "remove this attribute" -msgid "remove this EGroup" +msgid "remove this CWGroup" msgstr "remove this group" -msgid "remove this ENFRDef" +msgid "remove this CWRelation" msgstr "remove this relation" -msgid "remove this EPermission" +msgid "remove this CWPermission" msgstr "remove this permission" -msgid "remove this EProperty" +msgid "remove this CWProperty" msgstr "remove this property" -msgid "remove this ERType" +msgid "remove this CWRType" msgstr "remove this relation type" -msgid "remove this EUser" +msgid "remove this CWUser" msgstr "remove this user" msgid "remove this EmailAddress" diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 i18n/es.po --- a/i18n/es.po Fri Apr 17 13:21:05 2009 +0200 +++ b/i18n/es.po Fri Apr 17 16:55:37 2009 +0200 @@ -232,70 +232,70 @@ msgid "Do you want to delete the following element(s) ?" msgstr "Desea suprimir el(los) elemento(s) siguiente(s)" -msgid "ECache" +msgid "CWCache" msgstr "Memoria Cache" -msgid "ECache_plural" +msgid "CWCache_plural" msgstr "Memorias Caches" -msgid "EConstraint" +msgid "CWConstraint" msgstr "Condición" -msgid "EConstraintType" +msgid "CWConstraintType" msgstr "Tipo de condición" -msgid "EConstraintType_plural" +msgid "CWConstraintType_plural" msgstr "Tipos de condición" -msgid "EConstraint_plural" +msgid "CWConstraint_plural" msgstr "Condiciones" -msgid "EEType" +msgid "CWEType" msgstr "Tipo de entidades" -msgid "EEType_plural" +msgid "CWEType_plural" msgstr "Tipos de entidades" -msgid "EFRDef" +msgid "CWAttribute" msgstr "Atributo" -msgid "EFRDef_plural" +msgid "CWAttribute_plural" msgstr "Atributos" -msgid "EGroup" +msgid "CWGroup" msgstr "Groupo" -msgid "EGroup_plural" +msgid "CWGroup_plural" msgstr "Groupos" -msgid "ENFRDef" +msgid "CWRelation" msgstr "Relación" -msgid "ENFRDef_plural" +msgid "CWRelation_plural" msgstr "Relaciones" -msgid "EPermission" +msgid "CWPermission" msgstr "Autorización" -msgid "EPermission_plural" +msgid "CWPermission_plural" msgstr "Autorizaciones" -msgid "EProperty" +msgid "CWProperty" msgstr "Propiedad" -msgid "EProperty_plural" +msgid "CWProperty_plural" msgstr "Propiedades" -msgid "ERType" +msgid "CWRType" msgstr "Tipo de relación" -msgid "ERType_plural" +msgid "CWRType_plural" msgstr "Tipos de relación" -msgid "EUser" +msgid "CWUser" msgstr "Usuario" -msgid "EUser_plural" +msgid "CWUser_plural" msgstr "Usuarios" msgid "Email body: " @@ -340,37 +340,37 @@ msgid "New Card" msgstr "Nueva ficha" -msgid "New ECache" +msgid "New CWCache" msgstr "Nueva memoria cache" -msgid "New EConstraint" +msgid "New CWConstraint" msgstr "Nueva condición" -msgid "New EConstraintType" +msgid "New CWConstraintType" msgstr "Nuevo tipo de condición" -msgid "New EEType" +msgid "New CWEType" msgstr "Nuevo tipo de entidad" -msgid "New EFRDef" +msgid "New CWAttribute" msgstr "Nueva definición de relación final" -msgid "New EGroup" +msgid "New CWGroup" msgstr "Nuevo grupo" -msgid "New ENFRDef" +msgid "New CWRelation" msgstr "Nueva definición de relación final" -msgid "New EPermission" +msgid "New CWPermission" msgstr "Nueva autorización" -msgid "New EProperty" +msgid "New CWProperty" msgstr "Nueva Propiedad" -msgid "New ERType" +msgid "New CWRType" msgstr "Nuevo tipo de relación" -msgid "New EUser" +msgid "New CWUser" msgstr "Nuevo usuario" msgid "New EmailAddress" @@ -479,37 +479,37 @@ msgid "This Card" msgstr "Esta Ficha" -msgid "This ECache" +msgid "This CWCache" msgstr "Esta Memoria Cache" -msgid "This EConstraint" +msgid "This CWConstraint" msgstr "Esta condición" -msgid "This EConstraintType" +msgid "This CWConstraintType" msgstr "Este tipo de condición" -msgid "This EEType" +msgid "This CWEType" msgstr "Este tipo de Entidad" -msgid "This EFRDef" +msgid "This CWAttribute" msgstr "Esta definición de relación final" -msgid "This EGroup" +msgid "This CWGroup" msgstr "Este grupo" -msgid "This ENFRDef" +msgid "This CWRelation" msgstr "Esta definición de relación no final" -msgid "This EPermission" +msgid "This CWPermission" msgstr "Esta autorización" -msgid "This EProperty" +msgid "This CWProperty" msgstr "Esta propiedad" -msgid "This ERType" +msgid "This CWRType" msgstr "Este tipo de relación" -msgid "This EUser" +msgid "This CWUser" msgstr "Este usuario" msgid "This EmailAddress" @@ -766,49 +766,49 @@ msgid "add" msgstr "agregar" -msgid "add Bookmark bookmarked_by EUser object" +msgid "add Bookmark bookmarked_by CWUser object" msgstr "" -msgid "add EEType add_permission RQLExpression subject" +msgid "add CWEType add_permission RQLExpression subject" msgstr "Definir una expresión RQL de agregación" -msgid "add EEType delete_permission RQLExpression subject" +msgid "add CWEType delete_permission RQLExpression subject" msgstr "Definir una expresión RQL de eliminación" -msgid "add EEType read_permission RQLExpression subject" +msgid "add CWEType read_permission RQLExpression subject" msgstr "Definir una expresión RQL de lectura" -msgid "add EEType update_permission RQLExpression subject" +msgid "add CWEType update_permission RQLExpression subject" msgstr "Definir una expresión RQL de actualización" -msgid "add EFRDef constrained_by EConstraint subject" +msgid "add CWAttribute constrained_by CWConstraint subject" msgstr "condición" -msgid "add EFRDef relation_type ERType object" +msgid "add CWAttribute relation_type CWRType object" msgstr "definición de atributo" -msgid "add ENFRDef constrained_by EConstraint subject" +msgid "add CWRelation constrained_by CWConstraint subject" msgstr "condición" -msgid "add ENFRDef relation_type ERType object" +msgid "add CWRelation relation_type CWRType object" msgstr "definición de relación" -msgid "add EProperty for_user EUser object" +msgid "add CWProperty for_user CWUser object" msgstr "propiedad" -msgid "add ERType add_permission RQLExpression subject" +msgid "add CWRType add_permission RQLExpression subject" msgstr "expresión RQL de agregación" -msgid "add ERType delete_permission RQLExpression subject" +msgid "add CWRType delete_permission RQLExpression subject" msgstr "expresión RQL de eliminación" -msgid "add ERType read_permission RQLExpression subject" +msgid "add CWRType read_permission RQLExpression subject" msgstr "expresión RQL de lectura" -msgid "add EUser in_group EGroup object" +msgid "add CWUser in_group CWGroup object" msgstr "usuario" -msgid "add EUser use_email EmailAddress subject" +msgid "add CWUser use_email EmailAddress subject" msgstr "agregar email" msgid "add State allowed_transition Transition object" @@ -817,7 +817,7 @@ msgid "add State allowed_transition Transition subject" msgstr "agregar una transición en salida" -msgid "add State state_of EEType object" +msgid "add State state_of CWEType object" msgstr "agregar un estado" msgid "add Transition condition RQLExpression subject" @@ -829,7 +829,7 @@ msgid "add Transition destination_state State subject" msgstr "agregar el estado de salida" -msgid "add Transition transition_of EEType object" +msgid "add Transition transition_of CWEType object" msgstr "agregar una transición" msgid "add a Bookmark" @@ -838,37 +838,37 @@ msgid "add a Card" msgstr "agregar una ficha" -msgid "add a ECache" +msgid "add a CWCache" msgstr "agregar una memoria cache" -msgid "add a EConstraint" +msgid "add a CWConstraint" msgstr "agregar una condición" -msgid "add a EConstraintType" +msgid "add a CWConstraintType" msgstr "aun tipo de condición" -msgid "add a EEType" +msgid "add a CWEType" msgstr "agregar un tipo de entidad" -msgid "add a EFRDef" +msgid "add a CWAttribute" msgstr "agregar un tipo de relación" -msgid "add a EGroup" +msgid "add a CWGroup" msgstr "agregar un grupo de usuarios" -msgid "add a ENFRDef" +msgid "add a CWRelation" msgstr "agregar una relación" -msgid "add a EPermission" +msgid "add a CWPermission" msgstr "agregar una autorización" -msgid "add a EProperty" +msgid "add a CWProperty" msgstr "agregar una propiedad" -msgid "add a ERType" +msgid "add a CWRType" msgstr "agregar un tipo de relación" -msgid "add a EUser" +msgid "add a CWUser" msgstr "agregar un usuario" msgid "add a EmailAddress" @@ -1390,61 +1390,61 @@ msgid "created_by_object" msgstr "ha creado" -msgid "creating Bookmark (Bookmark bookmarked_by EUser %(linkto)s)" +msgid "creating Bookmark (Bookmark bookmarked_by CWUser %(linkto)s)" msgstr "" -msgid "creating EConstraint (EFRDef %(linkto)s constrained_by EConstraint)" +msgid "creating CWConstraint (CWAttribute %(linkto)s constrained_by CWConstraint)" msgstr "creación condicionada por el atributo %(linkto)s" -msgid "creating EConstraint (ENFRDef %(linkto)s constrained_by EConstraint)" +msgid "creating CWConstraint (CWRelation %(linkto)s constrained_by CWConstraint)" msgstr "creación condicionada por la relación %(linkto)s" -msgid "creating EFRDef (EFRDef relation_type ERType %(linkto)s)" +msgid "creating CWAttribute (CWAttribute relation_type CWRType %(linkto)s)" msgstr "creación atributo %(linkto)s" -msgid "creating ENFRDef (ENFRDef relation_type ERType %(linkto)s)" +msgid "creating CWRelation (CWRelation relation_type CWRType %(linkto)s)" msgstr "creación relación %(linkto)s" -msgid "creating EProperty (EProperty for_user EUser %(linkto)s)" +msgid "creating CWProperty (CWProperty for_user CWUser %(linkto)s)" msgstr "creación de una propiedad por el usuario %(linkto)s" -msgid "creating EUser (EUser in_group EGroup %(linkto)s)" +msgid "creating CWUser (CWUser in_group CWGroup %(linkto)s)" msgstr "creación de un usuario para agregar al grupo %(linkto)s" -msgid "creating EmailAddress (EUser %(linkto)s use_email EmailAddress)" +msgid "creating EmailAddress (CWUser %(linkto)s use_email EmailAddress)" msgstr "creación de una dirección electrónica para el usuario %(linkto)s" -msgid "creating RQLExpression (EEType %(linkto)s add_permission RQLExpression)" +msgid "creating RQLExpression (CWEType %(linkto)s add_permission RQLExpression)" msgstr "" "creación de una expresión RQL para la autorización de agregar %(linkto)s" msgid "" -"creating RQLExpression (EEType %(linkto)s delete_permission RQLExpression)" +"creating RQLExpression (CWEType %(linkto)s delete_permission RQLExpression)" msgstr "" "creación de una expresión RQL para la autorización de eliminar %(linkto)s" msgid "" -"creating RQLExpression (EEType %(linkto)s read_permission RQLExpression)" +"creating RQLExpression (CWEType %(linkto)s read_permission RQLExpression)" msgstr "creación de una expresión RQL para la autorización de leer %(linkto)s" msgid "" -"creating RQLExpression (EEType %(linkto)s update_permission RQLExpression)" +"creating RQLExpression (CWEType %(linkto)s update_permission RQLExpression)" msgstr "" "creación de una expresión RQL para la autorización de actualizar %(linkto)s" -msgid "creating RQLExpression (ERType %(linkto)s add_permission RQLExpression)" +msgid "creating RQLExpression (CWRType %(linkto)s add_permission RQLExpression)" msgstr "" "creación de una expresión RQL para la autorización de agregar relaciones %" "(linkto)s" msgid "" -"creating RQLExpression (ERType %(linkto)s delete_permission RQLExpression)" +"creating RQLExpression (CWRType %(linkto)s delete_permission RQLExpression)" msgstr "" "creación de una expresión RQL para autorizar la eliminación de relaciones %" "(linkto)s" msgid "" -"creating RQLExpression (ERType %(linkto)s read_permission RQLExpression)" +"creating RQLExpression (CWRType %(linkto)s read_permission RQLExpression)" msgstr "" "creación de una expresión RQL para autorizar la lectura de relaciones %" "(linkto)s" @@ -1455,7 +1455,7 @@ msgid "creating State (State allowed_transition Transition %(linkto)s)" msgstr "creación de un estado que pueda ir hacia la transición %(linkto)s" -msgid "creating State (State state_of EEType %(linkto)s)" +msgid "creating State (State state_of CWEType %(linkto)s)" msgstr "creación de un estado por el tipo %(linkto)s" msgid "creating State (Transition %(linkto)s destination_state State)" @@ -1467,7 +1467,7 @@ msgid "creating Transition (Transition destination_state State %(linkto)s)" msgstr "creación de un transición hacia el estado %(linkto)s" -msgid "creating Transition (Transition transition_of EEType %(linkto)s)" +msgid "creating Transition (Transition transition_of CWEType %(linkto)s)" msgstr "creación de una transición para el tipo %(linkto)s" msgid "creation" @@ -2442,37 +2442,37 @@ msgid "remove this Card" msgstr "supprimer cette fiche" -msgid "remove this ECache" +msgid "remove this CWCache" msgstr "supprimer ce cache applicatif" -msgid "remove this EConstraint" +msgid "remove this CWConstraint" msgstr "supprimer cette contrainte" -msgid "remove this EConstraintType" +msgid "remove this CWConstraintType" msgstr "supprimer ce type de contrainte" -msgid "remove this EEType" +msgid "remove this CWEType" msgstr "supprimer ce type d'entitÈ" -msgid "remove this EFRDef" +msgid "remove this CWAttribute" msgstr "supprimer cet attribut" -msgid "remove this EGroup" +msgid "remove this CWGroup" msgstr "supprimer ce groupe" -msgid "remove this ENFRDef" +msgid "remove this CWRelation" msgstr "supprimer cette relation" -msgid "remove this EPermission" +msgid "remove this CWPermission" msgstr "supprimer cette permission" -msgid "remove this EProperty" +msgid "remove this CWProperty" msgstr "supprimer cette propriÈtÈ" -msgid "remove this ERType" +msgid "remove this CWRType" msgstr "supprimer cette dÈfinition de relation" -msgid "remove this EUser" +msgid "remove this CWUser" msgstr "supprimer cet utilisateur" msgid "remove this EmailAddress" diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 i18n/fr.po --- a/i18n/fr.po Fri Apr 17 13:21:05 2009 +0200 +++ b/i18n/fr.po Fri Apr 17 16:55:37 2009 +0200 @@ -232,70 +232,70 @@ msgid "Do you want to delete the following element(s) ?" msgstr "Voulez vous supprimer le(s) élément(s) suivant(s)" -msgid "ECache" +msgid "CWCache" msgstr "Cache applicatif" -msgid "ECache_plural" +msgid "CWCache_plural" msgstr "Caches applicatifs" -msgid "EConstraint" +msgid "CWConstraint" msgstr "Contrainte" -msgid "EConstraintType" +msgid "CWConstraintType" msgstr "Type de contrainte" -msgid "EConstraintType_plural" +msgid "CWConstraintType_plural" msgstr "Types de contrainte" -msgid "EConstraint_plural" +msgid "CWConstraint_plural" msgstr "Contraintes" -msgid "EEType" +msgid "CWEType" msgstr "Type d'entité" -msgid "EEType_plural" +msgid "CWEType_plural" msgstr "Types d'entité" -msgid "EFRDef" +msgid "CWAttribute" msgstr "Attribut" -msgid "EFRDef_plural" +msgid "CWAttribute_plural" msgstr "Attributs" -msgid "EGroup" +msgid "CWGroup" msgstr "Groupe" -msgid "EGroup_plural" +msgid "CWGroup_plural" msgstr "Groupes" -msgid "ENFRDef" +msgid "CWRelation" msgstr "Relation" -msgid "ENFRDef_plural" +msgid "CWRelation_plural" msgstr "Relations" -msgid "EPermission" +msgid "CWPermission" msgstr "Permission" -msgid "EPermission_plural" +msgid "CWPermission_plural" msgstr "Permissions" -msgid "EProperty" +msgid "CWProperty" msgstr "Propriété" -msgid "EProperty_plural" +msgid "CWProperty_plural" msgstr "Propriétés" -msgid "ERType" +msgid "CWRType" msgstr "Type de relation" -msgid "ERType_plural" +msgid "CWRType_plural" msgstr "Types de relation" -msgid "EUser" +msgid "CWUser" msgstr "Utilisateur" -msgid "EUser_plural" +msgid "CWUser_plural" msgstr "Utilisateurs" msgid "Email body: " @@ -340,37 +340,37 @@ msgid "New Card" msgstr "Nouvelle fiche" -msgid "New ECache" +msgid "New CWCache" msgstr "Nouveau cache applicatif" -msgid "New EConstraint" +msgid "New CWConstraint" msgstr "Nouvelle contrainte" -msgid "New EConstraintType" +msgid "New CWConstraintType" msgstr "Nouveau type de contrainte" -msgid "New EEType" +msgid "New CWEType" msgstr "Nouveau type d'entité" -msgid "New EFRDef" +msgid "New CWAttribute" msgstr "Nouvelle définition de relation finale" -msgid "New EGroup" +msgid "New CWGroup" msgstr "Nouveau groupe" -msgid "New ENFRDef" +msgid "New CWRelation" msgstr "Nouvelle définition de relation non finale" -msgid "New EPermission" +msgid "New CWPermission" msgstr "Nouvelle permission" -msgid "New EProperty" +msgid "New CWProperty" msgstr "Nouvelle propriété" -msgid "New ERType" +msgid "New CWRType" msgstr "Nouveau type de relation" -msgid "New EUser" +msgid "New CWUser" msgstr "Nouvel utilisateur" msgid "New EmailAddress" @@ -479,37 +479,37 @@ msgid "This Card" msgstr "Cette fiche" -msgid "This ECache" +msgid "This CWCache" msgstr "Ce cache applicatif" -msgid "This EConstraint" +msgid "This CWConstraint" msgstr "Cette contrainte" -msgid "This EConstraintType" +msgid "This CWConstraintType" msgstr "Ce type de contrainte" -msgid "This EEType" +msgid "This CWEType" msgstr "Ce type d'entité" -msgid "This EFRDef" +msgid "This CWAttribute" msgstr "Cette définition de relation finale" -msgid "This EGroup" +msgid "This CWGroup" msgstr "Ce groupe" -msgid "This ENFRDef" +msgid "This CWRelation" msgstr "Cette définition de relation non finale" -msgid "This EPermission" +msgid "This CWPermission" msgstr "Cette permission" -msgid "This EProperty" +msgid "This CWProperty" msgstr "Cette propriété" -msgid "This ERType" +msgid "This CWRType" msgstr "Ce type de relation" -msgid "This EUser" +msgid "This CWUser" msgstr "Cet utilisateur" msgid "This EmailAddress" @@ -768,49 +768,49 @@ msgid "add" msgstr "ajouter" -msgid "add Bookmark bookmarked_by EUser object" +msgid "add Bookmark bookmarked_by CWUser object" msgstr "signet" -msgid "add EEType add_permission RQLExpression subject" +msgid "add CWEType add_permission RQLExpression subject" msgstr "définir une expression RQL d'ajout" -msgid "add EEType delete_permission RQLExpression subject" +msgid "add CWEType delete_permission RQLExpression subject" msgstr "définir une expression RQL de suppression" -msgid "add EEType read_permission RQLExpression subject" +msgid "add CWEType read_permission RQLExpression subject" msgstr "définir une expression RQL de lecture" -msgid "add EEType update_permission RQLExpression subject" +msgid "add CWEType update_permission RQLExpression subject" msgstr "définir une expression RQL de mise à jour" -msgid "add EFRDef constrained_by EConstraint subject" +msgid "add CWAttribute constrained_by CWConstraint subject" msgstr "contrainte" -msgid "add EFRDef relation_type ERType object" +msgid "add CWAttribute relation_type CWRType object" msgstr "définition d'attribut" -msgid "add ENFRDef constrained_by EConstraint subject" +msgid "add CWRelation constrained_by CWConstraint subject" msgstr "contrainte" -msgid "add ENFRDef relation_type ERType object" +msgid "add CWRelation relation_type CWRType object" msgstr "définition de relation" -msgid "add EProperty for_user EUser object" +msgid "add CWProperty for_user CWUser object" msgstr "propriété" -msgid "add ERType add_permission RQLExpression subject" +msgid "add CWRType add_permission RQLExpression subject" msgstr "expression RQL d'ajout" -msgid "add ERType delete_permission RQLExpression subject" +msgid "add CWRType delete_permission RQLExpression subject" msgstr "expression RQL de suppression" -msgid "add ERType read_permission RQLExpression subject" +msgid "add CWRType read_permission RQLExpression subject" msgstr "expression RQL de lecture" -msgid "add EUser in_group EGroup object" +msgid "add CWUser in_group CWGroup object" msgstr "utilisateur" -msgid "add EUser use_email EmailAddress subject" +msgid "add CWUser use_email EmailAddress subject" msgstr "ajouter une addresse email" msgid "add State allowed_transition Transition object" @@ -819,7 +819,7 @@ msgid "add State allowed_transition Transition subject" msgstr "ajouter une transition en sortie" -msgid "add State state_of EEType object" +msgid "add State state_of CWEType object" msgstr "ajouter un état" msgid "add Transition condition RQLExpression subject" @@ -831,7 +831,7 @@ msgid "add Transition destination_state State subject" msgstr "ajouter l'état de sortie" -msgid "add Transition transition_of EEType object" +msgid "add Transition transition_of CWEType object" msgstr "ajouter une transition" msgid "add a Bookmark" @@ -840,37 +840,37 @@ msgid "add a Card" msgstr "ajouter une fiche" -msgid "add a ECache" +msgid "add a CWCache" msgstr "ajouter un cache applicatif" -msgid "add a EConstraint" +msgid "add a CWConstraint" msgstr "ajouter une contrainte" -msgid "add a EConstraintType" +msgid "add a CWConstraintType" msgstr "ajouter un type de contrainte" -msgid "add a EEType" +msgid "add a CWEType" msgstr "ajouter un type d'entité" -msgid "add a EFRDef" +msgid "add a CWAttribute" msgstr "ajouter un type de relation" -msgid "add a EGroup" +msgid "add a CWGroup" msgstr "ajouter un groupe d'utilisateurs" -msgid "add a ENFRDef" +msgid "add a CWRelation" msgstr "ajouter une relation" -msgid "add a EPermission" +msgid "add a CWPermission" msgstr "ajouter une permission" -msgid "add a EProperty" +msgid "add a CWProperty" msgstr "ajouter une propriété" -msgid "add a ERType" +msgid "add a CWRType" msgstr "ajouter un type de relation" -msgid "add a EUser" +msgid "add a CWUser" msgstr "ajouter un utilisateur" msgid "add a EmailAddress" @@ -1392,60 +1392,60 @@ msgid "created_by_object" msgstr "a créé" -msgid "creating Bookmark (Bookmark bookmarked_by EUser %(linkto)s)" +msgid "creating Bookmark (Bookmark bookmarked_by CWUser %(linkto)s)" msgstr "création d'un signet pour %(linkto)s" -msgid "creating EConstraint (EFRDef %(linkto)s constrained_by EConstraint)" +msgid "creating CWConstraint (CWAttribute %(linkto)s constrained_by CWConstraint)" msgstr "création d'une contrainte pour l'attribut %(linkto)s" -msgid "creating EConstraint (ENFRDef %(linkto)s constrained_by EConstraint)" +msgid "creating CWConstraint (CWRelation %(linkto)s constrained_by CWConstraint)" msgstr "création d'une contrainte pour la relation %(linkto)s" -msgid "creating EFRDef (EFRDef relation_type ERType %(linkto)s)" +msgid "creating CWAttribute (CWAttribute relation_type CWRType %(linkto)s)" msgstr "création d'un attribut %(linkto)s" -msgid "creating ENFRDef (ENFRDef relation_type ERType %(linkto)s)" +msgid "creating CWRelation (CWRelation relation_type CWRType %(linkto)s)" msgstr "création relation %(linkto)s" -msgid "creating EProperty (EProperty for_user EUser %(linkto)s)" +msgid "creating CWProperty (CWProperty for_user CWUser %(linkto)s)" msgstr "création d'une propriété pour l'utilisateur %(linkto)s" -msgid "creating EUser (EUser in_group EGroup %(linkto)s)" +msgid "creating CWUser (CWUser in_group CWGroup %(linkto)s)" msgstr "création d'un utilisateur à rajouter au groupe %(linkto)s" -msgid "creating EmailAddress (EUser %(linkto)s use_email EmailAddress)" +msgid "creating EmailAddress (CWUser %(linkto)s use_email EmailAddress)" msgstr "création d'une adresse électronique pour l'utilisateur %(linkto)s" -msgid "creating RQLExpression (EEType %(linkto)s add_permission RQLExpression)" +msgid "creating RQLExpression (CWEType %(linkto)s add_permission RQLExpression)" msgstr "création d'une expression RQL pour la permission d'ajout de %(linkto)s" msgid "" -"creating RQLExpression (EEType %(linkto)s delete_permission RQLExpression)" +"creating RQLExpression (CWEType %(linkto)s delete_permission RQLExpression)" msgstr "" "création d'une expression RQL pour la permission de suppression de %(linkto)s" msgid "" -"creating RQLExpression (EEType %(linkto)s read_permission RQLExpression)" +"creating RQLExpression (CWEType %(linkto)s read_permission RQLExpression)" msgstr "création d'une expression RQL pour la permission de lire %(linkto)s" msgid "" -"creating RQLExpression (EEType %(linkto)s update_permission RQLExpression)" +"creating RQLExpression (CWEType %(linkto)s update_permission RQLExpression)" msgstr "" "création d'une expression RQL pour la permission de mise à jour de %(linkto)s" -msgid "creating RQLExpression (ERType %(linkto)s add_permission RQLExpression)" +msgid "creating RQLExpression (CWRType %(linkto)s add_permission RQLExpression)" msgstr "" "création d'une expression RQL pour la permission d'ajout des relations %" "(linkto)s" msgid "" -"creating RQLExpression (ERType %(linkto)s delete_permission RQLExpression)" +"creating RQLExpression (CWRType %(linkto)s delete_permission RQLExpression)" msgstr "" "création d'une expression RQL pour la permission de suppression des " "relations %(linkto)s" msgid "" -"creating RQLExpression (ERType %(linkto)s read_permission RQLExpression)" +"creating RQLExpression (CWRType %(linkto)s read_permission RQLExpression)" msgstr "" "création d'une expression RQL pour la permission de lire les relations %" "(linkto)s" @@ -1456,7 +1456,7 @@ msgid "creating State (State allowed_transition Transition %(linkto)s)" msgstr "création d'un état pouvant aller vers la transition %(linkto)s" -msgid "creating State (State state_of EEType %(linkto)s)" +msgid "creating State (State state_of CWEType %(linkto)s)" msgstr "création d'un état pour le type %(linkto)s" msgid "creating State (Transition %(linkto)s destination_state State)" @@ -1468,7 +1468,7 @@ msgid "creating Transition (Transition destination_state State %(linkto)s)" msgstr "création d'une transition vers l'état %(linkto)s" -msgid "creating Transition (Transition transition_of EEType %(linkto)s)" +msgid "creating Transition (Transition transition_of CWEType %(linkto)s)" msgstr "création d'une transition pour le type %(linkto)s" msgid "creation" @@ -2446,37 +2446,37 @@ msgid "remove this Card" msgstr "supprimer cette fiche" -msgid "remove this ECache" +msgid "remove this CWCache" msgstr "supprimer ce cache applicatif" -msgid "remove this EConstraint" +msgid "remove this CWConstraint" msgstr "supprimer cette contrainte" -msgid "remove this EConstraintType" +msgid "remove this CWConstraintType" msgstr "supprimer ce type de contrainte" -msgid "remove this EEType" +msgid "remove this CWEType" msgstr "supprimer ce type d'entité" -msgid "remove this EFRDef" +msgid "remove this CWAttribute" msgstr "supprimer cet attribut" -msgid "remove this EGroup" +msgid "remove this CWGroup" msgstr "supprimer ce groupe" -msgid "remove this ENFRDef" +msgid "remove this CWRelation" msgstr "supprimer cette relation" -msgid "remove this EPermission" +msgid "remove this CWPermission" msgstr "supprimer cette permission" -msgid "remove this EProperty" +msgid "remove this CWProperty" msgstr "supprimer cette propriété" -msgid "remove this ERType" +msgid "remove this CWRType" msgstr "supprimer cette définition de relation" -msgid "remove this EUser" +msgid "remove this CWUser" msgstr "supprimer cet utilisateur" msgid "remove this EmailAddress" diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 misc/migration/2.42.1_Any.py --- a/misc/migration/2.42.1_Any.py Fri Apr 17 13:21:05 2009 +0200 +++ b/misc/migration/2.42.1_Any.py Fri Apr 17 16:55:37 2009 +0200 @@ -14,5 +14,5 @@ if 'inline_view' in schema: # inline_view attribute should have been deleted for a while now.... - drop_attribute('ENFRDef', 'inline_view') + drop_attribute('CWRelation', 'inline_view') diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 misc/migration/2.44.0_Any.py --- a/misc/migration/2.44.0_Any.py Fri Apr 17 13:21:05 2009 +0200 +++ b/misc/migration/2.44.0_Any.py Fri Apr 17 16:55:37 2009 +0200 @@ -1,7 +1,7 @@ -change_relation_props('EFRDef', 'cardinality', 'String', internationalizable=True) -change_relation_props('ENFRDef', 'cardinality', 'String', internationalizable=True) +change_relation_props('CWAttribute', 'cardinality', 'String', internationalizable=True) +change_relation_props('CWRelation', 'cardinality', 'String', internationalizable=True) -drop_relation_definition('EPermission', 'require_state', 'State') +drop_relation_definition('CWPermission', 'require_state', 'State') if confirm('cleanup require_permission relation'): try: diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 misc/migration/2.48.8_Any.py --- a/misc/migration/2.48.8_Any.py Fri Apr 17 13:21:05 2009 +0200 +++ b/misc/migration/2.48.8_Any.py Fri Apr 17 16:55:37 2009 +0200 @@ -1,2 +1,2 @@ -for etype in ('ERType', 'EFRDef', 'ENFRDef', 'EConstraint', 'EConstraintType'): +for etype in ('CWRType', 'CWAttribute', 'CWRelation', 'CWConstraint', 'CWConstraintType'): synchronize_permissions(etype) diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 misc/migration/2.99.0_Any.py --- a/misc/migration/2.99.0_Any.py Fri Apr 17 13:21:05 2009 +0200 +++ b/misc/migration/2.99.0_Any.py Fri Apr 17 16:55:37 2009 +0200 @@ -1,6 +1,6 @@ from cubicweb import CW_MIGRATION_MAP -for pk, in rql('Any K WHERE X is EProperty, X pkey IN (%s), X pkey K' +for pk, in rql('Any K WHERE X is CWProperty, X pkey IN (%s), X pkey K' % ','.join("'system.version.%s'" % cube for cube in CW_MIGRATION_MAP), ask_confirm=False): cube = pk.split('.')[-1] @@ -9,4 +9,4 @@ {'oldk': pk, 'newk': newk}, ask_confirm=False) print 'renamed', pk, 'to', newk -add_entity_type('ECache') +add_entity_type('CWCache') diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 misc/migration/3.2.0_Any.py --- a/misc/migration/3.2.0_Any.py Fri Apr 17 13:21:05 2009 +0200 +++ b/misc/migration/3.2.0_Any.py Fri Apr 17 16:55:37 2009 +0200 @@ -1,3 +1,3 @@ -rql('SET X value "main-template" WHERE X is EProperty, ' +rql('SET X value "main-template" WHERE X is CWProperty, ' 'X pkey "ui.main-template", X value "main"') checkpoint() diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 misc/migration/bootstrapmigration_repository.py --- a/misc/migration/bootstrapmigration_repository.py Fri Apr 17 13:21:05 2009 +0200 +++ b/misc/migration/bootstrapmigration_repository.py Fri Apr 17 16:55:37 2009 +0200 @@ -3,7 +3,7 @@ it should only include low level schema changes :organization: Logilab -:copyright: 2001-2008 LOGILAB S.A. (Paris, FRANCE), all rights reserved. +:copyright: 2001-2009 LOGILAB S.A. (Paris, FRANCE), all rights reserved. :contact: http://www.logilab.fr/ -- mailto:contact@logilab.fr """ @@ -11,7 +11,7 @@ from cubicweb.server import schemaserial schemaserial.HAS_FULLTEXT_CONTAINER = False cnx.set_shared_data('do-not-insert-is_instance_of', True) - add_attribute('ERType', 'fulltext_container') + add_attribute('CWRType', 'fulltext_container') schemaserial.HAS_FULLTEXT_CONTAINER = True diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 misc/migration/postcreate.py --- a/misc/migration/postcreate.py Fri Apr 17 13:21:05 2009 +0200 +++ b/misc/migration/postcreate.py Fri Apr 17 16:55:37 2009 +0200 @@ -1,22 +1,22 @@ """cubicweb post creation script, set user's workflow""" -activatedeid = add_state(_('activated'), 'EUser', initial=True) -deactivatedeid = add_state(_('deactivated'), 'EUser') -add_transition(_('deactivate'), 'EUser', +activatedeid = add_state(_('activated'), 'CWUser', initial=True) +deactivatedeid = add_state(_('deactivated'), 'CWUser') +add_transition(_('deactivate'), 'CWUser', (activatedeid,), deactivatedeid, requiredgroups=('managers',)) -add_transition(_('activate'), 'EUser', +add_transition(_('activate'), 'CWUser', (deactivatedeid,), activatedeid, requiredgroups=('managers',)) # need this since we already have at least one user in the database (the default admin) -rql('SET X in_state S WHERE X is EUser, S eid %s' % activatedeid) +rql('SET X in_state S WHERE X is CWUser, S eid %s' % activatedeid) # create anonymous user if all-in-one config and anonymous user has been specified if hasattr(config, 'anonymous_user'): anonlogin, anonpwd = config.anonymous_user() if anonlogin: - rql('INSERT EUser X: X login %(login)s, X upassword %(pwd)s,' + rql('INSERT CWUser X: X login %(login)s, X upassword %(pwd)s,' 'X in_state S, X in_group G WHERE G name "guests", S name "activated"', {'login': unicode(anonlogin), 'pwd': anonpwd}) @@ -30,11 +30,11 @@ default = cfg.option_default(optname, optdict) # only record values differing from default if value != default: - rql('INSERT EProperty X: X pkey %(k)s, X value %(v)s', {'k': key, 'v': value}) + rql('INSERT CWProperty X: X pkey %(k)s, X value %(v)s', {'k': key, 'v': value}) # add PERM_USE_TEMPLATE_FORMAT permission from cubicweb.schema import PERM_USE_TEMPLATE_FORMAT -eid = add_entity('EPermission', name=PERM_USE_TEMPLATE_FORMAT, +eid = add_entity('CWPermission', name=PERM_USE_TEMPLATE_FORMAT, label=_('use template languages')) rql('SET X require_group G WHERE G name "managers", X eid %(x)s', {'x': eid}, 'x') diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 rset.py --- a/rset.py Fri Apr 17 13:21:05 2009 +0200 +++ b/rset.py Fri Apr 17 16:55:37 2009 +0200 @@ -368,6 +368,9 @@ pass # build entity instance etype = self.description[row][col] + if etype == 'EUser': + import traceback + traceback.printstack() entity = self.vreg.etype_class(etype)(req, self, row, col) entity.set_eid(eid) # cache entity diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 schema.py --- a/schema.py Fri Apr 17 13:21:05 2009 +0200 +++ b/schema.py Fri Apr 17 16:55:37 2009 +0200 @@ -458,11 +458,11 @@ def schema_entity_types(self): """return the list of entity types used to build the schema""" - return frozenset(('EEType', 'ERType', 'EFRDef', 'ENFRDef', - 'EConstraint', 'EConstraintType', 'RQLExpression', + return frozenset(('CWEType', 'CWRType', 'CWAttribute', 'CWRelation', + 'CWConstraint', 'CWConstraintType', 'RQLExpression', # XXX those are not really "schema" entity types # but we usually don't want them as @* targets - 'EProperty', 'EPermission', 'State', 'Transition')) + 'CWProperty', 'CWPermission', 'State', 'Transition')) def add_entity_type(self, edef): edef.name = edef.name.encode() diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 schemas/Bookmark.py --- a/schemas/Bookmark.py Fri Apr 17 13:21:05 2009 +0200 +++ b/schemas/Bookmark.py Fri Apr 17 16:55:37 2009 +0200 @@ -5,7 +5,7 @@ path = String(maxsize=512, required=True, description=_("relative url of the bookmarked page")) - bookmarked_by = SubjectRelation('EUser', + bookmarked_by = SubjectRelation('CWUser', description=_("users using this bookmark")) diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 schemas/base.py --- a/schemas/base.py Fri Apr 17 13:21:05 2009 +0200 +++ b/schemas/base.py Fri Apr 17 16:55:37 2009 +0200 @@ -9,7 +9,7 @@ from cubicweb.schema import format_constraint -class EUser(WorkflowableEntityType): +class CWUser(WorkflowableEntityType): """define a CubicWeb user""" meta = True # XXX backported from old times, shouldn't be there anymore permissions = { @@ -31,7 +31,7 @@ description=_('email address to use for notification')) use_email = SubjectRelation('EmailAddress', cardinality='*?', composite='subject') - in_group = SubjectRelation('EGroup', cardinality='+*', + in_group = SubjectRelation('CWGroup', cardinality='+*', constraints=[RQLConstraint('NOT O name "owners"')], description=_('groups grant permissions to the user')) @@ -99,7 +99,7 @@ # and to support later deletion of a user which has created some entities cardinality = '**' subject = '**' - object = 'EUser' + object = 'CWUser' class created_by(MetaRelationType): """core relation indicating the original creator of an entity""" @@ -112,7 +112,7 @@ # and to support later deletion of a user which has created some entities cardinality = '?*' subject = '**' - object = 'EUser' + object = 'CWUser' class creation_date(MetaAttributeRelationType): @@ -127,7 +127,7 @@ subject = '**' object = 'Datetime' -class EProperty(EntityType): +class CWProperty(EntityType): """used for cubicweb configuration. Once a property has been created you can't change the key. """ @@ -145,7 +145,7 @@ 'value')) value = String(internationalizable=True, maxsize=256) - for_user = SubjectRelation('EUser', cardinality='?*', composite='object', + for_user = SubjectRelation('CWUser', cardinality='?*', composite='object', description=_('user for which this property is ' 'applying. If this relation is not ' 'set, the property is considered as' @@ -164,17 +164,17 @@ inlined = True -class EPermission(MetaEntityType): +class CWPermission(MetaEntityType): """entity type that may be used to construct some advanced security configuration """ name = String(required=True, indexed=True, internationalizable=True, maxsize=100, description=_('name or identifier of the permission')) label = String(required=True, internationalizable=True, maxsize=100, description=_('distinct label to distinguate between other permission entity of the same name')) - require_group = SubjectRelation('EGroup', + require_group = SubjectRelation('CWGroup', description=_('groups to which the permission is granted')) -# explicitly add X require_permission EPermission for each entity that should have +# explicitly add X require_permission CWPermission for each entity that should have # configurable security class require_permission(RelationType): """link a permission to the entity. This permission should be used in the @@ -199,7 +199,7 @@ """generic relation to link one entity to another""" symetric = True -class ECache(MetaEntityType): +class CWCache(MetaEntityType): """a simple cache entity characterized by a name and a validity date. diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 schemas/bootstrap.py --- a/schemas/bootstrap.py Fri Apr 17 13:21:05 2009 +0200 +++ b/schemas/bootstrap.py Fri Apr 17 16:55:37 2009 +0200 @@ -10,7 +10,7 @@ # not restricted since as "is" is handled as other relations, guests need # access to this -class EEType(MetaEntityType): +class CWEType(MetaEntityType): """define an entity type, used to build the application schema""" name = String(required=True, indexed=True, internationalizable=True, unique=True, maxsize=64) @@ -21,7 +21,7 @@ final = Boolean(description=_('automatic')) -class ERType(MetaEntityType): +class CWRType(MetaEntityType): """define a relation type, used to build the application schema""" name = String(required=True, indexed=True, internationalizable=True, unique=True, maxsize=64) @@ -39,22 +39,22 @@ final = Boolean(description=_('automatic')) -class EFRDef(MetaEntityType): +class CWAttribute(MetaEntityType): """define a final relation: link a final relation type from a non final entity to a final entity type. used to build the application schema """ - relation_type = SubjectRelation('ERType', cardinality='1*', + relation_type = SubjectRelation('CWRType', cardinality='1*', constraints=[RQLConstraint('O final TRUE')], composite='object') - from_entity = SubjectRelation('EEType', cardinality='1*', + from_entity = SubjectRelation('CWEType', cardinality='1*', constraints=[RQLConstraint('O final FALSE')], composite='object') - to_entity = SubjectRelation('EEType', cardinality='1*', + to_entity = SubjectRelation('CWEType', cardinality='1*', constraints=[RQLConstraint('O final TRUE')], composite='object') - constrained_by = SubjectRelation('EConstraint', cardinality='*1', composite='subject') + constrained_by = SubjectRelation('CWConstraint', cardinality='*1', composite='subject') cardinality = String(maxsize=2, internationalizable=True, vocabulary=[_('?1'), _('11'), _('??'), _('1?')], @@ -77,22 +77,22 @@ _('?1'), _('11'), _('+1'), _('*1'), _('??'), _('1?'), _('+?'), _('*?')] -class ENFRDef(MetaEntityType): +class CWRelation(MetaEntityType): """define a non final relation: link a non final relation type from a non final entity to a non final entity type. used to build the application schema """ - relation_type = SubjectRelation('ERType', cardinality='1*', + relation_type = SubjectRelation('CWRType', cardinality='1*', constraints=[RQLConstraint('O final FALSE')], composite='object') - from_entity = SubjectRelation('EEType', cardinality='1*', + from_entity = SubjectRelation('CWEType', cardinality='1*', constraints=[RQLConstraint('O final FALSE')], composite='object') - to_entity = SubjectRelation('EEType', cardinality='1*', + to_entity = SubjectRelation('CWEType', cardinality='1*', constraints=[RQLConstraint('O final FALSE')], composite='object') - constrained_by = SubjectRelation('EConstraint', cardinality='*1', composite='subject') + constrained_by = SubjectRelation('CWConstraint', cardinality='*1', composite='subject') cardinality = String(maxsize=2, internationalizable=True, vocabulary=CARDINALITY_VOCAB, @@ -129,41 +129,41 @@ 'relation\'subject, object and to ' 'the request user. ')) - read_permission = ObjectRelation(('EEType', 'ERType'), cardinality='+?', composite='subject', + read_permission = ObjectRelation(('CWEType', 'CWRType'), cardinality='+?', composite='subject', description=_('rql expression allowing to read entities/relations of this type')) - add_permission = ObjectRelation(('EEType', 'ERType'), cardinality='*?', composite='subject', + add_permission = ObjectRelation(('CWEType', 'CWRType'), cardinality='*?', composite='subject', description=_('rql expression allowing to add entities/relations of this type')) - delete_permission = ObjectRelation(('EEType', 'ERType'), cardinality='*?', composite='subject', + delete_permission = ObjectRelation(('CWEType', 'CWRType'), cardinality='*?', composite='subject', description=_('rql expression allowing to delete entities/relations of this type')) - update_permission = ObjectRelation('EEType', cardinality='*?', composite='subject', + update_permission = ObjectRelation('CWEType', cardinality='*?', composite='subject', description=_('rql expression allowing to update entities of this type')) -class EConstraint(MetaEntityType): +class CWConstraint(MetaEntityType): """define a schema constraint""" - cstrtype = SubjectRelation('EConstraintType', cardinality='1*') + cstrtype = SubjectRelation('CWConstraintType', cardinality='1*') value = String(description=_('depends on the constraint type')) -class EConstraintType(MetaEntityType): +class CWConstraintType(MetaEntityType): """define a schema constraint type""" name = String(required=True, indexed=True, internationalizable=True, unique=True, maxsize=64) # not restricted since it has to be read when checking allowed transitions -class EGroup(MetaEntityType): +class CWGroup(MetaEntityType): """define a CubicWeb users group""" name = String(required=True, indexed=True, internationalizable=True, unique=True, maxsize=64) - read_permission = ObjectRelation(('EEType', 'ERType'), cardinality='+*', + read_permission = ObjectRelation(('CWEType', 'CWRType'), cardinality='+*', description=_('groups allowed to read entities/relations of this type')) - add_permission = ObjectRelation(('EEType', 'ERType'), + add_permission = ObjectRelation(('CWEType', 'CWRType'), description=_('groups allowed to add entities/relations of this type')) - delete_permission = ObjectRelation(('EEType', 'ERType'), + delete_permission = ObjectRelation(('CWEType', 'CWRType'), description=_('groups allowed to delete entities/relations of this type')) - update_permission = ObjectRelation('EEType', + update_permission = ObjectRelation('CWEType', description=_('groups allowed to update entities of this type')) @@ -214,7 +214,7 @@ } cardinality = '1*' subject = '**' - object = 'EEType' + object = 'CWEType' class is_instance_of(MetaRelationType): """core relation indicating the types (including specialized types) @@ -229,7 +229,7 @@ } cardinality = '+*' subject = '**' - object = 'EEType' + object = 'CWEType' class specializes(MetaRelationType): name = 'specializes' @@ -239,5 +239,5 @@ 'delete': ('managers',), } cardinality = '?*' - subject = 'EEType' - object = 'EEType' + subject = 'CWEType' + object = 'CWEType' diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 schemas/workflow.py --- a/schemas/workflow.py Fri Apr 17 13:21:05 2009 +0200 +++ b/schemas/workflow.py Fri Apr 17 16:55:37 2009 +0200 @@ -14,14 +14,14 @@ description = RichString(fulltextindexed=True, default_format='text/rest', description=_('semantic description of this state')) - state_of = SubjectRelation('EEType', cardinality='+*', + state_of = SubjectRelation('CWEType', cardinality='+*', description=_('entity types which may use this state'), constraints=[RQLConstraint('O final FALSE')]) allowed_transition = SubjectRelation('Transition', cardinality='**', constraints=[RQLConstraint('S state_of ET, O transition_of ET')], description=_('allowed transitions from this state')) - initial_state = ObjectRelation('EEType', cardinality='?*', + initial_state = ObjectRelation('CWEType', cardinality='?*', # S initial_state O, O state_of S constraints=[RQLConstraint('O state_of S')], description=_('initial state for entities of this type')) @@ -44,10 +44,10 @@ 'that will respectivly represents ' 'the current entity and the current user')) - require_group = SubjectRelation('EGroup', cardinality='**', + require_group = SubjectRelation('CWGroup', cardinality='**', description=_('group in which a user should be to be ' 'allowed to pass this transition')) - transition_of = SubjectRelation('EEType', cardinality='+*', + transition_of = SubjectRelation('CWEType', cardinality='+*', description=_('entity types which may use this transition'), constraints=[RQLConstraint('O final FALSE')]) destination_state = SubjectRelation('State', cardinality='?*', @@ -101,7 +101,7 @@ """indicate the current state of an entity""" meta = True # not inlined intentionnaly since when using ldap sources, user'state - # has to be stored outside the EUser table + # has to be stored outside the CWUser table # add/delete perms given to managers/users, after what most of the job # is done by workflow enforcment diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 server/__init__.py --- a/server/__init__.py Fri Apr 17 13:21:05 2009 +0200 +++ b/server/__init__.py Fri Apr 17 16:55:37 2009 +0200 @@ -93,10 +93,10 @@ print 'inserting default user and groups' needisfix = [] for group in BASEGROUPS: - rset = session.execute('INSERT EGroup X: X name %(name)s', + rset = session.execute('INSERT CWGroup X: X name %(name)s', {'name': unicode(group)}) needisfix.append( (rset.rows[0][0], rset.description[0][0]) ) - rset = session.execute('INSERT EUser X: X login %(login)s, X upassword %(pwd)s', + rset = session.execute('INSERT CWUser X: X login %(login)s, X upassword %(pwd)s', {'login': login, 'pwd': pwd}) needisfix.append( (rset.rows[0][0], rset.description[0][0]) ) session.execute('SET U in_group G WHERE G name "managers"') @@ -116,10 +116,10 @@ handler.session.unsafe_execute('SET X is_instance_of E WHERE X eid %(x)s, E name %(name)s', {'x': eid, 'name': etype}, 'x') # insert versions - handler.cmd_add_entity('EProperty', pkey=u'system.version.cubicweb', + handler.cmd_add_entity('CWProperty', pkey=u'system.version.cubicweb', value=unicode(config.cubicweb_version())) for cube in config.cubes(): - handler.cmd_add_entity('EProperty', + handler.cmd_add_entity('CWProperty', pkey=u'system.version.%s' % cube.lower(), value=unicode(config.cube_version(cube))) # yoo ! diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 server/checkintegrity.py --- a/server/checkintegrity.py Fri Apr 17 13:21:05 2009 +0200 +++ b/server/checkintegrity.py Fri Apr 17 16:55:37 2009 +0200 @@ -111,7 +111,7 @@ 'VocabularyConstraint', 'RQLConstraint', 'RQLVocabularyConstraint') rql = ('Any COUNT(X),RN,EN,ECTN GROUPBY RN,EN,ECTN ORDERBY 1 ' - 'WHERE X is EConstraint, R constrained_by X, ' + 'WHERE X is CWConstraint, R constrained_by X, ' 'R relation_type RT, R from_entity ET, RT name RN, ' 'ET name EN, X cstrtype ECT, ECT name ECTN') for count, rn, en, cstrname in session.execute(rql): @@ -252,7 +252,7 @@ print >> sys.stderr, ' [FIXED]' else: print >> sys.stderr - cursor = session.system_sql('SELECT MIN(%s) FROM %sEUser;' % (eidcolumn, + cursor = session.system_sql('SELECT MIN(%s) FROM %sCWUser;' % (eidcolumn, SQL_PREFIX)) default_user_eid = cursor.fetchone()[0] assert default_user_eid is not None, 'no user defined !' diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 server/hooks.py --- a/server/hooks.py Fri Apr 17 13:21:05 2009 +0200 +++ b/server/hooks.py Fri Apr 17 16:55:37 2009 +0200 @@ -125,8 +125,8 @@ hm.register_hook(fti_update_after_delete_relation, 'after_delete_relation', '') if 'is' in hm.schema: hm.register_hook(setis_after_add_entity, 'after_add_entity', '') - if 'EUser' in hm.schema: - hm.register_hook(setowner_after_add_user, 'after_add_entity', 'EUser') + if 'CWUser' in hm.schema: + hm.register_hook(setowner_after_add_user, 'after_add_entity', 'CWUser') # core hooks ################################################################## @@ -282,7 +282,7 @@ def _register_core_hooks(hm): hm.register_hook(handle_composite_before_del_relation, 'before_delete_relation', '') - hm.register_hook(before_del_group, 'before_delete_entity', 'EGroup') + hm.register_hook(before_del_group, 'before_delete_entity', 'CWGroup') #hm.register_hook(cstrcheck_before_update_entity, 'before_update_entity', '') hm.register_hook(cardinalitycheck_after_add_entity, 'after_add_entity', '') @@ -362,7 +362,7 @@ def _register_usergroup_hooks(hm): """register user/group related hooks on the hooks manager""" - hm.register_hook(after_del_user, 'after_delete_entity', 'EUser') + hm.register_hook(after_del_user, 'after_delete_entity', 'CWUser') hm.register_hook(after_add_in_group, 'after_add_relation', 'in_group') hm.register_hook(after_del_in_group, 'after_delete_relation', 'in_group') @@ -442,10 +442,10 @@ str(eschema)) -# EProperty hooks ############################################################# +# CWProperty hooks ############################################################# -class DelEPropertyOp(Operation): +class DelCWPropertyOp(Operation): """a user's custom properties has been deleted""" def commit_event(self): @@ -455,14 +455,14 @@ except KeyError: self.error('%s has no associated value', self.key) -class ChangeEPropertyOp(Operation): +class ChangeCWPropertyOp(Operation): """a user's custom properties has been added/changed""" def commit_event(self): """the observed connections pool has been commited""" self.epropdict[self.key] = self.value -class AddEPropertyOp(Operation): +class AddCWPropertyOp(Operation): """a user's custom properties has been added/changed""" def commit_event(self): @@ -470,7 +470,7 @@ eprop = self.eprop if not eprop.for_user: self.repo.vreg.eprop_values[eprop.pkey] = eprop.value - # if for_user is set, update is handled by a ChangeEPropertyOp operation + # if for_user is set, update is handled by a ChangeCWPropertyOp operation def after_add_eproperty(session, entity): key, value = entity.pkey, entity.value @@ -484,7 +484,7 @@ session.unsafe_execute('SET P for_user U WHERE P eid %(x)s,U eid %(u)s', {'x': entity.eid, 'u': session.user.eid}, 'x') else: - AddEPropertyOp(session, eprop=entity) + AddCWPropertyOp(session, eprop=entity) def after_update_eproperty(session, entity): key, value = entity.pkey, entity.value @@ -496,11 +496,11 @@ raise ValidationError(entity.eid, {'value': session._(str(ex))}) if entity.for_user: for session_ in get_user_sessions(session.repo, entity.for_user[0].eid): - ChangeEPropertyOp(session, epropdict=session_.user.properties, + ChangeCWPropertyOp(session, epropdict=session_.user.properties, key=key, value=value) else: # site wide properties - ChangeEPropertyOp(session, epropdict=session.vreg.eprop_values, + ChangeCWPropertyOp(session, epropdict=session.vreg.eprop_values, key=key, value=value) def before_del_eproperty(session, eid): @@ -511,10 +511,10 @@ else: key = session.execute('Any K WHERE P eid %(x)s, P pkey K', {'x': eid}, 'x')[0][0] - DelEPropertyOp(session, epropdict=session.vreg.eprop_values, key=key) + DelCWPropertyOp(session, epropdict=session.vreg.eprop_values, key=key) def after_add_for_user(session, fromeid, rtype, toeid): - if not session.describe(fromeid)[0] == 'EProperty': + if not session.describe(fromeid)[0] == 'CWProperty': return key, value = session.execute('Any K,V WHERE P eid %(x)s,P pkey K,P value V', {'x': fromeid}, 'x')[0] @@ -522,7 +522,7 @@ raise ValidationError(fromeid, {'for_user': session._("site-wide property can't be set for user")}) for session_ in get_user_sessions(session.repo, toeid): - ChangeEPropertyOp(session, epropdict=session_.user.properties, + ChangeCWPropertyOp(session, epropdict=session_.user.properties, key=key, value=value) def before_del_for_user(session, fromeid, rtype, toeid): @@ -530,12 +530,12 @@ {'x': fromeid}, 'x')[0][0] relation_deleted(session, fromeid, rtype, toeid) for session_ in get_user_sessions(session.repo, toeid): - DelEPropertyOp(session, epropdict=session_.user.properties, key=key) + DelCWPropertyOp(session, epropdict=session_.user.properties, key=key) def _register_eproperty_hooks(hm): """register workflow related hooks on the hooks manager""" - hm.register_hook(after_add_eproperty, 'after_add_entity', 'EProperty') - hm.register_hook(after_update_eproperty, 'after_update_entity', 'EProperty') - hm.register_hook(before_del_eproperty, 'before_delete_entity', 'EProperty') + hm.register_hook(after_add_eproperty, 'after_add_entity', 'CWProperty') + hm.register_hook(after_update_eproperty, 'after_update_entity', 'CWProperty') + hm.register_hook(before_del_eproperty, 'before_delete_entity', 'CWProperty') hm.register_hook(after_add_for_user, 'after_add_relation', 'for_user') hm.register_hook(before_del_for_user, 'before_delete_relation', 'for_user') diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 server/migractions.py --- a/server/migractions.py Fri Apr 17 13:21:05 2009 +0200 +++ b/server/migractions.py Fri Apr 17 16:55:37 2009 +0200 @@ -27,7 +27,7 @@ from yams.constraints import SizeConstraint from yams.schema2sql import eschema2sql, rschema2sql -from cubicweb import AuthenticationError +from cubicweb import AuthenticationError, ETYPE_NAME_MAP from cubicweb.dbapi import get_repository, repo_connect from cubicweb.common.migration import MigrationHelper, yes @@ -38,42 +38,6 @@ except ImportError: # LAX pass -def set_sql_prefix(prefix): - """3.1.5 migration function: allow to unset/reset SQL_PREFIX""" - for module in ('checkintegrity', 'migractions', 'schemahooks', - 'sources.rql2sql', 'sources.native'): - try: - sys.modules['cubicweb.server.%s' % module].SQL_PREFIX = prefix - print 'changed SQL_PREFIX for %s' % module - except KeyError: - pass - -def update_database(repo): - """3.1.3 migration function: update database schema by adding SQL_PREFIX to - entity type tables and columns - """ - pool = repo._get_pool() - source = repo.system_source - sqlcu = pool['system'] - for etype in repo.schema.entities(): - if etype.is_final(): - continue - try: - sqlcu.execute('ALTER TABLE %s RENAME TO cw_%s' % (etype, etype)) - print 'renamed %s table for source %s' % (etype, uri) - except: - pass - for rschema in etype.subject_relations(): - if rschema == 'has_text': - continue - if rschema.is_final() or rschema.inlined: - sqlcu.execute('ALTER TABLE cw_%s RENAME %s TO cw_%s' - % (etype, rschema, rschema)) - print 'renamed %s.%s column for source %s' % ( - etype, rschema, uri) - pool.commit() - repo._free_pool(pool) - class ServerMigrationHelper(MigrationHelper): """specific migration helper for server side migration scripts, @@ -99,17 +63,7 @@ @cached def repo_connect(self): - try: - self.repo = get_repository(method='inmemory', config=self.config) - except: - import traceback - traceback.print_exc() - print '3.1.5 migration' - # XXX 3.1.5 migration - set_sql_prefix('') - self.repo = get_repository(method='inmemory', config=self.config) - update_database(self.repo) - set_sql_prefix('cw_') + self.repo = get_repository(method='inmemory', config=self.config) return self.repo def shutdown(self): @@ -394,7 +348,7 @@ # execute post-remove files for pack in reversed(removedcubes): self.exec_event_script('postremove', self.config.cube_dir(pack)) - self.rqlexec('DELETE EProperty X WHERE X pkey %(pk)s', + self.rqlexec('DELETE CWProperty X WHERE X pkey %(pk)s', {'pk': u'system.version.'+pack}, ask_confirm=False) self.commit() @@ -449,7 +403,7 @@ else: eschema = self.fs_schema.eschema(etype) confirm = self.verbosity >= 2 - # register the entity into EEType + # register the entity into CWEType self.rqlexecall(ss.eschema2rql(eschema), ask_confirm=confirm) # add specializes relation if needed self.rqlexecall(ss.eschemaspecialize2rql(eschema), ask_confirm=confirm) @@ -525,8 +479,8 @@ This will trigger deletion of necessary relation types and definitions """ # XXX what if we delete an entity type which is specialized by other types - # unregister the entity from EEType - self.rqlexec('DELETE EEType X WHERE X name %(etype)s', {'etype': etype}, + # unregister the entity from CWEType + self.rqlexec('DELETE CWEType X WHERE X name %(etype)s', {'etype': etype}, ask_confirm=self.verbosity>=2) if commit: self.commit() @@ -537,7 +491,7 @@ `oldname` is a string giving the name of the existing entity type `newname` is a string giving the name of the renamed entity type """ - self.rqlexec('SET ET name %(newname)s WHERE ET is EEType, ET name %(oldname)s', + self.rqlexec('SET ET name %(newname)s WHERE ET is CWEType, ET name %(oldname)s', {'newname' : unicode(newname), 'oldname' : oldname}) if commit: self.commit() @@ -554,7 +508,7 @@ """ rschema = self.fs_schema.rschema(rtype) - # register the relation into ERType and insert necessary relation + # register the relation into CWRType and insert necessary relation # definitions self.rqlexecall(ss.rschema2rql(rschema, addrdef=False), ask_confirm=self.verbosity>=2) @@ -570,8 +524,8 @@ def cmd_drop_relation_type(self, rtype, commit=True): """unregister an existing relation type""" - # unregister the relation from ERType - self.rqlexec('DELETE ERType X WHERE X name %r' % rtype, + # unregister the relation from CWRType + self.rqlexec('DELETE CWRType X WHERE X name %r' % rtype, ask_confirm=self.verbosity>=2) if commit: self.commit() @@ -602,11 +556,11 @@ def cmd_drop_relation_definition(self, subjtype, rtype, objtype, commit=True): """unregister an existing relation definition""" rschema = self.repo.schema.rschema(rtype) - # unregister the definition from EFRDef or ENFRDef + # unregister the definition from CWAttribute or CWRelation if rschema.is_final(): - etype = 'EFRDef' + etype = 'CWAttribute' else: - etype = 'ENFRDef' + etype = 'CWRelation' rql = ('DELETE %s X WHERE X from_entity FE, FE name "%s",' 'X relation_type RT, RT name "%s", X to_entity TE, TE name "%s"') self.rqlexec(rql % (etype, subjtype, rtype, objtype), @@ -734,11 +688,11 @@ repospschema = repoeschema.specializes() espschema = eschema.specializes() if repospschema and not espschema: - self.rqlexec('DELETE X specializes Y WHERE X is EEType, X name %(x)s', + self.rqlexec('DELETE X specializes Y WHERE X is CWEType, X name %(x)s', {'x': str(repoeschema)}) elif not repospschema and espschema: - self.rqlexec('SET X specializes Y WHERE X is EEType, X name %(x)s, ' - 'Y is EEType, Y name %(y)s', + self.rqlexec('SET X specializes Y WHERE X is CWEType, X name %(x)s, ' + 'Y is CWEType, Y name %(y)s', {'x': str(repoeschema), 'y': str(espschema)}) self.rqlexecall(ss.updateeschema2rql(eschema), ask_confirm=self.verbosity >= 2) @@ -800,7 +754,7 @@ self.rqlexec('DELETE X constrained_by C WHERE C eid %(x)s', {'x': cstr.eid}, 'x', ask_confirm=confirm) - self.rqlexec('DELETE EConstraint C WHERE C eid %(x)s', + self.rqlexec('DELETE CWConstraint C WHERE C eid %(x)s', {'x': cstr.eid}, 'x', ask_confirm=confirm) else: @@ -863,7 +817,7 @@ if oldvalue == size: return if oldvalue is None and not size is None: - ceid = self.rqlexec('INSERT EConstraint C: C value %(v)s, C cstrtype CT ' + ceid = self.rqlexec('INSERT CWConstraint C: C value %(v)s, C cstrtype CT ' 'WHERE CT name "SizeConstraint"', {'v': SizeConstraint(size).serialize()}, ask_confirm=self.verbosity>=2)[0][0] @@ -883,7 +837,7 @@ 'S name "%s", R name "%s"' % (etype, rtype), ask_confirm=self.verbosity>=2) # cleanup unused constraints - self.rqlexec('DELETE EConstraint C WHERE NOT X constrained_by C') + self.rqlexec('DELETE CWConstraint C WHERE NOT X constrained_by C') if commit: self.commit() @@ -964,20 +918,20 @@ if commit: self.commit() - # EProperty handling ###################################################### + # CWProperty handling ###################################################### def cmd_property_value(self, pkey): - rql = 'Any V WHERE X is EProperty, X pkey %(k)s, X value V' + rql = 'Any V WHERE X is CWProperty, X pkey %(k)s, X value V' rset = self.rqlexec(rql, {'k': pkey}, ask_confirm=False) return rset[0][0] def cmd_set_property(self, pkey, value): value = unicode(value) try: - prop = self.rqlexec('EProperty X WHERE X pkey %(k)s', {'k': pkey}, + prop = self.rqlexec('CWProperty X WHERE X pkey %(k)s', {'k': pkey}, ask_confirm=False).get_entity(0, 0) except: - self.cmd_add_entity('EProperty', pkey=unicode(pkey), value=value) + self.cmd_add_entity('CWProperty', pkey=unicode(pkey), value=value) else: self.rqlexec('SET X value %(v)s WHERE X pkey %(k)s', {'k': pkey, 'v': value}, ask_confirm=False) @@ -1064,8 +1018,8 @@ rschema = self.repo.schema.rschema(attr) oldtype = rschema.objects(etype)[0] rdefeid = rschema.rproperty(etype, oldtype, 'eid') - sql = ("UPDATE EFRDef " - "SET to_entity=(SELECT eid FROM EEType WHERE name='%s')" + sql = ("UPDATE CWAttribute " + "SET to_entity=(SELECT eid FROM CWEType WHERE name='%s')" "WHERE eid=%s") % (newtype, rdefeid) self.sqlexec(sql, ask_confirm=False) dbhelper = self.repo.system_source.dbhelper diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 server/msplanner.py --- a/server/msplanner.py Fri Apr 17 13:21:05 2009 +0200 +++ b/server/msplanner.py Fri Apr 17 16:55:37 2009 +0200 @@ -33,25 +33,25 @@ Exemples of multi-sources query execution ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -For a system source and a ldap user source (only EUser and its attributes +For a system source and a ldap user source (only CWUser and its attributes is supported, no group or such): -:EUser X: -1. fetch EUser X from both sources and return concatenation of results +:CWUser X: +1. fetch CWUser X from both sources and return concatenation of results -:EUser X WHERE X in_group G, G name 'users': +:CWUser X WHERE X in_group G, G name 'users': * catch 1 - 1. fetch EUser X from both sources, store concatenation of results into a + 1. fetch CWUser X from both sources, store concatenation of results into a temporary table 2. return the result of TMP X WHERE X in_group G, G name 'users' from the system source * catch 2 - 1. return the result of EUser X WHERE X in_group G, G name 'users' from system + 1. return the result of CWUser X WHERE X in_group G, G name 'users' from system source, that's enough (optimization of the sql querier will avoid join on - EUser, so we will directly get local eids) + CWUser, so we will directly get local eids) -:EUser X,L WHERE X in_group G, X login L, G name 'users': -1. fetch Any X,L WHERE X is EUser, X login L from both sources, store +:CWUser X,L WHERE X in_group G, X login L, G name 'users': +1. fetch Any X,L WHERE X is CWUser, X login L from both sources, store concatenation of results into a temporary table 2. return the result of Any X, L WHERE X is TMP, X login LX in_group G, G name 'users' from the system source @@ -59,13 +59,13 @@ :Any X WHERE X owned_by Y: * catch 1 - 1. fetch EUser X from both sources, store concatenation of results into a + 1. fetch CWUser X from both sources, store concatenation of results into a temporary table 2. return the result of Any X WHERE X owned_by Y, Y is TMP from the system source * catch 2 1. return the result of Any X WHERE X owned_by Y from system source, that's - enough (optimization of the sql querier will avoid join on EUser, so we + enough (optimization of the sql querier will avoid join on CWUser, so we will directly get local eids) diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 server/repository.py --- a/server/repository.py Fri Apr 17 13:21:05 2009 +0200 +++ b/server/repository.py Fri Apr 17 16:55:37 2009 +0200 @@ -180,7 +180,7 @@ self.warning("set fs application'schema as bootstrap schema") config.bootstrap_cubes() self.set_bootstrap_schema(self.config.load_schema()) - # need to load the Any and EUser entity types + # need to load the Any and CWUser entity types self.vreg.schema = self.schema etdirectory = join(CW_SOFTWARE_ROOT, 'entities') self.vreg.init_registration([etdirectory]) @@ -194,7 +194,7 @@ config.bootstrap_cubes() self.set_schema(self.config.load_schema()) if not config.creating: - if 'EProperty' in self.schema: + if 'CWProperty' in self.schema: self.vreg.init_properties(self.properties()) # call source's init method to complete their initialisation if # needed (for instance looking for persistent configuration using an @@ -257,11 +257,13 @@ except BadSchemaDefinition: raise except Exception, ex: + import traceback + traceback.print_exc() raise Exception('Is the database initialised ? (cause: %s)' % (ex.args and ex.args[0].strip() or 'unknown')), \ None, sys.exc_info()[-1] self.info('set the actual schema') - # XXX have to do this since EProperty isn't in the bootstrap schema + # XXX have to do this since CWProperty isn't in the bootstrap schema # it'll be redone in set_schema self.set_bootstrap_schema(appschema) # 2.49 migration @@ -269,7 +271,7 @@ session.set_pool() if not 'template' in file(join(self.config.apphome, 'vc.conf')).read(): # remaning from cubicweb < 2.38... - session.execute('DELETE EProperty X WHERE X pkey "system.version.template"') + session.execute('DELETE CWProperty X WHERE X pkey "system.version.template"') session.commit() finally: session.close() @@ -383,10 +385,10 @@ def authenticate_user(self, session, login, password): """validate login / password, raise AuthenticationError on failure - return associated EUser instance on success + return associated CWUser instance on success """ for source in self.sources: - if source.support_entity('EUser'): + if source.support_entity('CWUser'): try: eid = source.authenticate(session, login, password) break @@ -401,8 +403,8 @@ return euser def _build_user(self, session, eid): - """return a EUser entity for user with the given eid""" - cls = self.vreg.etype_class('EUser') + """return a CWUser entity for user with the given eid""" + cls = self.vreg.etype_class('CWUser') rql = cls.fetch_rql(session.user, ['X eid %(x)s']) rset = session.execute(rql, {'x': eid}, 'x') assert len(rset) == 1, rset @@ -447,7 +449,7 @@ session = self.internal_session() try: for pk, version in session.execute( - 'Any K,V WHERE P is EProperty, P value V, P pkey K, ' + 'Any K,V WHERE P is CWProperty, P value V, P pkey K, ' 'P pkey ~="system.version.%"', build_descr=False): cube = pk.split('.')[-1] # XXX cubicweb migration @@ -484,7 +486,7 @@ """return a result set containing system wide properties""" session = self.internal_session() try: - return session.execute('Any K,V WHERE P is EProperty,' + return session.execute('Any K,V WHERE P is CWProperty,' 'P pkey K, P value V, NOT P for_user U', build_descr=False) finally: @@ -499,12 +501,12 @@ # for consistency, keep same error as unique check hook (although not required) errmsg = session._('the value "%s" is already used, use another one') try: - if (session.execute('EUser X WHERE X login %(login)s', {'login': login}) - or session.execute('EUser X WHERE X use_email C, C address %(login)s', + if (session.execute('CWUser X WHERE X login %(login)s', {'login': login}) + or session.execute('CWUser X WHERE X use_email C, C address %(login)s', {'login': login})): raise ValidationError(None, {'login': errmsg % login}) # we have to create the user - user = self.vreg.etype_class('EUser')(session, None) + user = self.vreg.etype_class('CWUser')(session, None) if isinstance(password, unicode): # password should *always* be utf8 encoded password = password.encode('UTF8') diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 server/schemahooks.py --- a/server/schemahooks.py Fri Apr 17 13:21:05 2009 +0200 +++ b/server/schemahooks.py Fri Apr 17 16:55:37 2009 +0200 @@ -23,8 +23,8 @@ check_internal_entity) # core entity and relation types which can't be removed -CORE_ETYPES = list(BASE_TYPES) + ['EEType', 'ERType', 'EUser', 'EGroup', - 'EConstraint', 'EFRDef', 'ENFRDef'] +CORE_ETYPES = list(BASE_TYPES) + ['CWEType', 'CWRType', 'CWUser', 'CWGroup', + 'CWConstraint', 'CWAttribute', 'CWRelation'] CORE_RTYPES = ['eid', 'creation_date', 'modification_date', 'login', 'upassword', 'name', 'is', 'instanceof', 'owned_by', 'created_by', 'in_group', @@ -134,7 +134,7 @@ # deletion #################################################################### -class DeleteEETypeOp(SchemaOperation): +class DeleteCWETypeOp(SchemaOperation): """actually remove the entity type from the application's schema""" def commit_event(self): try: @@ -145,9 +145,9 @@ pass def before_del_eetype(session, eid): - """before deleting a EEType entity: + """before deleting a CWEType entity: * check that we don't remove a core entity type - * cascade to delete related EFRDef and ENFRDef entities + * cascade to delete related CWAttribute and CWRelation entities * instantiate an operation to delete the entity type on commit """ # final entities can't be deleted, don't care about that @@ -155,7 +155,7 @@ # delete every entities of this type session.unsafe_execute('DELETE %s X' % name) DropTableOp(session, table=SQL_PREFIX + name) - DeleteEETypeOp(session, name) + DeleteCWETypeOp(session, name) def after_del_eetype(session, eid): # workflow cleanup @@ -163,7 +163,7 @@ session.execute('DELETE Transition X WHERE NOT X transition_of Y') -class DeleteERTypeOp(SchemaOperation): +class DeleteCWRTypeOp(SchemaOperation): """actually remove the relation type from the application's schema""" def commit_event(self): try: @@ -173,18 +173,18 @@ pass def before_del_ertype(session, eid): - """before deleting a ERType entity: + """before deleting a CWRType entity: * check that we don't remove a core relation type - * cascade to delete related EFRDef and ENFRDef entities + * cascade to delete related CWAttribute and CWRelation entities * instantiate an operation to delete the relation type on commit """ name = check_internal_entity(session, eid, CORE_RTYPES) # delete relation definitions using this relation type - session.execute('DELETE EFRDef X WHERE X relation_type Y, Y eid %(x)s', + session.execute('DELETE CWAttribute X WHERE X relation_type Y, Y eid %(x)s', {'x': eid}) - session.execute('DELETE ENFRDef X WHERE X relation_type Y, Y eid %(x)s', + session.execute('DELETE CWRelation X WHERE X relation_type Y, Y eid %(x)s', {'x': eid}) - DeleteERTypeOp(session, name) + DeleteCWRTypeOp(session, name) class DelErdefOp(SchemaOperation): @@ -198,7 +198,7 @@ pass def after_del_relation_type(session, rdefeid, rtype, rteid): - """before deleting a EFRDef or ENFRDef entity: + """before deleting a CWAttribute or CWRelation entity: * if this is a final or inlined relation definition, instantiate an operation to drop necessary column, else if this is the last instance of a non final relation, instantiate an operation to drop necessary @@ -210,9 +210,9 @@ pendings = session.query_data('pendingeids', ()) # first delete existing relation if necessary if rschema.is_final(): - rdeftype = 'EFRDef' + rdeftype = 'CWAttribute' else: - rdeftype = 'ENFRDef' + rdeftype = 'CWRelation' if not (subjschema.eid in pendings or objschema.eid in pendings): session.execute('DELETE X %s Y WHERE X is %s, Y is %s' % (rschema, subjschema, objschema)) @@ -235,13 +235,13 @@ DropTableOp(session, table='%s_relation' % rschema.type) # if this is the last instance, drop associated relation type if lastrel and not rteid in pendings: - execute('DELETE ERType X WHERE X eid %(x)s', {'x': rteid}, 'x') + execute('DELETE CWRType X WHERE X eid %(x)s', {'x': rteid}, 'x') DelErdefOp(session, (subjschema, rschema, objschema)) # addition #################################################################### -class AddEETypeOp(EarlySchemaOperation): +class AddCWETypeOp(EarlySchemaOperation): """actually add the entity type to the application's schema""" eid = None # make pylint happy def commit_event(self): @@ -249,7 +249,7 @@ eschema.eid = self.eid def before_add_eetype(session, entity): - """before adding a EEType entity: + """before adding a CWEType entity: * check that we are not using an existing entity type, """ name = entity['name'] @@ -258,11 +258,11 @@ raise RepositoryError('an entity type %s already exists' % name) def after_add_eetype(session, entity): - """after adding a EEType entity: + """after adding a CWEType entity: * create the necessary table * set creation_date and modification_date by creating the necessary - EFRDef entities - * add owned_by relation by creating the necessary ENFRDef entity + CWAttribute entities + * add owned_by relation by creating the necessary CWRelation entity * register an operation to add the entity type to the application's schema on commit """ @@ -297,13 +297,13 @@ # register operation to modify the schema on commit # this have to be done before adding other relations definitions # or permission settings - AddEETypeOp(session, etype, eid=entity.eid) + AddCWETypeOp(session, etype, eid=entity.eid) # add meta creation_date, modification_date and owned_by relations for rql, kwargs in relrqls: session.execute(rql, kwargs) -class AddERTypeOp(EarlySchemaOperation): +class AddCWRTypeOp(EarlySchemaOperation): """actually add the relation type to the application's schema""" eid = None # make pylint happy def commit_event(self): @@ -312,7 +312,7 @@ rschema.eid = self.eid def before_add_ertype(session, entity): - """before adding a ERType entity: + """before adding a CWRType entity: * check that we are not using an existing relation type, * register an operation to add the relation type to the application's schema on commit @@ -324,12 +324,12 @@ raise RepositoryError('a relation type %s already exists' % name) def after_add_ertype(session, entity): - """after a ERType entity has been added: + """after a CWRType entity has been added: * register an operation to add the relation type to the application's schema on commit We don't know yeat this point if a table is necessary """ - AddERTypeOp(session, RelationType(name=entity['name'], + AddCWRTypeOp(session, RelationType(name=entity['name'], description=entity.get('description'), meta=entity.get('meta', False), inlined=entity.get('inlined', False), @@ -356,8 +356,8 @@ } -class AddEFRDefPreCommitOp(PreCommitOperation): - """an attribute relation (EFRDef) has been added: +class AddCWAttributePreCommitOp(PreCommitOperation): + """an attribute relation (CWAttribute) has been added: * add the necessary column * set default on this column if any and possible * register an operation to add the relation definition to the @@ -439,10 +439,10 @@ AddErdefOp(session, rdef) def after_add_efrdef(session, entity): - AddEFRDefPreCommitOp(session, entity=entity) + AddCWAttributePreCommitOp(session, entity=entity) -class AddENFRDefPreCommitOp(PreCommitOperation): +class AddCWRelationPreCommitOp(PreCommitOperation): """an actual relation has been added: * if this is an inlined relation, add the necessary column else if it's the first instance of this relation type, add the @@ -510,7 +510,7 @@ session.add_query_data('createdtables', rtype) def after_add_enfrdef(session, entity): - AddENFRDefPreCommitOp(session, entity=entity) + AddCWRelationPreCommitOp(session, entity=entity) # update ###################################################################### @@ -846,7 +846,7 @@ def after_add_permission(session, subject, rtype, object): """added entity/relation *_permission, need to update schema""" perm = rtype.split('_', 1)[0] - if session.describe(object)[0] == 'EGroup': + if session.describe(object)[0] == 'CWGroup': AddGroupPermissionOp(session, perm, subject, object) else: # RQLExpression expr = session.execute('Any EXPR WHERE X eid %(x)s, X expression EXPR', @@ -906,7 +906,7 @@ if subject in session.query_data('pendingeids', ()): return perm = rtype.split('_', 1)[0] - if session.describe(object)[0] == 'EGroup': + if session.describe(object)[0] == 'CWGroup': DelGroupPermissionOp(session, perm, subject, object) else: # RQLExpression expr = session.execute('Any EXPR WHERE X eid %(x)s, X expression EXPR', @@ -925,28 +925,28 @@ """register schema related hooks on the hooks manager""" # schema synchronisation ##################### # before/after add - hm.register_hook(before_add_eetype, 'before_add_entity', 'EEType') - hm.register_hook(before_add_ertype, 'before_add_entity', 'ERType') - hm.register_hook(after_add_eetype, 'after_add_entity', 'EEType') - hm.register_hook(after_add_ertype, 'after_add_entity', 'ERType') - hm.register_hook(after_add_efrdef, 'after_add_entity', 'EFRDef') - hm.register_hook(after_add_enfrdef, 'after_add_entity', 'ENFRDef') + hm.register_hook(before_add_eetype, 'before_add_entity', 'CWEType') + hm.register_hook(before_add_ertype, 'before_add_entity', 'CWRType') + hm.register_hook(after_add_eetype, 'after_add_entity', 'CWEType') + hm.register_hook(after_add_ertype, 'after_add_entity', 'CWRType') + hm.register_hook(after_add_efrdef, 'after_add_entity', 'CWAttribute') + hm.register_hook(after_add_enfrdef, 'after_add_entity', 'CWRelation') # before/after update - hm.register_hook(before_update_eetype, 'before_update_entity', 'EEType') - hm.register_hook(before_update_ertype, 'before_update_entity', 'ERType') - hm.register_hook(after_update_ertype, 'after_update_entity', 'ERType') - hm.register_hook(after_update_erdef, 'after_update_entity', 'EFRDef') - hm.register_hook(after_update_erdef, 'after_update_entity', 'ENFRDef') + hm.register_hook(before_update_eetype, 'before_update_entity', 'CWEType') + hm.register_hook(before_update_ertype, 'before_update_entity', 'CWRType') + hm.register_hook(after_update_ertype, 'after_update_entity', 'CWRType') + hm.register_hook(after_update_erdef, 'after_update_entity', 'CWAttribute') + hm.register_hook(after_update_erdef, 'after_update_entity', 'CWRelation') # before/after delete - hm.register_hook(before_del_eetype, 'before_delete_entity', 'EEType') - hm.register_hook(after_del_eetype, 'after_delete_entity', 'EEType') - hm.register_hook(before_del_ertype, 'before_delete_entity', 'ERType') + hm.register_hook(before_del_eetype, 'before_delete_entity', 'CWEType') + hm.register_hook(after_del_eetype, 'after_delete_entity', 'CWEType') + hm.register_hook(before_del_ertype, 'before_delete_entity', 'CWRType') hm.register_hook(after_del_relation_type, 'after_delete_relation', 'relation_type') hm.register_hook(rebuild_infered_relations, 'after_add_relation', 'specializes') hm.register_hook(rebuild_infered_relations, 'after_delete_relation', 'specializes') # constraints synchronization hooks - hm.register_hook(after_add_econstraint, 'after_add_entity', 'EConstraint') - hm.register_hook(after_update_econstraint, 'after_update_entity', 'EConstraint') + hm.register_hook(after_add_econstraint, 'after_add_entity', 'CWConstraint') + hm.register_hook(after_update_econstraint, 'after_update_entity', 'CWConstraint') hm.register_hook(before_delete_constrained_by, 'before_delete_relation', 'constrained_by') hm.register_hook(after_add_constrained_by, 'after_add_relation', 'constrained_by') # permissions synchronisation ################ diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 server/schemaserial.py --- a/server/schemaserial.py Fri Apr 17 13:21:05 2009 +0200 +++ b/server/schemaserial.py Fri Apr 17 16:55:37 2009 +0200 @@ -1,11 +1,12 @@ """functions for schema / permissions (de)serialization using RQL :organization: Logilab -:copyright: 2001-2008 LOGILAB S.A. (Paris, FRANCE), all rights reserved. +:copyright: 2001-2009 LOGILAB S.A. (Paris, FRANCE), all rights reserved. :contact: http://www.logilab.fr/ -- mailto:contact@logilab.fr """ __docformat__ = "restructuredtext en" +import sys from itertools import chain from logilab.common.shellutils import ProgressBar @@ -18,12 +19,12 @@ """create a group mapping from an rql cursor A group mapping has standard group names as key (managers, owners at least) - and the actual EGroup entity's eid as associated value. + and the actual CWGroup entity's eid as associated value. In interactive mode (the default), missing groups'eid will be prompted from the user. """ res = {} - for eid, name in cursor.execute('Any G, N WHERE G is EGroup, G name N'): + for eid, name in cursor.execute('Any G, N WHERE G is CWGroup, G name N'): res[name] = eid if not interactive: return res @@ -46,18 +47,68 @@ continue return res +def _set_sql_prefix(prefix): + """3.2.0 migration function: allow to unset/reset SQL_PREFIX""" + for module in ('checkintegrity', 'migractions', 'schemahooks', + 'sources.rql2sql', 'sources.native'): + try: + sys.modules['cubicweb.server.%s' % module].SQL_PREFIX = prefix + print 'changed SQL_PREFIX for %s' % module + except KeyError: + pass + +def _update_database(schema, sqlcu): + """3.2.0 migration function: update database schema by adding SQL_PREFIX to + entity type tables and columns + """ + for etype in schema.entities(): + if etype.is_final(): + continue + try: + sql = 'ALTER TABLE %s RENAME TO cw_%s' % ( + etype, ETYPE_NAME_MAP.get(etype, etype)) + print sql + sqlcu.execute(sql) + except: + pass + for rschema in etype.subject_relations(): + if rschema == 'has_text': + continue + if rschema.is_final() or rschema.inlined: + sql = 'ALTER TABLE cw_%s RENAME %s TO cw_%s' % ( + etype, rschema, rschema) + print sql + sqlcu.execute(sql) + # schema / perms deserialization ############################################## def deserialize_schema(schema, session): """return a schema according to information stored in an rql database - as ERType and EEType entities + as CWRType and CWEType entities """ + # + repo = session.repo + sqlcu = session.pool['system'] + _3_2_migration = False + if 'eetype' in [t.lower() for t in repo.system_source.dbhelper.list_tables(sqlcu)]: + _3_2_migration = True + # 3.2 migration + _set_sql_prefix('') + # first rename entity types whose name changed in 3.2 without adding the + # cw_ prefix + for etype in ('EFRDef', 'ENFRDef', 'ERType', 'EEType', + 'EConstraintType', 'EConstraint', 'EGroup', 'EUser', + 'ECache', 'EPermission', 'EProperty'): + sql = 'ALTER TABLE %s RENAME TO %s' % (etype, ETYPE_NAME_MAP[etype]) + print sql + sqlcu.execute(sql) + # other table renaming done once schema has been readen # print 'reading schema from the database...' index = {} permsdict = deserialize_ertype_permissions(session) schema.reading_from_database = True for eid, etype, desc, meta in session.execute('Any X, N, D, M WHERE ' - 'X is EEType, X name N, ' + 'X is CWEType, X name N, ' 'X description D, X meta M', build_descr=False): # base types are already in the schema, skip them @@ -70,7 +121,7 @@ if etype in ETYPE_NAME_MAP: # XXX <2.45 bw compat print 'fixing etype name from %s to %s' % (etype, ETYPE_NAME_MAP[etype]) # can't use write rql queries at this point, use raw sql - session.system_sql('UPDATE EEType SET name=%(n)s WHERE eid=%(x)s', + session.system_sql('UPDATE CWEType SET name=%(n)s WHERE eid=%(x)s', {'x': eid, 'n': ETYPE_NAME_MAP[etype]}) session.system_sql('UPDATE entities SET type=%(n)s WHERE type=%(x)s', {'x': etype, 'n': ETYPE_NAME_MAP[etype]}) @@ -91,7 +142,7 @@ index[eid] = eschema set_perms(eschema, permsdict.get(eid, {})) try: - rset = session.execute('Any XN, ETN WHERE X is EEType, X name XN, ' + rset = session.execute('Any XN, ETN WHERE X is CWEType, X name XN, ' 'X specializes ET, ET name ETN') except: # `specializes` relation not available for versions prior to 2.50 session.rollback(False) @@ -102,7 +153,7 @@ eschema._specialized_type = stype seschema._specialized_by.append(etype) for eid, rtype, desc, meta, sym, il in session.execute( - 'Any X,N,D,M,S,I WHERE X is ERType, X name N, X description D, ' + 'Any X,N,D,M,S,I WHERE X is CWRType, X name N, X description D, ' 'X meta M, X symetric S, X inlined I', build_descr=False): try: # bw compat: fulltext_container added in 2.47 @@ -119,7 +170,7 @@ set_perms(rschema, permsdict.get(eid, {})) cstrsdict = deserialize_rdef_constraints(session) for values in session.execute( - 'Any X,SE,RT,OE,CARD,ORD,DESC,IDX,FTIDX,I18N,DFLT WHERE X is EFRDef,' + 'Any X,SE,RT,OE,CARD,ORD,DESC,IDX,FTIDX,I18N,DFLT WHERE X is CWAttribute,' 'X relation_type RT, X cardinality CARD, X ordernum ORD, X indexed IDX,' 'X description DESC, X internationalizable I18N, X defaultval DFLT,' 'X fulltextindexed FTIDX, X from_entity SE, X to_entity OE', @@ -137,7 +188,7 @@ default=default, eid=rdefeid) schema.add_relation_def(rdef) for values in session.execute( - 'Any X,SE,RT,OE,CARD,ORD,DESC,C WHERE X is ENFRDef, X relation_type RT,' + 'Any X,SE,RT,OE,CARD,ORD,DESC,C WHERE X is CWRelation, X relation_type RT,' 'X cardinality CARD, X ordernum ORD, X description DESC, ' 'X from_entity SE, X to_entity OE, X composite C', build_descr=False): rdefeid, seid, reid, teid, card, ord, desc, c = values @@ -151,6 +202,9 @@ eid=rdefeid) schema.add_relation_def(rdef) schema.infer_specialization_rules() + if _3_2_migration: + _update_database(schema, sqlcu) + _set_sql_prefix('cw_') session.commit() schema.reading_from_database = False @@ -159,11 +213,11 @@ """return sect action:groups associations for the given entity or relation schema with its eid, according to schema's permissions stored in the database as [read|add|delete|update]_permission - relations between EEType/ERType and EGroup entities + relations between CWEType/CWRType and CWGroup entities """ res = {} for action in ('read', 'add', 'update', 'delete'): - rql = 'Any E,N WHERE G is EGroup, G name N, E %s_permission G' % action + rql = 'Any E,N WHERE G is CWGroup, G name N, E %s_permission G' % action for eid, gname in session.execute(rql, build_descr=False): res.setdefault(eid, {}).setdefault(action, []).append(gname) rql = ('Any E,X,EXPR,V WHERE X is RQLExpression, X expression EXPR, ' @@ -194,7 +248,7 @@ """return the list of relation definition's constraints as instances""" res = {} for rdefeid, ceid, ct, val in session.execute( - 'Any E, X,TN,V WHERE E constrained_by X, X is EConstraint, ' + 'Any E, X,TN,V WHERE E constrained_by X, X is CWConstraint, ' 'X cstrtype T, T name TN, X value V', build_descr=False): cstr = CONSTRAINTS[ct].deserialize(val) cstr.eid = ceid @@ -215,7 +269,7 @@ pb_size = len(aller) + len(CONSTRAINTS) + len([x for x in eschemas if x.specializes()]) pb = ProgressBar(pb_size) for cstrtype in CONSTRAINTS: - rql = 'INSERT EConstraintType X: X name "%s"' % cstrtype + rql = 'INSERT CWConstraintType X: X name "%s"' % cstrtype if verbose: print rql cursor.execute(rql) @@ -341,7 +395,7 @@ def schema2rql(schema, skip=None, allow=None): """return a list of rql insert statements to enter the schema in the - database as ERType and EEType entities + database as CWRType and CWEType entities """ assert not (skip is not None and allow is not None), \ 'can\'t use both skip and allow' @@ -359,12 +413,12 @@ def eschema2rql(eschema): """return a list of rql insert statements to enter an entity schema - in the database as an EEType entity + in the database as an CWEType entity """ relations, values = eschema_relations_values(eschema) # NOTE: 'specializes' relation can't be inserted here since there's no # way to make sure the parent type is inserted before the child type - yield 'INSERT EEType X: %s' % ','.join(relations) , values + yield 'INSERT CWEType X: %s' % ','.join(relations) , values def specialize2rql(schema): for eschema in schema.entities(): @@ -379,12 +433,12 @@ def rschema2rql(rschema, addrdef=True): """return a list of rql insert statements to enter a relation schema - in the database as an ERType entity + in the database as an CWRType entity """ if rschema.type == 'has_text': return relations, values = rschema_relations_values(rschema) - yield 'INSERT ERType X: %s' % ','.join(relations), values + yield 'INSERT CWRType X: %s' % ','.join(relations), values if addrdef: for rql, values in rdef2rql(rschema): yield rql, values @@ -401,17 +455,17 @@ relations, values = frdef_relations_values(rschema, objtype, props) relations.append(_LOCATE_RDEF_RQL0) values.update({'se': str(subjtype), 'rt': str(rschema), 'oe': str(objtype)}) - yield 'INSERT EFRDef X: %s WHERE %s' % (','.join(relations), _LOCATE_RDEF_RQL1), values + yield 'INSERT CWAttribute X: %s WHERE %s' % (','.join(relations), _LOCATE_RDEF_RQL1), values for rql, values in rdefrelations2rql(rschema, subjtype, objtype, props): - yield rql + ', EDEF is EFRDef', values + yield rql + ', EDEF is CWAttribute', values def nfrdef2rql(rschema, subjtype, objtype, props): relations, values = nfrdef_relations_values(rschema, objtype, props) relations.append(_LOCATE_RDEF_RQL0) values.update({'se': str(subjtype), 'rt': str(rschema), 'oe': str(objtype)}) - yield 'INSERT ENFRDef X: %s WHERE %s' % (','.join(relations), _LOCATE_RDEF_RQL1), values + yield 'INSERT CWRelation X: %s WHERE %s' % (','.join(relations), _LOCATE_RDEF_RQL1), values for rql, values in rdefrelations2rql(rschema, subjtype, objtype, props): - yield rql + ', EDEF is ENFRDef', values + yield rql + ', EDEF is CWRelation', values def rdefrelations2rql(rschema, subjtype, objtype, props): iterators = [] @@ -423,14 +477,14 @@ values = {'ctname': unicode(constraint.type()), 'value': unicode(constraint.serialize()), 'rt': str(rschema), 'se': str(subjtype), 'oe': str(objtype)} - yield 'INSERT EConstraint X: X value %(value)s, X cstrtype CT, EDEF constrained_by X WHERE \ + yield 'INSERT CWConstraint X: X value %(value)s, X cstrtype CT, EDEF constrained_by X WHERE \ CT name %(ctname)s, EDEF relation_type ER, EDEF from_entity SE, EDEF to_entity OE, \ ER name %(rt)s, SE name %(se)s, OE name %(oe)s', values def perms2rql(schema, groupmapping): """return rql insert statements to enter the schema's permissions in the database as [read|add|delete|update]_permission relations between - EEType/ERType and EGroup entities + CWEType/CWRType and CWGroup entities groupmapping is a dictionnary mapping standard group names to eids @@ -443,10 +497,10 @@ def erperms2rql(erschema, groupmapping): """return rql insert statements to enter the entity or relation schema's permissions in the database as - [read|add|delete|update]_permission relations between EEType/ERType - and EGroup entities + [read|add|delete|update]_permission relations between CWEType/CWRType + and CWGroup entities """ - etype = isinstance(erschema, schemamod.EntitySchema) and 'EEType' or 'ERType' + etype = isinstance(erschema, schemamod.EntitySchema) and 'CWEType' or 'CWRType' for action in erschema.ACTIONS: for group in sorted(erschema.get_groups(action)): try: @@ -465,12 +519,12 @@ def updateeschema2rql(eschema): relations, values = eschema_relations_values(eschema) values['et'] = eschema.type - yield 'SET %s WHERE X is EEType, X name %%(et)s' % ','.join(relations), values + yield 'SET %s WHERE X is CWEType, X name %%(et)s' % ','.join(relations), values def updaterschema2rql(rschema): relations, values = rschema_relations_values(rschema) values['rt'] = rschema.type - yield 'SET %s WHERE X is ERType, X name %%(rt)s' % ','.join(relations), values + yield 'SET %s WHERE X is CWRType, X name %%(rt)s' % ','.join(relations), values def updaterdef2rql(rschema, subjtype=None, objtype=None, props=None): genmap = {True: updatefrdef2rql, False: updatenfrdef2rql} @@ -479,13 +533,13 @@ def updatefrdef2rql(rschema, subjtype, objtype, props): relations, values = frdef_relations_values(rschema, objtype, props) values.update({'se': subjtype, 'rt': str(rschema), 'oe': objtype}) - yield 'SET %s WHERE %s, %s, X is EFRDef' % (','.join(relations), + yield 'SET %s WHERE %s, %s, X is CWAttribute' % (','.join(relations), _LOCATE_RDEF_RQL0, _LOCATE_RDEF_RQL1), values def updatenfrdef2rql(rschema, subjtype, objtype, props): relations, values = nfrdef_relations_values(rschema, objtype, props) values.update({'se': subjtype, 'rt': str(rschema), 'oe': objtype}) - yield 'SET %s WHERE %s, %s, X is ENFRDef' % (','.join(relations), + yield 'SET %s WHERE %s, %s, X is CWRelation' % (','.join(relations), _LOCATE_RDEF_RQL0, _LOCATE_RDEF_RQL1), values diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 server/sources/__init__.py --- a/server/sources/__init__.py Fri Apr 17 13:21:05 2009 +0200 +++ b/server/sources/__init__.py Fri Apr 17 16:55:37 2009 +0200 @@ -229,8 +229,8 @@ pass def authenticate(self, session, login, password): - """if the source support EUser entity type, it should implements - this method which should return EUser eid for the given login/password + """if the source support CWUser entity type, it should implements + this method which should return CWUser eid for the given login/password if this account is defined in this source and valid login / password is given. Else raise `AuthenticationError` """ diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 server/sources/ldapuser.py --- a/server/sources/ldapuser.py Fri Apr 17 13:21:05 2009 +0200 +++ b/server/sources/ldapuser.py Fri Apr 17 16:55:37 2009 +0200 @@ -1,6 +1,6 @@ """cubicweb ldap user source -this source is for now limited to a read-only EUser source +this source is for now limited to a read-only CWUser source :organization: Logilab :copyright: 2003-2009 LOGILAB S.A. (Paris, FRANCE), all rights reserved. @@ -51,8 +51,8 @@ class LDAPUserSource(AbstractSource): - """LDAP read-only EUser source""" - support_entities = {'EUser': False} + """LDAP read-only CWUser source""" + support_entities = {'CWUser': False} port = None @@ -200,7 +200,7 @@ return ConnectionWrapper(self._conn) def authenticate(self, session, login, password): - """return EUser eid for the given login/password if this account is + """return CWUser eid for the given login/password if this account is defined in this source, else raise `AuthenticationError` two queries are needed since passwords are stored crypted, so we have @@ -224,7 +224,7 @@ except: # Something went wrong, most likely bad credentials raise AuthenticationError() - return self.extid2eid(user['dn'], 'EUser', session) + return self.extid2eid(user['dn'], 'CWUser', session) def ldap_name(self, var): if var.stinfo['relations']: @@ -294,7 +294,7 @@ mainvars = [] for varname in rqlst.defined_vars: for sol in rqlst.solutions: - if sol[varname] == 'EUser': + if sol[varname] == 'CWUser': mainvars.append(varname) break assert mainvars @@ -326,7 +326,7 @@ filteredres = [] for resdict in res: # get sure the entity exists in the system table - eid = self.extid2eid(resdict['dn'], 'EUser', session) + eid = self.extid2eid(resdict['dn'], 'CWUser', session) for eidfilter in eidfilters: if not eidfilter(eid): break @@ -403,7 +403,7 @@ except ldap.PARTIAL_RESULTS: res = cnx.result(all=0)[1] except ldap.NO_SUCH_OBJECT: - eid = self.extid2eid(base, 'EUser', session, insert=False) + eid = self.extid2eid(base, 'CWUser', session, insert=False) if eid: self.warning('deleting ldap user with eid %s and dn %s', eid, base) diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 server/sources/native.py --- a/server/sources/native.py Fri Apr 17 13:21:05 2009 +0200 +++ b/server/sources/native.py Fri Apr 17 16:55:37 2009 +0200 @@ -85,9 +85,9 @@ # need default value on class since migration doesn't call init method has_deleted_entitites_table = True - passwd_rql = "Any P WHERE X is EUser, X login %(login)s, X upassword P" - auth_rql = "Any X WHERE X is EUser, X login %(login)s, X upassword %(pwd)s" - _sols = ({'X': 'EUser', 'P': 'Password'},) + passwd_rql = "Any P WHERE X is CWUser, X login %(login)s, X upassword P" + auth_rql = "Any X WHERE X is CWUser, X login %(login)s, X upassword %(pwd)s" + _sols = ({'X': 'CWUser', 'P': 'Password'},) options = ( ('db-driver', @@ -199,7 +199,7 @@ self._rql_sqlgen.schema = schema except AttributeError: pass # __init__ - if 'EUser' in schema: # probably an empty schema if not true... + if 'CWUser' in schema: # probably an empty schema if not true... # rql syntax trees used to authenticate users self._passwd_rqlst = self.compile_rql(self.passwd_rql) self._auth_rqlst = self.compile_rql(self.auth_rql) @@ -221,7 +221,7 @@ return True #not rtype == 'content_for' def authenticate(self, session, login, password): - """return EUser eid for the given login/password if this account is + """return CWUser eid for the given login/password if this account is defined in this source, else raise `AuthenticationError` two queries are needed since passwords are stored crypted, so we have diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 server/sources/pyrorql.py --- a/server/sources/pyrorql.py Fri Apr 17 13:21:05 2009 +0200 +++ b/server/sources/pyrorql.py Fri Apr 17 16:55:37 2009 +0200 @@ -134,13 +134,13 @@ def last_update_time(self): pkey = u'sources.%s.latest-update-time' % self.uri - rql = 'Any V WHERE X is EProperty, X value V, X pkey %(k)s' + rql = 'Any V WHERE X is CWProperty, X value V, X pkey %(k)s' session = self.repo.internal_session() try: rset = session.execute(rql, {'k': pkey}) if not rset: # insert it - session.execute('INSERT EProperty X: X pkey %(k)s, X value %(v)s', + session.execute('INSERT CWProperty X: X pkey %(k)s, X value %(v)s', {'k': pkey, 'v': u'0'}) session.commit() timestamp = 0 diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 server/sources/rql2sql.py --- a/server/sources/rql2sql.py Fri Apr 17 13:21:05 2009 +0200 +++ b/server/sources/rql2sql.py Fri Apr 17 16:55:37 2009 +0200 @@ -3,14 +3,14 @@ SQL queries optimization ~~~~~~~~~~~~~~~~~~~~~~~~ -1. EUser X WHERE X in_group G, G name 'users': +1. CWUser X WHERE X in_group G, G name 'users': - EUser is the only subject entity type for the in_group relation, + CWUser is the only subject entity type for the in_group relation, which allow us to do :: - SELECT eid_from FROM in_group, EGroup - WHERE in_group.eid_to = EGroup.eid_from - AND EGroup.name = 'users' + SELECT eid_from FROM in_group, CWGroup + WHERE in_group.eid_to = CWGroup.eid_from + AND CWGroup.name = 'users' 2. Any X WHERE X nonfinal1 Y, Y nonfinal2 Z diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 server/test/data/migrschema/relations.rel --- a/server/test/data/migrschema/relations.rel Fri Apr 17 13:21:05 2009 +0200 +++ b/server/test/data/migrschema/relations.rel Fri Apr 17 16:55:37 2009 +0200 @@ -1,6 +1,6 @@ Personne travaille Societe Personne evaluee Note -EUser evaluee Note +CWUser evaluee Note Societe evaluee Note Personne concerne Affaire Affaire concerne Societe diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 server/test/data/schema/Affaire.py --- a/server/test/data/schema/Affaire.py Fri Apr 17 13:21:05 2009 +0200 +++ b/server/test/data/schema/Affaire.py Fri Apr 17 16:55:37 2009 +0200 @@ -22,7 +22,7 @@ invoiced = Int() depends_on = SubjectRelation('Affaire') - require_permission = SubjectRelation('EPermission') + require_permission = SubjectRelation('CWPermission') class concerne(RelationType): permissions = { diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 server/test/data/schema/custom.py --- a/server/test/data/schema/custom.py Fri Apr 17 13:21:05 2009 +0200 +++ b/server/test/data/schema/custom.py Fri Apr 17 16:55:37 2009 +0200 @@ -30,5 +30,5 @@ subject = ('Bookmark', 'Note') object = ('Bookmark', 'Note') -_euser = import_schema('base').EUser +_euser = import_schema('base').CWUser _euser.__relations__[0].fulltextindexed = True diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 server/test/data/schema/relations.rel --- a/server/test/data/schema/relations.rel Fri Apr 17 13:21:05 2009 +0200 +++ b/server/test/data/schema/relations.rel Fri Apr 17 16:55:37 2009 +0200 @@ -1,13 +1,13 @@ Personne travaille Societe Personne evaluee Note -EUser evaluee Note +CWUser evaluee Note Societe evaluee Note Personne concerne Affaire Affaire concerne Societe Affaire concerne Note Note ecrit_par Personne inline CONSTRAINT E concerns P, X version_of P -Note ecrit_par EUser inline CONSTRAINT +Note ecrit_par CWUser inline CONSTRAINT Personne connait Personne symetric # not inlined intentionaly @@ -16,7 +16,7 @@ Note inline1 Affaire inline Personne inline2 Affaire inline -Note todo_by EUser +Note todo_by CWUser Affaire todo_by Personne Folder see_also Folder @@ -24,10 +24,10 @@ Affaire documented_by Card -EUser copain EUser +CWUser copain CWUser -Tag tags EUser -Tag tags EGroup +Tag tags CWUser +Tag tags CWGroup Tag tags State Tag tags Note Tag tags Card @@ -36,11 +36,11 @@ Note filed_under Folder Affaire filed_under Folder -Card require_permission EPermission -Note require_permission EPermission -Personne require_permission EPermission +Card require_permission CWPermission +Note require_permission CWPermission +Personne require_permission CWPermission -EPermission require_state State +CWPermission require_state State Note migrated_from Note diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 server/test/unittest_hookhelper.py --- a/server/test/unittest_hookhelper.py Fri Apr 17 13:21:05 2009 +0200 +++ b/server/test/unittest_hookhelper.py Fri Apr 17 16:55:37 2009 +0200 @@ -59,7 +59,7 @@ SendMailOp(session, msg=content, recipients=['test@logilab.fr']) self.hm.register_hook(in_state_changed, 'before_add_relation', 'in_state') - self.execute('INSERT EUser X: X login "paf", X upassword "wouf", X in_state S, X in_group G WHERE S name "activated", G name "users"') + self.execute('INSERT CWUser X: X login "paf", X upassword "wouf", X in_state S, X in_group G WHERE S name "activated", G name "users"') self.assertEquals(result, [None]) searchedops = [op for op in self.session.pending_operations if isinstance(op, SendMailOp)] diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 server/test/unittest_hooks.py --- a/server/test/unittest_hooks.py Fri Apr 17 13:21:05 2009 +0200 +++ b/server/test/unittest_hooks.py Fri Apr 17 16:55:37 2009 +0200 @@ -25,14 +25,14 @@ def test_delete_internal_entities(self): self.assertRaises(RepositoryError, self.execute, - 'DELETE EEType X WHERE X name "EEType"') + 'DELETE CWEType X WHERE X name "CWEType"') self.assertRaises(RepositoryError, self.execute, - 'DELETE ERType X WHERE X name "relation_type"') + 'DELETE CWRType X WHERE X name "relation_type"') self.assertRaises(RepositoryError, self.execute, - 'DELETE EGroup X WHERE X name "owners"') + 'DELETE CWGroup X WHERE X name "owners"') def test_delete_required_relations_subject(self): - self.execute('INSERT EUser X: X login "toto", X upassword "hop", X in_group Y, X in_state S ' + self.execute('INSERT CWUser X: X login "toto", X upassword "hop", X in_group Y, X in_state S ' 'WHERE Y name "users", S name "activated"') self.commit() self.execute('DELETE X in_group Y WHERE X login "toto", Y name "users"') @@ -47,17 +47,17 @@ def test_static_vocabulary_check(self): self.assertRaises(ValidationError, self.execute, - 'SET X composite "whatever" WHERE X from_entity FE, FE name "EUser", X relation_type RT, RT name "in_group"') + 'SET X composite "whatever" WHERE X from_entity FE, FE name "CWUser", X relation_type RT, RT name "in_group"') def test_missing_required_relations_subject_inline(self): # missing in_group relation - self.execute('INSERT EUser X: X login "toto", X upassword "hop"') + self.execute('INSERT CWUser X: X login "toto", X upassword "hop"') self.assertRaises(ValidationError, self.commit) def test_delete_if_singlecard1(self): self.assertEquals(self.repo.schema['in_state'].inlined, False) - ueid, = self.execute('INSERT EUser X: X login "toto", X upassword "hop", X in_group Y, X in_state S ' + ueid, = self.execute('INSERT CWUser X: X login "toto", X upassword "hop", X in_group Y, X in_state S ' 'WHERE Y name "users", S name "activated"')[0] self.commit() self.execute('SET X in_state S WHERE S name "deactivated", X eid %(x)s', {'x': ueid}) @@ -119,7 +119,7 @@ self.assertEquals(rset.get_entity(0, 0).reverse_parts[0].messageid, '<2345>') def test_unsatisfied_constraints(self): - self.execute('INSERT ENFRDef X: X from_entity FE, X relation_type RT, X to_entity TE ' + self.execute('INSERT CWRelation X: X from_entity FE, X relation_type RT, X to_entity TE ' 'WHERE FE name "Affaire", RT name "concerne", TE name "String"') self.assertRaises(ValidationError, self.commit) @@ -160,7 +160,7 @@ self.commit() cnxid = self.repo.connect(u'toto', 'hop') self.failIfEqual(cnxid, self.cnxid) - self.execute('DELETE EUser X WHERE X login "toto"') + self.execute('DELETE CWUser X WHERE X login "toto"') self.repo.execute(cnxid, 'State X') self.commit() self.assertRaises(BadConnectionId, @@ -194,47 +194,47 @@ self.commit() self.failIf(self.execute('Any X WHERE X created_by Y, X eid >= %(x)s', {'x': eid})) -class EPropertyHooksTC(RepositoryBasedTC): +class CWPropertyHooksTC(RepositoryBasedTC): def test_unexistant_eproperty(self): ex = self.assertRaises(ValidationError, - self.execute, 'INSERT EProperty X: X pkey "bla.bla", X value "hop", X for_user U') + self.execute, 'INSERT CWProperty X: X pkey "bla.bla", X value "hop", X for_user U') self.assertEquals(ex.errors, {'pkey': 'unknown property key'}) ex = self.assertRaises(ValidationError, - self.execute, 'INSERT EProperty X: X pkey "bla.bla", X value "hop"') + self.execute, 'INSERT CWProperty X: X pkey "bla.bla", X value "hop"') self.assertEquals(ex.errors, {'pkey': 'unknown property key'}) def test_site_wide_eproperty(self): ex = self.assertRaises(ValidationError, - self.execute, 'INSERT EProperty X: X pkey "ui.site-title", X value "hop", X for_user U') + self.execute, 'INSERT CWProperty X: X pkey "ui.site-title", X value "hop", X for_user U') self.assertEquals(ex.errors, {'for_user': "site-wide property can't be set for user"}) def test_bad_type_eproperty(self): ex = self.assertRaises(ValidationError, - self.execute, 'INSERT EProperty X: X pkey "ui.language", X value "hop", X for_user U') + self.execute, 'INSERT CWProperty X: X pkey "ui.language", X value "hop", X for_user U') self.assertEquals(ex.errors, {'value': u'unauthorized value'}) ex = self.assertRaises(ValidationError, - self.execute, 'INSERT EProperty X: X pkey "ui.language", X value "hop"') + self.execute, 'INSERT CWProperty X: X pkey "ui.language", X value "hop"') self.assertEquals(ex.errors, {'value': u'unauthorized value'}) class SchemaHooksTC(RepositoryBasedTC): def test_duplicate_etype_error(self): - # check we can't add a EEType or ERType entity if it already exists one + # check we can't add a CWEType or CWRType entity if it already exists one # with the same name # # according to hook order, we'll get a repository or validation error self.assertRaises((ValidationError, RepositoryError), - self.execute, 'INSERT EEType X: X name "Societe"') + self.execute, 'INSERT CWEType X: X name "Societe"') self.assertRaises((ValidationError, RepositoryError), - self.execute, 'INSERT ERType X: X name "in_group"') + self.execute, 'INSERT CWRType X: X name "in_group"') def test_validation_unique_constraint(self): self.assertRaises(ValidationError, - self.execute, 'INSERT EUser X: X login "admin"') + self.execute, 'INSERT CWUser X: X login "admin"') try: - self.execute('INSERT EUser X: X login "admin"') + self.execute('INSERT CWUser X: X login "admin"') except ValidationError, ex: self.assertIsInstance(ex.entity, int) self.assertEquals(ex.errors, {'login': 'the value "admin" is already used, use another one'}) @@ -264,26 +264,26 @@ self.failIf(schema.has_entity('Societe2')) self.failIf(schema.has_entity('concerne2')) # schema should be update on insertion (after commit) - self.execute('INSERT EEType X: X name "Societe2", X description "", X meta FALSE, X final FALSE') - self.execute('INSERT ERType X: X name "concerne2", X description "", X meta FALSE, X final FALSE, X symetric FALSE') + self.execute('INSERT CWEType X: X name "Societe2", X description "", X meta FALSE, X final FALSE') + self.execute('INSERT CWRType X: X name "concerne2", X description "", X meta FALSE, X final FALSE, X symetric FALSE') self.failIf(schema.has_entity('Societe2')) self.failIf(schema.has_entity('concerne2')) - self.execute('SET X read_permission G WHERE X is EEType, X name "Societe2", G is EGroup') - self.execute('SET X read_permission G WHERE X is ERType, X name "concerne2", G is EGroup') - self.execute('SET X add_permission G WHERE X is EEType, X name "Societe2", G is EGroup, G name "managers"') - self.execute('SET X add_permission G WHERE X is ERType, X name "concerne2", G is EGroup, G name "managers"') - self.execute('SET X delete_permission G WHERE X is EEType, X name "Societe2", G is EGroup, G name "owners"') - self.execute('SET X delete_permission G WHERE X is ERType, X name "concerne2", G is EGroup, G name "owners"') + self.execute('SET X read_permission G WHERE X is CWEType, X name "Societe2", G is CWGroup') + self.execute('SET X read_permission G WHERE X is CWRType, X name "concerne2", G is CWGroup') + self.execute('SET X add_permission G WHERE X is CWEType, X name "Societe2", G is CWGroup, G name "managers"') + self.execute('SET X add_permission G WHERE X is CWRType, X name "concerne2", G is CWGroup, G name "managers"') + self.execute('SET X delete_permission G WHERE X is CWEType, X name "Societe2", G is CWGroup, G name "owners"') + self.execute('SET X delete_permission G WHERE X is CWRType, X name "concerne2", G is CWGroup, G name "owners"') # have to commit before adding definition relations self.commit() self.failUnless(schema.has_entity('Societe2')) self.failUnless(schema.has_relation('concerne2')) - self.execute('INSERT EFRDef X: X cardinality "11", X defaultval "noname", X indexed TRUE, X relation_type RT, X from_entity E, X to_entity F ' + self.execute('INSERT CWAttribute X: X cardinality "11", X defaultval "noname", X indexed TRUE, X relation_type RT, X from_entity E, X to_entity F ' 'WHERE RT name "nom", E name "Societe2", F name "String"') concerne2_rdef_eid = self.execute( - 'INSERT ENFRDef X: X cardinality "**", X relation_type RT, X from_entity E, X to_entity E ' + 'INSERT CWRelation X: X cardinality "**", X relation_type RT, X from_entity E, X to_entity E ' 'WHERE RT name "concerne2", E name "Societe2"')[0][0] - self.execute('INSERT ENFRDef X: X cardinality "?*", X relation_type RT, X from_entity E, X to_entity C ' + self.execute('INSERT CWRelation X: X cardinality "?*", X relation_type RT, X from_entity E, X to_entity C ' 'WHERE RT name "comments", E name "Societe2", C name "Comment"') self.failIf('nom' in schema['Societe2'].subject_relations()) self.failIf('concerne2' in schema['Societe2'].subject_relations()) @@ -299,17 +299,17 @@ rset = self.execute('Any X WHERE X concerne2 Y') self.assertEquals(rset.rows, [[s2eid]]) # check that when a relation definition is deleted, existing relations are deleted - self.execute('INSERT ENFRDef X: X cardinality "**", X relation_type RT, X from_entity E, X to_entity E ' + self.execute('INSERT CWRelation X: X cardinality "**", X relation_type RT, X from_entity E, X to_entity E ' 'WHERE RT name "concerne2", E name "Societe"') self.commit() - self.execute('DELETE ENFRDef X WHERE X eid %(x)s', {'x': concerne2_rdef_eid}, 'x') + self.execute('DELETE CWRelation X WHERE X eid %(x)s', {'x': concerne2_rdef_eid}, 'x') self.commit() self.failUnless('concerne2' in schema['Societe'].subject_relations()) self.failIf('concerne2' in schema['Societe2'].subject_relations()) self.failIf(self.execute('Any X WHERE X concerne2 Y')) # schema should be cleaned on delete (after commit) - self.execute('DELETE EEType X WHERE X name "Societe2"') - self.execute('DELETE ERType X WHERE X name "concerne2"') + self.execute('DELETE CWEType X WHERE X name "Societe2"') + self.execute('DELETE CWRType X WHERE X name "concerne2"') self.failUnless(self.index_exists('Societe2', 'nom')) self.failUnless(schema.has_entity('Societe2')) self.failUnless(schema.has_relation('concerne2')) @@ -336,42 +336,42 @@ def test_perms_synchronization_1(self): schema = self.repo.schema - self.assertEquals(schema['EUser'].get_groups('read'), set(('managers', 'users'))) - self.failUnless(self.execute('Any X, Y WHERE X is EEType, X name "EUser", Y is EGroup, Y name "users"')[0]) - self.execute('DELETE X read_permission Y WHERE X is EEType, X name "EUser", Y name "users"') - self.assertEquals(schema['EUser'].get_groups('read'), set(('managers', 'users', ))) + self.assertEquals(schema['CWUser'].get_groups('read'), set(('managers', 'users'))) + self.failUnless(self.execute('Any X, Y WHERE X is CWEType, X name "CWUser", Y is CWGroup, Y name "users"')[0]) + self.execute('DELETE X read_permission Y WHERE X is CWEType, X name "CWUser", Y name "users"') + self.assertEquals(schema['CWUser'].get_groups('read'), set(('managers', 'users', ))) self.commit() - self.assertEquals(schema['EUser'].get_groups('read'), set(('managers', ))) - self.execute('SET X read_permission Y WHERE X is EEType, X name "EUser", Y name "users"') + self.assertEquals(schema['CWUser'].get_groups('read'), set(('managers', ))) + self.execute('SET X read_permission Y WHERE X is CWEType, X name "CWUser", Y name "users"') self.commit() - self.assertEquals(schema['EUser'].get_groups('read'), set(('managers', 'users',))) + self.assertEquals(schema['CWUser'].get_groups('read'), set(('managers', 'users',))) def test_perms_synchronization_2(self): schema = self.repo.schema['in_group'] self.assertEquals(schema.get_groups('read'), set(('managers', 'users', 'guests'))) - self.execute('DELETE X read_permission Y WHERE X is ERType, X name "in_group", Y name "guests"') + self.execute('DELETE X read_permission Y WHERE X is CWRType, X name "in_group", Y name "guests"') self.assertEquals(schema.get_groups('read'), set(('managers', 'users', 'guests'))) self.commit() self.assertEquals(schema.get_groups('read'), set(('managers', 'users'))) - self.execute('SET X read_permission Y WHERE X is ERType, X name "in_group", Y name "guests"') + self.execute('SET X read_permission Y WHERE X is CWRType, X name "in_group", Y name "guests"') self.assertEquals(schema.get_groups('read'), set(('managers', 'users'))) self.commit() self.assertEquals(schema.get_groups('read'), set(('managers', 'users', 'guests'))) def test_nonregr_user_edit_itself(self): ueid = self.session.user.eid - groupeids = [eid for eid, in self.execute('EGroup G WHERE G name in ("managers", "users")')] + groupeids = [eid for eid, in self.execute('CWGroup G WHERE G name in ("managers", "users")')] self.execute('DELETE X in_group Y WHERE X eid %s' % ueid) self.execute('SET X surname "toto" WHERE X eid %s' % ueid) self.execute('SET X in_group Y WHERE X eid %s, Y name "managers"' % ueid) self.commit() - eeid = self.execute('Any X WHERE X is EEType, X name "EEType"')[0][0] + eeid = self.execute('Any X WHERE X is CWEType, X name "CWEType"')[0][0] self.execute('DELETE X read_permission Y WHERE X eid %s' % eeid) self.execute('SET X final FALSE WHERE X eid %s' % eeid) self.execute('SET X read_permission Y WHERE X eid %s, Y eid in (%s, %s)' % (eeid, groupeids[0], groupeids[1])) self.commit() - self.execute('Any X WHERE X is EEType, X name "EEType"') + self.execute('Any X WHERE X is CWEType, X name "CWEType"') # schema modification hooks tests ######################################### @@ -432,7 +432,7 @@ sqlcursor = self.session.pool['system'] try: try: - self.execute('INSERT EConstraint X: X cstrtype CT, DEF constrained_by X ' + self.execute('INSERT CWConstraint X: X cstrtype CT, DEF constrained_by X ' 'WHERE CT name "UniqueConstraint", DEF relation_type RT, DEF from_entity E,' 'RT name "sujet", E name "Affaire"') self.failIf(self.schema['Affaire'].has_unique_values('sujet')) @@ -461,21 +461,21 @@ RepositoryBasedTC.setUp(self) self.s_activated = self.execute('State X WHERE X name "activated"')[0][0] self.s_deactivated = self.execute('State X WHERE X name "deactivated"')[0][0] - self.s_dummy = self.execute('INSERT State X: X name "dummy", X state_of E WHERE E name "EUser"')[0][0] + self.s_dummy = self.execute('INSERT State X: X name "dummy", X state_of E WHERE E name "CWUser"')[0][0] self.create_user('stduser') # give access to users group on the user's wf transitions # so we can test wf enforcing on euser (managers don't have anymore this # enforcement - self.execute('SET X require_group G WHERE G name "users", X transition_of ET, ET name "EUser"') + self.execute('SET X require_group G WHERE G name "users", X transition_of ET, ET name "CWUser"') self.commit() def tearDown(self): - self.execute('DELETE X require_group G WHERE G name "users", X transition_of ET, ET name "EUser"') + self.execute('DELETE X require_group G WHERE G name "users", X transition_of ET, ET name "CWUser"') self.commit() RepositoryBasedTC.tearDown(self) def test_set_initial_state(self): - ueid = self.execute('INSERT EUser E: E login "x", E upassword "x", E in_group G ' + ueid = self.execute('INSERT CWUser E: E login "x", E upassword "x", E in_group G ' 'WHERE G name "users"')[0][0] self.failIf(self.execute('Any N WHERE S name N, X in_state S, X eid %(x)s', {'x' : ueid})) @@ -488,11 +488,11 @@ cnx = self.login('stduser') cu = cnx.cursor() self.assertRaises(ValidationError, cu.execute, - 'INSERT EUser X: X login "badaboum", X upassword %(pwd)s, ' + 'INSERT CWUser X: X login "badaboum", X upassword %(pwd)s, ' 'X in_state S WHERE S name "deactivated"', {'pwd': 'oops'}) cnx.close() # though managers can do whatever he want - self.execute('INSERT EUser X: X login "badaboum", X upassword %(pwd)s, ' + self.execute('INSERT CWUser X: X login "badaboum", X upassword %(pwd)s, ' 'X in_state S, X in_group G WHERE S name "deactivated", G name "users"', {'pwd': 'oops'}) self.commit() diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 server/test/unittest_hooksmanager.py --- a/server/test/unittest_hooksmanager.py Fri Apr 17 13:21:05 2009 +0200 +++ b/server/test/unittest_hooksmanager.py Fri Apr 17 16:55:37 2009 +0200 @@ -25,13 +25,13 @@ self.assertRaises(AssertionError, self.o.register_hook, self._hook, 'before_add_entiti') self.assertRaises(AssertionError, - self.o.register_hook, self._hook, 'session_login', 'EEType') + self.o.register_hook, self._hook, 'session_login', 'CWEType') self.assertRaises(AssertionError, - self.o.register_hook, self._hook, 'session_logout', 'EEType') + self.o.register_hook, self._hook, 'session_logout', 'CWEType') self.assertRaises(AssertionError, - self.o.register_hook, self._hook, 'server_startup', 'EEType') + self.o.register_hook, self._hook, 'server_startup', 'CWEType') self.assertRaises(AssertionError, - self.o.register_hook, self._hook, 'server_shutdown', 'EEType') + self.o.register_hook, self._hook, 'server_shutdown', 'CWEType') def test_register_hook1(self): self.o.register_hook(self._hook, 'before_add_entity') diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 server/test/unittest_ldapuser.py --- a/server/test/unittest_ldapuser.py Fri Apr 17 13:21:05 2009 +0200 +++ b/server/test/unittest_ldapuser.py Fri Apr 17 16:55:37 2009 +0200 @@ -24,7 +24,7 @@ # no such user raise AuthenticationError() # don't check upassword ! - return self.extid2eid(user['dn'], 'EUser', session) + return self.extid2eid(user['dn'], 'CWUser', session) @@ -45,7 +45,7 @@ # sqlite since it doesn't support multiple connections on the same # database # so doing, ldap inserted users don't get removed between each test - rset = self.execute('EUser X') + rset = self.execute('CWUser X') self.commit() # check we get some users from ldap self.assert_(len(rset) > 1) @@ -67,7 +67,7 @@ def test_base(self): # check a known one - e = self.execute('EUser X WHERE X login "syt"').get_entity(0, 0) + e = self.execute('CWUser X WHERE X login "syt"').get_entity(0, 0) self.assertEquals(e.login, 'syt') e.complete() self.assertEquals(e.creation_date, None) @@ -79,49 +79,49 @@ self.assertEquals(e.created_by, []) self.assertEquals(e.primary_email[0].address, 'Sylvain Thenault') # email content should be indexed on the user - rset = self.execute('EUser X WHERE X has_text "thenault"') + rset = self.execute('CWUser X WHERE X has_text "thenault"') self.assertEquals(rset.rows, [[e.eid]]) def test_not(self): - eid = self.execute('EUser X WHERE X login "syt"')[0][0] - rset = self.execute('EUser X WHERE NOT X eid %s' % eid) + eid = self.execute('CWUser X WHERE X login "syt"')[0][0] + rset = self.execute('CWUser X WHERE NOT X eid %s' % eid) self.assert_(rset) self.assert_(not eid in (r[0] for r in rset)) def test_multiple(self): - seid = self.execute('EUser X WHERE X login "syt"')[0][0] - aeid = self.execute('EUser X WHERE X login "adim"')[0][0] - rset = self.execute('EUser X, Y WHERE X login "syt", Y login "adim"') + seid = self.execute('CWUser X WHERE X login "syt"')[0][0] + aeid = self.execute('CWUser X WHERE X login "adim"')[0][0] + rset = self.execute('CWUser X, Y WHERE X login "syt", Y login "adim"') self.assertEquals(rset.rows, [[seid, aeid]]) rset = self.execute('Any X,Y,L WHERE X login L, X login "syt", Y login "adim"') self.assertEquals(rset.rows, [[seid, aeid, 'syt']]) def test_in(self): - seid = self.execute('EUser X WHERE X login "syt"')[0][0] - aeid = self.execute('EUser X WHERE X login "adim"')[0][0] + seid = self.execute('CWUser X WHERE X login "syt"')[0][0] + aeid = self.execute('CWUser X WHERE X login "adim"')[0][0] rset = self.execute('Any X,L ORDERBY L WHERE X login IN("syt", "adim"), X login L') self.assertEquals(rset.rows, [[aeid, 'adim'], [seid, 'syt']]) def test_relations(self): - eid = self.execute('EUser X WHERE X login "syt"')[0][0] - rset = self.execute('Any X,E WHERE X is EUser, X login L, X primary_email E') + eid = self.execute('CWUser X WHERE X login "syt"')[0][0] + rset = self.execute('Any X,E WHERE X is CWUser, X login L, X primary_email E') self.assert_(eid in (r[0] for r in rset)) - rset = self.execute('Any X,L,E WHERE X is EUser, X login L, X primary_email E') + rset = self.execute('Any X,L,E WHERE X is CWUser, X login L, X primary_email E') self.assert_('syt' in (r[1] for r in rset)) def test_count(self): - nbusers = self.execute('Any COUNT(X) WHERE X is EUser')[0][0] + nbusers = self.execute('Any COUNT(X) WHERE X is CWUser')[0][0] # just check this is a possible number self.assert_(nbusers > 1, nbusers) self.assert_(nbusers < 30, nbusers) def test_upper(self): - eid = self.execute('EUser X WHERE X login "syt"')[0][0] + eid = self.execute('CWUser X WHERE X login "syt"')[0][0] rset = self.execute('Any UPPER(L) WHERE X eid %s, X login L' % eid) self.assertEquals(rset[0][0], 'SYT') def test_unknown_attr(self): - eid = self.execute('EUser X WHERE X login "syt"')[0][0] + eid = self.execute('CWUser X WHERE X login "syt"')[0][0] rset = self.execute('Any L,C,M WHERE X eid %s, X login L, ' 'X creation_date C, X modification_date M' % eid) self.assertEquals(rset[0][0], 'syt') @@ -145,7 +145,7 @@ # the related TrInfo has correct owner information self.execute('SET X in_group G WHERE X login "syt", G name "managers"') self.commit() - syt = self.execute('EUser X WHERE X login "syt"').get_entity(0, 0) + syt = self.execute('CWUser X WHERE X login "syt"').get_entity(0, 0) self.assertEquals([g.name for g in syt.in_group], ['managers', 'users']) self.patch_authenticate() cnx = self.login('syt', 'dummypassword') @@ -153,7 +153,7 @@ cu.execute('SET X in_state S WHERE X login "alf", S name "deactivated"') try: cnx.commit() - alf = self.execute('EUser X WHERE X login "alf"').get_entity(0, 0) + alf = self.execute('CWUser X WHERE X login "alf"').get_entity(0, 0) self.assertEquals(alf.in_state[0].name, 'deactivated') trinfo = alf.latest_trinfo() self.assertEquals(trinfo.owned_by[0].login, 'syt') @@ -177,8 +177,8 @@ self.failUnless(self.execute('Any X,Y WHERE X login "syt", Y login "cochon"')) def test_exists1(self): - self.add_entity('EGroup', name=u'bougloup1') - self.add_entity('EGroup', name=u'bougloup2') + self.add_entity('CWGroup', name=u'bougloup1') + self.add_entity('CWGroup', name=u'bougloup2') self.execute('SET U in_group G WHERE G name ~= "bougloup%", U login "admin"') self.execute('SET U in_group G WHERE G name = "bougloup1", U login "syt"') rset = self.execute('Any L,SN ORDERBY L WHERE X in_state S, S name SN, X login L, EXISTS(X in_group G, G name ~= "bougloup%")') @@ -210,9 +210,9 @@ self.execute('SET X copain Y WHERE X login "comme", Y login "billy"') self.execute('SET X copain Y WHERE X login "syt", Y login "billy"') # search for group name, login where - # EUser copain with "comme" or "cochon" AND same login as the copain + # CWUser copain with "comme" or "cochon" AND same login as the copain # OR - # EUser in_state activated AND not copain with billy + # CWUser in_state activated AND not copain with billy # # SO we expect everybody but "comme" and "syt" rset= self.execute('Any GN,L WHERE X in_group G, X login L, G name GN, ' @@ -243,13 +243,13 @@ ['users', 'syt']]) def test_cd_restriction(self): - rset = self.execute('EUser X WHERE X creation_date > "2009-02-01"') + rset = self.execute('CWUser X WHERE X creation_date > "2009-02-01"') self.assertEquals(len(rset), 2) # admin/anon but no ldap user since it doesn't support creation_date def test_union(self): afeids = self.execute('State X') - ueids = self.execute('EUser X') - rset = self.execute('(Any X WHERE X is State) UNION (Any X WHERE X is EUser)') + ueids = self.execute('CWUser X') + rset = self.execute('(Any X WHERE X is State) UNION (Any X WHERE X is CWUser)') self.assertEquals(sorted(r[0] for r in rset.rows), sorted(r[0] for r in afeids + ueids)) @@ -301,7 +301,7 @@ def test_nonregr5(self): # original jpl query: - # Any X, NOW - CD, P WHERE P is Project, U interested_in P, U is EUser, U login "sthenault", X concerns P, X creation_date CD ORDERBY CD DESC LIMIT 5 + # Any X, NOW - CD, P WHERE P is Project, U interested_in P, U is CWUser, U login "sthenault", X concerns P, X creation_date CD ORDERBY CD DESC LIMIT 5 rql = 'Any X, NOW - CD, P ORDERBY CD DESC LIMIT 5 WHERE P bookmarked_by U, U login "%s", P is X, X creation_date CD' % self.session.user.login self.execute(rql, )#{'x': }) @@ -309,7 +309,7 @@ self.execute('Any B,U,UL GROUPBY B,U,UL WHERE B created_by U?, B is File ' 'WITH U,UL BEING (Any U,UL WHERE ME eid %(x)s, (EXISTS(U identity ME) ' 'OR (EXISTS(U in_group G, G name IN("managers", "staff")))) ' - 'OR (EXISTS(U in_group H, ME in_group H, NOT H name "users")), U login UL, U is EUser)', + 'OR (EXISTS(U in_group H, ME in_group H, NOT H name "users")), U login UL, U is CWUser)', {'x': self.session.user.eid}) @@ -363,12 +363,12 @@ RQLGeneratorTC.tearDown(self) def test_base(self): - rqlst = self._prepare('EUser X WHERE X login "toto"').children[0] + rqlst = self._prepare('CWUser X WHERE X login "toto"').children[0] self.assertEquals(self.o.generate(rqlst, 'X')[1], '(&(objectClass=top)(objectClass=posixAccount)(uid=toto))') def test_kwargs(self): - rqlst = self._prepare('EUser X WHERE X login %(x)s').children[0] + rqlst = self._prepare('CWUser X WHERE X login %(x)s').children[0] self.o._args = {'x': "toto"} self.assertEquals(self.o.generate(rqlst, 'X')[1], '(&(objectClass=top)(objectClass=posixAccount)(uid=toto))') diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 server/test/unittest_migractions.py --- a/server/test/unittest_migractions.py Fri Apr 17 13:21:05 2009 +0200 +++ b/server/test/unittest_migractions.py Fri Apr 17 16:55:37 2009 +0200 @@ -127,9 +127,9 @@ self.failIf('filed_under2' in self.schema) self.mh.cmd_add_entity_type('Folder2') self.failUnless('Folder2' in self.schema) - self.failUnless(self.execute('EEType X WHERE X name "Folder2"')) + self.failUnless(self.execute('CWEType X WHERE X name "Folder2"')) self.failUnless('filed_under2' in self.schema) - self.failUnless(self.execute('ERType X WHERE X name "filed_under2"')) + self.failUnless(self.execute('CWRType X WHERE X name "filed_under2"')) self.assertEquals(sorted(str(rs) for rs in self.schema['Folder2'].subject_relations()), ['created_by', 'creation_date', 'description', 'description_format', 'eid', 'filed_under2', 'has_text', 'identity', 'is', 'is_instance_of', @@ -154,7 +154,7 @@ eschema = self.schema.eschema('Folder2') self.mh.cmd_drop_entity_type('Folder2') self.failIf('Folder2' in self.schema) - self.failIf(self.execute('EEType X WHERE X name "Folder2"')) + self.failIf(self.execute('CWEType X WHERE X name "Folder2"')) # test automatic workflow deletion self.failIf(self.execute('State X WHERE NOT X state_of ET')) self.failIf(self.execute('Transition X WHERE NOT X transition_of ET')) @@ -179,7 +179,7 @@ def test_add_relation_definition(self): self.mh.cmd_add_relation_definition('Societe', 'in_state', 'State') self.assertEquals(sorted(self.schema['in_state'].subjects()), - ['Affaire', 'Division', 'EUser', 'Note', 'Societe', 'SubDivision']) + ['Affaire', 'Division', 'CWUser', 'Note', 'Societe', 'SubDivision']) self.assertEquals(self.schema['in_state'].objects(), ('State',)) def test_add_relation_definition_nortype(self): @@ -210,7 +210,7 @@ self.mh.cmd_drop_relation_definition('Personne', 'evaluee', 'Note') self.failUnless('evaluee' in self.schema) self.assertEquals(sorted(self.schema['evaluee'].subjects()), - ['Division', 'EUser', 'Societe', 'SubDivision']) + ['Division', 'CWUser', 'Societe', 'SubDivision']) self.assertEquals(sorted(self.schema['evaluee'].objects()), ['Note']) @@ -257,7 +257,7 @@ migrschema['Personne'].description = 'blabla bla' migrschema['titre'].description = 'usually a title' migrschema['titre']._rproperties[('Personne', 'String')]['description'] = 'title for this person' -# rinorderbefore = cursor.execute('Any O,N WHERE X is EFRDef, X relation_type RT, RT name N,' +# rinorderbefore = cursor.execute('Any O,N WHERE X is CWAttribute, X relation_type RT, RT name N,' # 'X from_entity FE, FE name "Personne",' # 'X ordernum O ORDERBY O') # expected = [u'creation_date', u'modification_date', u'nom', u'prenom', @@ -279,7 +279,7 @@ # schema and so behaviour is undefined # "civility" is also skipped since it may have been added by # test_rename_attribut :o/ - rinorder = [n for n, in cursor.execute('Any N ORDERBY O WHERE X is EFRDef, X relation_type RT, RT name N,' + rinorder = [n for n, in cursor.execute('Any N ORDERBY O WHERE X is CWAttribute, X relation_type RT, RT name N,' 'X from_entity FE, FE name "Personne",' 'X ordernum O') if n not in ('sexe', 'description', 'civility')] expected = [u'nom', u'prenom', u'promo', u'ass', u'adel', u'titre', @@ -338,14 +338,14 @@ self.mh.rollback() def _erqlexpr_rset(self, action, ertype): - rql = 'RQLExpression X WHERE ET is EEType, ET %s_permission X, ET name %%(name)s' % action + rql = 'RQLExpression X WHERE ET is CWEType, ET %s_permission X, ET name %%(name)s' % action return self.mh.rqlcursor.execute(rql, {'name': ertype}) def _erqlexpr_entity(self, action, ertype): rset = self._erqlexpr_rset(action, ertype) self.assertEquals(len(rset), 1) return rset.get_entity(0, 0) def _rrqlexpr_rset(self, action, ertype): - rql = 'RQLExpression X WHERE ET is ERType, ET %s_permission X, ET name %%(name)s' % action + rql = 'RQLExpression X WHERE ET is CWRType, ET %s_permission X, ET name %%(name)s' % action return self.mh.rqlcursor.execute(rql, {'name': ertype}) def _rrqlexpr_entity(self, action, ertype): rset = self._rrqlexpr_rset(action, ertype) @@ -355,14 +355,14 @@ def test_set_size_constraint(self): # existing previous value try: - self.mh.cmd_set_size_constraint('EEType', 'name', 128) + self.mh.cmd_set_size_constraint('CWEType', 'name', 128) finally: - self.mh.cmd_set_size_constraint('EEType', 'name', 64) + self.mh.cmd_set_size_constraint('CWEType', 'name', 64) # non existing previous value try: - self.mh.cmd_set_size_constraint('EEType', 'description', 256) + self.mh.cmd_set_size_constraint('CWEType', 'description', 256) finally: - self.mh.cmd_set_size_constraint('EEType', 'description', None) + self.mh.cmd_set_size_constraint('CWEType', 'description', None) def test_add_remove_cube(self): cubes = set(self.config.cubes()) diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 server/test/unittest_msplanner.py --- a/server/test/unittest_msplanner.py Fri Apr 17 13:21:05 2009 +0200 +++ b/server/test/unittest_msplanner.py Fri Apr 17 16:55:37 2009 +0200 @@ -19,7 +19,7 @@ class FakeUserROSource(AbstractSource): uri = 'zzz' - support_entities = {'EUser': False} + support_entities = {'CWUser': False} support_relations = {} def syntax_tree_search(self, *args, **kwargs): return [] @@ -38,10 +38,10 @@ X_ALL_SOLS = sorted([{'X': 'Affaire'}, {'X': 'Basket'}, {'X': 'Bookmark'}, {'X': 'Card'}, {'X': 'Comment'}, {'X': 'Division'}, - {'X': 'ECache'}, {'X': 'EConstraint'}, {'X': 'EConstraintType'}, - {'X': 'EEType'}, {'X': 'EFRDef'}, {'X': 'EGroup'}, - {'X': 'ENFRDef'}, {'X': 'EPermission'}, {'X': 'EProperty'}, - {'X': 'ERType'}, {'X': 'EUser'}, {'X': 'Email'}, + {'X': 'CWCache'}, {'X': 'CWConstraint'}, {'X': 'CWConstraintType'}, + {'X': 'CWEType'}, {'X': 'CWAttribute'}, {'X': 'CWGroup'}, + {'X': 'CWRelation'}, {'X': 'CWPermission'}, {'X': 'CWProperty'}, + {'X': 'CWRType'}, {'X': 'CWUser'}, {'X': 'Email'}, {'X': 'EmailAddress'}, {'X': 'EmailPart'}, {'X': 'EmailThread'}, {'X': 'File'}, {'X': 'Folder'}, {'X': 'Image'}, {'X': 'Note'}, {'X': 'Personne'}, {'X': 'RQLExpression'}, @@ -61,7 +61,7 @@ """test planner related feature on a 3-sources repository: * system source supporting everything - * ldap source supporting EUser + * ldap source supporting CWUser * rql source supporting Card """ repo = repo @@ -79,11 +79,11 @@ # add access to type attribute so S can't be invariant affreadperms[-1] = ERQLExpression('X concerne S?, S owned_by U, S type "X"') self.schema['Affaire']._groups['read'] = tuple(affreadperms) - # hijack EUser security - userreadperms = list(self.schema['EUser']._groups['read']) + # hijack CWUser security + userreadperms = list(self.schema['CWUser']._groups['read']) self.prevrqlexpr_user = userreadperms[-1] userreadperms[-1] = ERQLExpression('X owned_by U') - self.schema['EUser']._groups['read'] = tuple(userreadperms) + self.schema['CWUser']._groups['read'] = tuple(userreadperms) self.sources = self.o._repo.sources self.system = self.sources[-1] @@ -115,10 +115,10 @@ clear_cache(self.schema['Affaire'], 'ERSchema_get_rqlexprs') def restore_orig_euser_security(self): - userreadperms = list(self.schema['EUser']._groups['read']) + userreadperms = list(self.schema['CWUser']._groups['read']) userreadperms[-1] = self.prevrqlexpr_user - self.schema['EUser']._groups['read'] = tuple(userreadperms) - clear_cache(self.schema['EUser'], 'ERSchema_get_rqlexprs') + self.schema['CWUser']._groups['read'] = tuple(userreadperms) + clear_cache(self.schema['CWUser'], 'ERSchema_get_rqlexprs') class PartPlanInformationTC(BaseMSPlannerTC): @@ -143,13 +143,13 @@ def test_simple_system_only(self): """retrieve entities only supported by the system source""" - self._test('EGroup X', + self._test('CWGroup X', {self.system: {'X': s[0]}}, False) def test_simple_system_ldap(self): - """retrieve EUser X from both sources and return concatenation of results + """retrieve CWUser X from both sources and return concatenation of results """ - self._test('EUser X', + self._test('CWUser X', {self.system: {'X': s[0]}, self.ldap: {'X': s[0]}}, False) def test_simple_system_rql(self): @@ -159,41 +159,41 @@ {self.system: {'X': s[0]}, self.rql: {'X': s[0]}}, False) def test_simple_eid_specified(self): - """retrieve EUser X from system source (eid is specified, can locate the entity) + """retrieve CWUser X from system source (eid is specified, can locate the entity) """ ueid = self.session.user.eid self._test('Any X,L WHERE X eid %(x)s, X login L', {'x': ueid}, {self.system: {'X': s[0]}}, False) def test_simple_eid_invariant(self): - """retrieve EUser X from system source (eid is specified, can locate the entity) + """retrieve CWUser X from system source (eid is specified, can locate the entity) """ ueid = self.session.user.eid self._test('Any X WHERE X eid %(x)s', {'x': ueid}, {self.system: {'x': s[0]}}, False) def test_simple_invariant(self): - """retrieve EUser X from system source only (X is invariant and in_group not supported by ldap source) + """retrieve CWUser X from system source only (X is invariant and in_group not supported by ldap source) """ - self._test('Any X WHERE X is EUser, X in_group G, G name "users"', + self._test('Any X WHERE X is CWUser, X in_group G, G name "users"', {self.system: {'X': s[0], 'G': s[0], 'in_group': s[0]}}, False) def test_security_has_text(self): - """retrieve EUser X from system source only (has_text not supported by ldap source) + """retrieve CWUser X from system source only (has_text not supported by ldap source) """ - # specify EUser instead of any since the way this test is written we aren't well dealing + # specify CWUser instead of any since the way this test is written we aren't well dealing # with ambigous query (eg only considering the first solution) - self._test('EUser X WHERE X has_text "bla"', + self._test('CWUser X WHERE X has_text "bla"', {self.system: {'X': s[0]}}, False) def test_complex_base(self): """ - 1. retrieve Any X, L WHERE X is EUser, X login L from system and ldap sources, store + 1. retrieve Any X, L WHERE X is CWUser, X login L from system and ldap sources, store concatenation of results into a temporary table 2. return the result of Any X, L WHERE X is TMP, X login L, X in_group G, G name 'users' on the system source """ - self._test('Any X,L WHERE X is EUser, X in_group G, X login L, G name "users"', + self._test('Any X,L WHERE X is CWUser, X in_group G, X login L, G name "users"', {self.system: {'X': s[0], 'G': s[0], 'in_group': s[0]}, self.ldap : {'X': s[0]}}, True) @@ -222,7 +222,7 @@ self.ldap : {'X': s[0]}}, True) def test_complex_ambigous(self): - """retrieve EUser X from system and ldap sources, Person X from system source only + """retrieve CWUser X from system and ldap sources, Person X from system source only """ self._test('Any X,F WHERE X firstname F', {self.system: {'X': s[0, 1]}, @@ -370,61 +370,61 @@ def test_simple_system_only(self): """retrieve entities only supported by the system source """ - self._test('EGroup X', - [('OneFetchStep', [('Any X WHERE X is EGroup', [{'X': 'EGroup'}])], + self._test('CWGroup X', + [('OneFetchStep', [('Any X WHERE X is CWGroup', [{'X': 'CWGroup'}])], None, None, [self.system], {}, [])]) def test_simple_system_only_limit(self): """retrieve entities only supported by the system source """ - self._test('EGroup X LIMIT 10', - [('OneFetchStep', [('Any X LIMIT 10 WHERE X is EGroup', [{'X': 'EGroup'}])], + self._test('CWGroup X LIMIT 10', + [('OneFetchStep', [('Any X LIMIT 10 WHERE X is CWGroup', [{'X': 'CWGroup'}])], 10, None, [self.system], {}, [])]) def test_simple_system_only_limit_offset(self): """retrieve entities only supported by the system source """ - self._test('EGroup X LIMIT 10 OFFSET 10', - [('OneFetchStep', [('Any X LIMIT 10 OFFSET 10 WHERE X is EGroup', [{'X': 'EGroup'}])], + self._test('CWGroup X LIMIT 10 OFFSET 10', + [('OneFetchStep', [('Any X LIMIT 10 OFFSET 10 WHERE X is CWGroup', [{'X': 'CWGroup'}])], 10, 10, [self.system], {}, [])]) def test_simple_system_ldap(self): - """retrieve EUser X from both sources and return concatenation of results + """retrieve CWUser X from both sources and return concatenation of results """ - self._test('EUser X', - [('OneFetchStep', [('Any X WHERE X is EUser', [{'X': 'EUser'}])], + self._test('CWUser X', + [('OneFetchStep', [('Any X WHERE X is CWUser', [{'X': 'CWUser'}])], None, None, [self.ldap, self.system], {}, [])]) def test_simple_system_ldap_limit(self): - """retrieve EUser X from both sources and return concatenation of results + """retrieve CWUser X from both sources and return concatenation of results """ - self._test('EUser X LIMIT 10', - [('OneFetchStep', [('Any X LIMIT 10 WHERE X is EUser', [{'X': 'EUser'}])], + self._test('CWUser X LIMIT 10', + [('OneFetchStep', [('Any X LIMIT 10 WHERE X is CWUser', [{'X': 'CWUser'}])], 10, None, [self.ldap, self.system], {}, [])]) def test_simple_system_ldap_limit_offset(self): - """retrieve EUser X from both sources and return concatenation of results + """retrieve CWUser X from both sources and return concatenation of results """ - self._test('EUser X LIMIT 10 OFFSET 10', - [('OneFetchStep', [('Any X LIMIT 10 OFFSET 10 WHERE X is EUser', [{'X': 'EUser'}])], + self._test('CWUser X LIMIT 10 OFFSET 10', + [('OneFetchStep', [('Any X LIMIT 10 OFFSET 10 WHERE X is CWUser', [{'X': 'CWUser'}])], 10, 10, [self.ldap, self.system], {}, [])]) def test_simple_system_ldap_ordered_limit_offset(self): - """retrieve EUser X from both sources and return concatenation of results + """retrieve CWUser X from both sources and return concatenation of results """ - self._test('EUser X ORDERBY X LIMIT 10 OFFSET 10', + self._test('CWUser X ORDERBY X LIMIT 10 OFFSET 10', [('AggrStep', 'Any X ORDERBY X', 10, 10, 'table0', None, [ - ('FetchStep', [('Any X WHERE X is EUser', [{'X': 'EUser'}])], + ('FetchStep', [('Any X WHERE X is CWUser', [{'X': 'CWUser'}])], [self.ldap, self.system], {}, {'X': 'table0.C0'}, []), ]), ]) def test_simple_system_ldap_aggregat(self): - """retrieve EUser X from both sources and return concatenation of results + """retrieve CWUser X from both sources and return concatenation of results """ # COUNT(X) is kept in sub-step and transformed into SUM(X) in the AggrStep - self._test('Any COUNT(X) WHERE X is EUser', + self._test('Any COUNT(X) WHERE X is CWUser', [('AggrStep', 'Any COUNT(X)', None, None, 'table0', None, [ - ('FetchStep', [('Any COUNT(X) WHERE X is EUser', [{'X': 'EUser'}])], + ('FetchStep', [('Any COUNT(X) WHERE X is CWUser', [{'X': 'CWUser'}])], [self.ldap, self.system], {}, {'COUNT(X)': 'table0.C0'}, []), ]), ]) @@ -437,16 +437,16 @@ None, None, [self.rql, self.system], {}, [])]) def test_simple_eid_specified(self): - """retrieve EUser X from system source (eid is specified, can locate the entity) + """retrieve CWUser X from system source (eid is specified, can locate the entity) """ ueid = self.session.user.eid self._test('Any X,L WHERE X eid %(x)s, X login L', - [('OneFetchStep', [('Any X,L WHERE X eid %s, X login L'%ueid, [{'X': 'EUser', 'L': 'String'}])], + [('OneFetchStep', [('Any X,L WHERE X eid %s, X login L'%ueid, [{'X': 'CWUser', 'L': 'String'}])], None, None, [self.system], {}, [])], {'x': ueid}) def test_simple_eid_invariant(self): - """retrieve EUser X from system source (eid is specified, can locate the entity) + """retrieve CWUser X from system source (eid is specified, can locate the entity) """ ueid = self.session.user.eid self._test('Any X WHERE X eid %(x)s', @@ -455,43 +455,43 @@ {'x': ueid}) def test_simple_invariant(self): - """retrieve EUser X from system source only (X is invariant and in_group not supported by ldap source) + """retrieve CWUser X from system source only (X is invariant and in_group not supported by ldap source) """ - self._test('Any X WHERE X is EUser, X in_group G, G name "users"', - [('OneFetchStep', [('Any X WHERE X is EUser, X in_group G, G name "users"', - [{'X': 'EUser', 'G': 'EGroup'}])], + self._test('Any X WHERE X is CWUser, X in_group G, G name "users"', + [('OneFetchStep', [('Any X WHERE X is CWUser, X in_group G, G name "users"', + [{'X': 'CWUser', 'G': 'CWGroup'}])], None, None, [self.system], {}, [])]) def test_complex_base(self): """ - 1. retrieve Any X, L WHERE X is EUser, X login L from system and ldap sources, store + 1. retrieve Any X, L WHERE X is CWUser, X login L from system and ldap sources, store concatenation of results into a temporary table 2. return the result of Any X, L WHERE X is TMP, X login LX in_group G, G name 'users' on the system source """ - self._test('Any X,L WHERE X is EUser, X in_group G, X login L, G name "users"', - [('FetchStep', [('Any X,L WHERE X login L, X is EUser', [{'X': 'EUser', 'L': 'String'}])], + self._test('Any X,L WHERE X is CWUser, X in_group G, X login L, G name "users"', + [('FetchStep', [('Any X,L WHERE X login L, X is CWUser', [{'X': 'CWUser', 'L': 'String'}])], [self.ldap, self.system], None, {'X': 'table0.C0', 'X.login': 'table0.C1', 'L': 'table0.C1'}, []), - ('OneFetchStep', [('Any X,L WHERE X in_group G, X login L, G name "users", G is EGroup, X is EUser', - [{'X': 'EUser', 'L': 'String', 'G': 'EGroup'}])], + ('OneFetchStep', [('Any X,L WHERE X in_group G, X login L, G name "users", G is CWGroup, X is CWUser', + [{'X': 'CWUser', 'L': 'String', 'G': 'CWGroup'}])], None, None, [self.system], {'X': 'table0.C0', 'X.login': 'table0.C1', 'L': 'table0.C1'}, []) ]) def test_complex_base_limit_offset(self): """ - 1. retrieve Any X, L WHERE X is EUser, X login L from system and ldap sources, store + 1. retrieve Any X, L WHERE X is CWUser, X login L from system and ldap sources, store concatenation of results into a temporary table 2. return the result of Any X, L WHERE X is TMP, X login LX in_group G, G name 'users' on the system source """ - self._test('Any X,L LIMIT 10 OFFSET 10 WHERE X is EUser, X in_group G, X login L, G name "users"', - [('FetchStep', [('Any X,L WHERE X login L, X is EUser', [{'X': 'EUser', 'L': 'String'}])], + self._test('Any X,L LIMIT 10 OFFSET 10 WHERE X is CWUser, X in_group G, X login L, G name "users"', + [('FetchStep', [('Any X,L WHERE X login L, X is CWUser', [{'X': 'CWUser', 'L': 'String'}])], [self.ldap, self.system], None, {'X': 'table0.C0', 'X.login': 'table0.C1', 'L': 'table0.C1'}, []), - ('OneFetchStep', [('Any X,L LIMIT 10 OFFSET 10 WHERE X in_group G, X login L, G name "users", G is EGroup, X is EUser', - [{'X': 'EUser', 'L': 'String', 'G': 'EGroup'}])], + ('OneFetchStep', [('Any X,L LIMIT 10 OFFSET 10 WHERE X in_group G, X login L, G name "users", G is CWGroup, X is CWUser', + [{'X': 'CWUser', 'L': 'String', 'G': 'CWGroup'}])], 10, 10, [self.system], {'X': 'table0.C0', 'X.login': 'table0.C1', 'L': 'table0.C1'}, []) ]) @@ -499,8 +499,8 @@ def test_complex_ordered(self): self._test('Any L ORDERBY L WHERE X login L', [('AggrStep', 'Any L ORDERBY L', None, None, 'table0', None, - [('FetchStep', [('Any L WHERE X login L, X is EUser', - [{'X': 'EUser', 'L': 'String'}])], + [('FetchStep', [('Any L WHERE X login L, X is CWUser', + [{'X': 'CWUser', 'L': 'String'}])], [self.ldap, self.system], {}, {'X.login': 'table0.C0', 'L': 'table0.C0'}, []), ]) ]) @@ -508,8 +508,8 @@ def test_complex_ordered_limit_offset(self): self._test('Any L ORDERBY L LIMIT 10 OFFSET 10 WHERE X login L', [('AggrStep', 'Any L ORDERBY L', 10, 10, 'table0', None, - [('FetchStep', [('Any L WHERE X login L, X is EUser', - [{'X': 'EUser', 'L': 'String'}])], + [('FetchStep', [('Any L WHERE X login L, X is CWUser', + [{'X': 'CWUser', 'L': 'String'}])], [self.ldap, self.system], {}, {'X.login': 'table0.C0', 'L': 'table0.C0'}, []), ]) ]) @@ -526,13 +526,13 @@ ueid = self.session.user.eid self._test('Any X,AA ORDERBY AA WHERE E eid %(x)s, E owned_by X, X modification_date AA', [('FetchStep', - [('Any X,AA WHERE X modification_date AA, X is EUser', - [{'AA': 'Datetime', 'X': 'EUser'}])], + [('Any X,AA WHERE X modification_date AA, X is CWUser', + [{'AA': 'Datetime', 'X': 'CWUser'}])], [self.ldap, self.system], None, {'AA': 'table0.C1', 'X': 'table0.C0', 'X.modification_date': 'table0.C1'}, []), ('OneFetchStep', - [('Any X,AA ORDERBY AA WHERE 5 owned_by X, X modification_date AA, X is EUser', - [{'AA': 'Datetime', 'X': 'EUser'}])], + [('Any X,AA ORDERBY AA WHERE 5 owned_by X, X modification_date AA, X is CWUser', + [{'AA': 'Datetime', 'X': 'CWUser'}])], None, None, [self.system], {'AA': 'table0.C1', 'X': 'table0.C0', 'X.modification_date': 'table0.C1'}, []), ], @@ -547,23 +547,23 @@ """ ueid = self.session.user.eid self._test('Any X,L,AA WHERE E eid %(x)s, E owned_by X, X login L, X modification_date AA', - [('FetchStep', [('Any X,L,AA WHERE X login L, X modification_date AA, X is EUser', - [{'AA': 'Datetime', 'X': 'EUser', 'L': 'String'}])], + [('FetchStep', [('Any X,L,AA WHERE X login L, X modification_date AA, X is CWUser', + [{'AA': 'Datetime', 'X': 'CWUser', 'L': 'String'}])], [self.ldap, self.system], None, {'AA': 'table0.C2', 'X': 'table0.C0', 'X.login': 'table0.C1', 'X.modification_date': 'table0.C2', 'L': 'table0.C1'}, []), - ('OneFetchStep', [('Any X,L,AA WHERE %s owned_by X, X login L, X modification_date AA, X is EUser'%ueid, - [{'AA': 'Datetime', 'X': 'EUser', 'L': 'String'}])], + ('OneFetchStep', [('Any X,L,AA WHERE %s owned_by X, X login L, X modification_date AA, X is CWUser'%ueid, + [{'AA': 'Datetime', 'X': 'CWUser', 'L': 'String'}])], None, None, [self.system], {'AA': 'table0.C2', 'X': 'table0.C0', 'X.login': 'table0.C1', 'X.modification_date': 'table0.C2', 'L': 'table0.C1'}, [])], {'x': ueid}) def test_complex_ambigous(self): - """retrieve EUser X from system and ldap sources, Person X from system source only + """retrieve CWUser X from system and ldap sources, Person X from system source only """ self._test('Any X,F WHERE X firstname F', [('UnionStep', None, None, [ - ('OneFetchStep', [('Any X,F WHERE X firstname F, X is EUser', - [{'X': 'EUser', 'F': 'String'}])], + ('OneFetchStep', [('Any X,F WHERE X firstname F, X is CWUser', + [{'X': 'CWUser', 'F': 'String'}])], None, None, [self.ldap, self.system], {}, []), ('OneFetchStep', [('Any X,F WHERE X firstname F, X is Personne', [{'X': 'Personne', 'F': 'String'}])], @@ -572,12 +572,12 @@ ]) def test_complex_ambigous_limit_offset(self): - """retrieve EUser X from system and ldap sources, Person X from system source only + """retrieve CWUser X from system and ldap sources, Person X from system source only """ self._test('Any X,F LIMIT 10 OFFSET 10 WHERE X firstname F', [('UnionStep', 10, 10, [ - ('OneFetchStep', [('Any X,F WHERE X firstname F, X is EUser', - [{'X': 'EUser', 'F': 'String'}])], + ('OneFetchStep', [('Any X,F WHERE X firstname F, X is CWUser', + [{'X': 'CWUser', 'F': 'String'}])], None, None, [self.ldap, self.system], {}, []), ('OneFetchStep', [('Any X,F WHERE X firstname F, X is Personne', @@ -588,14 +588,14 @@ def test_complex_ambigous_ordered(self): """ - 1. retrieve EUser X from system and ldap sources, Person X from system source only, store + 1. retrieve CWUser X from system and ldap sources, Person X from system source only, store each result in the same temp table 2. return content of the table sorted """ self._test('Any X,F ORDERBY F WHERE X firstname F', [('AggrStep', 'Any X,F ORDERBY F', None, None, 'table0', None, - [('FetchStep', [('Any X,F WHERE X firstname F, X is EUser', - [{'X': 'EUser', 'F': 'String'}])], + [('FetchStep', [('Any X,F WHERE X firstname F, X is CWUser', + [{'X': 'CWUser', 'F': 'String'}])], [self.ldap, self.system], {}, {'X': 'table0.C0', 'X.firstname': 'table0.C1', 'F': 'table0.C1'}, []), ('FetchStep', [('Any X,F WHERE X firstname F, X is Personne', @@ -615,15 +615,15 @@ ueid = self.session.user.eid self._test('Any X,Y WHERE X login "syt", Y login "adim"', [('FetchStep', - [('Any X WHERE X login "syt", X is EUser', [{'X': 'EUser'}])], + [('Any X WHERE X login "syt", X is CWUser', [{'X': 'CWUser'}])], [self.ldap, self.system], None, {'X': 'table0.C0'}, []), ('FetchStep', - [('Any Y WHERE Y login "adim", Y is EUser', [{'Y': 'EUser'}])], + [('Any Y WHERE Y login "adim", Y is CWUser', [{'Y': 'CWUser'}])], [self.ldap, self.system], None, {'Y': 'table1.C0'}, []), ('OneFetchStep', - [('Any X,Y WHERE X is EUser, Y is EUser', [{'X': 'EUser', 'Y': 'EUser'}])], + [('Any X,Y WHERE X is CWUser, Y is CWUser', [{'X': 'CWUser', 'Y': 'CWUser'}])], None, None, [self.system], {'X': 'table0.C0', 'Y': 'table1.C0'}, []) ], {'x': ueid}) @@ -638,13 +638,13 @@ ueid = self.session.user.eid self._test('Any X,Y LIMIT 10 OFFSET 10 WHERE X login "syt", Y login "adim"', [('FetchStep', - [('Any X WHERE X login "syt", X is EUser', [{'X': 'EUser'}])], + [('Any X WHERE X login "syt", X is CWUser', [{'X': 'CWUser'}])], [self.ldap, self.system], None, {'X': 'table0.C0'}, []), ('FetchStep', - [('Any Y WHERE Y login "adim", Y is EUser', [{'Y': 'EUser'}])], + [('Any Y WHERE Y login "adim", Y is CWUser', [{'Y': 'CWUser'}])], [self.ldap, self.system], None, {'Y': 'table1.C0'}, []), ('OneFetchStep', - [('Any X,Y LIMIT 10 OFFSET 10 WHERE X is EUser, Y is EUser', [{'X': 'EUser', 'Y': 'EUser'}])], + [('Any X,Y LIMIT 10 OFFSET 10 WHERE X is CWUser, Y is CWUser', [{'X': 'CWUser', 'Y': 'CWUser'}])], 10, 10, [self.system], {'X': 'table0.C0', 'Y': 'table1.C0'}, []) ], {'x': ueid}) @@ -683,7 +683,7 @@ ueid = self.session.user.eid self._test('Any U WHERE WF wf_info_for X, X eid %(x)s, WF owned_by U?, WF from_state FS', [('OneFetchStep', [('Any U WHERE WF wf_info_for 5, WF owned_by U?, WF from_state FS', - [{'WF': 'TrInfo', 'FS': 'State', 'U': 'EUser'}])], + [{'WF': 'TrInfo', 'FS': 'State', 'U': 'CWUser'}])], None, None, [self.system], {}, [])], {'x': ueid}) @@ -691,7 +691,7 @@ ueid = self.session.user.eid self._test('Any U WHERE WF wf_info_for X, X eid %(x)s, WF owned_by U?, WF from_state FS', [('OneFetchStep', [('Any U WHERE WF wf_info_for 5, WF owned_by U?, WF from_state FS', - [{'WF': 'TrInfo', 'FS': 'State', 'U': 'EUser'}])], + [{'WF': 'TrInfo', 'FS': 'State', 'U': 'CWUser'}])], None, None, [self.system], {}, [])], {'x': ueid}) @@ -701,16 +701,16 @@ [('FetchStep', [('Any X,T WHERE X title T, X is Card', [{'X': 'Card', 'T': 'String'}])], [self.rql, self.system], None, {'T': 'table0.C1', 'X': 'table0.C0', 'X.title': 'table0.C1'}, []), - ('FetchStep', [('Any U WHERE U login "syt", U is EUser', [{'U': 'EUser'}])], + ('FetchStep', [('Any U WHERE U login "syt", U is CWUser', [{'U': 'CWUser'}])], [self.ldap, self.system], None, {'U': 'table1.C0'}, []), ('UnionStep', None, None, [ - ('OneFetchStep', [('Any X,T WHERE X owned_by U, X title T, U is EUser, X is IN(Bookmark, EmailThread)', - [{'T': 'String', 'U': 'EUser', 'X': 'Bookmark'}, - {'T': 'String', 'U': 'EUser', 'X': 'EmailThread'}])], + ('OneFetchStep', [('Any X,T WHERE X owned_by U, X title T, U is CWUser, X is IN(Bookmark, EmailThread)', + [{'T': 'String', 'U': 'CWUser', 'X': 'Bookmark'}, + {'T': 'String', 'U': 'CWUser', 'X': 'EmailThread'}])], None, None, [self.system], {'U': 'table1.C0'}, []), - ('OneFetchStep', [('Any X,T WHERE X owned_by U, X title T, U is EUser, X is Card', - [{'X': 'Card', 'U': 'EUser', 'T': 'String'}])], + ('OneFetchStep', [('Any X,T WHERE X owned_by U, X title T, U is CWUser, X is Card', + [{'X': 'Card', 'U': 'CWUser', 'T': 'String'}])], None, None, [self.system], {'X': 'table0.C0', 'X.title': 'table0.C1', 'T': 'table0.C1', 'U': 'table1.C0'}, []), ]), @@ -749,7 +749,7 @@ # both system and rql support all variables, can be self._test('Any X WHERE NOT X identity U, U eid %s' % self.session.user.eid, [('OneFetchStep', - [('Any X WHERE NOT X identity 5, X is EUser', [{'X': 'EUser'}])], + [('Any X WHERE NOT X identity 5, X is CWUser', [{'X': 'CWUser'}])], None, None, [self.ldap, self.system], {}, []) ]) @@ -761,11 +761,11 @@ [{'Y': 'Note', 'A': 'State', 'R': 'String'}])], [self.rql, self.system], None, {'A': 'table0.C0', 'R': 'table0.C1', 'Y.type': 'table0.C1'}, []), - ('FetchStep', [('Any X,R WHERE X login R, X is EUser', [{'X': 'EUser', 'R': 'String'}])], + ('FetchStep', [('Any X,R WHERE X login R, X is CWUser', [{'X': 'CWUser', 'R': 'String'}])], [self.ldap, self.system], None, {'X': 'table1.C0', 'X.login': 'table1.C1', 'R': 'table1.C1'}, []), - ('OneFetchStep', [('Any X,MAX(R) GROUPBY X WHERE X in_state S, X login R, NOT EXISTS(Y type R, S identity A, A is State, Y is Note), S is State, X is EUser', - [{'Y': 'Note', 'X': 'EUser', 'S': 'State', 'R': 'String', 'A': 'State'}])], + ('OneFetchStep', [('Any X,MAX(R) GROUPBY X WHERE X in_state S, X login R, NOT EXISTS(Y type R, S identity A, A is State, Y is Note), S is State, X is CWUser', + [{'Y': 'Note', 'X': 'CWUser', 'S': 'State', 'R': 'String', 'A': 'State'}])], None, None, [self.system], {'A': 'table0.C0', 'X': 'table1.C0', 'X.login': 'table1.C1', 'R': 'table1.C1', 'Y.type': 'table0.C1'}, []) ]) @@ -784,8 +784,8 @@ ('OneFetchStep', [('Any X WHERE X has_text "bla", EXISTS(X owned_by 5), X is Basket', [{'X': 'Basket'}]), - ('Any X WHERE X has_text "bla", EXISTS(X owned_by 5), X is EUser', - [{'X': 'EUser'}]), + ('Any X WHERE X has_text "bla", EXISTS(X owned_by 5), X is CWUser', + [{'X': 'CWUser'}]), ('Any X WHERE X has_text "bla", X is IN(Card, Comment, Division, Email, EmailThread, File, Folder, Image, Note, Personne, Societe, State, SubDivision, Tag, Transition)', [{'X': 'Card'}, {'X': 'Comment'}, {'X': 'Division'}, {'X': 'Email'}, {'X': 'EmailThread'}, {'X': 'File'}, @@ -810,8 +810,8 @@ ('FetchStep', [('Any X WHERE X has_text "bla", EXISTS(X owned_by 5), X is Basket', [{'X': 'Basket'}]), - ('Any X WHERE X has_text "bla", EXISTS(X owned_by 5), X is EUser', - [{'X': 'EUser'}]), + ('Any X WHERE X has_text "bla", EXISTS(X owned_by 5), X is CWUser', + [{'X': 'CWUser'}]), ('Any X WHERE X has_text "bla", X is IN(Card, Comment, Division, Email, EmailThread, File, Folder, Image, Note, Personne, Societe, State, SubDivision, Tag, Transition)', [{'X': 'Card'}, {'X': 'Comment'}, {'X': 'Division'}, {'X': 'Email'}, {'X': 'EmailThread'}, {'X': 'File'}, @@ -823,7 +823,7 @@ ('OneFetchStep', [('Any X LIMIT 10 OFFSET 10', [{'X': 'Affaire'}, {'X': 'Basket'}, {'X': 'Card'}, - {'X': 'Comment'}, {'X': 'Division'}, {'X': 'EUser'}, + {'X': 'Comment'}, {'X': 'Division'}, {'X': 'CWUser'}, {'X': 'Email'}, {'X': 'EmailThread'}, {'X': 'File'}, {'X': 'Folder'}, {'X': 'Image'}, {'X': 'Note'}, {'X': 'Personne'}, {'X': 'Societe'}, {'X': 'State'}, @@ -837,20 +837,20 @@ self.session = self._user_session()[1] self._test('Any X WHERE X login "bla"', [('FetchStep', - [('Any X WHERE X login "bla", X is EUser', [{'X': 'EUser'}])], + [('Any X WHERE X login "bla", X is CWUser', [{'X': 'CWUser'}])], [self.ldap, self.system], None, {'X': 'table0.C0'}, []), ('OneFetchStep', - [('Any X WHERE EXISTS(X owned_by 5), X is EUser', [{'X': 'EUser'}])], + [('Any X WHERE EXISTS(X owned_by 5), X is CWUser', [{'X': 'CWUser'}])], None, None, [self.system], {'X': 'table0.C0'}, [])]) def test_security_complex_has_text(self): # use a guest user self.session = self._user_session()[1] self._test('Any X WHERE X has_text "bla", X firstname "bla"', - [('FetchStep', [('Any X WHERE X firstname "bla", X is EUser', [{'X': 'EUser'}])], + [('FetchStep', [('Any X WHERE X firstname "bla", X is CWUser', [{'X': 'CWUser'}])], [self.ldap, self.system], None, {'X': 'table0.C0'}, []), ('UnionStep', None, None, [ - ('OneFetchStep', [('Any X WHERE X has_text "bla", EXISTS(X owned_by 5), X is EUser', [{'X': 'EUser'}])], + ('OneFetchStep', [('Any X WHERE X has_text "bla", EXISTS(X owned_by 5), X is CWUser', [{'X': 'CWUser'}])], None, None, [self.system], {'X': 'table0.C0'}, []), ('OneFetchStep', [('Any X WHERE X has_text "bla", X firstname "bla", X is Personne', [{'X': 'Personne'}])], None, None, [self.system], {}, []), @@ -861,16 +861,16 @@ # use a guest user self.session = self._user_session()[1] self._test('Any X LIMIT 10 OFFSET 10 WHERE X has_text "bla", X firstname "bla"', - [('FetchStep', [('Any X WHERE X firstname "bla", X is EUser', [{'X': 'EUser'}])], + [('FetchStep', [('Any X WHERE X firstname "bla", X is CWUser', [{'X': 'CWUser'}])], [self.ldap, self.system], None, {'X': 'table1.C0'}, []), ('UnionFetchStep', [ - ('FetchStep', [('Any X WHERE X has_text "bla", EXISTS(X owned_by 5), X is EUser', [{'X': 'EUser'}])], + ('FetchStep', [('Any X WHERE X has_text "bla", EXISTS(X owned_by 5), X is CWUser', [{'X': 'CWUser'}])], [self.system], {'X': 'table1.C0'}, {'X': 'table0.C0'}, []), ('FetchStep', [('Any X WHERE X has_text "bla", X firstname "bla", X is Personne', [{'X': 'Personne'}])], [self.system], {}, {'X': 'table0.C0'}, []), ]), ('OneFetchStep', - [('Any X LIMIT 10 OFFSET 10', [{'X': 'EUser'}, {'X': 'Personne'}])], + [('Any X LIMIT 10 OFFSET 10', [{'X': 'CWUser'}, {'X': 'Personne'}])], 10, 10, [self.system], {'X': 'table0.C0'}, []) ]) @@ -880,7 +880,7 @@ self._test('Any MAX(X)', [('FetchStep', [('Any E WHERE E type "X", E is Note', [{'E': 'Note'}])], [self.rql, self.system], None, {'E': 'table1.C0'}, []), - ('FetchStep', [('Any X WHERE X is EUser', [{'X': 'EUser'}])], + ('FetchStep', [('Any X WHERE X is CWUser', [{'X': 'CWUser'}])], [self.ldap, self.system], None, {'X': 'table2.C0'}, []), ('UnionFetchStep', [ ('FetchStep', [('Any X WHERE EXISTS(X owned_by 5), X is Basket', [{'X': 'Basket'}])], @@ -890,19 +890,19 @@ [{'X': 'Card'}, {'X': 'Note'}, {'X': 'State'}])], [self.rql, self.system], {}, {'X': 'table0.C0'}, []), ('FetchStep', - [('Any X WHERE X is IN(Bookmark, Comment, Division, ECache, EConstraint, EConstraintType, EEType, EFRDef, EGroup, ENFRDef, EPermission, EProperty, ERType, Email, EmailAddress, EmailPart, EmailThread, File, Folder, Image, Personne, RQLExpression, Societe, SubDivision, Tag, TrInfo, Transition)', + [('Any X WHERE X is IN(Bookmark, Comment, Division, CWCache, CWConstraint, CWConstraintType, CWEType, CWAttribute, CWGroup, CWRelation, CWPermission, CWProperty, CWRType, Email, EmailAddress, EmailPart, EmailThread, File, Folder, Image, Personne, RQLExpression, Societe, SubDivision, Tag, TrInfo, Transition)', sorted([{'X': 'Bookmark'}, {'X': 'Comment'}, {'X': 'Division'}, - {'X': 'ECache'}, {'X': 'EConstraint'}, {'X': 'EConstraintType'}, - {'X': 'EEType'}, {'X': 'EFRDef'}, {'X': 'EGroup'}, - {'X': 'ENFRDef'}, {'X': 'EPermission'}, {'X': 'EProperty'}, - {'X': 'ERType'}, {'X': 'Email'}, {'X': 'EmailAddress'}, + {'X': 'CWCache'}, {'X': 'CWConstraint'}, {'X': 'CWConstraintType'}, + {'X': 'CWEType'}, {'X': 'CWAttribute'}, {'X': 'CWGroup'}, + {'X': 'CWRelation'}, {'X': 'CWPermission'}, {'X': 'CWProperty'}, + {'X': 'CWRType'}, {'X': 'Email'}, {'X': 'EmailAddress'}, {'X': 'EmailPart'}, {'X': 'EmailThread'}, {'X': 'File'}, {'X': 'Folder'}, {'X': 'Image'}, {'X': 'Personne'}, {'X': 'RQLExpression'}, {'X': 'Societe'}, {'X': 'SubDivision'}, {'X': 'Tag'}, {'X': 'TrInfo'}, {'X': 'Transition'}]))], [self.system], {}, {'X': 'table0.C0'}, []), ]), - ('FetchStep', [('Any X WHERE EXISTS(X owned_by 5), X is EUser', [{'X': 'EUser'}])], + ('FetchStep', [('Any X WHERE EXISTS(X owned_by 5), X is CWUser', [{'X': 'CWUser'}])], [self.system], {'X': 'table2.C0'}, {'X': 'table0.C0'}, []), ('FetchStep', [('Any X WHERE (EXISTS(X owned_by 5)) OR ((((EXISTS(D concerne C?, C owned_by 5, C type "X", X identity D, C is Division, D is Affaire)) OR (EXISTS(H concerne G?, G owned_by 5, G type "X", X identity H, G is SubDivision, H is Affaire))) OR (EXISTS(I concerne F?, F owned_by 5, F type "X", X identity I, F is Societe, I is Affaire))) OR (EXISTS(J concerne E?, E owned_by 5, X identity J, E is Note, J is Affaire))), X is Affaire', [{'C': 'Division', 'E': 'Note', 'D': 'Affaire', 'G': 'SubDivision', 'F': 'Societe', 'I': 'Affaire', 'H': 'Affaire', 'J': 'Affaire', 'X': 'Affaire'}])], @@ -921,67 +921,67 @@ [self.rql, self.system], None, {'X': 'table1.C0'}, []), ('FetchStep', [('Any E WHERE E type "X", E is Note', [{'E': 'Note'}])], [self.rql, self.system], None, {'E': 'table2.C0'}, []), - ('FetchStep', [('Any X WHERE X is EUser', [{'X': 'EUser'}])], + ('FetchStep', [('Any X WHERE X is CWUser', [{'X': 'CWUser'}])], [self.ldap, self.system], None, {'X': 'table3.C0'}, []), ('UnionFetchStep', - [('FetchStep', [('Any ET,X WHERE X is ET, EXISTS(X owned_by 5), ET is EEType, X is Basket', - [{'ET': 'EEType', 'X': 'Basket'}])], + [('FetchStep', [('Any ET,X WHERE X is ET, EXISTS(X owned_by 5), ET is CWEType, X is Basket', + [{'ET': 'CWEType', 'X': 'Basket'}])], [self.system], {}, {'ET': 'table0.C0', 'X': 'table0.C1'}, []), - ('FetchStep', [('Any ET,X WHERE X is ET, (EXISTS(X owned_by 5)) OR ((((EXISTS(D concerne C?, C owned_by 5, C type "X", X identity D, C is Division, D is Affaire)) OR (EXISTS(H concerne G?, G owned_by 5, G type "X", X identity H, G is SubDivision, H is Affaire))) OR (EXISTS(I concerne F?, F owned_by 5, F type "X", X identity I, F is Societe, I is Affaire))) OR (EXISTS(J concerne E?, E owned_by 5, X identity J, E is Note, J is Affaire))), ET is EEType, X is Affaire', + ('FetchStep', [('Any ET,X WHERE X is ET, (EXISTS(X owned_by 5)) OR ((((EXISTS(D concerne C?, C owned_by 5, C type "X", X identity D, C is Division, D is Affaire)) OR (EXISTS(H concerne G?, G owned_by 5, G type "X", X identity H, G is SubDivision, H is Affaire))) OR (EXISTS(I concerne F?, F owned_by 5, F type "X", X identity I, F is Societe, I is Affaire))) OR (EXISTS(J concerne E?, E owned_by 5, X identity J, E is Note, J is Affaire))), ET is CWEType, X is Affaire', [{'C': 'Division', 'E': 'Note', 'D': 'Affaire', 'G': 'SubDivision', 'F': 'Societe', 'I': 'Affaire', 'H': 'Affaire', 'J': 'Affaire', 'X': 'Affaire', - 'ET': 'EEType'}])], + 'ET': 'CWEType'}])], [self.system], {'E': 'table2.C0'}, {'ET': 'table0.C0', 'X': 'table0.C1'}, []), - ('FetchStep', [('Any ET,X WHERE X is ET, EXISTS(X owned_by 5), ET is EEType, X is EUser', - [{'ET': 'EEType', 'X': 'EUser'}])], + ('FetchStep', [('Any ET,X WHERE X is ET, EXISTS(X owned_by 5), ET is CWEType, X is CWUser', + [{'ET': 'CWEType', 'X': 'CWUser'}])], [self.system], {'X': 'table3.C0'}, {'ET': 'table0.C0', 'X': 'table0.C1'}, []), # extra UnionFetchStep could be avoided but has no cost, so don't care ('UnionFetchStep', - [('FetchStep', [('Any ET,X WHERE X is ET, ET is EEType, X is IN(Bookmark, Comment, Division, ECache, EConstraint, EConstraintType, EEType, EFRDef, EGroup, ENFRDef, EPermission, EProperty, ERType, Email, EmailAddress, EmailPart, EmailThread, File, Folder, Image, Personne, RQLExpression, Societe, SubDivision, Tag, TrInfo, Transition)', - [{'X': 'Bookmark', 'ET': 'EEType'}, {'X': 'Comment', 'ET': 'EEType'}, - {'X': 'Division', 'ET': 'EEType'}, {'X': 'ECache', 'ET': 'EEType'}, - {'X': 'EConstraint', 'ET': 'EEType'}, {'X': 'EConstraintType', 'ET': 'EEType'}, - {'X': 'EEType', 'ET': 'EEType'}, {'X': 'EFRDef', 'ET': 'EEType'}, - {'X': 'EGroup', 'ET': 'EEType'}, {'X': 'ENFRDef', 'ET': 'EEType'}, - {'X': 'EPermission', 'ET': 'EEType'}, {'X': 'EProperty', 'ET': 'EEType'}, - {'X': 'ERType', 'ET': 'EEType'}, {'X': 'Email', 'ET': 'EEType'}, - {'X': 'EmailAddress', 'ET': 'EEType'}, {'X': 'EmailPart', 'ET': 'EEType'}, - {'X': 'EmailThread', 'ET': 'EEType'}, {'X': 'File', 'ET': 'EEType'}, - {'X': 'Folder', 'ET': 'EEType'}, {'X': 'Image', 'ET': 'EEType'}, - {'X': 'Personne', 'ET': 'EEType'}, {'X': 'RQLExpression', 'ET': 'EEType'}, - {'X': 'Societe', 'ET': 'EEType'}, {'X': 'SubDivision', 'ET': 'EEType'}, - {'X': 'Tag', 'ET': 'EEType'}, {'X': 'TrInfo', 'ET': 'EEType'}, - {'X': 'Transition', 'ET': 'EEType'}])], + [('FetchStep', [('Any ET,X WHERE X is ET, ET is CWEType, X is IN(Bookmark, Comment, Division, CWCache, CWConstraint, CWConstraintType, CWEType, CWAttribute, CWGroup, CWRelation, CWPermission, CWProperty, CWRType, Email, EmailAddress, EmailPart, EmailThread, File, Folder, Image, Personne, RQLExpression, Societe, SubDivision, Tag, TrInfo, Transition)', + [{'X': 'Bookmark', 'ET': 'CWEType'}, {'X': 'Comment', 'ET': 'CWEType'}, + {'X': 'Division', 'ET': 'CWEType'}, {'X': 'CWCache', 'ET': 'CWEType'}, + {'X': 'CWConstraint', 'ET': 'CWEType'}, {'X': 'CWConstraintType', 'ET': 'CWEType'}, + {'X': 'CWEType', 'ET': 'CWEType'}, {'X': 'CWAttribute', 'ET': 'CWEType'}, + {'X': 'CWGroup', 'ET': 'CWEType'}, {'X': 'CWRelation', 'ET': 'CWEType'}, + {'X': 'CWPermission', 'ET': 'CWEType'}, {'X': 'CWProperty', 'ET': 'CWEType'}, + {'X': 'CWRType', 'ET': 'CWEType'}, {'X': 'Email', 'ET': 'CWEType'}, + {'X': 'EmailAddress', 'ET': 'CWEType'}, {'X': 'EmailPart', 'ET': 'CWEType'}, + {'X': 'EmailThread', 'ET': 'CWEType'}, {'X': 'File', 'ET': 'CWEType'}, + {'X': 'Folder', 'ET': 'CWEType'}, {'X': 'Image', 'ET': 'CWEType'}, + {'X': 'Personne', 'ET': 'CWEType'}, {'X': 'RQLExpression', 'ET': 'CWEType'}, + {'X': 'Societe', 'ET': 'CWEType'}, {'X': 'SubDivision', 'ET': 'CWEType'}, + {'X': 'Tag', 'ET': 'CWEType'}, {'X': 'TrInfo', 'ET': 'CWEType'}, + {'X': 'Transition', 'ET': 'CWEType'}])], [self.system], {}, {'ET': 'table0.C0', 'X': 'table0.C1'}, []), ('FetchStep', - [('Any ET,X WHERE X is ET, ET is EEType, X is IN(Card, Note, State)', - [{'ET': 'EEType', 'X': 'Card'}, - {'ET': 'EEType', 'X': 'Note'}, - {'ET': 'EEType', 'X': 'State'}])], + [('Any ET,X WHERE X is ET, ET is CWEType, X is IN(Card, Note, State)', + [{'ET': 'CWEType', 'X': 'Card'}, + {'ET': 'CWEType', 'X': 'Note'}, + {'ET': 'CWEType', 'X': 'State'}])], [self.system], {'X': 'table1.C0'}, {'ET': 'table0.C0', 'X': 'table0.C1'}, []), ]), ]), ('OneFetchStep', [('Any ET,COUNT(X) GROUPBY ET ORDERBY ET', - sorted([{'ET': 'EEType', 'X': 'Affaire'}, {'ET': 'EEType', 'X': 'Basket'}, - {'ET': 'EEType', 'X': 'Bookmark'}, {'ET': 'EEType', 'X': 'Card'}, - {'ET': 'EEType', 'X': 'Comment'}, {'ET': 'EEType', 'X': 'Division'}, - {'ET': 'EEType', 'X': 'ECache'}, {'ET': 'EEType', 'X': 'EConstraint'}, - {'ET': 'EEType', 'X': 'EConstraintType'}, {'ET': 'EEType', 'X': 'EEType'}, - {'ET': 'EEType', 'X': 'EFRDef'}, {'ET': 'EEType', 'X': 'EGroup'}, - {'ET': 'EEType', 'X': 'ENFRDef'}, {'ET': 'EEType', 'X': 'EPermission'}, - {'ET': 'EEType', 'X': 'EProperty'}, {'ET': 'EEType', 'X': 'ERType'}, - {'ET': 'EEType', 'X': 'EUser'}, {'ET': 'EEType', 'X': 'Email'}, - {'ET': 'EEType', 'X': 'EmailAddress'}, {'ET': 'EEType', 'X': 'EmailPart'}, - {'ET': 'EEType', 'X': 'EmailThread'}, {'ET': 'EEType', 'X': 'File'}, - {'ET': 'EEType', 'X': 'Folder'}, {'ET': 'EEType', 'X': 'Image'}, - {'ET': 'EEType', 'X': 'Note'}, {'ET': 'EEType', 'X': 'Personne'}, - {'ET': 'EEType', 'X': 'RQLExpression'}, {'ET': 'EEType', 'X': 'Societe'}, - {'ET': 'EEType', 'X': 'State'}, {'ET': 'EEType', 'X': 'SubDivision'}, - {'ET': 'EEType', 'X': 'Tag'}, {'ET': 'EEType', 'X': 'TrInfo'}, - {'ET': 'EEType', 'X': 'Transition'}]))], + sorted([{'ET': 'CWEType', 'X': 'Affaire'}, {'ET': 'CWEType', 'X': 'Basket'}, + {'ET': 'CWEType', 'X': 'Bookmark'}, {'ET': 'CWEType', 'X': 'Card'}, + {'ET': 'CWEType', 'X': 'Comment'}, {'ET': 'CWEType', 'X': 'Division'}, + {'ET': 'CWEType', 'X': 'CWCache'}, {'ET': 'CWEType', 'X': 'CWConstraint'}, + {'ET': 'CWEType', 'X': 'CWConstraintType'}, {'ET': 'CWEType', 'X': 'CWEType'}, + {'ET': 'CWEType', 'X': 'CWAttribute'}, {'ET': 'CWEType', 'X': 'CWGroup'}, + {'ET': 'CWEType', 'X': 'CWRelation'}, {'ET': 'CWEType', 'X': 'CWPermission'}, + {'ET': 'CWEType', 'X': 'CWProperty'}, {'ET': 'CWEType', 'X': 'CWRType'}, + {'ET': 'CWEType', 'X': 'CWUser'}, {'ET': 'CWEType', 'X': 'Email'}, + {'ET': 'CWEType', 'X': 'EmailAddress'}, {'ET': 'CWEType', 'X': 'EmailPart'}, + {'ET': 'CWEType', 'X': 'EmailThread'}, {'ET': 'CWEType', 'X': 'File'}, + {'ET': 'CWEType', 'X': 'Folder'}, {'ET': 'CWEType', 'X': 'Image'}, + {'ET': 'CWEType', 'X': 'Note'}, {'ET': 'CWEType', 'X': 'Personne'}, + {'ET': 'CWEType', 'X': 'RQLExpression'}, {'ET': 'CWEType', 'X': 'Societe'}, + {'ET': 'CWEType', 'X': 'State'}, {'ET': 'CWEType', 'X': 'SubDivision'}, + {'ET': 'CWEType', 'X': 'Tag'}, {'ET': 'CWEType', 'X': 'TrInfo'}, + {'ET': 'CWEType', 'X': 'Transition'}]))], None, None, [self.system], {'ET': 'table0.C0', 'X': 'table0.C1'}, []) ]) @@ -993,11 +993,11 @@ [('Any X,XT WHERE X title XT, X is Card', [{'X': 'Card', 'XT': 'String'}])], [self.rql, self.system], None, {'X': 'table0.C0', 'X.title': 'table0.C1', 'XT': 'table0.C1'}, []), ('FetchStep', - [('Any U WHERE U login "syt", U is EUser', [{'U': 'EUser'}])], + [('Any U WHERE U login "syt", U is CWUser', [{'U': 'CWUser'}])], [self.ldap, self.system], None, {'U': 'table1.C0'}, []), ('OneFetchStep', - [('Any X,XT WHERE X owned_by U, X title XT, EXISTS(U owned_by 5), U is EUser, X is Card', - [{'X': 'Card', 'U': 'EUser', 'XT': 'String'}])], + [('Any X,XT WHERE X owned_by U, X title XT, EXISTS(U owned_by 5), U is CWUser, X is Card', + [{'X': 'Card', 'U': 'CWUser', 'XT': 'String'}])], None, None, [self.system], {'X': 'table0.C0', 'X.title': 'table0.C1', 'XT': 'table0.C1', 'U': 'table1.C0'}, []) ]) @@ -1011,8 +1011,8 @@ [('Any X,XT WHERE X title XT, X is Card', [{'X': 'Card', 'XT': 'String'}])], [self.rql, self.system], None, {'X': 'table0.C0', 'X.title': 'table0.C1', 'XT': 'table0.C1'}, []), ('OneFetchStep', - [('Any X,XT WHERE X owned_by U, X title XT, U login "syt", EXISTS(U identity 5), U is EUser, X is Card', - [{'U': 'EUser', 'X': 'Card', 'XT': 'String'}])], + [('Any X,XT WHERE X owned_by U, X title XT, U login "syt", EXISTS(U identity 5), U is CWUser, X is Card', + [{'U': 'CWUser', 'X': 'Card', 'XT': 'String'}])], None, None, [self.system], {'X': 'table0.C0', 'X.title': 'table0.C1', 'XT': 'table0.C1'}, []) ]) @@ -1022,8 +1022,8 @@ self.session = self._user_session()[1] self._test('Any X,XT,U WHERE X is Card, X owned_by U?, X title XT, U login L', [('FetchStep', - [('Any U,L WHERE U identity 5, U login L, U is EUser', - [{'L': 'String', u'U': 'EUser'}])], + [('Any U,L WHERE U identity 5, U login L, U is CWUser', + [{'L': 'String', u'U': 'CWUser'}])], [self.system], {}, {'L': 'table0.C1', 'U': 'table0.C0', 'U.login': 'table0.C1'}, []), ('FetchStep', [('Any X,XT WHERE X title XT, X is Card', [{'X': 'Card', 'XT': 'String'}])], @@ -1046,47 +1046,47 @@ [('Any X,XT WHERE X title XT, X is Card', [{'X': 'Card', 'XT': 'String'}])], [self.rql, self.system], None, {'X': 'table0.C0', 'X.title': 'table0.C1', 'XT': 'table0.C1'}, []), ('FetchStep', - [('Any U WHERE U login "syt", U is EUser', [{'U': 'EUser'}])], + [('Any U WHERE U login "syt", U is CWUser', [{'U': 'CWUser'}])], [self.ldap, self.system], None, {'U': 'table1.C0'}, []), ('OneFetchStep', - [('Any X,XT LIMIT 10 OFFSET 10 WHERE X owned_by U, X title XT, EXISTS(U owned_by 5), U is EUser, X is Card', - [{'X': 'Card', 'U': 'EUser', 'XT': 'String'}])], + [('Any X,XT LIMIT 10 OFFSET 10 WHERE X owned_by U, X title XT, EXISTS(U owned_by 5), U is CWUser, X is Card', + [{'X': 'Card', 'U': 'CWUser', 'XT': 'String'}])], 10, 10, [self.system], {'X': 'table0.C0', 'X.title': 'table0.C1', 'XT': 'table0.C1', 'U': 'table1.C0'}, []) ]) def test_exists_base(self): self._test('Any X,L,S WHERE X in_state S, X login L, EXISTS(X in_group G, G name "bougloup")', - [('FetchStep', [('Any X,L WHERE X login L, X is EUser', [{'X': 'EUser', 'L': 'String'}])], + [('FetchStep', [('Any X,L WHERE X login L, X is CWUser', [{'X': 'CWUser', 'L': 'String'}])], [self.ldap, self.system], None, {'X': 'table0.C0', 'X.login': 'table0.C1', 'L': 'table0.C1'}, []), ('OneFetchStep', [("Any X,L,S WHERE X in_state S, X login L, " - 'EXISTS(X in_group G, G name "bougloup", G is EGroup), S is State, X is EUser', - [{'X': 'EUser', 'L': 'String', 'S': 'State', 'G': 'EGroup'}])], + 'EXISTS(X in_group G, G name "bougloup", G is CWGroup), S is State, X is CWUser', + [{'X': 'CWUser', 'L': 'String', 'S': 'State', 'G': 'CWGroup'}])], None, None, [self.system], {'X': 'table0.C0', 'X.login': 'table0.C1', 'L': 'table0.C1'}, [])]) def test_exists_complex(self): self._test('Any G WHERE X in_group G, G name "managers", EXISTS(X copain T, T login in ("comme", "cochon"))', - [('FetchStep', [('Any T WHERE T login IN("comme", "cochon"), T is EUser', [{'T': 'EUser'}])], + [('FetchStep', [('Any T WHERE T login IN("comme", "cochon"), T is CWUser', [{'T': 'CWUser'}])], [self.ldap, self.system], None, {'T': 'table0.C0'}, []), ('OneFetchStep', - [('Any G WHERE X in_group G, G name "managers", EXISTS(X copain T, T is EUser), G is EGroup, X is EUser', - [{'X': 'EUser', 'T': 'EUser', 'G': 'EGroup'}])], + [('Any G WHERE X in_group G, G name "managers", EXISTS(X copain T, T is CWUser), G is CWGroup, X is CWUser', + [{'X': 'CWUser', 'T': 'CWUser', 'G': 'CWGroup'}])], None, None, [self.system], {'T': 'table0.C0'}, [])]) def test_exists3(self): self._test('Any G,L WHERE X in_group G, X login L, G name "managers", EXISTS(X copain T, T login in ("comme", "cochon"))', [('FetchStep', - [('Any T WHERE T login IN("comme", "cochon"), T is EUser', - [{'T': 'EUser'}])], + [('Any T WHERE T login IN("comme", "cochon"), T is CWUser', + [{'T': 'CWUser'}])], [self.ldap, self.system], None, {'T': 'table0.C0'}, []), ('FetchStep', - [('Any L,X WHERE X login L, X is EUser', [{'X': 'EUser', 'L': 'String'}])], + [('Any L,X WHERE X login L, X is CWUser', [{'X': 'CWUser', 'L': 'String'}])], [self.ldap, self.system], None, {'X': 'table1.C1', 'X.login': 'table1.C0', 'L': 'table1.C0'}, []), ('OneFetchStep', - [('Any G,L WHERE X in_group G, X login L, G name "managers", EXISTS(X copain T, T is EUser), G is EGroup, X is EUser', - [{'G': 'EGroup', 'L': 'String', 'T': 'EUser', 'X': 'EUser'}])], + [('Any G,L WHERE X in_group G, X login L, G name "managers", EXISTS(X copain T, T is CWUser), G is CWGroup, X is CWUser', + [{'G': 'CWGroup', 'L': 'String', 'T': 'CWUser', 'X': 'CWUser'}])], None, None, [self.system], {'T': 'table0.C0', 'X': 'table1.C1', 'X.login': 'table1.C0', 'L': 'table1.C0'}, [])]) @@ -1095,18 +1095,18 @@ 'EXISTS(X copain T, T login L, T login in ("comme", "cochon")) OR ' 'EXISTS(X in_state S, S name "pascontent", NOT X copain T2, T2 login "billy")', [('FetchStep', - [('Any T,L WHERE T login L, T login IN("comme", "cochon"), T is EUser', [{'T': 'EUser', 'L': 'String'}])], + [('Any T,L WHERE T login L, T login IN("comme", "cochon"), T is CWUser', [{'T': 'CWUser', 'L': 'String'}])], [self.ldap, self.system], None, {'T': 'table0.C0', 'T.login': 'table0.C1', 'L': 'table0.C1'}, []), ('FetchStep', - [('Any T2 WHERE T2 login "billy", T2 is EUser', [{'T2': 'EUser'}])], + [('Any T2 WHERE T2 login "billy", T2 is CWUser', [{'T2': 'CWUser'}])], [self.ldap, self.system], None, {'T2': 'table1.C0'}, []), ('FetchStep', - [('Any L,X WHERE X login L, X is EUser', [{'X': 'EUser', 'L': 'String'}])], + [('Any L,X WHERE X login L, X is CWUser', [{'X': 'CWUser', 'L': 'String'}])], [self.ldap, self.system], None, {'X': 'table2.C1', 'X.login': 'table2.C0', 'L': 'table2.C0'}, []), ('OneFetchStep', - [('Any G,L WHERE X in_group G, X login L, G name "managers", (EXISTS(X copain T, T login L, T is EUser)) OR (EXISTS(X in_state S, S name "pascontent", NOT X copain T2, S is State, T2 is EUser)), G is EGroup, X is EUser', - [{'G': 'EGroup', 'L': 'String', 'S': 'State', 'T': 'EUser', 'T2': 'EUser', 'X': 'EUser'}])], + [('Any G,L WHERE X in_group G, X login L, G name "managers", (EXISTS(X copain T, T login L, T is CWUser)) OR (EXISTS(X in_state S, S name "pascontent", NOT X copain T2, S is State, T2 is CWUser)), G is CWGroup, X is CWUser', + [{'G': 'CWGroup', 'L': 'String', 'S': 'State', 'T': 'CWUser', 'T2': 'CWUser', 'X': 'CWUser'}])], None, None, [self.system], {'T2': 'table1.C0', 'L': 'table2.C0', 'T': 'table0.C0', 'T.login': 'table0.C1', 'X': 'table2.C1', 'X.login': 'table2.C0'}, [])]) @@ -1115,29 +1115,29 @@ self._test('Any GN,L WHERE X in_group G, X login L, G name GN, ' 'EXISTS(X copain T, T login in ("comme", "cochon")) AND ' 'NOT EXISTS(X copain T2, T2 login "billy")', - [('FetchStep', [('Any T WHERE T login IN("comme", "cochon"), T is EUser', - [{'T': 'EUser'}])], + [('FetchStep', [('Any T WHERE T login IN("comme", "cochon"), T is CWUser', + [{'T': 'CWUser'}])], [self.ldap, self.system], None, {'T': 'table0.C0'}, []), - ('FetchStep', [('Any T2 WHERE T2 login "billy", T2 is EUser', [{'T2': 'EUser'}])], + ('FetchStep', [('Any T2 WHERE T2 login "billy", T2 is CWUser', [{'T2': 'CWUser'}])], [self.ldap, self.system], None, {'T2': 'table1.C0'}, []), - ('FetchStep', [('Any L,X WHERE X login L, X is EUser', [{'X': 'EUser', 'L': 'String'}])], + ('FetchStep', [('Any L,X WHERE X login L, X is CWUser', [{'X': 'CWUser', 'L': 'String'}])], [self.ldap, self.system], None, {'X': 'table2.C1', 'X.login': 'table2.C0', 'L': 'table2.C0'}, []), - ('OneFetchStep', [('Any GN,L WHERE X in_group G, X login L, G name GN, EXISTS(X copain T, T is EUser), NOT EXISTS(X copain T2, T2 is EUser), G is EGroup, X is EUser', - [{'G': 'EGroup', 'GN': 'String', 'L': 'String', 'T': 'EUser', 'T2': 'EUser', 'X': 'EUser'}])], + ('OneFetchStep', [('Any GN,L WHERE X in_group G, X login L, G name GN, EXISTS(X copain T, T is CWUser), NOT EXISTS(X copain T2, T2 is CWUser), G is CWGroup, X is CWUser', + [{'G': 'CWGroup', 'GN': 'String', 'L': 'String', 'T': 'CWUser', 'T2': 'CWUser', 'X': 'CWUser'}])], None, None, [self.system], {'T': 'table0.C0', 'T2': 'table1.C0', 'X': 'table2.C1', 'X.login': 'table2.C0', 'L': 'table2.C0'}, [])]) def test_exists_security_no_invariant(self): ueid = self.session.user.eid - self._test('Any X,AA,AB,AC,AD ORDERBY AA WHERE X is EUser, X login AA, X firstname AB, X surname AC, X modification_date AD, A eid %(B)s, \ + self._test('Any X,AA,AB,AC,AD ORDERBY AA WHERE X is CWUser, X login AA, X firstname AB, X surname AC, X modification_date AD, A eid %(B)s, \ EXISTS(((X identity A) OR \ - (EXISTS(X in_group C, C name IN("managers", "staff"), C is EGroup))) OR \ - (EXISTS(X in_group D, A in_group D, NOT D name "users", D is EGroup)))', - [('FetchStep', [('Any X,AA,AB,AC,AD WHERE X login AA, X firstname AB, X surname AC, X modification_date AD, X is EUser', + (EXISTS(X in_group C, C name IN("managers", "staff"), C is CWGroup))) OR \ + (EXISTS(X in_group D, A in_group D, NOT D name "users", D is CWGroup)))', + [('FetchStep', [('Any X,AA,AB,AC,AD WHERE X login AA, X firstname AB, X surname AC, X modification_date AD, X is CWUser', [{'AA': 'String', 'AB': 'String', 'AC': 'String', 'AD': 'Datetime', - 'X': 'EUser'}])], + 'X': 'CWUser'}])], [self.ldap, self.system], None, {'AA': 'table0.C1', 'AB': 'table0.C2', 'AC': 'table0.C3', 'AD': 'table0.C4', 'X': 'table0.C0', @@ -1145,9 +1145,9 @@ 'X.login': 'table0.C1', 'X.modification_date': 'table0.C4', 'X.surname': 'table0.C3'}, []), - ('OneFetchStep', [('Any X,AA,AB,AC,AD ORDERBY AA WHERE X login AA, X firstname AB, X surname AC, X modification_date AD, EXISTS(((X identity 5) OR (EXISTS(X in_group C, C name IN("managers", "staff"), C is EGroup))) OR (EXISTS(X in_group D, 5 in_group D, NOT D name "users", D is EGroup))), X is EUser', + ('OneFetchStep', [('Any X,AA,AB,AC,AD ORDERBY AA WHERE X login AA, X firstname AB, X surname AC, X modification_date AD, EXISTS(((X identity 5) OR (EXISTS(X in_group C, C name IN("managers", "staff"), C is CWGroup))) OR (EXISTS(X in_group D, 5 in_group D, NOT D name "users", D is CWGroup))), X is CWUser', [{'AA': 'String', 'AB': 'String', 'AC': 'String', 'AD': 'Datetime', - 'C': 'EGroup', 'D': 'EGroup', 'X': 'EUser'}])], + 'C': 'CWGroup', 'D': 'CWGroup', 'X': 'CWUser'}])], None, None, [self.system], {'AA': 'table0.C1', 'AB': 'table0.C2', 'AC': 'table0.C3', 'AD': 'table0.C4', 'X': 'table0.C0', @@ -1158,8 +1158,8 @@ def test_relation_need_split(self): self._test('Any X, S WHERE X in_state S', [('UnionStep', None, None, [ - ('OneFetchStep', [('Any X,S WHERE X in_state S, S is State, X is IN(Affaire, EUser)', - [{'X': 'Affaire', 'S': 'State'}, {'X': 'EUser', 'S': 'State'}])], + ('OneFetchStep', [('Any X,S WHERE X in_state S, S is State, X is IN(Affaire, CWUser)', + [{'X': 'Affaire', 'S': 'State'}, {'X': 'CWUser', 'S': 'State'}])], None, None, [self.system], {}, []), ('OneFetchStep', [('Any X,S WHERE X in_state S, S is State, X is Note', [{'X': 'Note', 'S': 'State'}])], @@ -1172,8 +1172,8 @@ [{'X': 'Note', 'S': 'State'}])], [self.rql, self.system], None, {'X': 'table0.C0', 'S': 'table0.C1'}, []), ('UnionStep', None, None, - [('OneFetchStep', [('Any X,S,U WHERE X in_state S, X todo_by U, S is State, U is EUser, X is Note', - [{'X': 'Note', 'S': 'State', 'U': 'EUser'}])], + [('OneFetchStep', [('Any X,S,U WHERE X in_state S, X todo_by U, S is State, U is CWUser, X is Note', + [{'X': 'Note', 'S': 'State', 'U': 'CWUser'}])], None, None, [self.system], {'X': 'table0.C0', 'S': 'table0.C1'}, []), ('OneFetchStep', [('Any X,S,U WHERE X in_state S, X todo_by U, S is State, U is Personne, X is Affaire', [{'X': 'Affaire', 'S': 'State', 'U': 'Personne'}])], @@ -1187,8 +1187,8 @@ [{'X': 'Note', 'S': 'State'}])], [self.rql, self.system], None, {'X': 'table0.C0'}, []), ('UnionStep', None, None, - [('OneFetchStep', [('Any X,U WHERE X todo_by U, U is EUser, X is Note', - [{'X': 'Note', 'U': 'EUser'}])], + [('OneFetchStep', [('Any X,U WHERE X todo_by U, U is CWUser, X is Note', + [{'X': 'Note', 'U': 'CWUser'}])], None, None, [self.system], {'X': 'table0.C0'}, []), ('OneFetchStep', [('Any X,U WHERE X in_state S, S name "pending", X todo_by U, S is State, U is Personne, X is Affaire', [{'S': 'State', 'U': 'Personne', 'X': 'Affaire'}])], @@ -1206,9 +1206,9 @@ [{'X': 'Note', 'T': 'Tag'}])], None, None, [self.system], {'X': 'table0.C0'}, []), - ('OneFetchStep', [('Any X,T WHERE X in_state S, S name "pending", T tags X, S is State, T is Tag, X is IN(Affaire, EUser)', + ('OneFetchStep', [('Any X,T WHERE X in_state S, S name "pending", T tags X, S is State, T is Tag, X is IN(Affaire, CWUser)', [{'X': 'Affaire', 'S': 'State', 'T': 'Tag'}, - {'X': 'EUser', 'S': 'State', 'T': 'Tag'}])], + {'X': 'CWUser', 'S': 'State', 'T': 'Tag'}])], None, None, [self.system], {}, []), ]) @@ -1251,9 +1251,9 @@ None, None, [self.rql, self.system], {}, []), ('OneFetchStep', - [('Any SN WHERE NOT X in_state S, S name SN, S is State, X is IN(Affaire, EUser)', + [('Any SN WHERE NOT X in_state S, S name SN, S is State, X is IN(Affaire, CWUser)', [{'S': 'State', 'SN': 'String', 'X': 'Affaire'}, - {'S': 'State', 'SN': 'String', 'X': 'EUser'}])], + {'S': 'State', 'SN': 'String', 'X': 'CWUser'}])], None, None, [self.system], {'S': 'table0.C1', 'S.name': 'table0.C0', 'SN': 'table0.C0'}, []),] )]) @@ -1265,10 +1265,10 @@ [{'A': 'Note', 'C': 'Datetime', 'B': 'Datetime'}])], [self.rql], None, {'A': 'table0.C0', 'A.creation_date': 'table0.C1', 'A.modification_date': 'table0.C2', 'C': 'table0.C2', 'B': 'table0.C1'}, []), - #('FetchStep', [('Any D WHERE D is EUser', [{'D': 'EUser'}])], + #('FetchStep', [('Any D WHERE D is CWUser', [{'D': 'CWUser'}])], # [self.ldap, self.system], None, {'D': 'table1.C0'}, []), - ('OneFetchStep', [('Any A,B,C,D WHERE A creation_date B, A modification_date C, A todo_by D?, A is Note, D is EUser', - [{'A': 'Note', 'C': 'Datetime', 'B': 'Datetime', 'D': 'EUser'}])], + ('OneFetchStep', [('Any A,B,C,D WHERE A creation_date B, A modification_date C, A todo_by D?, A is Note, D is CWUser', + [{'A': 'Note', 'C': 'Datetime', 'B': 'Datetime', 'D': 'CWUser'}])], None, None, [self.system], {'A': 'table0.C0', 'A.creation_date': 'table0.C1', 'A.modification_date': 'table0.C2', 'C': 'table0.C2', 'B': 'table0.C1'}, [])], {'x': 999999}) @@ -1278,7 +1278,7 @@ repo._type_source_cache[999999] = ('Note', 'cards', 999999) self._test('Any U WHERE U in_group G, (G name IN ("managers", "logilab") OR (X require_permission P?, P name "bla", P require_group G)), X eid %(x)s, U eid %(u)s', [('OneFetchStep', [('Any 5 WHERE 5 in_group G, (G name IN("managers", "logilab")) OR (X require_permission P?, P name "bla", P require_group G), X eid 999999', - [{'X': 'Note', 'G': 'EGroup', 'P': 'EPermission'}])], + [{'X': 'Note', 'G': 'CWGroup', 'P': 'CWPermission'}])], None, None, [self.system], {}, [])], {'x': 999999, 'u': self.session.user.eid}) @@ -1382,11 +1382,11 @@ [{'T': 'String', 'X': 'Bookmark'}])], [self.system], {}, {'N': 'table0.C1', 'X': 'table0.C0', 'X.name': 'table0.C1'}, []), ('FetchStep', - [('Any B,C WHERE B login C, B is EUser', [{'B': 'EUser', 'C': 'String'}])], + [('Any B,C WHERE B login C, B is CWUser', [{'B': 'CWUser', 'C': 'String'}])], [self.ldap, self.system], None, {'B': 'table1.C0', 'B.login': 'table1.C1', 'C': 'table1.C1'}, []), - ('OneFetchStep', [('DISTINCT Any B,C ORDERBY C WHERE A created_by B, B login C, EXISTS(B owned_by 5), B is EUser', - [{'A': 'Bookmark', 'B': 'EUser', 'C': 'String'}, - {'A': 'Tag', 'B': 'EUser', 'C': 'String'}])], + ('OneFetchStep', [('DISTINCT Any B,C ORDERBY C WHERE A created_by B, B login C, EXISTS(B owned_by 5), B is CWUser', + [{'A': 'Bookmark', 'B': 'CWUser', 'C': 'String'}, + {'A': 'Tag', 'B': 'CWUser', 'C': 'String'}])], None, None, [self.system], {'A': 'table0.C0', 'B': 'table1.C0', 'B.login': 'table1.C1', @@ -1416,11 +1416,11 @@ 'X.title': 'table0.C1'}, []), ]), ('FetchStep', - [('Any B,C WHERE B login C, B is EUser', [{'B': 'EUser', 'C': 'String'}])], + [('Any B,C WHERE B login C, B is CWUser', [{'B': 'CWUser', 'C': 'String'}])], [self.ldap, self.system], None, {'B': 'table1.C0', 'B.login': 'table1.C1', 'C': 'table1.C1'}, []), - ('OneFetchStep', [('DISTINCT Any B,C ORDERBY C WHERE A created_by B, B login C, EXISTS(B owned_by 5), B is EUser', - [{'A': 'Card', 'B': 'EUser', 'C': 'String'}, - {'A': 'Tag', 'B': 'EUser', 'C': 'String'}])], + ('OneFetchStep', [('DISTINCT Any B,C ORDERBY C WHERE A created_by B, B login C, EXISTS(B owned_by 5), B is CWUser', + [{'A': 'Card', 'B': 'CWUser', 'C': 'String'}, + {'A': 'Tag', 'B': 'CWUser', 'C': 'String'}])], None, None, [self.system], {'A': 'table0.C0', 'B': 'table1.C0', 'B.login': 'table1.C1', @@ -1607,8 +1607,8 @@ ueid = self.session.user.eid self._test('DELETE X created_by Y WHERE X eid %(x)s, NOT Y eid %(y)s', [('DeleteRelationsStep', [ - ('OneFetchStep', [('Any 5,Y WHERE %s created_by Y, NOT Y eid %s, Y is EUser'%(ueid, ueid), - [{'Y': 'EUser'}])], + ('OneFetchStep', [('Any 5,Y WHERE %s created_by Y, NOT Y eid %s, Y is CWUser'%(ueid, ueid), + [{'Y': 'CWUser'}])], None, None, [self.system], {}, []), ]), ], @@ -1617,10 +1617,10 @@ def test_delete_relation2(self): ueid = self.session.user.eid self._test('DELETE X created_by Y WHERE X eid %(x)s, NOT Y login "syt"', - [('FetchStep', [('Any Y WHERE NOT Y login "syt", Y is EUser', [{'Y': 'EUser'}])], + [('FetchStep', [('Any Y WHERE NOT Y login "syt", Y is CWUser', [{'Y': 'CWUser'}])], [self.ldap, self.system], None, {'Y': 'table0.C0'}, []), ('DeleteRelationsStep', [ - ('OneFetchStep', [('Any %s,Y WHERE %s created_by Y, Y is EUser'%(ueid,ueid), [{'Y': 'EUser'}])], + ('OneFetchStep', [('Any %s,Y WHERE %s created_by Y, Y is CWUser'%(ueid,ueid), [{'Y': 'CWUser'}])], None, None, [self.system], {'Y': 'table0.C0'}, []), ]), ], @@ -1651,26 +1651,26 @@ def test_update(self): self._test('SET X copain Y WHERE X login "comme", Y login "cochon"', [('FetchStep', - [('Any X WHERE X login "comme", X is EUser', [{'X': 'EUser'}])], + [('Any X WHERE X login "comme", X is CWUser', [{'X': 'CWUser'}])], [self.ldap, self.system], None, {'X': 'table0.C0'}, []), ('FetchStep', - [('Any Y WHERE Y login "cochon", Y is EUser', [{'Y': 'EUser'}])], + [('Any Y WHERE Y login "cochon", Y is CWUser', [{'Y': 'CWUser'}])], [self.ldap, self.system], None, {'Y': 'table1.C0'}, []), ('UpdateStep', [('OneFetchStep', - [('DISTINCT Any X,Y WHERE X is EUser, Y is EUser', - [{'X': 'EUser', 'Y': 'EUser'}])], + [('DISTINCT Any X,Y WHERE X is CWUser, Y is CWUser', + [{'X': 'CWUser', 'Y': 'CWUser'}])], None, None, [self.system], {'X': 'table0.C0', 'Y': 'table1.C0'}, []) ]) ]) def test_update2(self): self._test('SET U in_group G WHERE G name ~= "bougloup%", U login "admin"', - [('FetchStep', [('Any U WHERE U login "admin", U is EUser', [{'U': 'EUser'}])], + [('FetchStep', [('Any U WHERE U login "admin", U is CWUser', [{'U': 'CWUser'}])], [self.ldap, self.system], None, {'U': 'table0.C0'}, []), ('UpdateStep', [ - ('OneFetchStep', [('DISTINCT Any U,G WHERE G name ILIKE "bougloup%", G is EGroup, U is EUser', - [{'U': 'EUser', 'G': 'EGroup'}])], + ('OneFetchStep', [('DISTINCT Any U,G WHERE G name ILIKE "bougloup%", G is CWGroup, U is CWUser', + [{'U': 'CWUser', 'G': 'CWGroup'}])], None, None, [self.system], {'U': 'table0.C0'}, []), ]), ]) @@ -1690,14 +1690,14 @@ # def test_update4(self): # # since we are adding a in_state relation with a state from the system -# # source, EUser should only be searched only in the system source as well +# # source, CWUser should only be searched only in the system source as well # rset = self.execute('State X WHERE X name "activated"') # assert len(rset) == 1, rset # activatedeid = rset[0][0] -# self._test('SET X in_state S WHERE X is EUser, S eid %s' % activatedeid, +# self._test('SET X in_state S WHERE X is CWUser, S eid %s' % activatedeid, # [('UpdateStep', [ -# ('OneFetchStep', [('DISTINCT Any X,%s WHERE X is EUser' % activatedeid, -# [{'X': 'EUser'}])], +# ('OneFetchStep', [('DISTINCT Any X,%s WHERE X is CWUser' % activatedeid, +# [{'X': 'CWUser'}])], # None, None, [self.system], {}, []), # ]), # ]) @@ -1707,14 +1707,14 @@ def test_nonregr1(self): self._test('Any X, Y WHERE X copain Y, X login "syt", Y login "cochon"', [('FetchStep', - [('Any X WHERE X login "syt", X is EUser', [{'X': 'EUser'}])], + [('Any X WHERE X login "syt", X is CWUser', [{'X': 'CWUser'}])], [self.ldap, self.system], None, {'X': 'table0.C0'}, []), ('FetchStep', - [('Any Y WHERE Y login "cochon", Y is EUser', [{'Y': 'EUser'}])], + [('Any Y WHERE Y login "cochon", Y is CWUser', [{'Y': 'CWUser'}])], [self.ldap, self.system], None, {'Y': 'table1.C0'}, []), ('OneFetchStep', - [('Any X,Y WHERE X copain Y, X is EUser, Y is EUser', - [{'X': 'EUser', 'Y': 'EUser'}])], + [('Any X,Y WHERE X copain Y, X is CWUser, Y is CWUser', + [{'X': 'CWUser', 'Y': 'CWUser'}])], None, None, [self.system], {'X': 'table0.C0', 'Y': 'table1.C0'}, []) ]) @@ -1724,8 +1724,8 @@ [('FetchStep', [('Any X,D WHERE X modification_date D, X is Note', [{'X': 'Note', 'D': 'Datetime'}])], [self.rql, self.system], None, {'X': 'table0.C0', 'X.modification_date': 'table0.C1', 'D': 'table0.C1'}, []), - ('FetchStep', [('Any X,D WHERE X modification_date D, X is EUser', - [{'X': 'EUser', 'D': 'Datetime'}])], + ('FetchStep', [('Any X,D WHERE X modification_date D, X is CWUser', + [{'X': 'CWUser', 'D': 'Datetime'}])], [self.ldap, self.system], None, {'X': 'table1.C0', 'X.modification_date': 'table1.C1', 'D': 'table1.C1'}, []), ('AggrStep', 'Any X ORDERBY D DESC', None, None, 'table2', None, [ ('FetchStep', [('Any X,D WHERE E eid %s, E wf_info_for X, X modification_date D, E is TrInfo, X is Affaire'%treid, @@ -1733,8 +1733,8 @@ [self.system], {}, {'X': 'table2.C0', 'X.modification_date': 'table2.C1', 'D': 'table2.C1', 'E.wf_info_for': 'table2.C0'}, []), - ('FetchStep', [('Any X,D WHERE E eid %s, E wf_info_for X, X modification_date D, E is TrInfo, X is EUser'%treid, - [{'X': 'EUser', 'E': 'TrInfo', 'D': 'Datetime'}])], + ('FetchStep', [('Any X,D WHERE E eid %s, E wf_info_for X, X modification_date D, E is TrInfo, X is CWUser'%treid, + [{'X': 'CWUser', 'E': 'TrInfo', 'D': 'Datetime'}])], [self.system], {'X': 'table1.C0', 'X.modification_date': 'table1.C1', 'D': 'table1.C1'}, {'X': 'table2.C0', 'X.modification_date': 'table2.C1', 'D': 'table2.C1', 'E.wf_info_for': 'table2.C0'}, []), @@ -1749,22 +1749,22 @@ def test_nonregr3(self): # original jpl query: - # Any X, NOW - CD, P WHERE P is Project, U interested_in P, U is EUser, U login "sthenault", X concerns P, X creation_date CD ORDERBY CD DESC LIMIT 5 + # Any X, NOW - CD, P WHERE P is Project, U interested_in P, U is CWUser, U login "sthenault", X concerns P, X creation_date CD ORDERBY CD DESC LIMIT 5 self._test('Any X, NOW - CD, P ORDERBY CD DESC LIMIT 5 WHERE P bookmarked_by U, U login "admin", P is X, X creation_date CD', - [('FetchStep', [('Any U WHERE U login "admin", U is EUser', [{'U': 'EUser'}])], + [('FetchStep', [('Any U WHERE U login "admin", U is CWUser', [{'U': 'CWUser'}])], [self.ldap, self.system], None, {'U': 'table0.C0'}, []), - ('OneFetchStep', [('Any X,(NOW - CD),P ORDERBY CD DESC LIMIT 5 WHERE P bookmarked_by U, P is X, X creation_date CD, P is Bookmark, U is EUser, X is EEType', - [{'P': 'Bookmark', 'U': 'EUser', 'X': 'EEType', 'CD': 'Datetime'}])], + ('OneFetchStep', [('Any X,(NOW - CD),P ORDERBY CD DESC LIMIT 5 WHERE P bookmarked_by U, P is X, X creation_date CD, P is Bookmark, U is CWUser, X is CWEType', + [{'P': 'Bookmark', 'U': 'CWUser', 'X': 'CWEType', 'CD': 'Datetime'}])], 5, None, [self.system], {'U': 'table0.C0'}, [])] ) def test_nonregr4(self): self._test('Any U ORDERBY D DESC WHERE WF wf_info_for X, WF creation_date D, WF from_state FS, ' 'WF owned_by U?, X eid %(x)s', - [#('FetchStep', [('Any U WHERE U is EUser', [{'U': 'EUser'}])], + [#('FetchStep', [('Any U WHERE U is CWUser', [{'U': 'CWUser'}])], # [self.ldap, self.system], None, {'U': 'table0.C0'}, []), ('OneFetchStep', [('Any U ORDERBY D DESC WHERE WF wf_info_for 5, WF creation_date D, WF from_state FS, WF owned_by U?', - [{'WF': 'TrInfo', 'FS': 'State', 'U': 'EUser', 'D': 'Datetime'}])], + [{'WF': 'TrInfo', 'FS': 'State', 'U': 'CWUser', 'D': 'Datetime'}])], None, None, [self.system], {}, [])], {'x': self.session.user.eid}) @@ -1837,17 +1837,17 @@ {'x': 999999, 'z': 999998}) def test_nonregr10(self): - repo._type_source_cache[999999] = ('EUser', 'ldapuser', 999999) + repo._type_source_cache[999999] = ('CWUser', 'ldapuser', 999999) self._test('Any X,AA,AB ORDERBY AA WHERE E eid %(x)s, E owned_by X, X login AA, X modification_date AB', [('FetchStep', - [('Any X,AA,AB WHERE X login AA, X modification_date AB, X is EUser', - [{'AA': 'String', 'AB': 'Datetime', 'X': 'EUser'}])], + [('Any X,AA,AB WHERE X login AA, X modification_date AB, X is CWUser', + [{'AA': 'String', 'AB': 'Datetime', 'X': 'CWUser'}])], [self.ldap, self.system], None, {'AA': 'table0.C1', 'AB': 'table0.C2', 'X': 'table0.C0', 'X.login': 'table0.C1', 'X.modification_date': 'table0.C2'}, []), ('OneFetchStep', - [('Any X,AA,AB ORDERBY AA WHERE 999999 owned_by X, X login AA, X modification_date AB, X is EUser', - [{'AA': 'String', 'AB': 'Datetime', 'X': 'EUser'}])], + [('Any X,AA,AB ORDERBY AA WHERE 999999 owned_by X, X login AA, X modification_date AB, X is CWUser', + [{'AA': 'String', 'AB': 'Datetime', 'X': 'CWUser'}])], None, None, [self.system], {'AA': 'table0.C1', 'AB': 'table0.C2', 'X': 'table0.C0', 'X.login': 'table0.C1', 'X.modification_date': 'table0.C2'}, []) @@ -1858,11 +1858,11 @@ repo._type_source_cache[999999] = ('Bookmark', 'system', 999999) self._test('SET X bookmarked_by Y WHERE X eid %(x)s, Y login "hop"', [('FetchStep', - [('Any Y WHERE Y login "hop", Y is EUser', [{'Y': 'EUser'}])], + [('Any Y WHERE Y login "hop", Y is CWUser', [{'Y': 'CWUser'}])], [self.ldap, self.system], None, {'Y': 'table0.C0'}, []), ('UpdateStep', - [('OneFetchStep', [('DISTINCT Any 999999,Y WHERE Y is EUser', [{'Y': 'EUser'}])], + [('OneFetchStep', [('DISTINCT Any 999999,Y WHERE Y is CWUser', [{'Y': 'CWUser'}])], None, None, [self.system], {'Y': 'table0.C0'}, [])] )], @@ -1898,20 +1898,20 @@ self._test('Any B,U,UL GROUPBY B,U,UL WHERE B created_by U?, B is File ' 'WITH U,UL BEING (Any U,UL WHERE ME eid %(x)s, (EXISTS(U identity ME) ' 'OR (EXISTS(U in_group G, G name IN("managers", "staff")))) ' - 'OR (EXISTS(U in_group H, ME in_group H, NOT H name "users")), U login UL, U is EUser)', - [('FetchStep', [('Any U,UL WHERE U login UL, U is EUser', - [{'U': 'EUser', 'UL': 'String'}])], + 'OR (EXISTS(U in_group H, ME in_group H, NOT H name "users")), U login UL, U is CWUser)', + [('FetchStep', [('Any U,UL WHERE U login UL, U is CWUser', + [{'U': 'CWUser', 'UL': 'String'}])], [self.ldap, self.system], None, {'U': 'table0.C0', 'U.login': 'table0.C1', 'UL': 'table0.C1'}, []), - ('FetchStep', [('Any U,UL WHERE ((EXISTS(U identity 5)) OR (EXISTS(U in_group G, G name IN("managers", "staff"), G is EGroup))) OR (EXISTS(U in_group H, 5 in_group H, NOT H name "users", H is EGroup)), U login UL, U is EUser', - [{'G': 'EGroup', 'H': 'EGroup', 'U': 'EUser', 'UL': 'String'}])], + ('FetchStep', [('Any U,UL WHERE ((EXISTS(U identity 5)) OR (EXISTS(U in_group G, G name IN("managers", "staff"), G is CWGroup))) OR (EXISTS(U in_group H, 5 in_group H, NOT H name "users", H is CWGroup)), U login UL, U is CWUser', + [{'G': 'CWGroup', 'H': 'CWGroup', 'U': 'CWUser', 'UL': 'String'}])], [self.system], {'U': 'table0.C0', 'U.login': 'table0.C1', 'UL': 'table0.C1'}, {'U': 'table1.C0', 'U.login': 'table1.C1', 'UL': 'table1.C1'}, []), ('OneFetchStep', [('Any B,U,UL GROUPBY B,U,UL WHERE B created_by U?, B is File', - [{'B': 'File', 'U': 'EUser', 'UL': 'String'}])], + [{'B': 'File', 'U': 'CWUser', 'UL': 'String'}])], None, None, [self.system], {'U': 'table1.C0', 'UL': 'table1.C1'}, [])], @@ -1932,20 +1932,20 @@ self._test('Any B,U,UL GROUPBY B,U,UL WHERE B created_by U?, B is File ' 'WITH U,UL BEING (Any U,UL WHERE ME eid %(x)s, (U identity ME ' 'OR (EXISTS(U in_group G, G name IN("managers", "staff")))) ' - 'OR (EXISTS(U in_group H, ME in_group H, NOT H name "users")), U login UL, U is EUser)', - [('FetchStep', [('Any U,UL WHERE U login UL, U is EUser', - [{'U': 'EUser', 'UL': 'String'}])], + 'OR (EXISTS(U in_group H, ME in_group H, NOT H name "users")), U login UL, U is CWUser)', + [('FetchStep', [('Any U,UL WHERE U login UL, U is CWUser', + [{'U': 'CWUser', 'UL': 'String'}])], [self.ldap, self.system], None, {'U': 'table0.C0', 'U.login': 'table0.C1', 'UL': 'table0.C1'}, []), - ('FetchStep', [('Any U,UL WHERE ((U identity 5) OR (EXISTS(U in_group G, G name IN("managers", "staff"), G is EGroup))) OR (EXISTS(U in_group H, 5 in_group H, NOT H name "users", H is EGroup)), U login UL, U is EUser', - [{'G': 'EGroup', 'H': 'EGroup', 'U': 'EUser', 'UL': 'String'}])], + ('FetchStep', [('Any U,UL WHERE ((U identity 5) OR (EXISTS(U in_group G, G name IN("managers", "staff"), G is CWGroup))) OR (EXISTS(U in_group H, 5 in_group H, NOT H name "users", H is CWGroup)), U login UL, U is CWUser', + [{'G': 'CWGroup', 'H': 'CWGroup', 'U': 'CWUser', 'UL': 'String'}])], [self.system], {'U': 'table0.C0', 'U.login': 'table0.C1', 'UL': 'table0.C1'}, {'U': 'table1.C0', 'U.login': 'table1.C1', 'UL': 'table1.C1'}, []), ('OneFetchStep', [('Any B,U,UL GROUPBY B,U,UL WHERE B created_by U?, B is File', - [{'B': 'File', 'U': 'EUser', 'UL': 'String'}])], + [{'B': 'File', 'U': 'CWUser', 'UL': 'String'}])], None, None, [self.system], {'U': 'table1.C0', 'UL': 'table1.C1'}, [])], diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 server/test/unittest_multisources.py --- a/server/test/unittest_multisources.py Fri Apr 17 13:21:05 2009 +0200 +++ b/server/test/unittest_multisources.py Fri Apr 17 16:55:37 2009 +0200 @@ -195,8 +195,8 @@ def test_union(self): afeids = self.execute('Affaire X') - ueids = self.execute('EUser X') - rset = self.execute('(Any X WHERE X is Affaire) UNION (Any X WHERE X is EUser)') + ueids = self.execute('CWUser X') + rset = self.execute('(Any X WHERE X is Affaire) UNION (Any X WHERE X is CWUser)') self.assertEquals(sorted(r[0] for r in rset.rows), sorted(r[0] for r in afeids + ueids)) diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 server/test/unittest_querier.py --- a/server/test/unittest_querier.py Fri Apr 17 13:21:05 2009 +0200 +++ b/server/test/unittest_querier.py Fri Apr 17 16:55:37 2009 +0200 @@ -39,7 +39,7 @@ class MakeSchemaTC(TestCase): def test_known_values(self): - solution = {'A': 'String', 'B': 'EUser'} + solution = {'A': 'String', 'B': 'CWUser'} self.assertEquals(make_schema((Variable('A'), Variable('B')), solution, 'table0', TYPEMAP), ('C0 text,C1 integer', {'A': 'table0.C0', 'B': 'table0.C1'})) @@ -60,13 +60,13 @@ pass def test_preprocess_1(self): - reid = self.execute('Any X WHERE X is ERType, X name "owned_by"')[0][0] + reid = self.execute('Any X WHERE X is CWRType, X name "owned_by"')[0][0] rqlst = self._prepare('Any COUNT(RDEF) WHERE RDEF relation_type X, X eid %(x)s', {'x': reid}) - self.assertEquals(rqlst.solutions, [{'RDEF': 'EFRDef'}, {'RDEF': 'ENFRDef'}]) + self.assertEquals(rqlst.solutions, [{'RDEF': 'CWAttribute'}, {'RDEF': 'CWRelation'}]) def test_preprocess_2(self): teid = self.execute("INSERT Tag X: X name 'tag'")[0][0] - #geid = self.execute("EGroup G WHERE G name 'users'")[0][0] + #geid = self.execute("CWGroup G WHERE G name 'users'")[0][0] #self.execute("SET X tags Y WHERE X eid %(t)s, Y eid %(g)s", # {'g': geid, 't': teid}, 'g') rqlst = self._prepare('Any X WHERE E eid %(x)s, E tags X', {'x': teid}) @@ -96,7 +96,7 @@ ' OR (EXISTS(H concerne G?, G owned_by %(B)s, G is SubDivision, X identity H, H is Affaire)))' ' OR (EXISTS(I concerne F?, F owned_by %(B)s, F is Societe, X identity I, I is Affaire)))' ' OR (EXISTS(J concerne E?, E owned_by %(B)s, E is Note, X identity J, J is Affaire)))' - ', ET is EEType, X is Affaire') + ', ET is CWEType, X is Affaire') self.assertEquals(solutions, [{'C': 'Division', 'D': 'Affaire', 'E': 'Note', @@ -106,47 +106,47 @@ 'I': 'Affaire', 'J': 'Affaire', 'X': 'Affaire', - 'ET': 'EEType', 'ETN': 'String'}]) + 'ET': 'CWEType', 'ETN': 'String'}]) rql, solutions = partrqls[1] - self.assertEquals(rql, 'Any ETN,X WHERE X is ET, ET name ETN, ET is EEType, ' - 'X is IN(Bookmark, Card, Comment, Division, ECache, EConstraint, EConstraintType, EEType, EFRDef, EGroup, ENFRDef, EPermission, EProperty, ERType, EUser, Email, EmailAddress, EmailPart, EmailThread, File, Folder, Image, Note, Personne, RQLExpression, Societe, State, SubDivision, Tag, TrInfo, Transition)') + self.assertEquals(rql, 'Any ETN,X WHERE X is ET, ET name ETN, ET is CWEType, ' + 'X is IN(Bookmark, Card, Comment, Division, CWCache, CWConstraint, CWConstraintType, CWEType, CWAttribute, CWGroup, CWRelation, CWPermission, CWProperty, CWRType, CWUser, Email, EmailAddress, EmailPart, EmailThread, File, Folder, Image, Note, Personne, RQLExpression, Societe, State, SubDivision, Tag, TrInfo, Transition)') self.assertListEquals(sorted(solutions), - sorted([{'X': 'Bookmark', 'ETN': 'String', 'ET': 'EEType'}, - {'X': 'Card', 'ETN': 'String', 'ET': 'EEType'}, - {'X': 'Comment', 'ETN': 'String', 'ET': 'EEType'}, - {'X': 'Division', 'ETN': 'String', 'ET': 'EEType'}, - {'X': 'ECache', 'ETN': 'String', 'ET': 'EEType'}, - {'X': 'EConstraint', 'ETN': 'String', 'ET': 'EEType'}, - {'X': 'EConstraintType', 'ETN': 'String', 'ET': 'EEType'}, - {'X': 'EEType', 'ETN': 'String', 'ET': 'EEType'}, - {'X': 'EFRDef', 'ETN': 'String', 'ET': 'EEType'}, - {'X': 'EGroup', 'ETN': 'String', 'ET': 'EEType'}, - {'X': 'Email', 'ETN': 'String', 'ET': 'EEType'}, - {'X': 'EmailAddress', 'ETN': 'String', 'ET': 'EEType'}, - {'X': 'EmailPart', 'ETN': 'String', 'ET': 'EEType'}, - {'X': 'EmailThread', 'ETN': 'String', 'ET': 'EEType'}, - {'X': 'ENFRDef', 'ETN': 'String', 'ET': 'EEType'}, - {'X': 'EPermission', 'ETN': 'String', 'ET': 'EEType'}, - {'X': 'EProperty', 'ETN': 'String', 'ET': 'EEType'}, - {'X': 'ERType', 'ETN': 'String', 'ET': 'EEType'}, - {'X': 'EUser', 'ETN': 'String', 'ET': 'EEType'}, - {'X': 'File', 'ETN': 'String', 'ET': 'EEType'}, - {'X': 'Folder', 'ETN': 'String', 'ET': 'EEType'}, - {'X': 'Image', 'ETN': 'String', 'ET': 'EEType'}, - {'X': 'Note', 'ETN': 'String', 'ET': 'EEType'}, - {'X': 'Personne', 'ETN': 'String', 'ET': 'EEType'}, - {'X': 'RQLExpression', 'ETN': 'String', 'ET': 'EEType'}, - {'X': 'Societe', 'ETN': 'String', 'ET': 'EEType'}, - {'X': 'State', 'ETN': 'String', 'ET': 'EEType'}, - {'X': 'SubDivision', 'ETN': 'String', 'ET': 'EEType'}, - {'X': 'Tag', 'ETN': 'String', 'ET': 'EEType'}, - {'X': 'Transition', 'ETN': 'String', 'ET': 'EEType'}, - {'X': 'TrInfo', 'ETN': 'String', 'ET': 'EEType'}])) + sorted([{'X': 'Bookmark', 'ETN': 'String', 'ET': 'CWEType'}, + {'X': 'Card', 'ETN': 'String', 'ET': 'CWEType'}, + {'X': 'Comment', 'ETN': 'String', 'ET': 'CWEType'}, + {'X': 'Division', 'ETN': 'String', 'ET': 'CWEType'}, + {'X': 'CWCache', 'ETN': 'String', 'ET': 'CWEType'}, + {'X': 'CWConstraint', 'ETN': 'String', 'ET': 'CWEType'}, + {'X': 'CWConstraintType', 'ETN': 'String', 'ET': 'CWEType'}, + {'X': 'CWEType', 'ETN': 'String', 'ET': 'CWEType'}, + {'X': 'CWAttribute', 'ETN': 'String', 'ET': 'CWEType'}, + {'X': 'CWGroup', 'ETN': 'String', 'ET': 'CWEType'}, + {'X': 'Email', 'ETN': 'String', 'ET': 'CWEType'}, + {'X': 'EmailAddress', 'ETN': 'String', 'ET': 'CWEType'}, + {'X': 'EmailPart', 'ETN': 'String', 'ET': 'CWEType'}, + {'X': 'EmailThread', 'ETN': 'String', 'ET': 'CWEType'}, + {'X': 'CWRelation', 'ETN': 'String', 'ET': 'CWEType'}, + {'X': 'CWPermission', 'ETN': 'String', 'ET': 'CWEType'}, + {'X': 'CWProperty', 'ETN': 'String', 'ET': 'CWEType'}, + {'X': 'CWRType', 'ETN': 'String', 'ET': 'CWEType'}, + {'X': 'CWUser', 'ETN': 'String', 'ET': 'CWEType'}, + {'X': 'File', 'ETN': 'String', 'ET': 'CWEType'}, + {'X': 'Folder', 'ETN': 'String', 'ET': 'CWEType'}, + {'X': 'Image', 'ETN': 'String', 'ET': 'CWEType'}, + {'X': 'Note', 'ETN': 'String', 'ET': 'CWEType'}, + {'X': 'Personne', 'ETN': 'String', 'ET': 'CWEType'}, + {'X': 'RQLExpression', 'ETN': 'String', 'ET': 'CWEType'}, + {'X': 'Societe', 'ETN': 'String', 'ET': 'CWEType'}, + {'X': 'State', 'ETN': 'String', 'ET': 'CWEType'}, + {'X': 'SubDivision', 'ETN': 'String', 'ET': 'CWEType'}, + {'X': 'Tag', 'ETN': 'String', 'ET': 'CWEType'}, + {'X': 'Transition', 'ETN': 'String', 'ET': 'CWEType'}, + {'X': 'TrInfo', 'ETN': 'String', 'ET': 'CWEType'}])) rql, solutions = partrqls[2] self.assertEquals(rql, 'Any ETN,X WHERE X is ET, ET name ETN, EXISTS(X owned_by %(C)s), ' - 'ET is EEType, X is Basket') - self.assertEquals(solutions, [{'ET': 'EEType', + 'ET is CWEType, X is Basket') + self.assertEquals(solutions, [{'ET': 'CWEType', 'X': 'Basket', 'ETN': 'String', }]) @@ -170,7 +170,7 @@ def test_build_description(self): # should return an empty result set rset = self.execute('Any X WHERE X eid %(x)s', {'x': self.session.user.eid}) - self.assertEquals(rset.description[0][0], 'EUser') + self.assertEquals(rset.description[0][0], 'CWUser') rset = self.execute('Any 1') self.assertEquals(rset.description[0][0], 'Int') rset = self.execute('Any TRUE') @@ -202,7 +202,7 @@ def test_encoding_pb(self): self.assertRaises(RQLSyntaxError, self.execute, - 'Any X WHERE X is ERType, X name "öwned_by"') + 'Any X WHERE X is CWRType, X name "öwned_by"') def test_unknown_eid(self): # should return an empty result set @@ -211,20 +211,20 @@ # selection queries tests ################################################# def test_select_1(self): - rset = self.execute('Any X ORDERBY X WHERE X is EGroup') + rset = self.execute('Any X ORDERBY X WHERE X is CWGroup') result, descr = rset.rows, rset.description self.assertEquals(tuplify(result), [(1,), (2,), (3,), (4,)]) - self.assertEquals(descr, [('EGroup',), ('EGroup',), ('EGroup',), ('EGroup',)]) + self.assertEquals(descr, [('CWGroup',), ('CWGroup',), ('CWGroup',), ('CWGroup',)]) def test_select_2(self): - rset = self.execute('Any X ORDERBY N WHERE X is EGroup, X name N') + rset = self.execute('Any X ORDERBY N WHERE X is CWGroup, X name N') self.assertEquals(tuplify(rset.rows), [(3,), (1,), (4,), (2,)]) - self.assertEquals(rset.description, [('EGroup',), ('EGroup',), ('EGroup',), ('EGroup',)]) - rset = self.execute('Any X ORDERBY N DESC WHERE X is EGroup, X name N') + self.assertEquals(rset.description, [('CWGroup',), ('CWGroup',), ('CWGroup',), ('CWGroup',)]) + rset = self.execute('Any X ORDERBY N DESC WHERE X is CWGroup, X name N') self.assertEquals(tuplify(rset.rows), [(2,), (4,), (1,), (3,)]) def test_select_3(self): - rset = self.execute('Any N GROUPBY N WHERE X is EGroup, X name N') + rset = self.execute('Any N GROUPBY N WHERE X is CWGroup, X name N') result, descr = rset.rows, rset.description result.sort() self.assertEquals(tuplify(result), [('guests',), ('managers',), ('owners',), ('users',)]) @@ -240,10 +240,10 @@ result, descr = rset.rows, rset.description self.assertEquals(descr[0][0], 'String') self.assertEquals(descr[0][1], 'Int') - self.assertEquals(result[0][0], 'ENFRDef') + self.assertEquals(result[0][0], 'CWRelation') def test_select_groupby_orderby(self): - rset = self.execute('Any N GROUPBY N ORDERBY N WHERE X is EGroup, X name N') + rset = self.execute('Any N GROUPBY N ORDERBY N WHERE X is CWGroup, X name N') self.assertEquals(tuplify(rset.rows), [('guests',), ('managers',), ('owners',), ('users',)]) self.assertEquals(rset.description, [('String',), ('String',), ('String',), ('String',)]) @@ -263,9 +263,9 @@ self.assertEquals(len(rset), 5) def test_select_5(self): - rset = self.execute('Any X, TMP ORDERBY TMP WHERE X name TMP, X is EGroup') + rset = self.execute('Any X, TMP ORDERBY TMP WHERE X name TMP, X is CWGroup') self.assertEquals(tuplify(rset.rows), [(3, 'guests',), (1, 'managers',), (4, 'owners',), (2, 'users',)]) - self.assertEquals(rset.description, [('EGroup', 'String',), ('EGroup', 'String',), ('EGroup', 'String',), ('EGroup', 'String',)]) + self.assertEquals(rset.description, [('CWGroup', 'String',), ('CWGroup', 'String',), ('CWGroup', 'String',), ('CWGroup', 'String',)]) def test_select_6(self): self.execute("INSERT Personne X: X nom 'bidule'")[0] @@ -307,16 +307,16 @@ self.execute("INSERT Personne X: X nom 'chouette'") self.execute("INSERT Personne X: X nom 'autre'") self.execute("SET X ecrit_par P WHERE X para 'bidule', P nom 'chouette'") - rset = self.execute('Any U,T ORDERBY T DESC WHERE U is EUser, ' + rset = self.execute('Any U,T ORDERBY T DESC WHERE U is CWUser, ' 'N ecrit_par U, N type T')#, {'x': self.ueid}) self.assertEquals(len(rset.rows), 0) def test_select_nonregr_edition_not(self): groupeids = set((1, 2, 3)) - groupreadperms = set(r[0] for r in self.execute('Any Y WHERE X name "EGroup", Y eid IN(1, 2, 3), X read_permission Y')) - rset = self.execute('DISTINCT Any Y WHERE X is EEType, X name "EGroup", Y eid IN(1, 2, 3), NOT X read_permission Y') + groupreadperms = set(r[0] for r in self.execute('Any Y WHERE X name "CWGroup", Y eid IN(1, 2, 3), X read_permission Y')) + rset = self.execute('DISTINCT Any Y WHERE X is CWEType, X name "CWGroup", Y eid IN(1, 2, 3), NOT X read_permission Y') self.assertEquals(sorted(r[0] for r in rset.rows), sorted(groupeids - groupreadperms)) - rset = self.execute('DISTINCT Any Y WHERE X name "EGroup", Y eid IN(1, 2, 3), NOT X read_permission Y') + rset = self.execute('DISTINCT Any Y WHERE X name "CWGroup", Y eid IN(1, 2, 3), NOT X read_permission Y') self.assertEquals(sorted(r[0] for r in rset.rows), sorted(groupeids - groupreadperms)) def test_select_outer_join(self): @@ -340,7 +340,7 @@ self.assertEquals(rset.rows, [[peid1]]) def test_select_left_outer_join(self): - ueid = self.execute("INSERT EUser X: X login 'bob', X upassword 'toto', X in_group G " + ueid = self.execute("INSERT CWUser X: X login 'bob', X upassword 'toto', X in_group G " "WHERE G name 'users'")[0][0] self.commit() try: @@ -359,13 +359,13 @@ {'x': ueid}, 'x') self.assertEquals(len(rset), 2) finally: - self.execute('DELETE EUser X WHERE X eid %s' % ueid) + self.execute('DELETE CWUser X WHERE X eid %s' % ueid) self.commit() def test_select_ambigous_outer_join(self): teid = self.execute("INSERT Tag X: X name 'tag'")[0][0] self.execute("INSERT Tag X: X name 'tagbis'")[0][0] - geid = self.execute("EGroup G WHERE G name 'users'")[0][0] + geid = self.execute("CWGroup G WHERE G name 'users'")[0][0] self.execute("SET X tags Y WHERE X eid %(t)s, Y eid %(g)s", {'g': geid, 't': teid}, 'g') rset = self.execute("Any GN,TN ORDERBY GN WHERE T? tags G, T name TN, G name GN") @@ -423,13 +423,13 @@ self.assertEquals(rset.description, [('Int',)]) def test_select_custom_aggregat_concat_string(self): - rset = self.execute('Any CONCAT_STRINGS(N) WHERE X is EGroup, X name N') + rset = self.execute('Any CONCAT_STRINGS(N) WHERE X is CWGroup, X name N') self.failUnless(rset) self.failUnlessEqual(sorted(rset[0][0].split(', ')), ['guests', 'managers', 'owners', 'users']) def test_select_custom_regproc_limit_size(self): - rset = self.execute('Any TEXT_LIMIT_SIZE(N, 3) WHERE X is EGroup, X name N, X name "managers"') + rset = self.execute('Any TEXT_LIMIT_SIZE(N, 3) WHERE X is CWGroup, X name N, X name "managers"') self.failUnless(rset) self.failUnlessEqual(rset[0][0], 'man...') self.execute("INSERT Basket X: X name 'bidule', X description 'hop hop', X description_format 'text/html'") @@ -438,10 +438,10 @@ self.failUnlessEqual(rset[0][0], 'hop...') def test_select_regproc_orderby(self): - rset = self.execute('DISTINCT Any X,N ORDERBY GROUP_SORT_VALUE(N) WHERE X is EGroup, X name N, X name "managers"') + rset = self.execute('DISTINCT Any X,N ORDERBY GROUP_SORT_VALUE(N) WHERE X is CWGroup, X name N, X name "managers"') self.failUnlessEqual(len(rset), 1) self.failUnlessEqual(rset[0][1], 'managers') - rset = self.execute('Any X,N ORDERBY GROUP_SORT_VALUE(N) WHERE X is EGroup, X name N, NOT U in_group X, U login "admin"') + rset = self.execute('Any X,N ORDERBY GROUP_SORT_VALUE(N) WHERE X is CWGroup, X name N, NOT U in_group X, U login "admin"') self.failUnlessEqual(len(rset), 3) self.failUnlessEqual(rset[0][1], 'owners') @@ -449,7 +449,7 @@ rset = self.execute('Any G, COUNT(U) GROUPBY G ORDERBY 2 WHERE U in_group G') self.assertEquals(len(rset.rows), 2) self.assertEquals(len(rset.rows[0]), 2) - self.assertEquals(rset.description[0], ('EGroup', 'Int',)) + self.assertEquals(rset.description[0], ('CWGroup', 'Int',)) def test_select_aggregat_having(self): rset = self.execute('Any N,COUNT(RDEF) GROUPBY N ORDERBY 2,N ' @@ -477,12 +477,12 @@ self.assertEquals(tuplify(result), [(1,), (2,), (3,), (4,), (5,)]) def test_select_upper(self): - rset = self.execute('Any X, UPPER(L) ORDERBY L WHERE X is EUser, X login L') + rset = self.execute('Any X, UPPER(L) ORDERBY L WHERE X is CWUser, X login L') self.assertEquals(len(rset.rows), 2) self.assertEquals(rset.rows[0][1], 'ADMIN') - self.assertEquals(rset.description[0], ('EUser', 'String',)) + self.assertEquals(rset.description[0], ('CWUser', 'String',)) self.assertEquals(rset.rows[1][1], 'ANON') - self.assertEquals(rset.description[1], ('EUser', 'String',)) + self.assertEquals(rset.description[1], ('CWUser', 'String',)) eid = rset.rows[0][0] rset = self.execute('Any UPPER(L) WHERE X eid %s, X login L'%eid) self.assertEquals(rset.rows[0][0], 'ADMIN') @@ -538,16 +538,16 @@ self.assertEquals(len(rset.rows), 1, rset.rows) def test_select_no_descr(self): - rset = self.execute('Any X WHERE X is EGroup', build_descr=0) + rset = self.execute('Any X WHERE X is CWGroup', build_descr=0) rset.rows.sort() self.assertEquals(tuplify(rset.rows), [(1,), (2,), (3,), (4,)]) self.assertEquals(rset.description, ()) def test_select_limit_offset(self): - rset = self.execute('EGroup X ORDERBY N LIMIT 2 WHERE X name N') + rset = self.execute('CWGroup X ORDERBY N LIMIT 2 WHERE X name N') self.assertEquals(tuplify(rset.rows), [(3,), (1,)]) - self.assertEquals(rset.description, [('EGroup',), ('EGroup',)]) - rset = self.execute('EGroup X ORDERBY N LIMIT 2 OFFSET 2 WHERE X name N') + self.assertEquals(rset.description, [('CWGroup',), ('CWGroup',)]) + rset = self.execute('CWGroup X ORDERBY N LIMIT 2 OFFSET 2 WHERE X name N') self.assertEquals(tuplify(rset.rows), [(4,), (2,)]) def test_select_symetric(self): @@ -637,7 +637,7 @@ self.assertEqual(rset.rows, [['abcd'], ['important'], ['minor'], ['normal'], ['zou']]) def test_select_ordered_distinct_3(self): - rset = self.execute('DISTINCT Any N ORDERBY GROUP_SORT_VALUE(N) WHERE X is EGroup, X name N') + rset = self.execute('DISTINCT Any N ORDERBY GROUP_SORT_VALUE(N) WHERE X is CWGroup, X name N') self.assertEqual(rset.rows, [['owners'], ['guests'], ['users'], ['managers']]) def test_select_or_value(self): @@ -674,7 +674,7 @@ self.assertEqual(len(rset.rows), 2) def test_select_boolean(self): - rset = self.execute('Any N WHERE X is EEType, X name N, X final %(val)s', + rset = self.execute('Any N WHERE X is CWEType, X name N, X final %(val)s', {'val': True}) self.assertEquals(sorted(r[0] for r in rset.rows), ['Boolean', 'Bytes', 'Date', 'Datetime', @@ -682,7 +682,7 @@ 'Int', 'Interval', 'Password', 'String', 'Time']) - rset = self.execute('Any N WHERE X is EEType, X name N, X final TRUE') + rset = self.execute('Any N WHERE X is CWEType, X name N, X final TRUE') self.assertEquals(sorted(r[0] for r in rset.rows), ['Boolean', 'Bytes', 'Date', 'Datetime', 'Decimal', 'Float', @@ -691,28 +691,28 @@ 'Time']) def test_select_constant(self): - rset = self.execute('Any X, "toto" ORDERBY X WHERE X is EGroup') + rset = self.execute('Any X, "toto" ORDERBY X WHERE X is CWGroup') self.assertEquals(rset.rows, map(list, zip((1,2,3,4), ('toto','toto','toto','toto',)))) self.assertIsInstance(rset[0][1], unicode) self.assertEquals(rset.description, - zip(('EGroup', 'EGroup', 'EGroup', 'EGroup'), + zip(('CWGroup', 'CWGroup', 'CWGroup', 'CWGroup'), ('String', 'String', 'String', 'String',))) - rset = self.execute('Any X, %(value)s ORDERBY X WHERE X is EGroup', {'value': 'toto'}) + rset = self.execute('Any X, %(value)s ORDERBY X WHERE X is CWGroup', {'value': 'toto'}) self.assertEquals(rset.rows, map(list, zip((1,2,3,4), ('toto','toto','toto','toto',)))) self.assertIsInstance(rset[0][1], unicode) self.assertEquals(rset.description, - zip(('EGroup', 'EGroup', 'EGroup', 'EGroup'), + zip(('CWGroup', 'CWGroup', 'CWGroup', 'CWGroup'), ('String', 'String', 'String', 'String',))) - rset = self.execute('Any X,GN WHERE X is EUser, G is EGroup, X login "syt", X in_group G, G name GN') + rset = self.execute('Any X,GN WHERE X is CWUser, G is CWGroup, X login "syt", X in_group G, G name GN') def test_select_union(self): rset = self.execute('Any X,N ORDERBY N WITH X,N BEING ' '((Any X,N WHERE X name N, X transition_of E, E name %(name)s)' ' UNION ' '(Any X,N WHERE X name N, X state_of E, E name %(name)s))', - {'name': 'EUser'}) + {'name': 'CWUser'}) self.assertEquals([x[1] for x in rset.rows], ['activate', 'activated', 'deactivate', 'deactivated']) self.assertEquals(rset.description, @@ -748,7 +748,7 @@ 'start', 'todo']) def test_exists(self): - geid = self.execute("INSERT EGroup X: X name 'lulufanclub'")[0][0] + geid = self.execute("INSERT CWGroup X: X name 'lulufanclub'")[0][0] self.execute("SET U in_group G WHERE G name 'lulufanclub'") peid = self.execute("INSERT Personne X: X prenom 'lulu', X nom 'petit'")[0][0] rset = self.execute("Any X WHERE X prenom 'lulu'," @@ -764,7 +764,7 @@ self.assertEquals(login, 'admin') def test_select_date_mathexp(self): - rset = self.execute('Any X, TODAY - CD WHERE X is EUser, X creation_date CD') + rset = self.execute('Any X, TODAY - CD WHERE X is CWUser, X creation_date CD') self.failUnless(rset) self.failUnlessEqual(rset.description[0][1], 'Interval') eid, = self.execute("INSERT Personne X: X nom 'bidule'")[0] @@ -776,7 +776,7 @@ self.execute('SET X in_group G WHERE G name "users"') rset = self.execute('Any GN, COUNT(X)*100/T GROUPBY GN ORDERBY 2,1' ' WHERE G name GN, X in_group G' - ' WITH T BEING (Any COUNT(U) WHERE U is EUser)') + ' WITH T BEING (Any COUNT(U) WHERE U is CWUser)') self.assertEquals(rset.rows, [[u'guests', 50], [u'managers', 50], [u'users', 100]]) self.assertEquals(rset.description, [('String', 'Int'), ('String', 'Int'), ('String', 'Int')]) @@ -884,13 +884,13 @@ self.assertRaises(QueryError, self.execute, - "INSERT EUser X: X login 'toto', X eid %s" % cnx.user(self.session).eid) + "INSERT CWUser X: X login 'toto', X eid %s" % cnx.user(self.session).eid) def test_insertion_description_with_where(self): - rset = self.execute('INSERT EUser E, EmailAddress EM: E login "X", E upassword "X", ' + rset = self.execute('INSERT CWUser E, EmailAddress EM: E login "X", E upassword "X", ' 'E primary_email EM, EM address "X", E in_group G ' 'WHERE G name "managers"') - self.assertEquals(list(rset.description[0]), ['EUser', 'EmailAddress']) + self.assertEquals(list(rset.description[0]), ['CWUser', 'EmailAddress']) # deletion queries tests ################################################## @@ -1027,7 +1027,7 @@ self.assertEquals(self.execute('Any X WHERE X nom "tutu"').rows, [[peid2]]) def test_update_multiple2(self): - ueid = self.execute("INSERT EUser X: X login 'bob', X upassword 'toto'")[0][0] + ueid = self.execute("INSERT CWUser X: X login 'bob', X upassword 'toto'")[0][0] peid1 = self.execute("INSERT Personne Y: Y nom 'turlu'")[0][0] peid2 = self.execute("INSERT Personne Y: Y nom 'tutu'")[0][0] self.execute('SET P1 owned_by U, P2 owned_by U ' @@ -1065,33 +1065,33 @@ # upassword encryption tests ################################################# def test_insert_upassword(self): - rset = self.execute("INSERT EUser X: X login 'bob', X upassword 'toto'") + rset = self.execute("INSERT CWUser X: X login 'bob', X upassword 'toto'") self.assertEquals(len(rset.rows), 1) - self.assertEquals(rset.description, [('EUser',)]) + self.assertEquals(rset.description, [('CWUser',)]) self.assertRaises(Unauthorized, - self.execute, "Any P WHERE X is EUser, X login 'bob', X upassword P") + self.execute, "Any P WHERE X is CWUser, X login 'bob', X upassword P") cursor = self.pool['system'] - cursor.execute("SELECT %supassword from %sEUser WHERE %slogin='bob'" + cursor.execute("SELECT %supassword from %sCWUser WHERE %slogin='bob'" % (SQL_PREFIX, SQL_PREFIX, SQL_PREFIX)) passwd = cursor.fetchone()[0].getvalue() self.assertEquals(passwd, crypt_password('toto', passwd[:2])) - rset = self.execute("Any X WHERE X is EUser, X login 'bob', X upassword '%s'" % passwd) + rset = self.execute("Any X WHERE X is CWUser, X login 'bob', X upassword '%s'" % passwd) self.assertEquals(len(rset.rows), 1) - self.assertEquals(rset.description, [('EUser',)]) + self.assertEquals(rset.description, [('CWUser',)]) def test_update_upassword(self): cursor = self.pool['system'] - rset = self.execute("INSERT EUser X: X login 'bob', X upassword %(pwd)s", {'pwd': 'toto'}) - self.assertEquals(rset.description[0][0], 'EUser') - rset = self.execute("SET X upassword %(pwd)s WHERE X is EUser, X login 'bob'", + rset = self.execute("INSERT CWUser X: X login 'bob', X upassword %(pwd)s", {'pwd': 'toto'}) + self.assertEquals(rset.description[0][0], 'CWUser') + rset = self.execute("SET X upassword %(pwd)s WHERE X is CWUser, X login 'bob'", {'pwd': 'tutu'}) - cursor.execute("SELECT %supassword from %sEUser WHERE %slogin='bob'" + cursor.execute("SELECT %supassword from %sCWUser WHERE %slogin='bob'" % (SQL_PREFIX, SQL_PREFIX, SQL_PREFIX)) passwd = cursor.fetchone()[0].getvalue() self.assertEquals(passwd, crypt_password('tutu', passwd[:2])) - rset = self.execute("Any X WHERE X is EUser, X login 'bob', X upassword '%s'" % passwd) + rset = self.execute("Any X WHERE X is CWUser, X login 'bob', X upassword '%s'" % passwd) self.assertEquals(len(rset.rows), 1) - self.assertEquals(rset.description, [('EUser',)]) + self.assertEquals(rset.description, [('CWUser',)]) # non regression tests #################################################### @@ -1107,7 +1107,7 @@ def test_nonregr_2(self): teid = self.execute("INSERT Tag X: X name 'tag'")[0][0] - geid = self.execute("EGroup G WHERE G name 'users'")[0][0] + geid = self.execute("CWGroup G WHERE G name 'users'")[0][0] self.execute("SET X tags Y WHERE X eid %(t)s, Y eid %(g)s", {'g': geid, 't': teid}) rset = self.execute('Any X WHERE E eid %(x)s, E tags X', @@ -1118,7 +1118,7 @@ """bad sql generated on the second query (destination_state is not detected as an inlined relation) """ - rset = self.execute('Any S,ES,T WHERE S state_of ET, ET name "EUser",' + rset = self.execute('Any S,ES,T WHERE S state_of ET, ET name "CWUser",' 'ES allowed_transition T, T destination_state S') self.assertEquals(len(rset.rows), 2) @@ -1127,7 +1127,7 @@ # union queries and that make for instance a 266Ko sql query which is refused # by the server (or client lib) rset = self.execute('Any ER,SE,OE WHERE SE name "Comment", ER name "comments", OE name "Comment",' - 'ER is ERType, SE is EEType, OE is EEType') + 'ER is CWRType, SE is CWEType, OE is CWEType') self.assertEquals(len(rset), 1) def test_nonregr_5(self): @@ -1246,16 +1246,16 @@ self.execute('SET X creation_date %(date)s WHERE X eid 1', {'date': date.today()}) def test_nonregr_set_query(self): - ueid = self.execute("INSERT EUser X: X login 'bob', X upassword 'toto'")[0][0] + ueid = self.execute("INSERT CWUser X: X login 'bob', X upassword 'toto'")[0][0] self.execute("SET E in_group G, E in_state S, " "E firstname %(firstname)s, E surname %(surname)s " "WHERE E eid %(x)s, G name 'users', S name 'activated'", {'x':ueid, 'firstname': u'jean', 'surname': u'paul'}, 'x') def test_nonregr_u_owned_by_u(self): - ueid = self.execute("INSERT EUser X: X login 'bob', X upassword 'toto', X in_group G " + ueid = self.execute("INSERT CWUser X: X login 'bob', X upassword 'toto', X in_group G " "WHERE G name 'users'")[0][0] - rset = self.execute("EUser U") + rset = self.execute("CWUser U") self.assertEquals(len(rset), 3) # bob + admin + anon rset = self.execute("Any U WHERE NOT U owned_by U") self.assertEquals(len(rset), 0) # even admin created at repo initialization time should belong to itself @@ -1265,18 +1265,18 @@ self.execute("SET X description D WHERE X is State, X description D") def test_nonregr_is(self): - uteid = self.execute('Any ET WHERE ET name "EUser"')[0][0] + uteid = self.execute('Any ET WHERE ET name "CWUser"')[0][0] self.execute('Any X, ET WHERE X is ET, ET eid %s' % uteid) def test_nonregr_orderby(self): seid = self.execute('Any X WHERE X name "activated"')[0][0] - self.execute('Any X,S, MAX(T) GROUPBY X,S ORDERBY S WHERE X is EUser, T tags X, S eid IN(%s), X in_state S' % seid) + self.execute('Any X,S, MAX(T) GROUPBY X,S ORDERBY S WHERE X is CWUser, T tags X, S eid IN(%s), X in_state S' % seid) def test_nonregr_solution_cache(self): self.skip('XXX should be fixed or documented') # (doesn't occur if cache key is provided.) - rset = self.execute('Any X WHERE X is EUser, X eid %(x)s', {'x':self.ueid}) + rset = self.execute('Any X WHERE X is CWUser, X eid %(x)s', {'x':self.ueid}) self.assertEquals(len(rset), 1) - rset = self.execute('Any X WHERE X is EUser, X eid %(x)s', {'x':12345}) + rset = self.execute('Any X WHERE X is CWUser, X eid %(x)s', {'x':12345}) self.assertEquals(len(rset), 0) def test_nonregr_final_norestr(self): diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 server/test/unittest_repository.py --- a/server/test/unittest_repository.py Fri Apr 17 13:21:05 2009 +0200 +++ b/server/test/unittest_repository.py Fri Apr 17 16:55:37 2009 +0200 @@ -46,7 +46,7 @@ self.repo.config._cubes = None # avoid assertion error self.repo.fill_schema() pool = self.repo._get_pool() - table = SQL_PREFIX + 'EEType' + table = SQL_PREFIX + 'CWEType' namecol = SQL_PREFIX + 'name' finalcol = SQL_PREFIX + 'final' try: @@ -68,12 +68,12 @@ def test_schema_has_owner(self): repo = self.repo cnxid = repo.connect(*self.default_user_password()) - self.failIf(repo.execute(cnxid, 'EEType X WHERE NOT X owned_by U')) - self.failIf(repo.execute(cnxid, 'ERType X WHERE NOT X owned_by U')) - self.failIf(repo.execute(cnxid, 'EFRDef X WHERE NOT X owned_by U')) - self.failIf(repo.execute(cnxid, 'ENFRDef X WHERE NOT X owned_by U')) - self.failIf(repo.execute(cnxid, 'EConstraint X WHERE NOT X owned_by U')) - self.failIf(repo.execute(cnxid, 'EConstraintType X WHERE NOT X owned_by U')) + self.failIf(repo.execute(cnxid, 'CWEType X WHERE NOT X owned_by U')) + self.failIf(repo.execute(cnxid, 'CWRType X WHERE NOT X owned_by U')) + self.failIf(repo.execute(cnxid, 'CWAttribute X WHERE NOT X owned_by U')) + self.failIf(repo.execute(cnxid, 'CWRelation X WHERE NOT X owned_by U')) + self.failIf(repo.execute(cnxid, 'CWConstraint X WHERE NOT X owned_by U')) + self.failIf(repo.execute(cnxid, 'CWConstraintType X WHERE NOT X owned_by U')) def test_connect(self): login, passwd = self.default_user_password() @@ -97,7 +97,7 @@ def test_login_upassword_accent(self): repo = self.repo cnxid = repo.connect(*self.default_user_password()) - repo.execute(cnxid, 'INSERT EUser X: X login %(login)s, X upassword %(passwd)s, X in_state S, X in_group G WHERE S name "activated", G name "users"', + repo.execute(cnxid, 'INSERT CWUser X: X login %(login)s, X upassword %(passwd)s, X in_state S, X in_group G WHERE S name "activated", G name "users"', {'login': u"barnabé", 'passwd': u"héhéhé".encode('UTF8')}) repo.commit(cnxid) repo.close(cnxid) @@ -106,10 +106,10 @@ def test_invalid_entity_rollback(self): repo = self.repo cnxid = repo.connect(*self.default_user_password()) - repo.execute(cnxid, 'INSERT EUser X: X login %(login)s, X upassword %(passwd)s, X in_state S WHERE S name "activated"', + repo.execute(cnxid, 'INSERT CWUser X: X login %(login)s, X upassword %(passwd)s, X in_state S WHERE S name "activated"', {'login': u"tutetute", 'passwd': 'tutetute'}) self.assertRaises(ValidationError, repo.commit, cnxid) - rset = repo.execute(cnxid, 'EUser X WHERE X login "tutetute"') + rset = repo.execute(cnxid, 'CWUser X WHERE X login "tutetute"') self.assertEquals(rset.rowcount, 0) def test_close(self): @@ -201,7 +201,7 @@ def test_initial_schema(self): schema = self.repo.schema # check order of attributes is respected - self.assertListEquals([r.type for r in schema.eschema('EFRDef').ordered_relations() + self.assertListEquals([r.type for r in schema.eschema('CWAttribute').ordered_relations() if not r.type in ('eid', 'is', 'is_instance_of', 'identity', 'creation_date', 'modification_date', 'owned_by', 'created_by')], @@ -210,10 +210,10 @@ 'indexed', 'fulltextindexed', 'internationalizable', 'defaultval', 'description_format', 'description']) - self.assertEquals(schema.eschema('EEType').main_attribute(), 'name') + self.assertEquals(schema.eschema('CWEType').main_attribute(), 'name') self.assertEquals(schema.eschema('State').main_attribute(), 'name') - constraints = schema.rschema('name').rproperty('EEType', 'String', 'constraints') + constraints = schema.rschema('name').rproperty('CWEType', 'String', 'constraints') self.assertEquals(len(constraints), 2) for cstr in constraints[:]: if isinstance(cstr, UniqueConstraint): @@ -225,14 +225,14 @@ self.assertEquals(sizeconstraint.min, None) self.assertEquals(sizeconstraint.max, 64) - constraints = schema.rschema('relation_type').rproperty('EFRDef', 'ERType', 'constraints') + constraints = schema.rschema('relation_type').rproperty('CWAttribute', 'CWRType', 'constraints') self.assertEquals(len(constraints), 1) cstr = constraints[0] self.assert_(isinstance(cstr, RQLConstraint)) self.assertEquals(cstr.restriction, 'O final TRUE') ownedby = schema.rschema('owned_by') - self.assertEquals(ownedby.objects('EEType'), ('EUser',)) + self.assertEquals(ownedby.objects('CWEType'), ('CWUser',)) def test_pyro(self): import Pyro @@ -267,8 +267,8 @@ repo = self.repo cnxid = repo.connect(*self.default_user_password()) session = repo._get_session(cnxid, setpool=True) - self.assertEquals(repo.type_and_source_from_eid(1, session), ('EGroup', 'system', None)) - self.assertEquals(repo.type_from_eid(1, session), 'EGroup') + self.assertEquals(repo.type_and_source_from_eid(1, session), ('CWGroup', 'system', None)) + self.assertEquals(repo.type_from_eid(1, session), 'CWGroup') self.assertEquals(repo.source_from_eid(1, session).uri, 'system') self.assertEquals(repo.eid2extid(repo.system_source, 1, session), None) class dummysource: uri = 'toto' @@ -278,13 +278,13 @@ self.assertEquals(self.repo.get_schema(), self.repo.schema) self.assertEquals(self.repo.source_defs(), {'system': {'adapter': 'native', 'uri': 'system'}}) # .properties() return a result set - self.assertEquals(self.repo.properties().rql, 'Any K,V WHERE P is EProperty,P pkey K, P value V, NOT P for_user U') + self.assertEquals(self.repo.properties().rql, 'Any K,V WHERE P is CWProperty,P pkey K, P value V, NOT P for_user U') def test_session_api(self): repo = self.repo cnxid = repo.connect(*self.default_user_password()) self.assertEquals(repo.user_info(cnxid), (5, 'admin', set([u'managers']), {})) - self.assertEquals(repo.describe(cnxid, 1), (u'EGroup', u'system', None)) + self.assertEquals(repo.describe(cnxid, 1), (u'CWGroup', u'system', None)) repo.close(cnxid) self.assertRaises(BadConnectionId, repo.user_info, cnxid) self.assertRaises(BadConnectionId, repo.describe, cnxid, 1) @@ -325,7 +325,7 @@ self.assertRaises(UnknownEid, self.repo.source_from_eid, -2, self.session) def test_type_from_eid(self): - self.assertEquals(self.repo.type_from_eid(1, self.session), 'EGroup') + self.assertEquals(self.repo.type_from_eid(1, self.session), 'CWGroup') def test_type_from_eid_raise(self): self.assertRaises(UnknownEid, self.repo.type_from_eid, -2, self.session) @@ -449,7 +449,7 @@ """make sure after__relation hooks are deferred""" self.hm.register_hook(self._after_relation_hook, 'after_add_relation', 'in_state') - eidp = self.execute('INSERT EUser X: X login "toto", X upassword "tutu", X in_state S WHERE S name "activated"')[0][0] + eidp = self.execute('INSERT CWUser X: X login "toto", X upassword "tutu", X in_state S WHERE S name "activated"')[0][0] eids = self.execute('State X WHERE X name "activated"')[0][0] self.assertEquals(self.called, [(eidp, 'in_state', eids,)]) diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 server/test/unittest_rql2sql.py --- a/server/test/unittest_rql2sql.py Fri Apr 17 13:21:05 2009 +0200 +++ b/server/test/unittest_rql2sql.py Fri Apr 17 16:55:37 2009 +0200 @@ -121,14 +121,14 @@ FROM cw_Affaire AS X WHERE DATE(X.cw_creation_date)=CURRENT_DATE'''), - ("Any N WHERE G is EGroup, G name N, E eid 12, E read_permission G", + ("Any N WHERE G is CWGroup, G name N, E eid 12, E read_permission G", '''SELECT G.cw_name -FROM cw_EGroup AS G, read_permission_relation AS rel_read_permission0 +FROM cw_CWGroup AS G, read_permission_relation AS rel_read_permission0 WHERE rel_read_permission0.eid_from=12 AND rel_read_permission0.eid_to=G.cw_eid'''), ('Any Y WHERE U login "admin", U login Y', # stupid but valid... """SELECT U.cw_login -FROM cw_EUser AS U +FROM cw_CWUser AS U WHERE U.cw_login=admin"""), ('Any T WHERE T tags X, X is State', @@ -145,13 +145,13 @@ "EXISTS(X owned_by U, U in_group G, G name 'lulufanclub' OR G name 'managers');", '''SELECT X.cw_eid FROM cw_Personne AS X -WHERE X.cw_prenom=lulu AND EXISTS(SELECT 1 FROM owned_by_relation AS rel_owned_by0, in_group_relation AS rel_in_group1, cw_EGroup AS G WHERE rel_owned_by0.eid_from=X.cw_eid AND rel_in_group1.eid_from=rel_owned_by0.eid_to AND rel_in_group1.eid_to=G.cw_eid AND ((G.cw_name=lulufanclub) OR (G.cw_name=managers)))'''), +WHERE X.cw_prenom=lulu AND EXISTS(SELECT 1 FROM owned_by_relation AS rel_owned_by0, in_group_relation AS rel_in_group1, cw_CWGroup AS G WHERE rel_owned_by0.eid_from=X.cw_eid AND rel_in_group1.eid_from=rel_owned_by0.eid_to AND rel_in_group1.eid_to=G.cw_eid AND ((G.cw_name=lulufanclub) OR (G.cw_name=managers)))'''), ("Any X WHERE X prenom 'lulu'," "NOT EXISTS(X owned_by U, U in_group G, G name 'lulufanclub' OR G name 'managers');", '''SELECT X.cw_eid FROM cw_Personne AS X -WHERE X.cw_prenom=lulu AND NOT EXISTS(SELECT 1 FROM owned_by_relation AS rel_owned_by0, in_group_relation AS rel_in_group1, cw_EGroup AS G WHERE rel_owned_by0.eid_from=X.cw_eid AND rel_in_group1.eid_from=rel_owned_by0.eid_to AND rel_in_group1.eid_to=G.cw_eid AND ((G.cw_name=lulufanclub) OR (G.cw_name=managers)))'''), +WHERE X.cw_prenom=lulu AND NOT EXISTS(SELECT 1 FROM owned_by_relation AS rel_owned_by0, in_group_relation AS rel_in_group1, cw_CWGroup AS G WHERE rel_owned_by0.eid_from=X.cw_eid AND rel_in_group1.eid_from=rel_owned_by0.eid_to AND rel_in_group1.eid_to=G.cw_eid AND ((G.cw_name=lulufanclub) OR (G.cw_name=managers)))'''), ] ADVANCED= [ @@ -234,11 +234,11 @@ ('Any SEN,RN,OEN WHERE X from_entity SE, SE eid 44, X relation_type R, R eid 139, X to_entity OE, OE eid 42, R name RN, SE name SEN, OE name OEN', '''SELECT SE.cw_name, R.cw_name, OE.cw_name -FROM cw_EEType AS OE, cw_EEType AS SE, cw_EFRDef AS X, cw_ERType AS R +FROM cw_CWEType AS OE, cw_CWEType AS SE, cw_CWAttribute AS X, cw_CWRType AS R WHERE X.cw_from_entity=44 AND SE.cw_eid=44 AND X.cw_relation_type=139 AND R.cw_eid=139 AND X.cw_to_entity=42 AND OE.cw_eid=42 UNION ALL SELECT SE.cw_name, R.cw_name, OE.cw_name -FROM cw_EEType AS OE, cw_EEType AS SE, cw_ENFRDef AS X, cw_ERType AS R +FROM cw_CWEType AS OE, cw_CWEType AS SE, cw_CWRelation AS X, cw_CWRType AS R WHERE X.cw_from_entity=44 AND SE.cw_eid=44 AND X.cw_relation_type=139 AND R.cw_eid=139 AND X.cw_to_entity=42 AND OE.cw_eid=42'''), # Any O WHERE NOT S corrected_in O, S eid %(x)s, S concerns P, O version_of P, O in_state ST, NOT ST name "published", O modification_date MTIME ORDERBY MTIME DESC LIMIT 9 @@ -272,8 +272,8 @@ ('Any GN WHERE X in_group G, G name GN, (G name "managers" OR EXISTS(X copain T, T login in ("comme", "cochon")))', '''SELECT G.cw_name -FROM cw_EGroup AS G, in_group_relation AS rel_in_group0 -WHERE rel_in_group0.eid_to=G.cw_eid AND ((G.cw_name=managers) OR (EXISTS(SELECT 1 FROM copain_relation AS rel_copain1, cw_EUser AS T WHERE rel_copain1.eid_from=rel_in_group0.eid_from AND rel_copain1.eid_to=T.cw_eid AND T.cw_login IN(comme, cochon))))'''), +FROM cw_CWGroup AS G, in_group_relation AS rel_in_group0 +WHERE rel_in_group0.eid_to=G.cw_eid AND ((G.cw_name=managers) OR (EXISTS(SELECT 1 FROM copain_relation AS rel_copain1, cw_CWUser AS T WHERE rel_copain1.eid_from=rel_in_group0.eid_from AND rel_copain1.eid_to=T.cw_eid AND T.cw_login IN(comme, cochon))))'''), ('Any C WHERE C is Card, EXISTS(X documented_by C)', """SELECT C.cw_eid @@ -292,12 +292,12 @@ ('Any GN,L WHERE X in_group G, X login L, G name GN, EXISTS(X copain T, T login L, T login IN("comme", "cochon"))', '''SELECT G.cw_name, X.cw_login -FROM cw_EGroup AS G, cw_EUser AS X, in_group_relation AS rel_in_group0 -WHERE rel_in_group0.eid_from=X.cw_eid AND rel_in_group0.eid_to=G.cw_eid AND EXISTS(SELECT 1 FROM copain_relation AS rel_copain1, cw_EUser AS T WHERE rel_copain1.eid_from=X.cw_eid AND rel_copain1.eid_to=T.cw_eid AND T.cw_login=X.cw_login AND T.cw_login IN(comme, cochon))'''), +FROM cw_CWGroup AS G, cw_CWUser AS X, in_group_relation AS rel_in_group0 +WHERE rel_in_group0.eid_from=X.cw_eid AND rel_in_group0.eid_to=G.cw_eid AND EXISTS(SELECT 1 FROM copain_relation AS rel_copain1, cw_CWUser AS T WHERE rel_copain1.eid_from=X.cw_eid AND rel_copain1.eid_to=T.cw_eid AND T.cw_login=X.cw_login AND T.cw_login IN(comme, cochon))'''), - ('Any X,S, MAX(T) GROUPBY X,S ORDERBY S WHERE X is EUser, T tags X, S eid IN(32), X in_state S', + ('Any X,S, MAX(T) GROUPBY X,S ORDERBY S WHERE X is CWUser, T tags X, S eid IN(32), X in_state S', '''SELECT X.cw_eid, 32, MAX(rel_tags0.eid_from) -FROM cw_EUser AS X, tags_relation AS rel_tags0 +FROM cw_CWUser AS X, tags_relation AS rel_tags0 WHERE rel_tags0.eid_to=X.cw_eid AND X.cw_in_state=32 GROUP BY X.cw_eid'''), @@ -309,24 +309,24 @@ ORDER BY 1 DESC LIMIT 10'''), - ('Any X WHERE Y evaluee X, Y is EUser', + ('Any X WHERE Y evaluee X, Y is CWUser', '''SELECT rel_evaluee0.eid_to -FROM cw_EUser AS Y, evaluee_relation AS rel_evaluee0 +FROM cw_CWUser AS Y, evaluee_relation AS rel_evaluee0 WHERE rel_evaluee0.eid_from=Y.cw_eid'''), ('Any L WHERE X login "admin", X identity Y, Y login L', '''SELECT Y.cw_login -FROM cw_EUser AS X, cw_EUser AS Y +FROM cw_CWUser AS X, cw_CWUser AS Y WHERE X.cw_login=admin AND X.cw_eid=Y.cw_eid'''), ('Any L WHERE X login "admin", NOT X identity Y, Y login L', '''SELECT Y.cw_login -FROM cw_EUser AS X, cw_EUser AS Y +FROM cw_CWUser AS X, cw_CWUser AS Y WHERE X.cw_login=admin AND NOT X.cw_eid=Y.cw_eid'''), ('Any L WHERE X login "admin", X identity Y?, Y login L', '''SELECT Y.cw_login -FROM cw_EUser AS X LEFT OUTER JOIN cw_EUser AS Y ON (X.cw_eid=Y.cw_eid) +FROM cw_CWUser AS X LEFT OUTER JOIN cw_CWUser AS Y ON (X.cw_eid=Y.cw_eid) WHERE X.cw_login=admin'''), ('Any XN ORDERBY XN WHERE X name XN', @@ -334,22 +334,22 @@ FROM cw_Basket AS X UNION ALL SELECT X.cw_name -FROM cw_ECache AS X +FROM cw_CWCache AS X UNION ALL SELECT X.cw_name -FROM cw_EConstraintType AS X +FROM cw_CWConstraintType AS X UNION ALL SELECT X.cw_name -FROM cw_EEType AS X +FROM cw_CWEType AS X UNION ALL SELECT X.cw_name -FROM cw_EGroup AS X +FROM cw_CWGroup AS X UNION ALL SELECT X.cw_name -FROM cw_EPermission AS X +FROM cw_CWPermission AS X UNION ALL SELECT X.cw_name -FROM cw_ERType AS X +FROM cw_CWRType AS X UNION ALL SELECT X.cw_name FROM cw_File AS X @@ -376,108 +376,108 @@ # ''''''), # DISTINCT, can use relatin under exists scope as principal - ('DISTINCT Any X,Y WHERE X name "EGroup", Y eid IN(1, 2, 3), EXISTS(X read_permission Y)', + ('DISTINCT Any X,Y WHERE X name "CWGroup", Y eid IN(1, 2, 3), EXISTS(X read_permission Y)', '''SELECT DISTINCT X.cw_eid, rel_read_permission0.eid_to -FROM cw_EEType AS X, read_permission_relation AS rel_read_permission0 -WHERE X.cw_name=EGroup AND rel_read_permission0.eid_to IN(1, 2, 3) AND EXISTS(SELECT 1 WHERE rel_read_permission0.eid_from=X.cw_eid) +FROM cw_CWEType AS X, read_permission_relation AS rel_read_permission0 +WHERE X.cw_name=CWGroup AND rel_read_permission0.eid_to IN(1, 2, 3) AND EXISTS(SELECT 1 WHERE rel_read_permission0.eid_from=X.cw_eid) UNION SELECT DISTINCT X.cw_eid, rel_read_permission0.eid_to -FROM cw_ERType AS X, read_permission_relation AS rel_read_permission0 -WHERE X.cw_name=EGroup AND rel_read_permission0.eid_to IN(1, 2, 3) AND EXISTS(SELECT 1 WHERE rel_read_permission0.eid_from=X.cw_eid)'''), +FROM cw_CWRType AS X, read_permission_relation AS rel_read_permission0 +WHERE X.cw_name=CWGroup AND rel_read_permission0.eid_to IN(1, 2, 3) AND EXISTS(SELECT 1 WHERE rel_read_permission0.eid_from=X.cw_eid)'''), # no distinct, Y can't be invariant - ('Any X,Y WHERE X name "EGroup", Y eid IN(1, 2, 3), EXISTS(X read_permission Y)', + ('Any X,Y WHERE X name "CWGroup", Y eid IN(1, 2, 3), EXISTS(X read_permission Y)', '''SELECT X.cw_eid, Y.cw_eid -FROM cw_EEType AS X, cw_EGroup AS Y -WHERE X.cw_name=EGroup AND Y.cw_eid IN(1, 2, 3) AND EXISTS(SELECT 1 FROM read_permission_relation AS rel_read_permission0 WHERE rel_read_permission0.eid_from=X.cw_eid AND rel_read_permission0.eid_to=Y.cw_eid) +FROM cw_CWEType AS X, cw_CWGroup AS Y +WHERE X.cw_name=CWGroup AND Y.cw_eid IN(1, 2, 3) AND EXISTS(SELECT 1 FROM read_permission_relation AS rel_read_permission0 WHERE rel_read_permission0.eid_from=X.cw_eid AND rel_read_permission0.eid_to=Y.cw_eid) UNION ALL SELECT X.cw_eid, Y.cw_eid -FROM cw_EEType AS X, cw_RQLExpression AS Y -WHERE X.cw_name=EGroup AND Y.cw_eid IN(1, 2, 3) AND EXISTS(SELECT 1 FROM read_permission_relation AS rel_read_permission0 WHERE rel_read_permission0.eid_from=X.cw_eid AND rel_read_permission0.eid_to=Y.cw_eid) +FROM cw_CWEType AS X, cw_RQLExpression AS Y +WHERE X.cw_name=CWGroup AND Y.cw_eid IN(1, 2, 3) AND EXISTS(SELECT 1 FROM read_permission_relation AS rel_read_permission0 WHERE rel_read_permission0.eid_from=X.cw_eid AND rel_read_permission0.eid_to=Y.cw_eid) UNION ALL SELECT X.cw_eid, Y.cw_eid -FROM cw_EGroup AS Y, cw_ERType AS X -WHERE X.cw_name=EGroup AND Y.cw_eid IN(1, 2, 3) AND EXISTS(SELECT 1 FROM read_permission_relation AS rel_read_permission0 WHERE rel_read_permission0.eid_from=X.cw_eid AND rel_read_permission0.eid_to=Y.cw_eid) +FROM cw_CWGroup AS Y, cw_CWRType AS X +WHERE X.cw_name=CWGroup AND Y.cw_eid IN(1, 2, 3) AND EXISTS(SELECT 1 FROM read_permission_relation AS rel_read_permission0 WHERE rel_read_permission0.eid_from=X.cw_eid AND rel_read_permission0.eid_to=Y.cw_eid) UNION ALL SELECT X.cw_eid, Y.cw_eid -FROM cw_ERType AS X, cw_RQLExpression AS Y -WHERE X.cw_name=EGroup AND Y.cw_eid IN(1, 2, 3) AND EXISTS(SELECT 1 FROM read_permission_relation AS rel_read_permission0 WHERE rel_read_permission0.eid_from=X.cw_eid AND rel_read_permission0.eid_to=Y.cw_eid)'''), +FROM cw_CWRType AS X, cw_RQLExpression AS Y +WHERE X.cw_name=CWGroup AND Y.cw_eid IN(1, 2, 3) AND EXISTS(SELECT 1 FROM read_permission_relation AS rel_read_permission0 WHERE rel_read_permission0.eid_from=X.cw_eid AND rel_read_permission0.eid_to=Y.cw_eid)'''), # DISTINCT but NEGED exists, can't be invariant - ('DISTINCT Any X,Y WHERE X name "EGroup", Y eid IN(1, 2, 3), NOT EXISTS(X read_permission Y)', + ('DISTINCT Any X,Y WHERE X name "CWGroup", Y eid IN(1, 2, 3), NOT EXISTS(X read_permission Y)', '''SELECT DISTINCT X.cw_eid, Y.cw_eid -FROM cw_EEType AS X, cw_EGroup AS Y -WHERE X.cw_name=EGroup AND Y.cw_eid IN(1, 2, 3) AND NOT EXISTS(SELECT 1 FROM read_permission_relation AS rel_read_permission0 WHERE rel_read_permission0.eid_from=X.cw_eid AND rel_read_permission0.eid_to=Y.cw_eid) +FROM cw_CWEType AS X, cw_CWGroup AS Y +WHERE X.cw_name=CWGroup AND Y.cw_eid IN(1, 2, 3) AND NOT EXISTS(SELECT 1 FROM read_permission_relation AS rel_read_permission0 WHERE rel_read_permission0.eid_from=X.cw_eid AND rel_read_permission0.eid_to=Y.cw_eid) UNION SELECT DISTINCT X.cw_eid, Y.cw_eid -FROM cw_EEType AS X, cw_RQLExpression AS Y -WHERE X.cw_name=EGroup AND Y.cw_eid IN(1, 2, 3) AND NOT EXISTS(SELECT 1 FROM read_permission_relation AS rel_read_permission0 WHERE rel_read_permission0.eid_from=X.cw_eid AND rel_read_permission0.eid_to=Y.cw_eid) +FROM cw_CWEType AS X, cw_RQLExpression AS Y +WHERE X.cw_name=CWGroup AND Y.cw_eid IN(1, 2, 3) AND NOT EXISTS(SELECT 1 FROM read_permission_relation AS rel_read_permission0 WHERE rel_read_permission0.eid_from=X.cw_eid AND rel_read_permission0.eid_to=Y.cw_eid) UNION SELECT DISTINCT X.cw_eid, Y.cw_eid -FROM cw_EGroup AS Y, cw_ERType AS X -WHERE X.cw_name=EGroup AND Y.cw_eid IN(1, 2, 3) AND NOT EXISTS(SELECT 1 FROM read_permission_relation AS rel_read_permission0 WHERE rel_read_permission0.eid_from=X.cw_eid AND rel_read_permission0.eid_to=Y.cw_eid) +FROM cw_CWGroup AS Y, cw_CWRType AS X +WHERE X.cw_name=CWGroup AND Y.cw_eid IN(1, 2, 3) AND NOT EXISTS(SELECT 1 FROM read_permission_relation AS rel_read_permission0 WHERE rel_read_permission0.eid_from=X.cw_eid AND rel_read_permission0.eid_to=Y.cw_eid) UNION SELECT DISTINCT X.cw_eid, Y.cw_eid -FROM cw_ERType AS X, cw_RQLExpression AS Y -WHERE X.cw_name=EGroup AND Y.cw_eid IN(1, 2, 3) AND NOT EXISTS(SELECT 1 FROM read_permission_relation AS rel_read_permission0 WHERE rel_read_permission0.eid_from=X.cw_eid AND rel_read_permission0.eid_to=Y.cw_eid)'''), +FROM cw_CWRType AS X, cw_RQLExpression AS Y +WHERE X.cw_name=CWGroup AND Y.cw_eid IN(1, 2, 3) AND NOT EXISTS(SELECT 1 FROM read_permission_relation AS rel_read_permission0 WHERE rel_read_permission0.eid_from=X.cw_eid AND rel_read_permission0.eid_to=Y.cw_eid)'''), # should generate the same query as above - ('DISTINCT Any X,Y WHERE X name "EGroup", Y eid IN(1, 2, 3), NOT X read_permission Y', + ('DISTINCT Any X,Y WHERE X name "CWGroup", Y eid IN(1, 2, 3), NOT X read_permission Y', '''SELECT DISTINCT X.cw_eid, Y.cw_eid -FROM cw_EEType AS X, cw_EGroup AS Y -WHERE X.cw_name=EGroup AND Y.cw_eid IN(1, 2, 3) AND NOT EXISTS(SELECT 1 FROM read_permission_relation AS rel_read_permission0 WHERE rel_read_permission0.eid_from=X.cw_eid AND rel_read_permission0.eid_to=Y.cw_eid) +FROM cw_CWEType AS X, cw_CWGroup AS Y +WHERE X.cw_name=CWGroup AND Y.cw_eid IN(1, 2, 3) AND NOT EXISTS(SELECT 1 FROM read_permission_relation AS rel_read_permission0 WHERE rel_read_permission0.eid_from=X.cw_eid AND rel_read_permission0.eid_to=Y.cw_eid) UNION SELECT DISTINCT X.cw_eid, Y.cw_eid -FROM cw_EEType AS X, cw_RQLExpression AS Y -WHERE X.cw_name=EGroup AND Y.cw_eid IN(1, 2, 3) AND NOT EXISTS(SELECT 1 FROM read_permission_relation AS rel_read_permission0 WHERE rel_read_permission0.eid_from=X.cw_eid AND rel_read_permission0.eid_to=Y.cw_eid) +FROM cw_CWEType AS X, cw_RQLExpression AS Y +WHERE X.cw_name=CWGroup AND Y.cw_eid IN(1, 2, 3) AND NOT EXISTS(SELECT 1 FROM read_permission_relation AS rel_read_permission0 WHERE rel_read_permission0.eid_from=X.cw_eid AND rel_read_permission0.eid_to=Y.cw_eid) UNION SELECT DISTINCT X.cw_eid, Y.cw_eid -FROM cw_EGroup AS Y, cw_ERType AS X -WHERE X.cw_name=EGroup AND Y.cw_eid IN(1, 2, 3) AND NOT EXISTS(SELECT 1 FROM read_permission_relation AS rel_read_permission0 WHERE rel_read_permission0.eid_from=X.cw_eid AND rel_read_permission0.eid_to=Y.cw_eid) +FROM cw_CWGroup AS Y, cw_CWRType AS X +WHERE X.cw_name=CWGroup AND Y.cw_eid IN(1, 2, 3) AND NOT EXISTS(SELECT 1 FROM read_permission_relation AS rel_read_permission0 WHERE rel_read_permission0.eid_from=X.cw_eid AND rel_read_permission0.eid_to=Y.cw_eid) UNION SELECT DISTINCT X.cw_eid, Y.cw_eid -FROM cw_ERType AS X, cw_RQLExpression AS Y -WHERE X.cw_name=EGroup AND Y.cw_eid IN(1, 2, 3) AND NOT EXISTS(SELECT 1 FROM read_permission_relation AS rel_read_permission0 WHERE rel_read_permission0.eid_from=X.cw_eid AND rel_read_permission0.eid_to=Y.cw_eid)'''), +FROM cw_CWRType AS X, cw_RQLExpression AS Y +WHERE X.cw_name=CWGroup AND Y.cw_eid IN(1, 2, 3) AND NOT EXISTS(SELECT 1 FROM read_permission_relation AS rel_read_permission0 WHERE rel_read_permission0.eid_from=X.cw_eid AND rel_read_permission0.eid_to=Y.cw_eid)'''), # neged relation, can't be inveriant - ('Any X,Y WHERE X name "EGroup", Y eid IN(1, 2, 3), NOT X read_permission Y', + ('Any X,Y WHERE X name "CWGroup", Y eid IN(1, 2, 3), NOT X read_permission Y', '''SELECT X.cw_eid, Y.cw_eid -FROM cw_EEType AS X, cw_EGroup AS Y -WHERE X.cw_name=EGroup AND Y.cw_eid IN(1, 2, 3) AND NOT EXISTS(SELECT 1 FROM read_permission_relation AS rel_read_permission0 WHERE rel_read_permission0.eid_from=X.cw_eid AND rel_read_permission0.eid_to=Y.cw_eid) +FROM cw_CWEType AS X, cw_CWGroup AS Y +WHERE X.cw_name=CWGroup AND Y.cw_eid IN(1, 2, 3) AND NOT EXISTS(SELECT 1 FROM read_permission_relation AS rel_read_permission0 WHERE rel_read_permission0.eid_from=X.cw_eid AND rel_read_permission0.eid_to=Y.cw_eid) UNION ALL SELECT X.cw_eid, Y.cw_eid -FROM cw_EEType AS X, cw_RQLExpression AS Y -WHERE X.cw_name=EGroup AND Y.cw_eid IN(1, 2, 3) AND NOT EXISTS(SELECT 1 FROM read_permission_relation AS rel_read_permission0 WHERE rel_read_permission0.eid_from=X.cw_eid AND rel_read_permission0.eid_to=Y.cw_eid) +FROM cw_CWEType AS X, cw_RQLExpression AS Y +WHERE X.cw_name=CWGroup AND Y.cw_eid IN(1, 2, 3) AND NOT EXISTS(SELECT 1 FROM read_permission_relation AS rel_read_permission0 WHERE rel_read_permission0.eid_from=X.cw_eid AND rel_read_permission0.eid_to=Y.cw_eid) UNION ALL SELECT X.cw_eid, Y.cw_eid -FROM cw_EGroup AS Y, cw_ERType AS X -WHERE X.cw_name=EGroup AND Y.cw_eid IN(1, 2, 3) AND NOT EXISTS(SELECT 1 FROM read_permission_relation AS rel_read_permission0 WHERE rel_read_permission0.eid_from=X.cw_eid AND rel_read_permission0.eid_to=Y.cw_eid) +FROM cw_CWGroup AS Y, cw_CWRType AS X +WHERE X.cw_name=CWGroup AND Y.cw_eid IN(1, 2, 3) AND NOT EXISTS(SELECT 1 FROM read_permission_relation AS rel_read_permission0 WHERE rel_read_permission0.eid_from=X.cw_eid AND rel_read_permission0.eid_to=Y.cw_eid) UNION ALL SELECT X.cw_eid, Y.cw_eid -FROM cw_ERType AS X, cw_RQLExpression AS Y -WHERE X.cw_name=EGroup AND Y.cw_eid IN(1, 2, 3) AND NOT EXISTS(SELECT 1 FROM read_permission_relation AS rel_read_permission0 WHERE rel_read_permission0.eid_from=X.cw_eid AND rel_read_permission0.eid_to=Y.cw_eid)'''), +FROM cw_CWRType AS X, cw_RQLExpression AS Y +WHERE X.cw_name=CWGroup AND Y.cw_eid IN(1, 2, 3) AND NOT EXISTS(SELECT 1 FROM read_permission_relation AS rel_read_permission0 WHERE rel_read_permission0.eid_from=X.cw_eid AND rel_read_permission0.eid_to=Y.cw_eid)'''), ('Any MAX(X)+MIN(X), N GROUPBY N WHERE X name N;', '''SELECT (MAX(T1.C0) + MIN(T1.C0)), T1.C1 FROM (SELECT X.cw_eid AS C0, X.cw_name AS C1 FROM cw_Basket AS X UNION ALL SELECT X.cw_eid AS C0, X.cw_name AS C1 -FROM cw_ECache AS X +FROM cw_CWCache AS X UNION ALL SELECT X.cw_eid AS C0, X.cw_name AS C1 -FROM cw_EConstraintType AS X +FROM cw_CWConstraintType AS X UNION ALL SELECT X.cw_eid AS C0, X.cw_name AS C1 -FROM cw_EEType AS X +FROM cw_CWEType AS X UNION ALL SELECT X.cw_eid AS C0, X.cw_name AS C1 -FROM cw_EGroup AS X +FROM cw_CWGroup AS X UNION ALL SELECT X.cw_eid AS C0, X.cw_name AS C1 -FROM cw_EPermission AS X +FROM cw_CWPermission AS X UNION ALL SELECT X.cw_eid AS C0, X.cw_name AS C1 -FROM cw_ERType AS X +FROM cw_CWRType AS X UNION ALL SELECT X.cw_eid AS C0, X.cw_name AS C1 FROM cw_File AS X @@ -523,25 +523,25 @@ '''), # ambiguity in EXISTS() -> should union the sub-query - ('Any T WHERE T is Tag, NOT T name in ("t1", "t2"), EXISTS(T tags X, X is IN (EUser, EGroup))', + ('Any T WHERE T is Tag, NOT T name in ("t1", "t2"), EXISTS(T tags X, X is IN (CWUser, CWGroup))', '''SELECT T.cw_eid FROM cw_Tag AS T -WHERE NOT (T.cw_name IN(t1, t2)) AND EXISTS(SELECT 1 FROM tags_relation AS rel_tags0, cw_EGroup AS X WHERE rel_tags0.eid_from=T.cw_eid AND rel_tags0.eid_to=X.cw_eid UNION SELECT 1 FROM tags_relation AS rel_tags1, cw_EUser AS X WHERE rel_tags1.eid_from=T.cw_eid AND rel_tags1.eid_to=X.cw_eid)'''), +WHERE NOT (T.cw_name IN(t1, t2)) AND EXISTS(SELECT 1 FROM tags_relation AS rel_tags0, cw_CWGroup AS X WHERE rel_tags0.eid_from=T.cw_eid AND rel_tags0.eid_to=X.cw_eid UNION SELECT 1 FROM tags_relation AS rel_tags1, cw_CWUser AS X WHERE rel_tags1.eid_from=T.cw_eid AND rel_tags1.eid_to=X.cw_eid)'''), # must not use a relation in EXISTS scope to inline a variable ('Any U WHERE U eid IN (1,2), EXISTS(X owned_by U)', '''SELECT U.cw_eid -FROM cw_EUser AS U +FROM cw_CWUser AS U WHERE U.cw_eid IN(1, 2) AND EXISTS(SELECT 1 FROM owned_by_relation AS rel_owned_by0 WHERE rel_owned_by0.eid_to=U.cw_eid)'''), ('Any U WHERE EXISTS(U eid IN (1,2), X owned_by U)', '''SELECT U.cw_eid -FROM cw_EUser AS U +FROM cw_CWUser AS U WHERE EXISTS(SELECT 1 FROM owned_by_relation AS rel_owned_by0 WHERE U.cw_eid IN(1, 2) AND rel_owned_by0.eid_to=U.cw_eid)'''), ('Any COUNT(U) WHERE EXISTS (P owned_by U, P is IN (Note, Affaire))', '''SELECT COUNT(U.cw_eid) -FROM cw_EUser AS U +FROM cw_CWUser AS U WHERE EXISTS(SELECT 1 FROM owned_by_relation AS rel_owned_by0, cw_Affaire AS P WHERE rel_owned_by0.eid_from=P.cw_eid AND rel_owned_by0.eid_to=U.cw_eid UNION SELECT 1 FROM owned_by_relation AS rel_owned_by1, cw_Note AS P WHERE rel_owned_by1.eid_from=P.cw_eid AND rel_owned_by1.eid_to=U.cw_eid)'''), ('Any MAX(X)', @@ -584,7 +584,7 @@ ('Any X GROUPBY X ORDERBY Y WHERE X eid 12, X login Y', '''SELECT X.cw_eid -FROM cw_EUser AS X +FROM cw_CWUser AS X WHERE X.cw_eid=12 GROUP BY X.cw_eid ORDER BY X.cw_login'''), @@ -598,12 +598,12 @@ ('DISTINCT Any X ORDERBY stockproc(X) WHERE U login X', '''SELECT T1.C0 FROM (SELECT DISTINCT U.cw_login AS C0, STOCKPROC(U.cw_login) AS C1 -FROM cw_EUser AS U +FROM cw_CWUser AS U ORDER BY 2) AS T1'''), ('DISTINCT Any X ORDERBY Y WHERE B bookmarked_by X, X login Y', '''SELECT T1.C0 FROM (SELECT DISTINCT X.cw_eid AS C0, X.cw_login AS C1 -FROM bookmarked_by_relation AS rel_bookmarked_by0, cw_EUser AS X +FROM bookmarked_by_relation AS rel_bookmarked_by0, cw_CWUser AS X WHERE rel_bookmarked_by0.eid_to=X.cw_eid ORDER BY 2) AS T1'''), @@ -613,7 +613,7 @@ WHERE X.cw_in_state=S.cw_eid UNION SELECT DISTINCT X.cw_eid AS C0, S.cw_name AS C1 -FROM cw_EUser AS X, cw_State AS S +FROM cw_CWUser AS X, cw_State AS S WHERE X.cw_in_state=S.cw_eid UNION SELECT DISTINCT X.cw_eid AS C0, S.cw_name AS C1 @@ -679,7 +679,7 @@ ('Any S WHERE T is Tag, T name TN, NOT T eid 28258, T tags S, S name SN', '''SELECT S.cw_eid -FROM cw_EGroup AS S, cw_Tag AS T, tags_relation AS rel_tags0 +FROM cw_CWGroup AS S, cw_Tag AS T, tags_relation AS rel_tags0 WHERE NOT (T.cw_eid=28258) AND rel_tags0.eid_from=T.cw_eid AND rel_tags0.eid_to=S.cw_eid UNION ALL SELECT S.cw_eid @@ -707,7 +707,7 @@ WHERE NOT EXISTS(SELECT 1 FROM evaluee_relation AS rel_evaluee0 WHERE rel_evaluee0.eid_from=Y.cw_eid) UNION ALL SELECT Y.cw_eid -FROM cw_EUser AS Y +FROM cw_CWUser AS Y WHERE NOT EXISTS(SELECT 1 FROM evaluee_relation AS rel_evaluee0 WHERE rel_evaluee0.eid_from=Y.cw_eid) UNION ALL SELECT Y.cw_eid @@ -722,10 +722,10 @@ FROM cw_SubDivision AS Y WHERE NOT EXISTS(SELECT 1 FROM evaluee_relation AS rel_evaluee0 WHERE rel_evaluee0.eid_from=Y.cw_eid)'''), - ('Any X WHERE NOT Y evaluee X, Y is EUser', + ('Any X WHERE NOT Y evaluee X, Y is CWUser', '''SELECT X.cw_eid FROM cw_Note AS X -WHERE NOT EXISTS(SELECT 1 FROM evaluee_relation AS rel_evaluee0,cw_EUser AS Y WHERE rel_evaluee0.eid_from=Y.cw_eid AND rel_evaluee0.eid_to=X.cw_eid)'''), +WHERE NOT EXISTS(SELECT 1 FROM evaluee_relation AS rel_evaluee0,cw_CWUser AS Y WHERE rel_evaluee0.eid_from=Y.cw_eid AND rel_evaluee0.eid_to=X.cw_eid)'''), ('Any X,T WHERE X title T, NOT X is Bookmark', '''SELECT DISTINCT X.cw_eid, X.cw_title @@ -734,18 +734,18 @@ SELECT DISTINCT X.cw_eid, X.cw_title FROM cw_EmailThread AS X'''), - ('Any K,V WHERE P is EProperty, P pkey K, P value V, NOT P for_user U', + ('Any K,V WHERE P is CWProperty, P pkey K, P value V, NOT P for_user U', '''SELECT DISTINCT P.cw_pkey, P.cw_value -FROM cw_EProperty AS P +FROM cw_CWProperty AS P WHERE P.cw_for_user IS NULL'''), - ('Any S WHERE NOT X in_state S, X is IN(Affaire, EUser)', + ('Any S WHERE NOT X in_state S, X is IN(Affaire, CWUser)', '''SELECT DISTINCT S.cw_eid FROM cw_Affaire AS X, cw_State AS S WHERE (X.cw_in_state IS NULL OR X.cw_in_state!=S.cw_eid) INTERSECT SELECT DISTINCT S.cw_eid -FROM cw_EUser AS X, cw_State AS S +FROM cw_CWUser AS X, cw_State AS S WHERE (X.cw_in_state IS NULL OR X.cw_in_state!=S.cw_eid)'''), ] @@ -791,7 +791,7 @@ ('Any X WHERE X is Affaire, S is Societe, EXISTS(X owned_by U OR (X concerne S?, S owned_by U))', '''SELECT X.cw_eid FROM cw_Affaire AS X -WHERE EXISTS(SELECT 1 FROM owned_by_relation AS rel_owned_by0, cw_EUser AS U, cw_Affaire AS A LEFT OUTER JOIN concerne_relation AS rel_concerne1 ON (rel_concerne1.eid_from=A.cw_eid) LEFT OUTER JOIN cw_Societe AS S ON (rel_concerne1.eid_to=S.cw_eid), owned_by_relation AS rel_owned_by2 WHERE ((rel_owned_by0.eid_from=A.cw_eid AND rel_owned_by0.eid_to=U.cw_eid) OR (rel_owned_by2.eid_from=S.cw_eid AND rel_owned_by2.eid_to=U.cw_eid)) AND X.cw_eid=A.cw_eid)'''), +WHERE EXISTS(SELECT 1 FROM owned_by_relation AS rel_owned_by0, cw_CWUser AS U, cw_Affaire AS A LEFT OUTER JOIN concerne_relation AS rel_concerne1 ON (rel_concerne1.eid_from=A.cw_eid) LEFT OUTER JOIN cw_Societe AS S ON (rel_concerne1.eid_to=S.cw_eid), owned_by_relation AS rel_owned_by2 WHERE ((rel_owned_by0.eid_from=A.cw_eid AND rel_owned_by0.eid_to=U.cw_eid) OR (rel_owned_by2.eid_from=S.cw_eid AND rel_owned_by2.eid_to=U.cw_eid)) AND X.cw_eid=A.cw_eid)'''), ('Any C,M WHERE C travaille G?, G evaluee M?, G is Societe', '''SELECT C.cw_eid, rel_evaluee1.eid_to @@ -804,7 +804,7 @@ 'F name "read", F require_group E, U in_group E)), U eid 1', '''SELECT A.cw_eid, rel_documented_by0.eid_to FROM cw_Affaire AS A LEFT OUTER JOIN documented_by_relation AS rel_documented_by0 ON (rel_documented_by0.eid_from=A.cw_eid) -WHERE ((rel_documented_by0.eid_to IS NULL) OR (EXISTS(SELECT 1 FROM require_permission_relation AS rel_require_permission1, cw_EPermission AS F, require_group_relation AS rel_require_group2, in_group_relation AS rel_in_group3 WHERE rel_documented_by0.eid_to=rel_require_permission1.eid_from AND rel_require_permission1.eid_to=F.cw_eid AND F.cw_name=read AND rel_require_group2.eid_from=F.cw_eid AND rel_in_group3.eid_to=rel_require_group2.eid_to AND rel_in_group3.eid_from=1)))'''), +WHERE ((rel_documented_by0.eid_to IS NULL) OR (EXISTS(SELECT 1 FROM require_permission_relation AS rel_require_permission1, cw_CWPermission AS F, require_group_relation AS rel_require_group2, in_group_relation AS rel_in_group3 WHERE rel_documented_by0.eid_to=rel_require_permission1.eid_from AND rel_require_permission1.eid_to=F.cw_eid AND F.cw_name=read AND rel_require_group2.eid_from=F.cw_eid AND rel_in_group3.eid_to=rel_require_group2.eid_to AND rel_in_group3.eid_from=1)))'''), ("Any X WHERE X eid 12, P? connait X", '''SELECT X.cw_eid @@ -818,7 +818,7 @@ ('Any GN, TN ORDERBY GN WHERE T tags G?, T name TN, G name GN', '''SELECT _T0.C1, T.cw_name FROM cw_Tag AS T LEFT OUTER JOIN tags_relation AS rel_tags0 ON (rel_tags0.eid_from=T.cw_eid) LEFT OUTER JOIN (SELECT G.cw_eid AS C0, G.cw_name AS C1 -FROM cw_EGroup AS G +FROM cw_CWGroup AS G UNION ALL SELECT G.cw_eid AS C0, G.cw_name AS C1 FROM cw_State AS G @@ -829,9 +829,9 @@ # optional variable with additional restriction - ('Any T,G WHERE T tags G?, G name "hop", G is EGroup', + ('Any T,G WHERE T tags G?, G name "hop", G is CWGroup', '''SELECT T.cw_eid, G.cw_eid -FROM cw_Tag AS T LEFT OUTER JOIN tags_relation AS rel_tags0 ON (rel_tags0.eid_from=T.cw_eid) LEFT OUTER JOIN cw_EGroup AS G ON (rel_tags0.eid_to=G.cw_eid AND G.cw_name=hop)'''), +FROM cw_Tag AS T LEFT OUTER JOIN tags_relation AS rel_tags0 ON (rel_tags0.eid_from=T.cw_eid) LEFT OUTER JOIN cw_CWGroup AS G ON (rel_tags0.eid_to=G.cw_eid AND G.cw_name=hop)'''), # optional variable with additional invariant restriction ('Any T,G WHERE T tags G?, G eid 12', @@ -839,33 +839,33 @@ FROM cw_Tag AS T LEFT OUTER JOIN tags_relation AS rel_tags0 ON (rel_tags0.eid_from=T.cw_eid AND rel_tags0.eid_to=12)'''), # optional variable with additional restriction appearing before the relation - ('Any T,G WHERE G name "hop", T tags G?, G is EGroup', + ('Any T,G WHERE G name "hop", T tags G?, G is CWGroup', '''SELECT T.cw_eid, G.cw_eid -FROM cw_Tag AS T LEFT OUTER JOIN tags_relation AS rel_tags0 ON (rel_tags0.eid_from=T.cw_eid) LEFT OUTER JOIN cw_EGroup AS G ON (rel_tags0.eid_to=G.cw_eid AND G.cw_name=hop)'''), +FROM cw_Tag AS T LEFT OUTER JOIN tags_relation AS rel_tags0 ON (rel_tags0.eid_from=T.cw_eid) LEFT OUTER JOIN cw_CWGroup AS G ON (rel_tags0.eid_to=G.cw_eid AND G.cw_name=hop)'''), # optional variable with additional restriction on inlined relation # XXX the expected result should be as the query below. So what, raise BadRQLQuery ? - ('Any T,G,S WHERE T tags G?, G in_state S, S name "hop", G is EUser', + ('Any T,G,S WHERE T tags G?, G in_state S, S name "hop", G is CWUser', '''SELECT T.cw_eid, G.cw_eid, S.cw_eid -FROM cw_State AS S, cw_Tag AS T LEFT OUTER JOIN tags_relation AS rel_tags0 ON (rel_tags0.eid_from=T.cw_eid) LEFT OUTER JOIN cw_EUser AS G ON (rel_tags0.eid_to=G.cw_eid) +FROM cw_State AS S, cw_Tag AS T LEFT OUTER JOIN tags_relation AS rel_tags0 ON (rel_tags0.eid_from=T.cw_eid) LEFT OUTER JOIN cw_CWUser AS G ON (rel_tags0.eid_to=G.cw_eid) WHERE G.cw_in_state=S.cw_eid AND S.cw_name=hop '''), # optional variable with additional invariant restriction on an inlined relation - ('Any T,G,S WHERE T tags G, G in_state S?, S eid 1, G is EUser', + ('Any T,G,S WHERE T tags G, G in_state S?, S eid 1, G is CWUser', '''SELECT rel_tags0.eid_from, G.cw_eid, G.cw_in_state -FROM cw_EUser AS G, tags_relation AS rel_tags0 +FROM cw_CWUser AS G, tags_relation AS rel_tags0 WHERE rel_tags0.eid_to=G.cw_eid AND (G.cw_in_state=1 OR G.cw_in_state IS NULL)'''), # two optional variables with additional invariant restriction on an inlined relation - ('Any T,G,S WHERE T tags G?, G in_state S?, S eid 1, G is EUser', + ('Any T,G,S WHERE T tags G?, G in_state S?, S eid 1, G is CWUser', '''SELECT T.cw_eid, G.cw_eid, G.cw_in_state -FROM cw_Tag AS T LEFT OUTER JOIN tags_relation AS rel_tags0 ON (rel_tags0.eid_from=T.cw_eid) LEFT OUTER JOIN cw_EUser AS G ON (rel_tags0.eid_to=G.cw_eid AND (G.cw_in_state=1 OR G.cw_in_state IS NULL))'''), +FROM cw_Tag AS T LEFT OUTER JOIN tags_relation AS rel_tags0 ON (rel_tags0.eid_from=T.cw_eid) LEFT OUTER JOIN cw_CWUser AS G ON (rel_tags0.eid_to=G.cw_eid AND (G.cw_in_state=1 OR G.cw_in_state IS NULL))'''), # two optional variables with additional restriction on an inlined relation - ('Any T,G,S WHERE T tags G?, G in_state S?, S name "hop", G is EUser', + ('Any T,G,S WHERE T tags G?, G in_state S?, S name "hop", G is CWUser', '''SELECT T.cw_eid, G.cw_eid, S.cw_eid -FROM cw_Tag AS T LEFT OUTER JOIN tags_relation AS rel_tags0 ON (rel_tags0.eid_from=T.cw_eid) LEFT OUTER JOIN cw_EUser AS G ON (rel_tags0.eid_to=G.cw_eid) LEFT OUTER JOIN cw_State AS S ON (G.cw_in_state=S.cw_eid AND S.cw_name=hop)'''), +FROM cw_Tag AS T LEFT OUTER JOIN tags_relation AS rel_tags0 ON (rel_tags0.eid_from=T.cw_eid) LEFT OUTER JOIN cw_CWUser AS G ON (rel_tags0.eid_to=G.cw_eid) LEFT OUTER JOIN cw_State AS S ON (G.cw_in_state=S.cw_eid AND S.cw_name=hop)'''), # two optional variables with additional restriction on an ambigous inlined relation ('Any T,G,S WHERE T tags G?, G in_state S?, S name "hop"', @@ -874,7 +874,7 @@ FROM cw_Affaire AS G LEFT OUTER JOIN cw_State AS S ON (G.cw_in_state=S.cw_eid AND S.cw_name=hop) UNION ALL SELECT G.cw_eid AS C0, S.cw_eid AS C1 -FROM cw_EUser AS G LEFT OUTER JOIN cw_State AS S ON (G.cw_in_state=S.cw_eid AND S.cw_name=hop) +FROM cw_CWUser AS G LEFT OUTER JOIN cw_State AS S ON (G.cw_in_state=S.cw_eid AND S.cw_name=hop) UNION ALL SELECT G.cw_eid AS C0, S.cw_eid AS C1 FROM cw_Note AS G LEFT OUTER JOIN cw_State AS S ON (G.cw_in_state=S.cw_eid AND S.cw_name=hop) ) AS _T0 ON (rel_tags0.eid_to=_T0.C0)'''), @@ -1039,17 +1039,17 @@ FROM cw_Note AS N, cw_Personne AS P WHERE (N.cw_ecrit_par IS NULL OR N.cw_ecrit_par!=P.cw_eid) AND N.cw_eid=512'''), - ('Any S,ES,T WHERE S state_of ET, ET name "EUser", ES allowed_transition T, T destination_state S', + ('Any S,ES,T WHERE S state_of ET, ET name "CWUser", ES allowed_transition T, T destination_state S', '''SELECT T.cw_destination_state, rel_allowed_transition1.eid_from, T.cw_eid -FROM allowed_transition_relation AS rel_allowed_transition1, cw_EEType AS ET, cw_Transition AS T, state_of_relation AS rel_state_of0 -WHERE T.cw_destination_state=rel_state_of0.eid_from AND rel_state_of0.eid_to=ET.cw_eid AND ET.cw_name=EUser AND rel_allowed_transition1.eid_to=T.cw_eid'''), +FROM allowed_transition_relation AS rel_allowed_transition1, cw_CWEType AS ET, cw_Transition AS T, state_of_relation AS rel_state_of0 +WHERE T.cw_destination_state=rel_state_of0.eid_from AND rel_state_of0.eid_to=ET.cw_eid AND ET.cw_name=CWUser AND rel_allowed_transition1.eid_to=T.cw_eid'''), ('Any O WHERE S eid 0, S in_state O', '''SELECT S.cw_in_state FROM cw_Affaire AS S WHERE S.cw_eid=0 AND S.cw_in_state IS NOT NULL UNION ALL SELECT S.cw_in_state -FROM cw_EUser AS S +FROM cw_CWUser AS S WHERE S.cw_eid=0 AND S.cw_in_state IS NOT NULL UNION ALL SELECT S.cw_in_state @@ -1065,7 +1065,7 @@ WHERE (X.cw_in_state IS NULL OR X.cw_in_state!=S.cw_eid) INTERSECT SELECT DISTINCT S.cw_name -FROM cw_EUser AS X, cw_State AS S +FROM cw_CWUser AS X, cw_State AS S WHERE (X.cw_in_state IS NULL OR X.cw_in_state!=S.cw_eid) INTERSECT SELECT DISTINCT S.cw_name @@ -1171,11 +1171,11 @@ def test1(self): self._checkall('Any count(RDEF) WHERE RDEF relation_type X, X eid %(x)s', ("""SELECT COUNT(T1.C0) FROM (SELECT RDEF.cw_eid AS C0 -FROM cw_EFRDef AS RDEF +FROM cw_CWAttribute AS RDEF WHERE RDEF.cw_relation_type=%(x)s UNION ALL SELECT RDEF.cw_eid AS C0 -FROM cw_ENFRDef AS RDEF +FROM cw_CWRelation AS RDEF WHERE RDEF.cw_relation_type=%(x)s) AS T1""", {}), ) @@ -1198,14 +1198,14 @@ WHERE rel_in_basket0.eid_to=12''') def test_varmap(self): - self._check('Any X,L WHERE X is EUser, X in_group G, X login L, G name "users"', + self._check('Any X,L WHERE X is CWUser, X in_group G, X login L, G name "users"', '''SELECT T00.x, T00.l -FROM T00, cw_EGroup AS G, in_group_relation AS rel_in_group0 +FROM T00, cw_CWGroup AS G, in_group_relation AS rel_in_group0 WHERE rel_in_group0.eid_from=T00.x AND rel_in_group0.eid_to=G.cw_eid AND G.cw_name=users''', varmap={'X': 'T00.x', 'X.login': 'T00.l'}) - self._check('Any X,L,GN WHERE X is EUser, X in_group G, X login L, G name GN', + self._check('Any X,L,GN WHERE X is CWUser, X in_group G, X login L, G name GN', '''SELECT T00.x, T00.l, G.cw_name -FROM T00, cw_EGroup AS G, in_group_relation AS rel_in_group0 +FROM T00, cw_CWGroup AS G, in_group_relation AS rel_in_group0 WHERE rel_in_group0.eid_from=T00.x AND rel_in_group0.eid_to=G.cw_eid''', varmap={'X': 'T00.x', 'X.login': 'T00.l'}) @@ -1311,7 +1311,7 @@ UNION ALL (SELECT X.cw_eid AS C0 FROM cw_Affaire AS X -WHERE ((EXISTS(SELECT 1 FROM owned_by_relation AS rel_owned_by0 WHERE rel_owned_by0.eid_from=X.cw_eid AND rel_owned_by0.eid_to=1)) OR (((EXISTS(SELECT 1 FROM cw_Affaire AS D LEFT OUTER JOIN concerne_relation AS rel_concerne1 ON (rel_concerne1.eid_from=D.cw_eid) LEFT OUTER JOIN cw_Note AS B ON (rel_concerne1.eid_to=B.cw_eid), owned_by_relation AS rel_owned_by2 WHERE rel_owned_by2.eid_from=B.cw_eid AND rel_owned_by2.eid_to=1 AND X.cw_eid=D.cw_eid)) OR (EXISTS(SELECT 1 FROM cw_Affaire AS F LEFT OUTER JOIN concerne_relation AS rel_concerne3 ON (rel_concerne3.eid_from=F.cw_eid) LEFT OUTER JOIN cw_Societe AS E ON (rel_concerne3.eid_to=E.cw_eid), owned_by_relation AS rel_owned_by4 WHERE rel_owned_by4.eid_from=E.cw_eid AND rel_owned_by4.eid_to=1 AND X.cw_eid=F.cw_eid))))))) AS _T0, cw_EEType AS ET, is_relation AS rel_is0 +WHERE ((EXISTS(SELECT 1 FROM owned_by_relation AS rel_owned_by0 WHERE rel_owned_by0.eid_from=X.cw_eid AND rel_owned_by0.eid_to=1)) OR (((EXISTS(SELECT 1 FROM cw_Affaire AS D LEFT OUTER JOIN concerne_relation AS rel_concerne1 ON (rel_concerne1.eid_from=D.cw_eid) LEFT OUTER JOIN cw_Note AS B ON (rel_concerne1.eid_to=B.cw_eid), owned_by_relation AS rel_owned_by2 WHERE rel_owned_by2.eid_from=B.cw_eid AND rel_owned_by2.eid_to=1 AND X.cw_eid=D.cw_eid)) OR (EXISTS(SELECT 1 FROM cw_Affaire AS F LEFT OUTER JOIN concerne_relation AS rel_concerne3 ON (rel_concerne3.eid_from=F.cw_eid) LEFT OUTER JOIN cw_Societe AS E ON (rel_concerne3.eid_to=E.cw_eid), owned_by_relation AS rel_owned_by4 WHERE rel_owned_by4.eid_from=E.cw_eid AND rel_owned_by4.eid_to=1 AND X.cw_eid=F.cw_eid))))))) AS _T0, cw_CWEType AS ET, is_relation AS rel_is0 WHERE rel_is0.eid_from=_T0.C0 AND rel_is0.eid_to=ET.cw_eid GROUP BY ET.cw_name'''), )): @@ -1389,9 +1389,9 @@ def test_from_clause_needed(self): - queries = [("Any 1 WHERE EXISTS(T is EGroup, T name 'managers')", + queries = [("Any 1 WHERE EXISTS(T is CWGroup, T name 'managers')", '''SELECT 1 -WHERE EXISTS(SELECT 1 FROM cw_EGroup AS T WHERE T.cw_name=managers)'''), +WHERE EXISTS(SELECT 1 FROM cw_CWGroup AS T WHERE T.cw_name=managers)'''), ('Any X,Y WHERE NOT X created_by Y, X eid 5, Y eid 6', '''SELECT 5, 6 WHERE NOT EXISTS(SELECT 1 FROM created_by_relation AS rel_created_by0 WHERE rel_created_by0.eid_from=5 AND rel_created_by0.eid_to=6)'''), @@ -1548,10 +1548,10 @@ return sql.strip().replace(' ILIKE ', ' LIKE ') def test_from_clause_needed(self): - queries = [("Any 1 WHERE EXISTS(T is EGroup, T name 'managers')", + queries = [("Any 1 WHERE EXISTS(T is CWGroup, T name 'managers')", '''SELECT 1 FROM (SELECT 1) AS _T -WHERE EXISTS(SELECT 1 FROM cw_EGroup AS T WHERE T.cw_name=managers)'''), +WHERE EXISTS(SELECT 1 FROM cw_CWGroup AS T WHERE T.cw_name=managers)'''), ('Any X,Y WHERE NOT X created_by Y, X eid 5, Y eid 6', '''SELECT 5, 6 FROM (SELECT 1) AS _T diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 server/test/unittest_rqlannotation.py --- a/server/test/unittest_rqlannotation.py Fri Apr 17 13:21:05 2009 +0200 +++ b/server/test/unittest_rqlannotation.py Fri Apr 17 16:55:37 2009 +0200 @@ -37,7 +37,7 @@ self.assert_(rqlst.defined_vars['B'].stinfo['attrvar']) self.assertEquals(rqlst.defined_vars['C']._q_invariant, False) self.assertEquals(rqlst.solutions, [{'A': 'TrInfo', 'B': 'String', 'C': 'Affaire'}, - {'A': 'TrInfo', 'B': 'String', 'C': 'EUser'}, + {'A': 'TrInfo', 'B': 'String', 'C': 'CWUser'}, {'A': 'TrInfo', 'B': 'String', 'C': 'Note'}]) def test_0_5(self): @@ -176,7 +176,7 @@ self.assertEquals(rqlst.defined_vars['Y']._q_invariant, False) def test_not_relation_4_4(self): - rqlst = self._prepare('Any X WHERE NOT Y evaluee X, Y is EUser') + rqlst = self._prepare('Any X WHERE NOT Y evaluee X, Y is CWUser') self.assertEquals(rqlst.defined_vars['X']._q_invariant, False) self.assertEquals(rqlst.defined_vars['Y']._q_invariant, False) @@ -186,12 +186,12 @@ self.assertEquals(rqlst.solutions, [{'X': 'Note'}]) def test_not_relation_5_1(self): - rqlst = self._prepare('Any X,Y WHERE X name "EGroup", Y eid IN(1, 2, 3), NOT X read_permission Y') + rqlst = self._prepare('Any X,Y WHERE X name "CWGroup", Y eid IN(1, 2, 3), NOT X read_permission Y') self.assertEquals(rqlst.defined_vars['X']._q_invariant, False) self.assertEquals(rqlst.defined_vars['Y']._q_invariant, False) def test_not_relation_5_2(self): - rqlst = self._prepare('DISTINCT Any X,Y WHERE X name "EGroup", Y eid IN(1, 2, 3), NOT X read_permission Y') + rqlst = self._prepare('DISTINCT Any X,Y WHERE X name "CWGroup", Y eid IN(1, 2, 3), NOT X read_permission Y') self.assertEquals(rqlst.defined_vars['X']._q_invariant, False) self.assertEquals(rqlst.defined_vars['Y']._q_invariant, False) @@ -201,7 +201,7 @@ self.assertEquals(rqlst.defined_vars['A']._q_invariant, True) def test_not_relation_7(self): - rqlst = self._prepare('Any K,V WHERE P is EProperty, P pkey K, P value V, NOT P for_user U') + rqlst = self._prepare('Any K,V WHERE P is CWProperty, P pkey K, P value V, NOT P for_user U') self.assertEquals(rqlst.defined_vars['P']._q_invariant, False) self.assertEquals(rqlst.defined_vars['U']._q_invariant, True) @@ -221,12 +221,12 @@ self.assertEquals(rqlst.defined_vars['X']._q_invariant, True) def test_exists_4(self): - rqlst = self._prepare('Any X,Y WHERE X name "EGroup", Y eid IN(1, 2, 3), EXISTS(X read_permission Y)') + rqlst = self._prepare('Any X,Y WHERE X name "CWGroup", Y eid IN(1, 2, 3), EXISTS(X read_permission Y)') self.assertEquals(rqlst.defined_vars['X']._q_invariant, False) self.assertEquals(rqlst.defined_vars['Y']._q_invariant, False) def test_exists_5(self): - rqlst = self._prepare('DISTINCT Any X,Y WHERE X name "EGroup", Y eid IN(1, 2, 3), EXISTS(X read_permission Y)') + rqlst = self._prepare('DISTINCT Any X,Y WHERE X name "CWGroup", Y eid IN(1, 2, 3), EXISTS(X read_permission Y)') self.assertEquals(rqlst.defined_vars['X']._q_invariant, False) self.assertEquals(rqlst.defined_vars['Y']._q_invariant, True) @@ -236,11 +236,11 @@ self.assertEquals(rqlst.defined_vars['X']._q_invariant, True) def test_not_exists_2(self): - rqlst = self._prepare('Any X,Y WHERE X name "EGroup", Y eid IN(1, 2, 3), NOT EXISTS(X read_permission Y)') + rqlst = self._prepare('Any X,Y WHERE X name "CWGroup", Y eid IN(1, 2, 3), NOT EXISTS(X read_permission Y)') self.assertEquals(rqlst.defined_vars['Y']._q_invariant, False) def test_not_exists_distinct_1(self): - rqlst = self._prepare('DISTINCT Any X,Y WHERE X name "EGroup", Y eid IN(1, 2, 3), NOT EXISTS(X read_permission Y)') + rqlst = self._prepare('DISTINCT Any X,Y WHERE X name "CWGroup", Y eid IN(1, 2, 3), NOT EXISTS(X read_permission Y)') self.assertEquals(rqlst.defined_vars['Y']._q_invariant, False) def test_or_1(self): diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 server/test/unittest_rqlrewrite.py --- a/server/test/unittest_rqlrewrite.py Fri Apr 17 13:21:05 2009 +0200 +++ b/server/test/unittest_rqlrewrite.py Fri Apr 17 16:55:37 2009 +0200 @@ -22,7 +22,7 @@ repotest.undo_monkey_patch() def eid_func_map(eid): - return {1: 'EUser', + return {1: 'CWUser', 2: 'Card'}[eid] def rewrite(rqlst, snippets_map, kwargs): @@ -74,7 +74,7 @@ self.failUnlessEqual(rqlst.as_string(), u"Any C WHERE C is Card, B eid %(D)s, " "EXISTS(C in_state A, B in_group E, F require_state A, " - "F name 'read', F require_group E, A is State, E is EGroup, F is EPermission)") + "F name 'read', F require_group E, A is State, E is CWGroup, F is CWPermission)") def test_multiple_var(self): card_constraint = ('X in_state S, U in_group G, P require_state S,' @@ -87,8 +87,8 @@ self.assertTextEquals(rqlst.as_string(), "Any S WHERE S documented_by C, C eid %(u)s, B eid %(D)s, " "EXISTS(C in_state A, B in_group E, F require_state A, " - "F name 'read', F require_group E, A is State, E is EGroup, F is EPermission), " - "(EXISTS(S ref LIKE 'PUBLIC%')) OR (EXISTS(B in_group G, G name 'public', G is EGroup)), " + "F name 'read', F require_group E, A is State, E is CWGroup, F is CWPermission), " + "(EXISTS(S ref LIKE 'PUBLIC%')) OR (EXISTS(B in_group G, G name 'public', G is CWGroup)), " "S is Affaire") self.failUnless('D' in kwargs) @@ -99,8 +99,8 @@ self.failUnlessEqual(rqlst.as_string(), "Any S WHERE S owned_by C, C eid %(u)s, A eid %(B)s, " "EXISTS((C identity A) OR (C in_state D, E identity A, " - "E in_state D, D name 'subscribed'), D is State, E is EUser), " - "S is IN(Affaire, Basket, Bookmark, Card, Comment, Division, ECache, EConstraint, EConstraintType, EEType, EFRDef, EGroup, ENFRDef, EPermission, EProperty, ERType, EUser, Email, EmailAddress, EmailPart, EmailThread, File, Folder, Image, Note, Personne, RQLExpression, Societe, State, SubDivision, Tag, TrInfo, Transition)") + "E in_state D, D name 'subscribed'), D is State, E is CWUser), " + "S is IN(Affaire, Basket, Bookmark, Card, Comment, Division, CWCache, CWConstraint, CWConstraintType, CWEType, CWAttribute, CWGroup, CWRelation, CWPermission, CWProperty, CWRType, CWUser, Email, EmailAddress, EmailPart, EmailThread, File, Folder, Image, Note, Personne, RQLExpression, Societe, State, SubDivision, Tag, TrInfo, Transition)") def test_simplified_rqlst(self): card_constraint = ('X in_state S, U in_group G, P require_state S,' @@ -110,7 +110,7 @@ self.failUnlessEqual(rqlst.as_string(), u"Any 2 WHERE B eid %(C)s, " "EXISTS(2 in_state A, B in_group D, E require_state A, " - "E name 'read', E require_group D, A is State, D is EGroup, E is EPermission)") + "E name 'read', E require_group D, A is State, D is CWGroup, E is CWPermission)") def test_optional_var(self): card_constraint = ('X in_state S, U in_group G, P require_state S,' @@ -141,22 +141,22 @@ self.failUnlessEqual(rqlst.as_string(), u"Any C WHERE C in_state STATE, C is Card, A eid %(B)s, " "EXISTS(A in_group D, E require_state STATE, " - "E name 'read', E require_group D, D is EGroup, E is EPermission), " + "E name 'read', E require_group D, D is CWGroup, E is CWPermission), " "STATE is State") def test_unsupported_constraint_1(self): - # EUser doesn't have require_permission + # CWUser doesn't have require_permission trinfo_constraint = ('X wf_info_for Y, Y require_permission P, P name "read"') - rqlst = parse('Any U,T WHERE U is EUser, T wf_info_for U') + rqlst = parse('Any U,T WHERE U is CWUser, T wf_info_for U') self.assertRaises(Unauthorized, rewrite, rqlst, {'T': (trinfo_constraint,)}, {}) def test_unsupported_constraint_2(self): trinfo_constraint = ('X wf_info_for Y, Y require_permission P, P name "read"') - rqlst = parse('Any U,T WHERE U is EUser, T wf_info_for U') + rqlst = parse('Any U,T WHERE U is CWUser, T wf_info_for U') rewrite(rqlst, {'T': (trinfo_constraint, 'X wf_info_for Y, Y in_group G, G name "managers"')}, {}) self.failUnlessEqual(rqlst.as_string(), - u"Any U,T WHERE U is EUser, T wf_info_for U, " - "EXISTS(U in_group B, B name 'managers', B is EGroup), T is TrInfo") + u"Any U,T WHERE U is CWUser, T wf_info_for U, " + "EXISTS(U in_group B, B name 'managers', B is CWGroup), T is TrInfo") def test_unsupported_constraint_3(self): self.skip('raise unauthorized for now') diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 server/test/unittest_schemaserial.py --- a/server/test/unittest_schemaserial.py Fri Apr 17 13:21:05 2009 +0200 +++ b/server/test/unittest_schemaserial.py Fri Apr 17 16:55:37 2009 +0200 @@ -20,16 +20,16 @@ class Schema2RQLTC(TestCase): def test_eschema2rql1(self): - self.assertListEquals(list(eschema2rql(schema.eschema('EFRDef'))), + self.assertListEquals(list(eschema2rql(schema.eschema('CWAttribute'))), [ - ('INSERT EEType X: X description %(description)s,X final %(final)s,X meta %(meta)s,X name %(name)s', + ('INSERT CWEType X: X description %(description)s,X final %(final)s,X meta %(meta)s,X name %(name)s', {'description': u'define a final relation: link a final relation type from a non final entity to a final entity type. used to build the application schema', - 'meta': True, 'name': u'EFRDef', 'final': False}) + 'meta': True, 'name': u'CWAttribute', 'final': False}) ]) def test_eschema2rql2(self): self.assertListEquals(list(eschema2rql(schema.eschema('String'))), [ - ('INSERT EEType X: X description %(description)s,X final %(final)s,X meta %(meta)s,X name %(name)s', + ('INSERT CWEType X: X description %(description)s,X final %(final)s,X meta %(meta)s,X name %(name)s', {'description': u'', 'final': True, 'meta': True, 'name': u'String'})]) def test_eschema2rql_specialization(self): @@ -43,32 +43,32 @@ def test_rschema2rql1(self): self.assertListEquals(list(rschema2rql(schema.rschema('relation_type'))), [ - ('INSERT ERType X: X description %(description)s,X final %(final)s,X fulltext_container %(fulltext_container)s,X inlined %(inlined)s,X meta %(meta)s,X name %(name)s,X symetric %(symetric)s', + ('INSERT CWRType X: X description %(description)s,X final %(final)s,X fulltext_container %(fulltext_container)s,X inlined %(inlined)s,X meta %(meta)s,X name %(name)s,X symetric %(symetric)s', {'description': u'link a relation definition to its relation type', 'meta': True, 'symetric': False, 'name': u'relation_type', 'final' : False, 'fulltext_container': None, 'inlined': True}), - ('INSERT ENFRDef X: X cardinality %(cardinality)s,X composite %(composite)s,X description %(description)s,X ordernum %(ordernum)s,X relation_type ER,X from_entity SE,X to_entity OE WHERE SE name %(se)s,ER name %(rt)s,OE name %(oe)s', - {'rt': 'relation_type', 'description': u'', 'composite': u'object', 'oe': 'ERType', - 'ordernum': 1, 'cardinality': u'1*', 'se': 'EFRDef'}), - ('INSERT EConstraint X: X value %(value)s, X cstrtype CT, EDEF constrained_by X WHERE CT name %(ctname)s, EDEF relation_type ER, EDEF from_entity SE, EDEF to_entity OE, ER name %(rt)s, SE name %(se)s, OE name %(oe)s, EDEF is ENFRDef', - {'rt': 'relation_type', 'oe': 'ERType', 'ctname': u'RQLConstraint', 'se': 'EFRDef', 'value': u'O final TRUE'}), - ('INSERT ENFRDef X: X cardinality %(cardinality)s,X composite %(composite)s,X description %(description)s,X ordernum %(ordernum)s,X relation_type ER,X from_entity SE,X to_entity OE WHERE SE name %(se)s,ER name %(rt)s,OE name %(oe)s', - {'rt': 'relation_type', 'description': u'', 'composite': u'object', 'oe': 'ERType', - 'ordernum': 1, 'cardinality': u'1*', 'se': 'ENFRDef'}), - ('INSERT EConstraint X: X value %(value)s, X cstrtype CT, EDEF constrained_by X WHERE CT name %(ctname)s, EDEF relation_type ER, EDEF from_entity SE, EDEF to_entity OE, ER name %(rt)s, SE name %(se)s, OE name %(oe)s, EDEF is ENFRDef', - {'rt': 'relation_type', 'oe': 'ERType', 'ctname': u'RQLConstraint', 'se': 'ENFRDef', 'value': u'O final FALSE'}), + ('INSERT CWRelation X: X cardinality %(cardinality)s,X composite %(composite)s,X description %(description)s,X ordernum %(ordernum)s,X relation_type ER,X from_entity SE,X to_entity OE WHERE SE name %(se)s,ER name %(rt)s,OE name %(oe)s', + {'rt': 'relation_type', 'description': u'', 'composite': u'object', 'oe': 'CWRType', + 'ordernum': 1, 'cardinality': u'1*', 'se': 'CWAttribute'}), + ('INSERT CWConstraint X: X value %(value)s, X cstrtype CT, EDEF constrained_by X WHERE CT name %(ctname)s, EDEF relation_type ER, EDEF from_entity SE, EDEF to_entity OE, ER name %(rt)s, SE name %(se)s, OE name %(oe)s, EDEF is CWRelation', + {'rt': 'relation_type', 'oe': 'CWRType', 'ctname': u'RQLConstraint', 'se': 'CWAttribute', 'value': u'O final TRUE'}), + ('INSERT CWRelation X: X cardinality %(cardinality)s,X composite %(composite)s,X description %(description)s,X ordernum %(ordernum)s,X relation_type ER,X from_entity SE,X to_entity OE WHERE SE name %(se)s,ER name %(rt)s,OE name %(oe)s', + {'rt': 'relation_type', 'description': u'', 'composite': u'object', 'oe': 'CWRType', + 'ordernum': 1, 'cardinality': u'1*', 'se': 'CWRelation'}), + ('INSERT CWConstraint X: X value %(value)s, X cstrtype CT, EDEF constrained_by X WHERE CT name %(ctname)s, EDEF relation_type ER, EDEF from_entity SE, EDEF to_entity OE, ER name %(rt)s, SE name %(se)s, OE name %(oe)s, EDEF is CWRelation', + {'rt': 'relation_type', 'oe': 'CWRType', 'ctname': u'RQLConstraint', 'se': 'CWRelation', 'value': u'O final FALSE'}), ]) def test_rschema2rql2(self): expected = [ - ('INSERT ERType X: X description %(description)s,X final %(final)s,X fulltext_container %(fulltext_container)s,X inlined %(inlined)s,X meta %(meta)s,X name %(name)s,X symetric %(symetric)s', {'description': u'core relation giving to a group the permission to add an entity or relation type', 'meta': True, 'symetric': False, 'name': u'add_permission', 'final': False, 'fulltext_container': None, 'inlined': False}), - ('INSERT ENFRDef X: X cardinality %(cardinality)s,X composite %(composite)s,X description %(description)s,X ordernum %(ordernum)s,X relation_type ER,X from_entity SE,X to_entity OE WHERE SE name %(se)s,ER name %(rt)s,OE name %(oe)s', - {'rt': 'add_permission', 'description': u'rql expression allowing to add entities/relations of this type', 'composite': 'subject', 'oe': 'RQLExpression', 'ordernum': 5, 'cardinality': u'*?', 'se': 'EEType'}), - ('INSERT ENFRDef X: X cardinality %(cardinality)s,X composite %(composite)s,X description %(description)s,X ordernum %(ordernum)s,X relation_type ER,X from_entity SE,X to_entity OE WHERE SE name %(se)s,ER name %(rt)s,OE name %(oe)s', - {'rt': 'add_permission', 'description': u'rql expression allowing to add entities/relations of this type', 'composite': 'subject', 'oe': 'RQLExpression', 'ordernum': 5, 'cardinality': u'*?', 'se': 'ERType'}), + ('INSERT CWRType X: X description %(description)s,X final %(final)s,X fulltext_container %(fulltext_container)s,X inlined %(inlined)s,X meta %(meta)s,X name %(name)s,X symetric %(symetric)s', {'description': u'core relation giving to a group the permission to add an entity or relation type', 'meta': True, 'symetric': False, 'name': u'add_permission', 'final': False, 'fulltext_container': None, 'inlined': False}), + ('INSERT CWRelation X: X cardinality %(cardinality)s,X composite %(composite)s,X description %(description)s,X ordernum %(ordernum)s,X relation_type ER,X from_entity SE,X to_entity OE WHERE SE name %(se)s,ER name %(rt)s,OE name %(oe)s', + {'rt': 'add_permission', 'description': u'rql expression allowing to add entities/relations of this type', 'composite': 'subject', 'oe': 'RQLExpression', 'ordernum': 5, 'cardinality': u'*?', 'se': 'CWEType'}), + ('INSERT CWRelation X: X cardinality %(cardinality)s,X composite %(composite)s,X description %(description)s,X ordernum %(ordernum)s,X relation_type ER,X from_entity SE,X to_entity OE WHERE SE name %(se)s,ER name %(rt)s,OE name %(oe)s', + {'rt': 'add_permission', 'description': u'rql expression allowing to add entities/relations of this type', 'composite': 'subject', 'oe': 'RQLExpression', 'ordernum': 5, 'cardinality': u'*?', 'se': 'CWRType'}), - ('INSERT ENFRDef X: X cardinality %(cardinality)s,X composite %(composite)s,X description %(description)s,X ordernum %(ordernum)s,X relation_type ER,X from_entity SE,X to_entity OE WHERE SE name %(se)s,ER name %(rt)s,OE name %(oe)s', - {'rt': 'add_permission', 'description': u'groups allowed to add entities/relations of this type', 'composite': None, 'oe': 'EGroup', 'ordernum': 3, 'cardinality': u'**', 'se': 'EEType'}), - ('INSERT ENFRDef X: X cardinality %(cardinality)s,X composite %(composite)s,X description %(description)s,X ordernum %(ordernum)s,X relation_type ER,X from_entity SE,X to_entity OE WHERE SE name %(se)s,ER name %(rt)s,OE name %(oe)s', - {'rt': 'add_permission', 'description': u'groups allowed to add entities/relations of this type', 'composite': None, 'oe': 'EGroup', 'ordernum': 3, 'cardinality': u'**', 'se': 'ERType'}), + ('INSERT CWRelation X: X cardinality %(cardinality)s,X composite %(composite)s,X description %(description)s,X ordernum %(ordernum)s,X relation_type ER,X from_entity SE,X to_entity OE WHERE SE name %(se)s,ER name %(rt)s,OE name %(oe)s', + {'rt': 'add_permission', 'description': u'groups allowed to add entities/relations of this type', 'composite': None, 'oe': 'CWGroup', 'ordernum': 3, 'cardinality': u'**', 'se': 'CWEType'}), + ('INSERT CWRelation X: X cardinality %(cardinality)s,X composite %(composite)s,X description %(description)s,X ordernum %(ordernum)s,X relation_type ER,X from_entity SE,X to_entity OE WHERE SE name %(se)s,ER name %(rt)s,OE name %(oe)s', + {'rt': 'add_permission', 'description': u'groups allowed to add entities/relations of this type', 'composite': None, 'oe': 'CWGroup', 'ordernum': 3, 'cardinality': u'**', 'se': 'CWRType'}), ] for i, (rql, args) in enumerate(rschema2rql(schema.rschema('add_permission'))): yield self.assertEquals, (rql, args), expected[i] @@ -76,41 +76,41 @@ def test_rschema2rql3(self): self.assertListEquals(list(rschema2rql(schema.rschema('cardinality'))), [ - ('INSERT ERType X: X description %(description)s,X final %(final)s,X fulltext_container %(fulltext_container)s,X inlined %(inlined)s,X meta %(meta)s,X name %(name)s,X symetric %(symetric)s', + ('INSERT CWRType X: X description %(description)s,X final %(final)s,X fulltext_container %(fulltext_container)s,X inlined %(inlined)s,X meta %(meta)s,X name %(name)s,X symetric %(symetric)s', {'description': u'', 'meta': False, 'symetric': False, 'name': u'cardinality', 'final': True, 'fulltext_container': None, 'inlined': False}), - ('INSERT EFRDef X: X cardinality %(cardinality)s,X defaultval %(defaultval)s,X description %(description)s,X fulltextindexed %(fulltextindexed)s,X indexed %(indexed)s,X internationalizable %(internationalizable)s,X ordernum %(ordernum)s,X relation_type ER,X from_entity SE,X to_entity OE WHERE SE name %(se)s,ER name %(rt)s,OE name %(oe)s', - {'rt': 'cardinality', 'description': u'subject/object cardinality', 'internationalizable': True, 'fulltextindexed': False, 'ordernum': 5, 'defaultval': None, 'indexed': False, 'cardinality': u'?1', 'oe': 'String', 'se': 'EFRDef'}), - ('INSERT EConstraint X: X value %(value)s, X cstrtype CT, EDEF constrained_by X WHERE CT name %(ctname)s, EDEF relation_type ER, EDEF from_entity SE, EDEF to_entity OE, ER name %(rt)s, SE name %(se)s, OE name %(oe)s, EDEF is EFRDef', - {'rt': 'cardinality', 'oe': 'String', 'ctname': u'SizeConstraint', 'se': 'EFRDef', 'value': u'max=2'}), - ('INSERT EConstraint X: X value %(value)s, X cstrtype CT, EDEF constrained_by X WHERE CT name %(ctname)s, EDEF relation_type ER, EDEF from_entity SE, EDEF to_entity OE, ER name %(rt)s, SE name %(se)s, OE name %(oe)s, EDEF is EFRDef', - {'rt': 'cardinality', 'oe': 'String', 'ctname': u'StaticVocabularyConstraint', 'se': 'EFRDef', 'value': u"u'?1', u'11', u'??', u'1?'"}), + ('INSERT CWAttribute X: X cardinality %(cardinality)s,X defaultval %(defaultval)s,X description %(description)s,X fulltextindexed %(fulltextindexed)s,X indexed %(indexed)s,X internationalizable %(internationalizable)s,X ordernum %(ordernum)s,X relation_type ER,X from_entity SE,X to_entity OE WHERE SE name %(se)s,ER name %(rt)s,OE name %(oe)s', + {'rt': 'cardinality', 'description': u'subject/object cardinality', 'internationalizable': True, 'fulltextindexed': False, 'ordernum': 5, 'defaultval': None, 'indexed': False, 'cardinality': u'?1', 'oe': 'String', 'se': 'CWAttribute'}), + ('INSERT CWConstraint X: X value %(value)s, X cstrtype CT, EDEF constrained_by X WHERE CT name %(ctname)s, EDEF relation_type ER, EDEF from_entity SE, EDEF to_entity OE, ER name %(rt)s, SE name %(se)s, OE name %(oe)s, EDEF is CWAttribute', + {'rt': 'cardinality', 'oe': 'String', 'ctname': u'SizeConstraint', 'se': 'CWAttribute', 'value': u'max=2'}), + ('INSERT CWConstraint X: X value %(value)s, X cstrtype CT, EDEF constrained_by X WHERE CT name %(ctname)s, EDEF relation_type ER, EDEF from_entity SE, EDEF to_entity OE, ER name %(rt)s, SE name %(se)s, OE name %(oe)s, EDEF is CWAttribute', + {'rt': 'cardinality', 'oe': 'String', 'ctname': u'StaticVocabularyConstraint', 'se': 'CWAttribute', 'value': u"u'?1', u'11', u'??', u'1?'"}), - ('INSERT EFRDef X: X cardinality %(cardinality)s,X defaultval %(defaultval)s,X description %(description)s,X fulltextindexed %(fulltextindexed)s,X indexed %(indexed)s,X internationalizable %(internationalizable)s,X ordernum %(ordernum)s,X relation_type ER,X from_entity SE,X to_entity OE WHERE SE name %(se)s,ER name %(rt)s,OE name %(oe)s', - {'rt': 'cardinality', 'description': u'subject/object cardinality', 'internationalizable': True, 'fulltextindexed': False, 'ordernum': 5, 'defaultval': None, 'indexed': False, 'cardinality': u'?1', 'oe': 'String', 'se': 'ENFRDef'}), - ('INSERT EConstraint X: X value %(value)s, X cstrtype CT, EDEF constrained_by X WHERE CT name %(ctname)s, EDEF relation_type ER, EDEF from_entity SE, EDEF to_entity OE, ER name %(rt)s, SE name %(se)s, OE name %(oe)s, EDEF is EFRDef', - {'rt': 'cardinality', 'oe': 'String', 'ctname': u'SizeConstraint', 'se': 'ENFRDef', 'value': u'max=2'}), - ('INSERT EConstraint X: X value %(value)s, X cstrtype CT, EDEF constrained_by X WHERE CT name %(ctname)s, EDEF relation_type ER, EDEF from_entity SE, EDEF to_entity OE, ER name %(rt)s, SE name %(se)s, OE name %(oe)s, EDEF is EFRDef', - {'rt': 'cardinality', 'oe': 'String', 'ctname': u'StaticVocabularyConstraint', 'se': 'ENFRDef', 'value': u"u'?*', u'1*', u'+*', u'**', u'?+', u'1+', u'++', u'*+', u'?1', u'11', u'+1', u'*1', u'??', u'1?', u'+?', u'*?'"}), + ('INSERT CWAttribute X: X cardinality %(cardinality)s,X defaultval %(defaultval)s,X description %(description)s,X fulltextindexed %(fulltextindexed)s,X indexed %(indexed)s,X internationalizable %(internationalizable)s,X ordernum %(ordernum)s,X relation_type ER,X from_entity SE,X to_entity OE WHERE SE name %(se)s,ER name %(rt)s,OE name %(oe)s', + {'rt': 'cardinality', 'description': u'subject/object cardinality', 'internationalizable': True, 'fulltextindexed': False, 'ordernum': 5, 'defaultval': None, 'indexed': False, 'cardinality': u'?1', 'oe': 'String', 'se': 'CWRelation'}), + ('INSERT CWConstraint X: X value %(value)s, X cstrtype CT, EDEF constrained_by X WHERE CT name %(ctname)s, EDEF relation_type ER, EDEF from_entity SE, EDEF to_entity OE, ER name %(rt)s, SE name %(se)s, OE name %(oe)s, EDEF is CWAttribute', + {'rt': 'cardinality', 'oe': 'String', 'ctname': u'SizeConstraint', 'se': 'CWRelation', 'value': u'max=2'}), + ('INSERT CWConstraint X: X value %(value)s, X cstrtype CT, EDEF constrained_by X WHERE CT name %(ctname)s, EDEF relation_type ER, EDEF from_entity SE, EDEF to_entity OE, ER name %(rt)s, SE name %(se)s, OE name %(oe)s, EDEF is CWAttribute', + {'rt': 'cardinality', 'oe': 'String', 'ctname': u'StaticVocabularyConstraint', 'se': 'CWRelation', 'value': u"u'?*', u'1*', u'+*', u'**', u'?+', u'1+', u'++', u'*+', u'?1', u'11', u'+1', u'*1', u'??', u'1?', u'+?', u'*?'"}), ]) def test_updateeschema2rql1(self): - self.assertListEquals(list(updateeschema2rql(schema.eschema('EFRDef'))), - [('SET X description %(description)s,X final %(final)s,X meta %(meta)s,X name %(name)s WHERE X is EEType, X name %(et)s', - {'description': u'define a final relation: link a final relation type from a non final entity to a final entity type. used to build the application schema', 'meta': True, 'et': 'EFRDef', 'final': False, 'name': u'EFRDef'}), + self.assertListEquals(list(updateeschema2rql(schema.eschema('CWAttribute'))), + [('SET X description %(description)s,X final %(final)s,X meta %(meta)s,X name %(name)s WHERE X is CWEType, X name %(et)s', + {'description': u'define a final relation: link a final relation type from a non final entity to a final entity type. used to build the application schema', 'meta': True, 'et': 'CWAttribute', 'final': False, 'name': u'CWAttribute'}), ]) def test_updateeschema2rql2(self): self.assertListEquals(list(updateeschema2rql(schema.eschema('String'))), - [('SET X description %(description)s,X final %(final)s,X meta %(meta)s,X name %(name)s WHERE X is EEType, X name %(et)s', + [('SET X description %(description)s,X final %(final)s,X meta %(meta)s,X name %(name)s WHERE X is CWEType, X name %(et)s', {'description': u'', 'meta': True, 'et': 'String', 'final': True, 'name': u'String'}) ]) def test_updaterschema2rql1(self): self.assertListEquals(list(updaterschema2rql(schema.rschema('relation_type'))), [ - ('SET X description %(description)s,X final %(final)s,X fulltext_container %(fulltext_container)s,X inlined %(inlined)s,X meta %(meta)s,X name %(name)s,X symetric %(symetric)s WHERE X is ERType, X name %(rt)s', + ('SET X description %(description)s,X final %(final)s,X fulltext_container %(fulltext_container)s,X inlined %(inlined)s,X meta %(meta)s,X name %(name)s,X symetric %(symetric)s WHERE X is CWRType, X name %(rt)s', {'rt': 'relation_type', 'symetric': False, 'description': u'link a relation definition to its relation type', 'meta': True, 'final': False, 'fulltext_container': None, 'inlined': True, 'name': u'relation_type'}) @@ -118,7 +118,7 @@ def test_updaterschema2rql2(self): expected = [ - ('SET X description %(description)s,X final %(final)s,X fulltext_container %(fulltext_container)s,X inlined %(inlined)s,X meta %(meta)s,X name %(name)s,X symetric %(symetric)s WHERE X is ERType, X name %(rt)s', + ('SET X description %(description)s,X final %(final)s,X fulltext_container %(fulltext_container)s,X inlined %(inlined)s,X meta %(meta)s,X name %(name)s,X symetric %(symetric)s WHERE X is CWRType, X name %(rt)s', {'rt': 'add_permission', 'symetric': False, 'description': u'core relation giving to a group the permission to add an entity or relation type', 'meta': True, 'final': False, 'fulltext_container': None, 'inlined': False, 'name': u'add_permission'}) @@ -135,41 +135,41 @@ } def test_eperms2rql1(self): - self.assertListEquals([rql for rql, kwargs in erperms2rql(schema.eschema('EEType'), self.GROUP_MAPPING)], - ['SET X read_permission Y WHERE X is EEType, X name "EEType", Y eid 2', - 'SET X read_permission Y WHERE X is EEType, X name "EEType", Y eid 0', - 'SET X read_permission Y WHERE X is EEType, X name "EEType", Y eid 1', - 'SET X add_permission Y WHERE X is EEType, X name "EEType", Y eid 0', - 'SET X update_permission Y WHERE X is EEType, X name "EEType", Y eid 0', - 'SET X update_permission Y WHERE X is EEType, X name "EEType", Y eid 3', - 'SET X delete_permission Y WHERE X is EEType, X name "EEType", Y eid 0', + self.assertListEquals([rql for rql, kwargs in erperms2rql(schema.eschema('CWEType'), self.GROUP_MAPPING)], + ['SET X read_permission Y WHERE X is CWEType, X name "CWEType", Y eid 2', + 'SET X read_permission Y WHERE X is CWEType, X name "CWEType", Y eid 0', + 'SET X read_permission Y WHERE X is CWEType, X name "CWEType", Y eid 1', + 'SET X add_permission Y WHERE X is CWEType, X name "CWEType", Y eid 0', + 'SET X update_permission Y WHERE X is CWEType, X name "CWEType", Y eid 0', + 'SET X update_permission Y WHERE X is CWEType, X name "CWEType", Y eid 3', + 'SET X delete_permission Y WHERE X is CWEType, X name "CWEType", Y eid 0', ]) def test_rperms2rql2(self): self.assertListEquals([rql for rql, kwargs in erperms2rql(schema.rschema('read_permission'), self.GROUP_MAPPING)], - ['SET X read_permission Y WHERE X is ERType, X name "read_permission", Y eid 2', - 'SET X read_permission Y WHERE X is ERType, X name "read_permission", Y eid 0', - 'SET X read_permission Y WHERE X is ERType, X name "read_permission", Y eid 1', - 'SET X add_permission Y WHERE X is ERType, X name "read_permission", Y eid 0', - 'SET X delete_permission Y WHERE X is ERType, X name "read_permission", Y eid 0', + ['SET X read_permission Y WHERE X is CWRType, X name "read_permission", Y eid 2', + 'SET X read_permission Y WHERE X is CWRType, X name "read_permission", Y eid 0', + 'SET X read_permission Y WHERE X is CWRType, X name "read_permission", Y eid 1', + 'SET X add_permission Y WHERE X is CWRType, X name "read_permission", Y eid 0', + 'SET X delete_permission Y WHERE X is CWRType, X name "read_permission", Y eid 0', ]) def test_rperms2rql3(self): self.assertListEquals([rql for rql, kwargs in erperms2rql(schema.rschema('name'), self.GROUP_MAPPING)], - ['SET X read_permission Y WHERE X is ERType, X name "name", Y eid 2', - 'SET X read_permission Y WHERE X is ERType, X name "name", Y eid 0', - 'SET X read_permission Y WHERE X is ERType, X name "name", Y eid 1', - 'SET X add_permission Y WHERE X is ERType, X name "name", Y eid 2', - 'SET X add_permission Y WHERE X is ERType, X name "name", Y eid 0', - 'SET X add_permission Y WHERE X is ERType, X name "name", Y eid 1', - 'SET X delete_permission Y WHERE X is ERType, X name "name", Y eid 2', - 'SET X delete_permission Y WHERE X is ERType, X name "name", Y eid 0', - 'SET X delete_permission Y WHERE X is ERType, X name "name", Y eid 1', + ['SET X read_permission Y WHERE X is CWRType, X name "name", Y eid 2', + 'SET X read_permission Y WHERE X is CWRType, X name "name", Y eid 0', + 'SET X read_permission Y WHERE X is CWRType, X name "name", Y eid 1', + 'SET X add_permission Y WHERE X is CWRType, X name "name", Y eid 2', + 'SET X add_permission Y WHERE X is CWRType, X name "name", Y eid 0', + 'SET X add_permission Y WHERE X is CWRType, X name "name", Y eid 1', + 'SET X delete_permission Y WHERE X is CWRType, X name "name", Y eid 2', + 'SET X delete_permission Y WHERE X is CWRType, X name "name", Y eid 0', + 'SET X delete_permission Y WHERE X is CWRType, X name "name", Y eid 1', ]) #def test_perms2rql(self): # self.assertListEquals(perms2rql(schema, self.GROUP_MAPPING), - # ['INSERT EEType X: X name 'Societe', X final FALSE']) + # ['INSERT CWEType X: X name 'Societe', X final FALSE']) diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 server/test/unittest_security.py --- a/server/test/unittest_security.py Fri Apr 17 13:21:05 2009 +0200 +++ b/server/test/unittest_security.py Fri Apr 17 16:55:37 2009 +0200 @@ -41,12 +41,12 @@ def test_upassword_not_selectable(self): self.assertRaises(Unauthorized, - self.execute, 'Any X,P WHERE X is EUser, X upassword P') + self.execute, 'Any X,P WHERE X is CWUser, X upassword P') self.rollback() cnx = self.login('iaminusersgrouponly') cu = cnx.cursor() self.assertRaises(Unauthorized, - cu.execute, 'Any X,P WHERE X is EUser, X upassword P') + cu.execute, 'Any X,P WHERE X is CWUser, X upassword P') class SecurityTC(BaseSecurityTC): @@ -57,7 +57,7 @@ self.execute("INSERT Affaire X: X sujet 'cool'") self.execute("INSERT Societe X: X nom 'logilab'") self.execute("INSERT Personne X: X nom 'bidule'") - self.execute('INSERT EGroup X: X name "staff"') + self.execute('INSERT CWGroup X: X name "staff"') self.commit() def test_insert_security(self): @@ -134,11 +134,11 @@ # exception is raised #user._groups = {'guests':1} #self.assertRaises(Unauthorized, - # self.o.execute, user, "DELETE EUser X WHERE X login 'bidule'") + # self.o.execute, user, "DELETE CWUser X WHERE X login 'bidule'") # check local security cnx = self.login('iaminusersgrouponly') cu = cnx.cursor() - self.assertRaises(Unauthorized, cu.execute, "DELETE EGroup Y WHERE Y name 'staff'") + self.assertRaises(Unauthorized, cu.execute, "DELETE CWGroup Y WHERE Y name 'staff'") def test_delete_rql_permission(self): self.execute("SET A concerne S WHERE A is Affaire, S is Societe") @@ -369,11 +369,11 @@ def test_attribute_read_security(self): # anon not allowed to see users'login, but they can see users - self.repo.schema['EUser'].set_groups('read', ('guests', 'users', 'managers')) + self.repo.schema['CWUser'].set_groups('read', ('guests', 'users', 'managers')) self.repo.schema['login'].set_groups('read', ('users', 'managers')) cnx = self.login('anon') cu = cnx.cursor() - rset = cu.execute('EUser X') + rset = cu.execute('CWUser X') self.failUnless(rset) x = rset.get_entity(0, 0) self.assertEquals(x.login, None) @@ -420,20 +420,20 @@ # anonymous user can only read itself rset = cu.execute('Any L WHERE X owned_by U, U login L') self.assertEquals(rset.rows, [['anon']]) - rset = cu.execute('EUser X') + rset = cu.execute('CWUser X') self.assertEquals(rset.rows, [[anon.eid]]) # anonymous user can read groups (necessary to check allowed transitions for instance) - self.assert_(cu.execute('EGroup X')) + self.assert_(cu.execute('CWGroup X')) # should only be able to read the anonymous user, not another one origuser = self.session.user self.assertRaises(Unauthorized, - cu.execute, 'EUser X WHERE X eid %(x)s', {'x': origuser.eid}, 'x') + cu.execute, 'CWUser X WHERE X eid %(x)s', {'x': origuser.eid}, 'x') # nothing selected, nothing updated, no exception raised #self.assertRaises(Unauthorized, # cu.execute, 'SET X login "toto" WHERE X eid %(x)s', # {'x': self.user.eid}) - rset = cu.execute('EUser X WHERE X eid %(x)s', {'x': anon.eid}, 'x') + rset = cu.execute('CWUser X WHERE X eid %(x)s', {'x': anon.eid}, 'x') self.assertEquals(rset.rows, [[anon.eid]]) # but can't modify it cu.execute('SET X login "toto" WHERE X eid %(x)s', {'x': anon.eid}) diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 server/test/unittest_session.py --- a/server/test/unittest_session.py Fri Apr 17 13:21:05 2009 +0200 +++ b/server/test/unittest_session.py Fri Apr 17 16:55:37 2009 +0200 @@ -21,9 +21,9 @@ class MakeDescriptionTC(TestCase): def test_known_values(self): - solution = {'A': 'Int', 'B': 'EUser'} + solution = {'A': 'Int', 'B': 'CWUser'} self.assertEquals(_make_description((Function('max', 'A'), Variable('B')), {}, solution), - ['Int','EUser']) + ['Int','CWUser']) if __name__ == '__main__': unittest_main() diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 server/test/unittest_ssplanner.py --- a/server/test/unittest_ssplanner.py Fri Apr 17 13:21:05 2009 +0200 +++ b/server/test/unittest_ssplanner.py Fri Apr 17 16:55:37 2009 +0200 @@ -21,12 +21,12 @@ self._test('Any XN ORDERBY XN WHERE X name XN', [('OneFetchStep', [('Any XN ORDERBY XN WHERE X name XN', [{'X': 'Basket', 'XN': 'String'}, - {'X': 'ECache', 'XN': 'String'}, - {'X': 'EConstraintType', 'XN': 'String'}, - {'X': 'EEType', 'XN': 'String'}, - {'X': 'EGroup', 'XN': 'String'}, - {'X': 'EPermission', 'XN': 'String'}, - {'X': 'ERType', 'XN': 'String'}, + {'X': 'CWCache', 'XN': 'String'}, + {'X': 'CWConstraintType', 'XN': 'String'}, + {'X': 'CWEType', 'XN': 'String'}, + {'X': 'CWGroup', 'XN': 'String'}, + {'X': 'CWPermission', 'XN': 'String'}, + {'X': 'CWRType', 'XN': 'String'}, {'X': 'File', 'XN': 'String'}, {'X': 'Folder', 'XN': 'String'}, {'X': 'Image', 'XN': 'String'}, @@ -40,12 +40,12 @@ self._test('Any XN,COUNT(X) GROUPBY XN WHERE X name XN', [('OneFetchStep', [('Any XN,COUNT(X) GROUPBY XN WHERE X name XN', [{'X': 'Basket', 'XN': 'String'}, - {'X': 'ECache', 'XN': 'String'}, - {'X': 'EConstraintType', 'XN': 'String'}, - {'X': 'EEType', 'XN': 'String'}, - {'X': 'EGroup', 'XN': 'String'}, - {'X': 'EPermission', 'XN': 'String'}, - {'X': 'ERType', 'XN': 'String'}, + {'X': 'CWCache', 'XN': 'String'}, + {'X': 'CWConstraintType', 'XN': 'String'}, + {'X': 'CWEType', 'XN': 'String'}, + {'X': 'CWGroup', 'XN': 'String'}, + {'X': 'CWPermission', 'XN': 'String'}, + {'X': 'CWRType', 'XN': 'String'}, {'X': 'File', 'XN': 'String'}, {'X': 'Folder', 'XN': 'String'}, {'X': 'Image', 'XN': 'String'}, diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 skeleton/migration/precreate.py --- a/skeleton/migration/precreate.py Fri Apr 17 13:21:05 2009 +0200 +++ b/skeleton/migration/precreate.py Fri Apr 17 16:55:37 2009 +0200 @@ -1,3 +1,3 @@ # Instructions here will be read before reading the schema # You could create your own groups here, like in : -# add_entity('EGroup', name=u'mygroup') +# add_entity('CWGroup', name=u'mygroup') diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 sobjects/hooks.py --- a/sobjects/hooks.py Fri Apr 17 13:21:05 2009 +0200 +++ b/sobjects/hooks.py Fri Apr 17 16:55:37 2009 +0200 @@ -11,10 +11,10 @@ from cubicweb.server.pool import PreCommitOperation -class AddUpdateEUserHook(Hook): +class AddUpdateCWUserHook(Hook): """ensure user logins are stripped""" events = ('before_add_entity', 'before_update_entity',) - accepts = ('EUser',) + accepts = ('CWUser',) def call(self, session, entity): if 'login' in entity and entity['login']: diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 sobjects/notification.py --- a/sobjects/notification.py Fri Apr 17 13:21:05 2009 +0200 +++ b/sobjects/notification.py Fri Apr 17 16:55:37 2009 +0200 @@ -37,7 +37,7 @@ """ id = 'recipients_finder' __select__ = yes() - user_rql = ('Any X,E,A WHERE X is EUser, X in_state S, S name "activated",' + user_rql = ('Any X,E,A WHERE X is CWUser, X in_state S, S name "activated",' 'X primary_email E, E address A') def recipients(self): diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 sobjects/supervising.py --- a/sobjects/supervising.py Fri Apr 17 13:21:05 2009 +0200 +++ b/sobjects/supervising.py Fri Apr 17 16:55:37 2009 +0200 @@ -29,7 +29,7 @@ SupervisionMailOp(session) def _call(self, *args): - if self._event() == 'update_entity' and args[0].e_schema == 'EUser': + if self._event() == 'update_entity' and args[0].e_schema == 'CWUser': updated = set(args[0].iterkeys()) if not (updated - frozenset(('eid', 'modification_date', 'last_login_time'))): # don't record last_login_time update which are done diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 sobjects/test/data/sobjects/__init__.py --- a/sobjects/test/data/sobjects/__init__.py Fri Apr 17 13:21:05 2009 +0200 +++ b/sobjects/test/data/sobjects/__init__.py Fri Apr 17 16:55:37 2009 +0200 @@ -1,6 +1,6 @@ from cubicweb.sobjects.notification import StatusChangeMixIn, NotificationView class UserStatusChangeView(StatusChangeMixIn, NotificationView): - accepts = ('EUser',) + accepts = ('CWUser',) diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 sobjects/test/unittest_notification.py --- a/sobjects/test/unittest_notification.py Fri Apr 17 13:21:05 2009 +0200 +++ b/sobjects/test/unittest_notification.py Fri Apr 17 16:55:37 2009 +0200 @@ -43,10 +43,10 @@ class RecipientsFinderTC(EnvBasedTC): def test(self): - urset = self.execute('EUser X WHERE X login "admin"') + urset = self.execute('CWUser X WHERE X login "admin"') self.execute('INSERT EmailAddress X: X address "admin@logilab.fr", U primary_email X ' 'WHERE U eid %(x)s', {'x': urset[0][0]}) - self.execute('INSERT EProperty X: X pkey "ui.language", X value "fr", X for_user U ' + self.execute('INSERT CWProperty X: X pkey "ui.language", X value "fr", X for_user U ' 'WHERE U eid %(x)s', {'x': urset[0][0]}) self.commit() # commit so that admin get its properties updated finder = self.vreg.select_component('recipients_finder', self.request(), urset) diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 sobjects/test/unittest_supervising.py --- a/sobjects/test/unittest_supervising.py Fri Apr 17 13:21:05 2009 +0200 +++ b/sobjects/test/unittest_supervising.py Fri Apr 17 16:55:37 2009 +0200 @@ -21,7 +21,7 @@ def test_supervision(self): session = self.session() # do some modification - ueid = self.execute('INSERT EUser X: X login "toto", X upassword "sosafe", X in_group G, X in_state S ' + ueid = self.execute('INSERT CWUser X: X login "toto", X upassword "sosafe", X in_group G, X in_state S ' 'WHERE G name "users", S name "activated"')[0][0] self.execute('SET X last_login_time NOW WHERE X eid %(x)s', {'x': ueid}, 'x') self.execute('SET X in_state S WHERE X login "anon", S name "deactivated"') diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 test/data/schema.py --- a/test/data/schema.py Fri Apr 17 13:21:05 2009 +0200 +++ b/test/data/schema.py Fri Apr 17 16:55:37 2009 +0200 @@ -23,5 +23,5 @@ object = ('Personne', 'Note') class evaluee(RelationDefinition): - subject = 'EUser' + subject = 'CWUser' object = 'Note' diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 test/unittest_dbapi.py --- a/test/unittest_dbapi.py Fri Apr 17 13:21:05 2009 +0200 +++ b/test/unittest_dbapi.py Fri Apr 17 16:55:37 2009 +0200 @@ -29,7 +29,7 @@ def test_api(self): cnx = self.cnx self.assertEquals(cnx.user(None).login, 'anon') - self.assertEquals(cnx.describe(1), (u'EGroup', u'system', None)) + self.assertEquals(cnx.describe(1), (u'CWGroup', u'system', None)) self.restore_connection() # proper way to close cnx self.assertRaises(ConnectionError, cnx.user, None) self.assertRaises(ConnectionError, cnx.describe, 1) @@ -73,7 +73,7 @@ # def test_api(self): # cu = self.cursor -# self.assertEquals(cu.describe(1), (u'EGroup', u'system', None)) +# self.assertEquals(cu.describe(1), (u'CWGroup', u'system', None)) # #cu.close() # #self.assertRaises(ConnectionError, cu.describe, 1) diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 test/unittest_entity.py --- a/test/unittest_entity.py Fri Apr 17 13:21:05 2009 +0200 +++ b/test/unittest_entity.py Fri Apr 17 16:55:37 2009 +0200 @@ -17,7 +17,7 @@ ## embed=False) def test_boolean_value(self): - e = self.etype_instance('EUser') + e = self.etype_instance('CWUser') self.failUnless(e) def test_yams_inheritance(self): @@ -28,7 +28,7 @@ self.assertIs(e.__class__, e2.__class__) def test_has_eid(self): - e = self.etype_instance('EUser') + e = self.etype_instance('CWUser') self.assertEquals(e.eid, None) self.assertEquals(e.has_eid(), False) e.eid = 'X' @@ -68,7 +68,7 @@ e = self.entity('Any X WHERE X eid %(x)s', {'x':user.eid}, 'x') self.assertEquals(e.use_email[0].address, "toto@logilab.org") self.assertEquals(e.use_email[0].eid, adeleid) - usereid = self.execute('INSERT EUser X: X login "toto", X upassword "toto", X in_group G, X in_state S ' + usereid = self.execute('INSERT CWUser X: X login "toto", X upassword "toto", X in_group G, X in_state S ' 'WHERE G name "users", S name "activated"')[0][0] e = self.entity('Any X WHERE X eid %(x)s', {'x':usereid}, 'x') e.copy_relations(user.eid) @@ -77,12 +77,12 @@ def test_copy_with_non_initial_state(self): user = self.user() - eid = self.execute('INSERT EUser X: X login "toto", X upassword %(pwd)s, X in_group G WHERE G name "users"', + eid = self.execute('INSERT CWUser X: X login "toto", X upassword %(pwd)s, X in_group G WHERE G name "users"', {'pwd': 'toto'})[0][0] self.commit() self.execute('SET X in_state S WHERE X eid %(x)s, S name "deactivated"', {'x': eid}, 'x') self.commit() - eid2 = self.execute('INSERT EUser X: X login "tutu", X upassword %(pwd)s', {'pwd': 'toto'})[0][0] + eid2 = self.execute('INSERT CWUser X: X login "tutu", X upassword %(pwd)s', {'pwd': 'toto'})[0][0] e = self.entity('Any X WHERE X eid %(x)s', {'x': eid2}, 'x') e.copy_relations(eid) self.commit() @@ -200,8 +200,8 @@ 1) def test_new_entity_unrelated(self): - e = self.etype_instance('EUser') - unrelated = [r[0] for r in e.unrelated('in_group', 'EGroup', 'subject')] + e = self.etype_instance('CWUser') + unrelated = [r[0] for r in e.unrelated('in_group', 'CWGroup', 'subject')] # should be default groups but owners, i.e. managers, users, guests self.assertEquals(len(unrelated), 3) @@ -210,10 +210,10 @@ content_format=u'text/rest') self.assertEquals(e.printable_value('content'), '

du *ReST*

\n') - e['content'] = 'du html users' + e['content'] = 'du html users' e['content_format'] = 'text/html' self.assertEquals(e.printable_value('content'), - 'du html users') + 'du html users') e['content'] = 'du *texte*' e['content_format'] = 'text/plain' self.assertEquals(e.printable_value('content'), @@ -341,7 +341,7 @@ def test_request_cache(self): req = self.request() - user = self.entity('EUser X WHERE X login "admin"', req=req) + user = self.entity('CWUser X WHERE X login "admin"', req=req) state = user.in_state[0] samestate = self.entity('State X WHERE X name "activated"', req=req) self.failUnless(state is samestate) diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 test/unittest_rset.py --- a/test/unittest_rset.py Fri Apr 17 13:21:05 2009 +0200 +++ b/test/unittest_rset.py Fri Apr 17 16:55:37 2009 +0200 @@ -26,8 +26,8 @@ def test_relations_description(self): """tests relations_description() function""" queries = { - 'Any U,L,M where U is EUser, U login L, U mail M' : [(1, 'login', 'subject'), (2, 'mail', 'subject')], - 'Any U,L,M where U is EUser, L is Foo, U mail M' : [(2, 'mail', 'subject')], + 'Any U,L,M where U is CWUser, U login L, U mail M' : [(1, 'login', 'subject'), (2, 'mail', 'subject')], + 'Any U,L,M where U is CWUser, L is Foo, U mail M' : [(2, 'mail', 'subject')], 'Any C,P where C is Company, C employs P' : [(1, 'employs', 'subject')], 'Any C,P where C is Company, P employed_by P' : [], 'Any C where C is Company, C employs P' : [], @@ -39,7 +39,7 @@ def test_relations_description_indexed(self): """tests relations_description() function""" queries = { - 'Any C,U,P,L,M where C is Company, C employs P, U is EUser, U login L, U mail M' : + 'Any C,U,P,L,M where C is Company, C employs P, U is CWUser, U login L, U mail M' : {0: [(2,'employs', 'subject')], 1: [(3,'login', 'subject'), (4,'mail', 'subject')]}, } for rql, results in queries.items(): @@ -54,8 +54,8 @@ def setUp(self): super(ResultSetTC, self).setUp() self.rset = ResultSet([[12, 'adim'], [13, 'syt']], - 'Any U,L where U is EUser, U login L', - description=[['EUser', 'String'], ['Bar', 'String']]) + 'Any U,L where U is CWUser, U login L', + description=[['CWUser', 'String'], ['Bar', 'String']]) self.rset.vreg = self.vreg def compare_urls(self, url1, url2): @@ -83,16 +83,16 @@ def test_resultset_build(self): """test basic build of a ResultSet""" - rs = ResultSet([1,2,3], 'EGroup X', description=['EGroup', 'EGroup', 'EGroup']) + rs = ResultSet([1,2,3], 'CWGroup X', description=['CWGroup', 'CWGroup', 'CWGroup']) self.assertEquals(rs.rowcount, 3) self.assertEquals(rs.rows, [1,2,3]) - self.assertEquals(rs.description, ['EGroup', 'EGroup', 'EGroup']) + self.assertEquals(rs.description, ['CWGroup', 'CWGroup', 'CWGroup']) def test_resultset_limit(self): rs = ResultSet([[12000, 'adim'], [13000, 'syt'], [14000, 'nico']], - 'Any U,L where U is EUser, U login L', - description=[['EUser', 'String']] * 3) + 'Any U,L where U is CWUser, U login L', + description=[['CWUser', 'String']] * 3) rs.req = self.request() rs.vreg = self.env.vreg @@ -106,8 +106,8 @@ def test_resultset_filter(self): rs = ResultSet([[12000, 'adim'], [13000, 'syt'], [14000, 'nico']], - 'Any U,L where U is EUser, U login L', - description=[['EUser', 'String']] * 3) + 'Any U,L where U is CWUser, U login L', + description=[['CWUser', 'String']] * 3) rs.req = self.request() rs.vreg = self.env.vreg def test_filter(entity): @@ -119,8 +119,8 @@ def test_resultset_transform(self): rs = ResultSet([[12, 'adim'], [13, 'syt'], [14, 'nico']], - 'Any U,L where U is EUser, U login L', - description=[['EUser', 'String']] * 3) + 'Any U,L where U is CWUser, U login L', + description=[['CWUser', 'String']] * 3) rs.req = self.request() def test_transform(row, desc): return row[1:], desc[1:] @@ -131,8 +131,8 @@ def test_resultset_sort(self): rs = ResultSet([[12000, 'adim'], [13000, 'syt'], [14000, 'nico']], - 'Any U,L where U is EUser, U login L', - description=[['EUser', 'String']] * 3) + 'Any U,L where U is CWUser, U login L', + description=[['CWUser', 'String']] * 3) rs.req = self.request() rs.vreg = self.env.vreg @@ -160,9 +160,9 @@ [13000, 'syt', u'Le carrelage en 42 leçons'], [14000, 'nico', u'La tarte tatin en 15 minutes'], [14000, 'nico', u"L'épluchage du castor commun"]], - 'Any U, L, T WHERE U is EUser, U login L,'\ + 'Any U, L, T WHERE U is CWUser, U login L,'\ 'D created_by U, D title T', - description=[['EUser', 'String', 'String']] * 5) + description=[['CWUser', 'String', 'String']] * 5) rs.req = self.request() rs.vreg = self.env.vreg @@ -206,7 +206,7 @@ self.assert_(rqlst1 is rqlst2) def test_get_entity_simple(self): - self.add_entity('EUser', login=u'adim', upassword='adim', + self.add_entity('CWUser', login=u'adim', upassword='adim', surname=u'di mascio', firstname=u'adrien') e = self.entity('Any X,T WHERE X login "adim", X surname T') self.assertEquals(e['surname'], 'di mascio') @@ -251,7 +251,7 @@ rset = self.execute('Any X,S WHERE X in_state S, X login "anon"') e = rset.get_entity(0, 0) seid = self.execute('State X WHERE X name "activated"')[0][0] - # for_user / in_group are prefetched in EUser __init__, in_state should + # for_user / in_group are prefetched in CWUser __init__, in_state should # be filed from our query rset self.assertEquals(pprelcachedict(e._related_cache), [('in_state_subject', [seid])]) @@ -276,7 +276,7 @@ def test_get_entity_cache_with_left_outer_join(self): - eid = self.execute('INSERT EUser E: E login "joe", E upassword "joe", E in_group G ' + eid = self.execute('INSERT CWUser E: E login "joe", E upassword "joe", E in_group G ' 'WHERE G name "users"')[0][0] rset = self.execute('Any X,E WHERE X eid %(x)s, X primary_email E?', {'x': eid}) e = rset.get_entity(0, 0) @@ -294,10 +294,10 @@ rset = self.execute('Any X,N ORDERBY N WITH X,N BEING ' '((Any X,N WHERE X is Bookmark, X title N)' ' UNION ' - ' (Any X,N WHERE X is EGroup, X name N))') - expected = (('EGroup', 'guests'), ('EGroup', 'managers'), - ('Bookmark', 'manger'), ('EGroup', 'owners'), - ('EGroup', 'users')) + ' (Any X,N WHERE X is CWGroup, X name N))') + expected = (('CWGroup', 'guests'), ('CWGroup', 'managers'), + ('Bookmark', 'manger'), ('CWGroup', 'owners'), + ('CWGroup', 'users')) for entity in rset.entities(): # test get_entity for each row actually etype, n = expected[entity.row] self.assertEquals(entity.id, etype) @@ -314,17 +314,17 @@ def test_related_entity_union_subquery(self): e = self.add_entity('Bookmark', title=u'aaaa', path=u'path') rset = self.execute('Any X,N ORDERBY N WITH X,N BEING ' - '((Any X,N WHERE X is EGroup, X name N)' + '((Any X,N WHERE X is CWGroup, X name N)' ' UNION ' ' (Any X,N WHERE X is Bookmark, X title N))') entity, rtype = rset.related_entity(0, 1) self.assertEquals(entity.eid, e.eid) self.assertEquals(rtype, 'title') entity, rtype = rset.related_entity(1, 1) - self.assertEquals(entity.id, 'EGroup') + self.assertEquals(entity.id, 'CWGroup') self.assertEquals(rtype, 'name') rset = self.execute('Any X,N ORDERBY N WHERE X is Bookmark WITH X,N BEING ' - '((Any X,N WHERE X is EGroup, X name N)' + '((Any X,N WHERE X is CWGroup, X name N)' ' UNION ' ' (Any X,N WHERE X is Bookmark, X title N))') entity, rtype = rset.related_entity(0, 1) @@ -336,14 +336,14 @@ # make sure we have at least one element self.failUnless(rset) self.assertEquals(set(e.e_schema.type for e in rset.entities(0)), - set(['EUser',])) + set(['CWUser',])) self.assertEquals(set(e.e_schema.type for e in rset.entities(1)), - set(['EGroup',])) + set(['CWGroup',])) def test_printable_rql(self): - rset = self.execute(u'EEType X WHERE X final FALSE, X meta FALSE') + rset = self.execute(u'CWEType X WHERE X final FALSE, X meta FALSE') self.assertEquals(rset.printable_rql(), - 'Any X WHERE X final FALSE, X meta FALSE, X is EEType') + 'Any X WHERE X final FALSE, X meta FALSE, X is CWEType') def test_searched_text(self): diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 test/unittest_schema.py --- a/test/unittest_schema.py Fri Apr 17 13:21:05 2009 +0200 +++ b/test/unittest_schema.py Fri Apr 17 16:55:37 2009 +0200 @@ -141,9 +141,9 @@ entities.sort() expected_entities = ['Bookmark', 'Boolean', 'Bytes', 'Card', 'Date', 'Datetime', 'Decimal', - 'ECache', 'EConstraint', 'EConstraintType', 'EEType', - 'EFRDef', 'EGroup', 'EmailAddress', 'ENFRDef', - 'EPermission', 'EProperty', 'ERType', 'EUser', + 'CWCache', 'CWConstraint', 'CWConstraintType', 'CWEType', + 'CWAttribute', 'CWGroup', 'EmailAddress', 'CWRelation', + 'CWPermission', 'CWProperty', 'CWRType', 'CWUser', 'File', 'Float', 'Image', 'Int', 'Interval', 'Note', 'Password', 'Personne', 'RQLExpression', @@ -195,7 +195,7 @@ self.assertListEquals(relations, expected_relations) - eschema = schema.eschema('EUser') + eschema = schema.eschema('CWUser') rels = sorted(str(r) for r in eschema.subject_relations()) self.assertListEquals(rels, ['created_by', 'creation_date', 'eid', 'evaluee', 'firstname', 'has_text', 'identity', @@ -208,7 +208,7 @@ self.assertListEquals(rels, ['bookmarked_by', 'created_by', 'for_user', 'identity', 'owned_by', 'wf_info_for']) rschema = schema.rschema('relation_type') - properties = rschema.rproperties('EFRDef', 'ERType') + properties = rschema.rproperties('CWAttribute', 'CWRType') self.assertEquals(properties['cardinality'], '1*') constraints = properties['constraints'] self.failUnlessEqual(len(constraints), 1, constraints) @@ -218,7 +218,7 @@ def test_fulltext_container(self): schema = loader.load(config) - self.failUnless('has_text' in schema['EUser'].subject_relations()) + self.failUnless('has_text' in schema['CWUser'].subject_relations()) self.failIf('has_text' in schema['EmailAddress'].subject_relations()) diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 web/test/data/schema/relations.rel --- a/web/test/data/schema/relations.rel Fri Apr 17 13:21:05 2009 +0200 +++ b/web/test/data/schema/relations.rel Fri Apr 17 16:55:37 2009 +0200 @@ -1,2 +1,2 @@ Personne travaille Societe -EUser connait Personne +CWUser connait Personne diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 web/test/data/schema/testschema.py --- a/web/test/data/schema/testschema.py Fri Apr 17 13:21:05 2009 +0200 +++ b/web/test/data/schema/testschema.py Fri Apr 17 16:55:37 2009 +0200 @@ -4,11 +4,11 @@ class tags(RelationDefinition): subject = 'Tag' - object = ('BlogEntry', 'EUser') + object = ('BlogEntry', 'CWUser') class checked_by(RelationType): subject = 'BlogEntry' - object = 'EUser' + object = 'CWUser' cardinality = '?*' permissions = { 'add': ('managers',), diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 web/test/test_views.py --- a/web/test/test_views.py Fri Apr 17 13:21:05 2009 +0200 +++ b/web/test/test_views.py Fri Apr 17 16:55:37 2009 +0200 @@ -4,9 +4,9 @@ from cubicweb.view import AnyRsetView AutomaticWebTest.application_rql = [ - 'Any L,F WHERE E is EUser, E login L, E firstname F', - 'Any L,F,E WHERE E is EUser, E login L, E firstname F', - 'Any COUNT(X) WHERE X is EUser', + 'Any L,F WHERE E is CWUser, E login L, E firstname F', + 'Any L,F,E WHERE E is CWUser, E login L, E firstname F', + 'Any COUNT(X) WHERE X is CWUser', ] class ComposityCopy(WebTest): @@ -15,7 +15,7 @@ """regression test: make sure we can ask a copy of a composite entity """ - rset = self.execute('EUser X WHERE X login "admin"') + rset = self.execute('CWUser X WHERE X login "admin"') self.view('copy', rset) @@ -33,21 +33,21 @@ self.auto_populate(10) def test_manual_tests(self): - rset = self.execute('Any P,F,S WHERE P is EUser, P firstname F, P surname S') + rset = self.execute('Any P,F,S WHERE P is CWUser, P firstname F, P surname S') self.view('table', rset, template=None, displayfilter=True, displaycols=[0,2]) def test_sortable_js_added(self): - rset = self.execute('EUser X') + rset = self.execute('CWUser X') # sortable.js should not be included by default self.failIf('jquery.tablesorter.js' in self.view('oneline', rset)) # but should be included by the tableview - rset = self.execute('Any P,F,S LIMIT 1 WHERE P is EUser, P firstname F, P surname S') + rset = self.execute('Any P,F,S LIMIT 1 WHERE P is CWUser, P firstname F, P surname S') self.failUnless('jquery.tablesorter.js' in self.view('table', rset)) def test_js_added_only_once(self): self.vreg._loadedmods[__name__] = {} self.vreg.register_vobject_class(SomeView) - rset = self.execute('EUser X') + rset = self.execute('CWUser X') source = self.view('someview', rset).source self.assertEquals(source.count('spam.js'), 1) @@ -56,8 +56,8 @@ class ExplicitViewsTest(WebTest): def test_unrelateddivs(self): - rset = self.execute('Any X WHERE X is EUser, X login "admin"') - group = self.add_entity('EGroup', name=u'R&D') + rset = self.execute('Any X WHERE X is CWUser, X login "admin"') + group = self.add_entity('CWGroup', name=u'R&D') req = self.request(relation='in_group_subject') self.view('unrelateddivs', rset, req) diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 web/test/unittest_application.py --- a/web/test/unittest_application.py Fri Apr 17 13:21:05 2009 +0200 +++ b/web/test/unittest_application.py Fri Apr 17 16:55:37 2009 +0200 @@ -170,7 +170,7 @@ self.commit() def test_nonregr_publish1(self): - req = self.request(u'EEType X WHERE X final FALSE, X meta FALSE') + req = self.request(u'CWEType X WHERE X final FALSE, X meta FALSE') self.app.publish('view', req) def test_nonregr_publish2(self): @@ -183,7 +183,7 @@ user = self.user() req.form = { 'eid': `user.eid`, - '__type:'+`user.eid`: 'EUser', + '__type:'+`user.eid`: 'CWUser', 'login:'+`user.eid`: '', # ERROR: no login specified 'edits-login:'+`user.eid`: unicode(user.login), # just a sample, missing some necessary information for real life @@ -207,7 +207,7 @@ """ req = self.request() form = {'eid': ['X', 'Y'], - '__type:X': 'EUser', + '__type:X': 'CWUser', # missing required field 'login:X': u'', 'edits-login:X': '', 'surname:X': u'Mr Ouaoua', 'edits-surname:X': '', @@ -253,7 +253,7 @@ vreg = self.app.vreg # default value self.assertEquals(vreg.property_value('ui.language'), 'en') - self.execute('INSERT EProperty X: X value "fr", X pkey "ui.language"') + self.execute('INSERT CWProperty X: X value "fr", X pkey "ui.language"') self.assertEquals(vreg.property_value('ui.language'), 'en') self.commit() self.assertEquals(vreg.property_value('ui.language'), 'fr') @@ -261,7 +261,7 @@ self.assertEquals(vreg.property_value('ui.language'), 'fr') self.commit() self.assertEquals(vreg.property_value('ui.language'), 'de') - self.execute('DELETE EProperty X WHERE X pkey "ui.language"') + self.execute('DELETE CWProperty X WHERE X pkey "ui.language"') self.assertEquals(vreg.property_value('ui.language'), 'de') self.commit() self.assertEquals(vreg.property_value('ui.language'), 'en') diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 web/test/unittest_form.py --- a/web/test/unittest_form.py Fri Apr 17 13:21:05 2009 +0200 +++ b/web/test/unittest_form.py Fri Apr 17 16:55:37 2009 +0200 @@ -14,7 +14,7 @@ def test_form_field_format(self): form = FieldsForm(self.request(), None) self.assertEquals(form.form_field_format(None), 'text/html') - self.execute('INSERT EProperty X: X pkey "ui.default-text-format", X value "text/rest", X for_user U WHERE U login "admin"') + self.execute('INSERT CWProperty X: X pkey "ui.default-text-format", X value "text/rest", X for_user U WHERE U login "admin"') self.commit() self.assertEquals(form.form_field_format(None), 'text/rest') @@ -43,7 +43,7 @@ self.failIf(t.eid in unrelated, unrelated) def test_form_field_vocabulary_new_entity(self): - e = self.etype_instance('EUser') + e = self.etype_instance('CWUser') form = EntityFieldsForm(self.request(), None, entity=e) unrelated = [rview for rview, reid in form.subject_relation_vocabulary('in_group')] # should be default groups but owners, i.e. managers, users, guests @@ -51,7 +51,7 @@ def test_subject_in_state_vocabulary(self): # on a new entity - e = self.etype_instance('EUser') + e = self.etype_instance('CWUser') form = EntityFieldsForm(self.request(), None, entity=e) states = list(form.subject_in_state_vocabulary('in_state')) self.assertEquals(len(states), 1) @@ -69,8 +69,8 @@ def test_massmailing_formview(self): self.execute('INSERT EmailAddress X: X address L + "@cubicweb.org", ' - 'U use_email X WHERE U is EUser, U login L') - rset = self.execute('EUser X') + 'U use_email X WHERE U is CWUser, U login L') + rset = self.execute('CWUser X') self.view('massmailing', rset, template=None) diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 web/test/unittest_formfields.py --- a/web/test/unittest_formfields.py Fri Apr 17 13:21:05 2009 +0200 +++ b/web/test/unittest_formfields.py Fri Apr 17 16:55:37 2009 +0200 @@ -5,7 +5,7 @@ from cubicweb.web.formwidgets import PasswordInput from cubicweb.web.formfields import * from cubicweb.entities.lib import Card -from cubicweb.entities.authobjs import EUser +from cubicweb.entities.authobjs import CWUser from cubes.file.entities import File config = TestServerConfiguration('data') @@ -13,8 +13,8 @@ schema = config.load_schema() Card.schema = schema Card.__initialize__() -EUser.schema = schema -EUser.__initialize__() +CWUser.schema = schema +CWUser.__initialize__() File.schema = schema File.__initialize__() @@ -49,22 +49,22 @@ def test_euser_fields(self): - upassword_field = guess_field(EUser, schema['upassword']) + upassword_field = guess_field(CWUser, schema['upassword']) self.assertIsInstance(upassword_field, StringField) self.assertIsInstance(upassword_field.widget, PasswordInput) self.assertEquals(upassword_field.required, True) - last_login_time_field = guess_field(EUser, schema['last_login_time']) + last_login_time_field = guess_field(CWUser, schema['last_login_time']) self.assertIsInstance(last_login_time_field, DateTimeField) self.assertEquals(last_login_time_field.required, False) - in_group_field = guess_field(EUser, schema['in_group']) + in_group_field = guess_field(CWUser, schema['in_group']) self.assertIsInstance(in_group_field, RelationField) self.assertEquals(in_group_field.required, True) self.assertEquals(in_group_field.role, 'subject') self.assertEquals(in_group_field.help, 'groups grant permissions to the user') - owned_by_field = guess_field(EUser, schema['owned_by'], 'object') + owned_by_field = guess_field(CWUser, schema['owned_by'], 'object') self.assertIsInstance(owned_by_field, RelationField) self.assertEquals(owned_by_field.required, False) self.assertEquals(owned_by_field.role, 'object') diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 web/test/unittest_magicsearch.py --- a/web/test/unittest_magicsearch.py Fri Apr 17 13:21:05 2009 +0200 +++ b/web/test/unittest_magicsearch.py Fri Apr 17 16:55:37 2009 +0200 @@ -11,7 +11,7 @@ translations = { - u'EUser' : u"Utilisateur", + u'CWUser' : u"Utilisateur", # u'Workcase' : u"Affaire", u'EmailAddress' : u"Adresse", # u'Division' : u"Division", @@ -54,7 +54,7 @@ self.assertEquals(rql, "Any P WHERE P use_email C, C is EmailAddress, C alias 'Logilab'") rql = "Any P WHERE P is Utilisateur, P adel C, P nom 'Smith'" rql, = self.proc.preprocess_query(rql, self.req) - self.assertEquals(rql, "Any P WHERE P is EUser, P use_email C, P surname 'Smith'") + self.assertEquals(rql, "Any P WHERE P is CWUser, P use_email C, P surname 'Smith'") class QSPreProcessorTC(EnvBasedTC): @@ -79,7 +79,7 @@ def test_attribute_translation(self): """tests QSPreProcessor._get_attribute_name""" translate = self.proc._get_attribute_name - eschema = self.schema.eschema('EUser') + eschema = self.schema.eschema('CWUser') self.assertEquals(translate(u'prénom', eschema), "firstname") self.assertEquals(translate(u'nom', eschema), 'surname') #self.assert_(translate(u'nom') in ('name', 'surname')) @@ -95,10 +95,10 @@ transform = self.proc._one_word_query self.assertEquals(transform('123'), ('Any X WHERE X eid %(x)s', {'x': 123}, 'x')) - self.assertEquals(transform('EUser'), - ('EUser E',)) + self.assertEquals(transform('CWUser'), + ('CWUser E',)) self.assertEquals(transform('Utilisateur'), - ('EUser E',)) + ('CWUser E',)) self.assertEquals(transform('Adresse'), ('EmailAddress E',)) self.assertEquals(transform('adresse'), @@ -108,37 +108,37 @@ def test_two_words_query(self): """tests the 'two words shortcut queries'""" transform = self.proc._two_words_query - self.assertEquals(transform('EUser', 'E'), - ("EUser E",)) - self.assertEquals(transform('EUser', 'Smith'), - ('EUser E WHERE E has_text %(text)s', {'text': 'Smith'})) + self.assertEquals(transform('CWUser', 'E'), + ("CWUser E",)) + self.assertEquals(transform('CWUser', 'Smith'), + ('CWUser E WHERE E has_text %(text)s', {'text': 'Smith'})) self.assertEquals(transform('utilisateur', 'Smith'), - ('EUser E WHERE E has_text %(text)s', {'text': 'Smith'})) + ('CWUser E WHERE E has_text %(text)s', {'text': 'Smith'})) self.assertEquals(transform(u'adresse', 'Logilab'), ('EmailAddress E WHERE E has_text %(text)s', {'text': 'Logilab'})) self.assertEquals(transform(u'adresse', 'Logi%'), ('EmailAddress E WHERE E alias LIKE %(text)s', {'text': 'Logi%'})) self.assertRaises(BadRQLQuery, transform, "pers", "taratata") - #self.assertEquals(transform('EUser', '%mi'), 'EUser E WHERE P surname LIKE "%mi"') + #self.assertEquals(transform('CWUser', '%mi'), 'CWUser E WHERE P surname LIKE "%mi"') def test_three_words_query(self): """tests the 'three words shortcut queries'""" transform = self.proc._three_words_query self.assertEquals(transform('utilisateur', u'prénom', 'cubicweb'), - ('EUser E WHERE E firstname %(text)s', {'text': 'cubicweb'})) + ('CWUser E WHERE E firstname %(text)s', {'text': 'cubicweb'})) self.assertEquals(transform('utilisateur', 'nom', 'cubicweb'), - ('EUser E WHERE E surname %(text)s', {'text': 'cubicweb'})) + ('CWUser E WHERE E surname %(text)s', {'text': 'cubicweb'})) self.assertEquals(transform(u'adresse', 'nom', 'cubicweb'), ('EmailAddress E WHERE E alias %(text)s', {'text': 'cubicweb'})) self.assertEquals(transform('EmailAddress', 'nom', 'cubicweb'), ('EmailAddress E WHERE E alias %(text)s', {'text': 'cubicweb'})) self.assertEquals(transform('utilisateur', u'prénom', 'cubicweb%'), - ('EUser E WHERE E firstname LIKE %(text)s', {'text': 'cubicweb%'})) + ('CWUser E WHERE E firstname LIKE %(text)s', {'text': 'cubicweb%'})) # expanded shortcuts - self.assertEquals(transform('EUser', 'use_email', 'Logilab'), - ('EUser E WHERE E use_email E1, E1 has_text %(text)s', {'text': 'Logilab'})) - self.assertEquals(transform('EUser', 'use_email', '%Logilab'), - ('EUser E WHERE E use_email E1, E1 alias LIKE %(text)s', {'text': '%Logilab'})) + self.assertEquals(transform('CWUser', 'use_email', 'Logilab'), + ('CWUser E WHERE E use_email E1, E1 has_text %(text)s', {'text': 'Logilab'})) + self.assertEquals(transform('CWUser', 'use_email', '%Logilab'), + ('CWUser E WHERE E use_email E1, E1 alias LIKE %(text)s', {'text': '%Logilab'})) self.assertRaises(BadRQLQuery, transform, 'word1', 'word2', 'word3') def test_multiple_words_query(self): @@ -150,24 +150,24 @@ """tests how quoted queries are handled""" queries = [ (u'Adresse "My own EmailAddress"', ('EmailAddress E WHERE E has_text %(text)s', {'text': u'My own EmailAddress'})), - (u'Utilisateur prénom "Jean Paul"', ('EUser E WHERE E firstname %(text)s', {'text': 'Jean Paul'})), - (u'Utilisateur firstname "Jean Paul"', ('EUser E WHERE E firstname %(text)s', {'text': 'Jean Paul'})), - (u'EUser firstname "Jean Paul"', ('EUser E WHERE E firstname %(text)s', {'text': 'Jean Paul'})), + (u'Utilisateur prénom "Jean Paul"', ('CWUser E WHERE E firstname %(text)s', {'text': 'Jean Paul'})), + (u'Utilisateur firstname "Jean Paul"', ('CWUser E WHERE E firstname %(text)s', {'text': 'Jean Paul'})), + (u'CWUser firstname "Jean Paul"', ('CWUser E WHERE E firstname %(text)s', {'text': 'Jean Paul'})), ] transform = self.proc._quoted_words_query for query, expected in queries: self.assertEquals(transform(query), expected) self.assertRaises(BadRQLQuery, transform, "unquoted rql") self.assertRaises(BadRQLQuery, transform, 'pers "Jean Paul"') - self.assertRaises(BadRQLQuery, transform, 'EUser firstname other "Jean Paul"') + self.assertRaises(BadRQLQuery, transform, 'CWUser firstname other "Jean Paul"') def test_process_query(self): """tests how queries are processed""" queries = [ - (u'Utilisateur', (u"EUser E",)), - (u'Utilisateur P', (u"EUser P",)), - (u'Utilisateur cubicweb', (u'EUser E WHERE E has_text %(text)s', {'text': u'cubicweb'})), - (u'EUser prénom cubicweb', (u'EUser E WHERE E firstname %(text)s', {'text': 'cubicweb'},)), + (u'Utilisateur', (u"CWUser E",)), + (u'Utilisateur P', (u"CWUser P",)), + (u'Utilisateur cubicweb', (u'CWUser E WHERE E has_text %(text)s', {'text': u'cubicweb'})), + (u'CWUser prénom cubicweb', (u'CWUser E WHERE E firstname %(text)s', {'text': 'cubicweb'},)), (u'Any X WHERE X is Something', (u"Any X WHERE X is Something",)), ] for query, expected in queries: @@ -195,11 +195,11 @@ # XXX this sounds like a language translator test... # and it fail (u'Utilisateur Smith', - ('EUser E WHERE E has_text %(text)s', {'text': u'Smith'})), + ('CWUser E WHERE E has_text %(text)s', {'text': u'Smith'})), (u'utilisateur nom Smith', - ('EUser E WHERE E surname %(text)s', {'text': u'Smith'})), + ('CWUser E WHERE E surname %(text)s', {'text': u'Smith'})), (u'Any P WHERE P is Utilisateur, P nom "Smith"', - ('Any P WHERE P is EUser, P surname "Smith"', None)), + ('Any P WHERE P is CWUser, P surname "Smith"', None)), ] for query, expected in queries: rset = self.proc.process_query(query, self.req) @@ -213,9 +213,9 @@ def test_explicit_component(self): self.assertRaises(RQLSyntaxError, - self.proc.process_query, u'rql: EUser E WHERE E noattr "Smith",', self.req) + self.proc.process_query, u'rql: CWUser E WHERE E noattr "Smith",', self.req) self.assertRaises(BadRQLQuery, - self.proc.process_query, u'rql: EUser E WHERE E noattr "Smith"', self.req) + self.proc.process_query, u'rql: CWUser E WHERE E noattr "Smith"', self.req) rset = self.proc.process_query(u'text: utilisateur Smith', self.req) self.assertEquals(rset.rql, 'Any X WHERE X has_text %(text)s') self.assertEquals(rset.args, {'text': u'utilisateur Smith'}) diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 web/test/unittest_urlpublisher.py --- a/web/test/unittest_urlpublisher.py Fri Apr 17 13:21:05 2009 +0200 +++ b/web/test/unittest_urlpublisher.py Fri Apr 17 16:55:37 2009 +0200 @@ -41,32 +41,32 @@ def test_rest_path(self): """tests the rest path resolution""" - ctrl, rset = self.process('EUser') + ctrl, rset = self.process('CWUser') self.assertEquals(ctrl, 'view') - self.assertEquals(rset.description[0][0], 'EUser') + self.assertEquals(rset.description[0][0], 'CWUser') self.assertEquals(rset.printable_rql(), - "Any X,AA,AB,AC,AD ORDERBY AA WHERE X is EUser, X login AA, X firstname AB, X surname AC, X modification_date AD") - ctrl, rset = self.process('EUser/login/admin') + "Any X,AA,AB,AC,AD ORDERBY AA WHERE X is CWUser, X login AA, X firstname AB, X surname AC, X modification_date AD") + ctrl, rset = self.process('CWUser/login/admin') self.assertEquals(ctrl, 'view') self.assertEquals(len(rset), 1) - self.assertEquals(rset.description[0][0], 'EUser') - self.assertEquals(rset.printable_rql(), 'Any X WHERE X is EUser, X login "admin"') + self.assertEquals(rset.description[0][0], 'CWUser') + self.assertEquals(rset.printable_rql(), 'Any X WHERE X is CWUser, X login "admin"') ctrl, rset = self.process('euser/admin') self.assertEquals(ctrl, 'view') self.assertEquals(len(rset), 1) - self.assertEquals(rset.description[0][0], 'EUser') - self.assertEquals(rset.printable_rql(), 'Any X WHERE X is EUser, X login "admin"') + self.assertEquals(rset.description[0][0], 'CWUser') + self.assertEquals(rset.printable_rql(), 'Any X WHERE X is CWUser, X login "admin"') ctrl, rset = self.process('euser/eid/%s'%rset[0][0]) self.assertEquals(ctrl, 'view') self.assertEquals(len(rset), 1) - self.assertEquals(rset.description[0][0], 'EUser') - self.assertEquals(rset.printable_rql(), 'Any X WHERE X is EUser, X eid 5') + self.assertEquals(rset.description[0][0], 'CWUser') + self.assertEquals(rset.printable_rql(), 'Any X WHERE X is CWUser, X eid 5') # test non-ascii paths - ctrl, rset = self.process('EUser/login/%C3%BFsa%C3%BFe') + ctrl, rset = self.process('CWUser/login/%C3%BFsa%C3%BFe') self.assertEquals(ctrl, 'view') self.assertEquals(len(rset), 1) - self.assertEquals(rset.description[0][0], 'EUser') - self.assertEquals(rset.printable_rql(), u'Any X WHERE X is EUser, X login "ÿsaÿe"') + self.assertEquals(rset.description[0][0], 'CWUser') + self.assertEquals(rset.printable_rql(), u'Any X WHERE X is CWUser, X login "ÿsaÿe"') # test quoted paths ctrl, rset = self.process('BlogEntry/title/hell%27o') self.assertEquals(ctrl, 'view') @@ -74,9 +74,9 @@ self.assertEquals(rset.description[0][0], 'BlogEntry') self.assertEquals(rset.printable_rql(), u'Any X WHERE X is BlogEntry, X title "hell\'o"') # errors - self.assertRaises(NotFound, self.process, 'EUser/eid/30000') + self.assertRaises(NotFound, self.process, 'CWUser/eid/30000') self.assertRaises(NotFound, self.process, 'Workcases') - self.assertRaises(NotFound, self.process, 'EUser/inexistant_attribute/joe') + self.assertRaises(NotFound, self.process, 'CWUser/inexistant_attribute/joe') def test_action_path(self): """tests the action path resolution""" @@ -85,7 +85,7 @@ self.assertRaises(Redirect, self.process, 'Tag/yo/edit') self.assertRaises(NotFound, self.process, 'view/edit') self.assertRaises(NotFound, self.process, '1/non_action') - self.assertRaises(NotFound, self.process, 'EUser/login/admin/non_action') + self.assertRaises(NotFound, self.process, 'CWUser/login/admin/non_action') def test_regexp_path(self): diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 web/test/unittest_urlrewrite.py --- a/web/test/unittest_urlrewrite.py Fri Apr 17 13:21:05 2009 +0200 +++ b/web/test/unittest_urlrewrite.py Fri Apr 17 16:55:37 2009 +0200 @@ -28,7 +28,7 @@ ('/manage', dict(vid='manage')), ('/notfound', {'vid': '404'}), ('/error', {'vid': 'error'}), - ('/schema/([^/]+?)/?$', {'rql': r'Any X WHERE X is EEType, X name "\1"', 'vid': 'eschema'}), + ('/schema/([^/]+?)/?$', {'rql': r'Any X WHERE X is CWEType, X name "\1"', 'vid': 'eschema'}), ('/add/([^/]+?)/?$' , dict(vid='creation', etype=r'\1')), ('/doc/images/(.+?)/?$', dict(fid='\\1', vid='wdocimages')), ('/doc/?$', dict(fid='main', vid='wdoc')), diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 web/test/unittest_views_actions.py --- a/web/test/unittest_views_actions.py Fri Apr 17 13:21:05 2009 +0200 +++ b/web/test/unittest_views_actions.py Fri Apr 17 16:55:37 2009 +0200 @@ -4,11 +4,11 @@ class ActionsTC(EnvBasedTC): def test_view_action(self): - req = self.request(__message='bla bla bla', vid='rss', rql='EUser X') - rset = self.execute('EUser X') + req = self.request(__message='bla bla bla', vid='rss', rql='CWUser X') + rset = self.execute('CWUser X') vaction = [action for action in self.vreg.possible_vobjects('actions', req, rset) if action.id == 'view'][0] - self.assertEquals(vaction.url(), 'http://testing.fr/cubicweb/view?rql=EUser%20X') + self.assertEquals(vaction.url(), 'http://testing.fr/cubicweb/view?rql=CWUser%20X') def test_sendmail_action(self): req = self.request() diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 web/test/unittest_views_basecontrollers.py --- a/web/test/unittest_views_basecontrollers.py Fri Apr 17 13:21:05 2009 +0200 +++ b/web/test/unittest_views_basecontrollers.py Fri Apr 17 16:55:37 2009 +0200 @@ -13,17 +13,17 @@ from cubicweb.web import INTERNAL_FIELD_VALUE, Redirect, RequestError from cubicweb.web.views.basecontrollers import xmlize -from cubicweb.entities.authobjs import EUser +from cubicweb.entities.authobjs import CWUser class EditControllerTC(ControllerTC): def setUp(self): ControllerTC.setUp(self) - self.failUnless('users' in self.schema.eschema('EGroup').get_groups('read')) + self.failUnless('users' in self.schema.eschema('CWGroup').get_groups('read')) def tearDown(self): ControllerTC.tearDown(self) - self.failUnless('users' in self.schema.eschema('EGroup').get_groups('read')) + self.failUnless('users' in self.schema.eschema('CWGroup').get_groups('read')) def test_noparam_edit(self): """check behaviour of this controller without any form parameter @@ -36,7 +36,7 @@ """test creation of two linked entities """ user = self.user() - self.req.form = {'eid': 'X', '__type:X': 'EUser', + self.req.form = {'eid': 'X', '__type:X': 'CWUser', 'login:X': u'admin', 'edits-login:X': u'', 'upassword:X': u'toto', 'upassword-confirm:X': u'toto', 'edits-upassword:X': u'', } @@ -47,13 +47,13 @@ """checking that a manager user can edit itself """ user = self.user() - basegroups = [str(eid) for eid, in self.execute('EGroup G WHERE X in_group G, X eid %(x)s', {'x': user.eid})] - groupeids = [eid for eid, in self.execute('EGroup G WHERE G name in ("managers", "users")')] + basegroups = [str(eid) for eid, in self.execute('CWGroup G WHERE X in_group G, X eid %(x)s', {'x': user.eid})] + groupeids = [eid for eid, in self.execute('CWGroup G WHERE G name in ("managers", "users")')] groups = [str(eid) for eid in groupeids] stateeid = [eid for eid, in self.execute('State S WHERE S name "activated"')][0] self.req.form = { 'eid': `user.eid`, - '__type:'+`user.eid`: 'EUser', + '__type:'+`user.eid`: 'CWUser', 'login:'+`user.eid`: unicode(user.login), 'firstname:'+`user.eid`: u'Th\xe9nault', 'surname:'+`user.eid`: u'Sylvain', @@ -78,10 +78,10 @@ user = self.create_user('user') cnx = self.login('user') req = self.request() - #self.assertEquals(self.ctrl.schema['EUser']._groups['read'], + #self.assertEquals(self.ctrl.schema['CWUser']._groups['read'], # ('managers', 'users')) req.form = { - 'eid': `user.eid`, '__type:'+`user.eid`: 'EUser', + 'eid': `user.eid`, '__type:'+`user.eid`: 'CWUser', '__maineid' : str(user.eid), 'upassword:'+`user.eid`: 'tournicoton', 'upassword-confirm:'+`user.eid`: 'tournicoton', @@ -97,10 +97,10 @@ relations (meaning no changes) """ user = self.user() - groupeids = [eid for eid, in self.execute('EGroup G WHERE X in_group G, X eid %(x)s', {'x': user.eid})] + groupeids = [eid for eid, in self.execute('CWGroup G WHERE X in_group G, X eid %(x)s', {'x': user.eid})] self.req.form = { 'eid': `user.eid`, - '__type:'+`user.eid`: 'EUser', + '__type:'+`user.eid`: 'CWUser', 'login:'+`user.eid`: unicode(user.login), 'firstname:'+`user.eid`: u'Th\xe9nault', 'surname:'+`user.eid`: u'Sylvain', @@ -120,10 +120,10 @@ def test_create_multiple_linked(self): - gueid = self.execute('EGroup G WHERE G name "users"')[0][0] + gueid = self.execute('CWGroup G WHERE G name "users"')[0][0] self.req.form = {'eid': ['X', 'Y'], - '__type:X': 'EUser', + '__type:X': 'CWUser', '__maineid' : 'X', 'login:X': u'adim', 'edits-login:X': u'', 'upassword:X': u'toto', 'upassword-confirm:X': u'toto', 'edits-upassword:X': u'', @@ -146,7 +146,7 @@ def test_edit_multiple_linked(self): peid = self.create_user('adim').eid self.req.form = {'eid': [`peid`, 'Y'], - '__type:%s'%peid: 'EUser', + '__type:%s'%peid: 'CWUser', 'surname:%s'%peid: u'Di Masci', 'edits-surname:%s'%peid: '', '__type:Y': 'EmailAddress', @@ -165,7 +165,7 @@ emaileid = email.eid self.req.form = {'eid': [`peid`, `emaileid`], - '__type:%s'%peid: 'EUser', + '__type:%s'%peid: 'CWUser', 'surname:%s'%peid: u'Di Masci', 'edits-surname:%s'%peid: 'Di Masci', '__type:%s'%emaileid: 'EmailAddress', 'address:%s'%emaileid: u'adim@logilab.fr', 'edits-address:%s'%emaileid: 'dima@logilab.fr', @@ -186,13 +186,13 @@ """ user = self.user() self.req.form = {'__cloned_eid:X': user.eid, - 'eid': 'X', '__type:X': 'EUser', + 'eid': 'X', '__type:X': 'CWUser', 'login:X': u'toto', 'edits-login:X': u'', 'upassword:X': u'toto', 'edits-upassword:X': u'', } self.assertRaises(ValidationError, self.publish, self.req) self.req.form = {'__cloned_eid:X': user.eid, - 'eid': 'X', '__type:X': 'EUser', + 'eid': 'X', '__type:X': 'CWUser', 'login:X': u'toto', 'edits-login:X': u'', 'upassword:X': u'toto', 'upassword-confirm:X': u'tutu', 'edits-upassword:X': u'', } @@ -227,7 +227,7 @@ def test_req_pending_insert(self): """make sure req's pending insertions are taken into account""" - tmpgroup = self.add_entity('EGroup', name=u"test") + tmpgroup = self.add_entity('CWGroup', name=u"test") user = self.user() self.req.set_session_data('pending_insert', set([(user.eid, 'in_group', tmpgroup.eid)])) path, params = self.expect_redirect_publish() @@ -240,7 +240,7 @@ def test_req_pending_delete(self): """make sure req's pending deletions are taken into account""" user = self.user() - groupeid = self.execute('INSERT EGroup G: G name "test", U in_group G WHERE U eid %(x)s', + groupeid = self.execute('INSERT CWGroup G: G name "test", U in_group G WHERE U eid %(x)s', {'x': user.eid})[0][0] usergroups = [gname for gname, in self.execute('Any N WHERE G name N, U in_group G, U eid %(u)s', {'u': user.eid})] @@ -258,13 +258,13 @@ def custom_login_edit(self, formparams, value, relations): formparams['login'] = value.upper() relations.append('X login %(login)s') - EUser.custom_login_edit = custom_login_edit + CWUser.custom_login_edit = custom_login_edit try: user = self.user() eid = repr(user.eid) self.req.form = { 'eid': eid, - '__type:'+eid: 'EUser', + '__type:'+eid: 'CWUser', 'login:'+eid: u'foo', 'edits-login:'+eid: unicode(user.login), } @@ -272,7 +272,7 @@ rset = self.execute('Any L WHERE X eid %(x)s, X login L', {'x': user.eid}, 'x') self.assertEquals(rset[0][0], 'FOO') finally: - del EUser.custom_login_edit + del CWUser.custom_login_edit def test_redirect_apply_button(self): redirectrql = rql_for_eid(4012) # whatever @@ -342,22 +342,22 @@ self.assertEquals(params, {u'__message': u'entities deleted'}) def test_nonregr_egroup_etype_editing(self): - """non-regression test checking that a manager user can edit a EEType entity (EGroup) + """non-regression test checking that a manager user can edit a CWEType entity (CWGroup) """ - groupeids = [eid for eid, in self.execute('EGroup G WHERE G name "managers"')] + groupeids = [eid for eid, in self.execute('CWGroup G WHERE G name "managers"')] groups = [str(eid) for eid in groupeids] - eeetypeeid = self.execute('EEType X WHERE X name "EGroup"')[0][0] - basegroups = [str(eid) for eid, in self.execute('EGroup G WHERE X read_permission G, X eid %(x)s', {'x': eeetypeeid})] + eeetypeeid = self.execute('CWEType X WHERE X name "CWGroup"')[0][0] + basegroups = [str(eid) for eid, in self.execute('CWGroup G WHERE X read_permission G, X eid %(x)s', {'x': eeetypeeid})] self.req.form = { 'eid': `eeetypeeid`, - '__type:'+`eeetypeeid`: 'EEType', - 'name:'+`eeetypeeid`: u'EGroup', + '__type:'+`eeetypeeid`: 'CWEType', + 'name:'+`eeetypeeid`: u'CWGroup', 'final:'+`eeetypeeid`: False, 'meta:'+`eeetypeeid`: True, 'description:'+`eeetypeeid`: u'users group', 'read_permission:'+`eeetypeeid`: groups, # - 'edits-name:'+`eeetypeeid`: u'EGroup', + 'edits-name:'+`eeetypeeid`: u'CWGroup', 'edits-final:'+`eeetypeeid`: False, 'edits-meta:'+`eeetypeeid`: True, 'edits-description:'+`eeetypeeid`: u'users group', @@ -366,30 +366,30 @@ try: path, params = self.expect_redirect_publish() e = self.execute('Any X WHERE X eid %(x)s', {'x': eeetypeeid}, 'x').get_entity(0, 0) - self.assertEquals(e.name, 'EGroup') + self.assertEquals(e.name, 'CWGroup') self.assertEquals([g.eid for g in e.read_permission], groupeids) finally: # restore - self.execute('SET X read_permission Y WHERE X name "EGroup", Y eid IN (%s), NOT X read_permission Y' % (','.join(basegroups))) + self.execute('SET X read_permission Y WHERE X name "CWGroup", Y eid IN (%s), NOT X read_permission Y' % (','.join(basegroups))) self.commit() def test_nonregr_eetype_etype_editing(self): - """non-regression test checking that a manager user can edit a EEType entity (EEType) + """non-regression test checking that a manager user can edit a CWEType entity (CWEType) """ - groupeids = sorted(eid for eid, in self.execute('EGroup G WHERE G name in ("managers", "users")')) + groupeids = sorted(eid for eid, in self.execute('CWGroup G WHERE G name in ("managers", "users")')) groups = [str(eid) for eid in groupeids] - eeetypeeid = self.execute('EEType X WHERE X name "EEType"')[0][0] - basegroups = [str(eid) for eid, in self.execute('EGroup G WHERE X read_permission G, X eid %(x)s', {'x': eeetypeeid})] + eeetypeeid = self.execute('CWEType X WHERE X name "CWEType"')[0][0] + basegroups = [str(eid) for eid, in self.execute('CWGroup G WHERE X read_permission G, X eid %(x)s', {'x': eeetypeeid})] self.req.form = { 'eid': `eeetypeeid`, - '__type:'+`eeetypeeid`: 'EEType', - 'name:'+`eeetypeeid`: u'EEType', + '__type:'+`eeetypeeid`: 'CWEType', + 'name:'+`eeetypeeid`: u'CWEType', 'final:'+`eeetypeeid`: False, 'meta:'+`eeetypeeid`: True, 'description:'+`eeetypeeid`: u'users group', 'read_permission:'+`eeetypeeid`: groups, - 'edits-name:'+`eeetypeeid`: u'EEType', + 'edits-name:'+`eeetypeeid`: u'CWEType', 'edits-final:'+`eeetypeeid`: False, 'edits-meta:'+`eeetypeeid`: True, 'edits-description:'+`eeetypeeid`: u'users group', @@ -398,11 +398,11 @@ try: path, params = self.expect_redirect_publish() e = self.execute('Any X WHERE X eid %(x)s', {'x': eeetypeeid}, 'x').get_entity(0, 0) - self.assertEquals(e.name, 'EEType') + self.assertEquals(e.name, 'CWEType') self.assertEquals(sorted(g.eid for g in e.read_permission), groupeids) finally: # restore - self.execute('SET X read_permission Y WHERE X name "EEType", Y eid IN (%s), NOT X read_permission Y' % (','.join(basegroups))) + self.execute('SET X read_permission Y WHERE X name "CWEType", Y eid IN (%s), NOT X read_permission Y' % (','.join(basegroups))) self.commit() def test_nonregr_strange_text_input(self): @@ -424,10 +424,10 @@ def test_nonregr_multiple_empty_email_addr(self): - gueid = self.execute('EGroup G WHERE G name "users"')[0][0] + gueid = self.execute('CWGroup G WHERE G name "users"')[0][0] self.req.form = {'eid': ['X', 'Y'], - '__type:X': 'EUser', + '__type:X': 'CWUser', 'login:X': u'adim', 'edits-login:X': u'', 'upassword:X': u'toto', 'upassword-confirm:X': u'toto', 'edits-upassword:X': u'', 'in_group:X': `gueid`, 'edits-in_group:X': INTERNAL_FIELD_VALUE, @@ -442,14 +442,14 @@ def test_nonregr_copy(self): user = self.user() self.req.form = {'__cloned_eid:X': user.eid, - 'eid': 'X', '__type:X': 'EUser', + 'eid': 'X', '__type:X': 'CWUser', '__maineid' : 'X', 'login:X': u'toto', 'edits-login:X': u'', 'upassword:X': u'toto', 'upassword-confirm:X': u'toto', 'edits-upassword:X': u'', } path, params = self.expect_redirect_publish() self.assertEquals(path, 'euser/toto') - e = self.execute('Any X WHERE X is EUser, X login "toto"').get_entity(0, 0) + e = self.execute('Any X WHERE X is CWUser, X login "toto"').get_entity(0, 0) self.assertEquals(e.login, 'toto') self.assertEquals(e.in_group[0].name, 'managers') @@ -464,7 +464,7 @@ self.execute('SET P use_email E, P primary_email E WHERE P eid %(p)s, E eid %(e)s', {'p' : p.eid, 'e' : e.eid}) self.req.form = {'__cloned_eid:X': p.eid, - 'eid': 'X', '__type:X': 'EUser', + 'eid': 'X', '__type:X': 'CWUser', 'login': u'dodo', 'edits-login': u'dodo', 'surname:X': u'Boom', 'edits-surname:X': u'', '__errorurl' : "whatever but required", @@ -479,7 +479,7 @@ self.req.form['rql'] = 'Any X WHERE X eid %s' % p.eid self.req.form['vid'] = 'copy' self.env.app.publish('view', self.req) - rset = self.execute('EUser P WHERE P surname "Boom"') + rset = self.execute('CWUser P WHERE P surname "Boom"') self.assertEquals(len(rset), 0) finally: p.__class__.skip_copy_for = old_skips @@ -527,7 +527,7 @@ ## tests ################################################################## def test_simple_exec(self): - ctrl = self.ctrl(self.request(rql='EUser P WHERE P login "John"', + ctrl = self.ctrl(self.request(rql='CWUser P WHERE P login "John"', pageid='123')) self.assertTextEquals(ctrl.publish(), xmlize(self.john.view('primary'))) @@ -542,26 +542,26 @@ self.remote_call('tag_entity', self.john.eid, ['python']) self.assertUnorderedIterableEquals([tname for tname, in self.execute('Any N WHERE T is Tag, T name N')], ['python', 'cubicweb']) - self.assertEquals(self.execute('Any N WHERE T tags P, P is EUser, T name N').rows, + self.assertEquals(self.execute('Any N WHERE T tags P, P is CWUser, T name N').rows, [['python']]) def test_remote_add_new_tag(self): self.remote_call('tag_entity', self.john.eid, ['javascript']) self.assertUnorderedIterableEquals([tname for tname, in self.execute('Any N WHERE T is Tag, T name N')], ['python', 'cubicweb', 'javascript']) - self.assertEquals(self.execute('Any N WHERE T tags P, P is EUser, T name N').rows, + self.assertEquals(self.execute('Any N WHERE T tags P, P is CWUser, T name N').rows, [['javascript']]) def test_edit_field(self): - nbusers = len(self.execute('EUser P')) + nbusers = len(self.execute('CWUser P')) eid = self.john.eid self.remote_call('edit_field', 'apply', ('eid', 'firstname:%s' % eid, '__maineid', '__type:%s'% eid, 'edits-firstname:%s' % eid ), - (str(eid), u'Remi', str(eid), 'EUser', self.john.firstname), + (str(eid), u'Remi', str(eid), 'CWUser', self.john.firstname), 'firstname', eid) self.commit() - rset = self.execute('EUser P') + rset = self.execute('CWUser P') # make sure we did not insert a new euser here self.assertEquals(len(rset), nbusers) john = self.execute('Any X WHERE X eid %(x)s', {'x': self.john.eid}, 'x').get_entity(0, 0) diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 web/test/unittest_views_baseforms.py --- a/web/test/unittest_views_baseforms.py Fri Apr 17 13:21:05 2009 +0200 +++ b/web/test/unittest_views_baseforms.py Fri Apr 17 16:55:37 2009 +0200 @@ -49,7 +49,7 @@ self.assertTextEquals(expected, cleanup_text(self._build_creation_form(etype))) def test_base(self): - self._test_view_for('EGroup', '''\ + self._test_view_for('CWGroup', '''\
egroup (creation)
@@ -57,7 +57,7 @@
main informations
- + @@ -88,14 +88,14 @@ def test_with_inline_view(self): activated = self.execute('Any X WHERE X is State, X name "activated"')[0][0] - self._test_view_for('EUser', '''
euser (creation)
validating...
main informations
- + @@ -159,7 +159,7 @@ @@ -179,7 +179,7 @@ def test_redirection_after_creation(self): req = self.request() - req.form['etype'] = 'EUser' + req.form['etype'] = 'CWUser' view = self.vreg.select_view('creation', req, None) self.assertEquals(view.redirect_url(), 'http://testing.fr/cubicweb/euser') req.form['__redirectrql'] = 'Any X WHERE X eid 3012' @@ -229,7 +229,7 @@ def test_cloned_elements_in_copy_form(self): - rset = self.execute('EUser P WHERE P login "Doe"') + rset = self.execute('CWUser P WHERE P login "Doe"') output = self.view('copy', rset) clones = [attrs for _, attrs in output.input_tags if attrs.get('name', '').startswith('__cloned_eid')] diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 web/test/unittest_views_baseviews.py --- a/web/test/unittest_views_baseviews.py Fri Apr 17 13:21:05 2009 +0200 +++ b/web/test/unittest_views_baseviews.py Fri Apr 17 16:55:37 2009 +0200 @@ -39,7 +39,7 @@ def test_more_than_one_entity(self): req = self.request() - rset = self.execute('Any X WHERE X is EUser') + rset = self.execute('Any X WHERE X is CWUser') self.assertEquals(vid_from_rset(req, rset, self.schema), 'list') rset = self.execute('Any X, L WHERE X login L') self.assertEquals(vid_from_rset(req, rset, self.schema), 'list') @@ -58,16 +58,16 @@ req = self.request() rset = self.execute('Any X, COUNT(T) GROUPBY X WHERE X is T') self.assertEquals(vid_from_rset(req, rset, self.schema), 'table') - rset = self.execute('Any MAX(X) WHERE X is EUser') + rset = self.execute('Any MAX(X) WHERE X is CWUser') self.assertEquals(vid_from_rset(req, rset, self.schema), 'table') def test_subquery(self): rset = self.execute( 'DISTINCT Any X,N ORDERBY N ' 'WITH X,N BEING (' -' (DISTINCT Any P,N WHERE P is EUser, P login N)' +' (DISTINCT Any P,N WHERE P is CWUser, P login N)' ' UNION' -' (DISTINCT Any W,N WHERE W is EGroup, W name N))') +' (DISTINCT Any W,N WHERE W is CWGroup, W name N))') req = self.request() self.assertEquals(vid_from_rset(req, rset, self.schema), 'table') diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 web/test/unittest_views_editforms.py --- a/web/test/unittest_views_editforms.py Fri Apr 17 13:21:05 2009 +0200 +++ b/web/test/unittest_views_editforms.py Fri Apr 17 16:55:37 2009 +0200 @@ -9,19 +9,19 @@ class AutomaticEntityFormTC(EnvBasedTC): def test_custom_widget(self): - AEF.rwidgets.set_rtag(AutoCompletionWidget, 'login', 'subject', 'EUser') + AEF.rwidgets.set_rtag(AutoCompletionWidget, 'login', 'subject', 'CWUser') form = self.vreg.select_object('forms', 'edition', self.request(), None, entity=self.user()) field = form.field_by_name('login') self.assertIsInstance(field.widget, AutoCompletionWidget) - AEF.rwidgets.del_rtag('login', 'subject', 'EUser') + AEF.rwidgets.del_rtag('login', 'subject', 'CWUser') def test_euser_relations_by_category(self): #for (rtype, role, stype, otype), tag in AEF.rcategories._tagdefs.items(): # if rtype == 'tags': # print rtype, role, stype, otype, ':', tag - e = self.etype_instance('EUser') + e = self.etype_instance('CWUser') # see custom configuration in views.euser self.assertEquals(rbc(e, 'primary'), [('login', 'subject'), @@ -48,7 +48,7 @@ ('connait', 'subject'), ('checked_by', 'object'), ]) - # owned_by is defined both as subject and object relations on EUser + # owned_by is defined both as subject and object relations on CWUser self.assertListEquals(rbc(e, 'generated'), [('has_text', 'subject'), ('identity', 'subject'), @@ -63,8 +63,8 @@ ]) def test_inlined_view(self): - self.failUnless(AEF.rinlined.etype_rtag('EUser', 'use_email', 'subject')) - self.failIf(AEF.rinlined.etype_rtag('EUser', 'primary_email', 'subject')) + self.failUnless(AEF.rinlined.etype_rtag('CWUser', 'use_email', 'subject')) + self.failIf(AEF.rinlined.etype_rtag('CWUser', 'primary_email', 'subject')) def test_personne_relations_by_category(self): e = self.etype_instance('Personne') @@ -105,7 +105,7 @@ ]) def test_edition_form(self): - rset = self.execute('EUser X LIMIT 1') + rset = self.execute('CWUser X LIMIT 1') form = self.vreg.select_object('forms', 'edition', rset.req, rset, row=0, col=0) # should be also selectable by specifying entity @@ -116,36 +116,36 @@ class FormViewsTC(WebTest): def test_delete_conf_formview(self): - rset = self.execute('EGroup X') + rset = self.execute('CWGroup X') self.view('deleteconf', rset, template=None).source def test_automatic_edition_formview(self): - rset = self.execute('EUser X') + rset = self.execute('CWUser X') self.view('edition', rset, row=0, template=None).source def test_automatic_edition_formview(self): - rset = self.execute('EUser X') + rset = self.execute('CWUser X') self.view('copy', rset, row=0, template=None).source def test_automatic_creation_formview(self): - self.view('creation', None, etype='EUser', template=None).source + self.view('creation', None, etype='CWUser', template=None).source def test_automatic_muledit_formview(self): - rset = self.execute('EUser X') + rset = self.execute('CWUser X') self.view('muledit', rset, template=None).source def test_automatic_reledit_formview(self): - rset = self.execute('EUser X') + rset = self.execute('CWUser X') self.view('reledit', rset, row=0, rtype='login', template=None).source def test_automatic_inline_edit_formview(self): - geid = self.execute('EGroup X LIMIT 1')[0][0] - rset = self.execute('EUser X LIMIT 1') + geid = self.execute('CWGroup X LIMIT 1')[0][0] + rset = self.execute('CWUser X LIMIT 1') self.view('inline-edition', rset, row=0, rtype='in_group', peid=geid, template=None).source def test_automatic_inline_creation_formview(self): - geid = self.execute('EGroup X LIMIT 1')[0][0] - self.view('inline-creation', None, etype='EUser', rtype='in_group', peid=geid, template=None).source + geid = self.execute('CWGroup X LIMIT 1')[0][0] + self.view('inline-creation', None, etype='CWUser', rtype='in_group', peid=geid, template=None).source if __name__ == '__main__': diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 web/test/unittest_views_navigation.py --- a/web/test/unittest_views_navigation.py Fri Apr 17 13:21:05 2009 +0200 +++ b/web/test/unittest_views_navigation.py Fri Apr 17 16:55:37 2009 +0200 @@ -53,7 +53,7 @@ rset = self.execute('Any RDEF ORDERBY RDEF WHERE RDEF relation_type RT') navcomp = self.vreg.select_component('navigation', req, rset) html = navcomp.dispatch() - rset = self.execute('EFRDef RDEF ORDERBY RDEF') + rset = self.execute('CWAttribute RDEF ORDERBY RDEF') navcomp = self.vreg.select_component('navigation', req, rset) html = navcomp.dispatch() rset = self.execute('Any RDEF ORDERBY N WHERE RDEF relation_type RT, RT name N') @@ -69,7 +69,7 @@ def test_component_context(self): view = mock_object(is_primary=lambda x: True) - rset = self.execute('EUser X LIMIT 1') + rset = self.execute('CWUser X LIMIT 1') req = self.request() objs = self.vreg.possible_vobjects('contentnavigation', req, rset, view=view, context='navtop') @@ -81,7 +81,7 @@ # breadcrumbs should _NOT_ be in footers by default clsids = set(obj.id for obj in objs) self.failIf('breadcrumbs' in clsids) - self.execute('INSERT EProperty P: P pkey "contentnavigation.breadcrumbs.context", ' + self.execute('INSERT CWProperty P: P pkey "contentnavigation.breadcrumbs.context", ' 'P value "navbottom"') # breadcrumbs should now be in footers req.cnx.commit() diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 web/test/unittest_views_searchrestriction.py --- a/web/test/unittest_views_searchrestriction.py Fri Apr 17 13:21:05 2009 +0200 +++ b/web/test/unittest_views_searchrestriction.py Fri Apr 17 16:55:37 2009 +0200 @@ -28,25 +28,25 @@ def test_1(self): self.assertEquals(self._generate(self.select, 'in_state', 'subject', 'name'), "DISTINCT Any A,C ORDERBY C WHERE B in_group P, P name 'managers', " - "B in_state A, A name C, B is EUser") + "B in_state A, A name C, B is CWUser") def test_2(self): self.assertEquals(self._generate(self.select, 'tags', 'object', 'name'), "DISTINCT Any A,C ORDERBY C WHERE B in_group P, P name 'managers', " - "A tags B, A name C, B is EUser") + "A tags B, A name C, B is CWUser") def test_3(self): self.assertEquals(self._generate(self.select, 'created_by', 'subject', 'login'), "DISTINCT Any A,C ORDERBY C WHERE B in_group P, P name 'managers', " - "B created_by A, A login C, B is EUser") + "B created_by A, A login C, B is CWUser") def test_4(self): - self.assertEquals(self._generate(self.parse('Any X WHERE X is EUser'), 'created_by', 'subject', 'login'), - "DISTINCT Any A,B ORDERBY B WHERE X is EUser, X created_by A, A login B") + self.assertEquals(self._generate(self.parse('Any X WHERE X is CWUser'), 'created_by', 'subject', 'login'), + "DISTINCT Any A,B ORDERBY B WHERE X is CWUser, X created_by A, A login B") def test_5(self): - self.assertEquals(self._generate(self.parse('Any X,L WHERE X is EUser, X login L'), 'created_by', 'subject', 'login'), - "DISTINCT Any A,B ORDERBY B WHERE X is EUser, X created_by A, A login B") + self.assertEquals(self._generate(self.parse('Any X,L WHERE X is CWUser, X login L'), 'created_by', 'subject', 'login'), + "DISTINCT Any A,B ORDERBY B WHERE X is CWUser, X created_by A, A login B") def test_nonregr1(self): select = self.parse('Any T,V WHERE T bookmarked_by V?, ' @@ -57,14 +57,14 @@ def test_nonregr2(self): #'DISTINCT Any X,TMP,N WHERE P name TMP, X version_of P, P is Project, X is Version, not X in_state S,S name "published", X num N ORDERBY TMP,N' - select = self.parse('DISTINCT Any V,TN,L ORDERBY TN,L WHERE T nom TN, V connait T, T is Personne, V is EUser,' + select = self.parse('DISTINCT Any V,TN,L ORDERBY TN,L WHERE T nom TN, V connait T, T is Personne, V is CWUser,' 'NOT V in_state VS, VS name "published", V login L') rschema = self.schema['connait'] for s, o in rschema.iter_rdefs(): rschema.set_rproperty(s, o, 'cardinality', '++') try: self.assertEquals(self._generate(select, 'in_state', 'subject', 'name'), - "DISTINCT Any A,B ORDERBY B WHERE V is EUser, " + "DISTINCT Any A,B ORDERBY B WHERE V is CWUser, " "NOT V in_state VS, VS name 'published', " "V in_state A, A name B") finally: @@ -73,9 +73,9 @@ def test_nonregr3(self): #'DISTINCT Any X,TMP,N WHERE P name TMP, X version_of P, P is Project, X is Version, not X in_state S,S name "published", X num N ORDERBY TMP,N' - select = self.parse('DISTINCT Any X, MAX(Y) GROUPBY X WHERE X is EUser, Y is Bookmark, X in_group A') + select = self.parse('DISTINCT Any X, MAX(Y) GROUPBY X WHERE X is CWUser, Y is Bookmark, X in_group A') self.assertEquals(self._generate(select, 'in_group', 'subject', 'name'), - "DISTINCT Any B,C ORDERBY C WHERE X is EUser, X in_group B, B name C") + "DISTINCT Any B,C ORDERBY C WHERE X is CWUser, X in_group B, B name C") if __name__ == '__main__': diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 web/test/unittest_viewselector.py --- a/web/test/unittest_viewselector.py Fri Apr 17 13:21:05 2009 +0200 +++ b/web/test/unittest_viewselector.py Fri Apr 17 16:55:37 2009 +0200 @@ -80,7 +80,7 @@ []) def test_possible_views_one_egroup(self): - rset, req = self.env.get_rset_and_req('EGroup X WHERE X name "managers"') + rset, req = self.env.get_rset_and_req('CWGroup X WHERE X name "managers"') self.assertListEqual(self.pviews(req, rset), [('csvexport', baseviews.CSVRsetView), ('ecsvexport', baseviews.CSVEntityView), @@ -102,7 +102,7 @@ ]) def test_possible_views_multiple_egroups(self): - rset, req = self.env.get_rset_and_req('EGroup X') + rset, req = self.env.get_rset_and_req('CWGroup X') self.assertListEqual(self.pviews(req, rset), [('csvexport', baseviews.CSVRsetView), ('ecsvexport', baseviews.CSVEntityView), @@ -155,7 +155,7 @@ ]) def test_possible_views_multiple_eusers(self): - rset, req = self.env.get_rset_and_req('EUser X') + rset, req = self.env.get_rset_and_req('CWUser X') self.assertListEqual(self.pviews(req, rset), [('csvexport', baseviews.CSVRsetView), ('ecsvexport', baseviews.CSVEntityView), @@ -165,7 +165,7 @@ ('list', baseviews.ListView), ('oneline', baseviews.OneLineView), ('owlabox', owl.OWLABOXView), - ('primary', euser.EUserPrimaryView), + ('primary', euser.CWUserPrimaryView), ('rsetxml', baseviews.XMLRsetView), ('rss', baseviews.RssView), ('secondary', baseviews.SecondaryView), @@ -173,7 +173,7 @@ ('table', tableview.TableView), ('text', baseviews.TextView), ('treeview', treeview.TreeView), - ('vcard', vcard.VCardEUserView), + ('vcard', vcard.VCardCWUserView), ('xbel', xbel.XbelView), ('xml', baseviews.XmlView), ]) @@ -193,7 +193,7 @@ }) def test_possible_actions_same_type_entities(self): - rset, req = self.env.get_rset_and_req('EGroup X') + rset, req = self.env.get_rset_and_req('CWGroup X') self.assertDictEqual(self.pactions(req, rset), {'useractions': USERACTIONS, 'siteactions': SITEACTIONS, @@ -217,7 +217,7 @@ 'siteactions': SITEACTIONS}) def test_possible_actions_eetype_euser_entity(self): - rset, req = self.env.get_rset_and_req('EEType X WHERE X name "EUser"') + rset, req = self.env.get_rset_and_req('CWEType X WHERE X name "CWUser"') self.assertDictEqual(self.pactions(req, rset), {'useractions': USERACTIONS, 'siteactions': SITEACTIONS, @@ -233,17 +233,17 @@ rset = None req = self.request() # creation form - req.form['etype'] = 'EGroup' + req.form['etype'] = 'CWGroup' self.assertIsInstance(self.vreg.select_view('creation', req, rset), baseforms.CreationForm) del req.form['etype'] # custom creation form - class EUserCreationForm(baseforms.CreationForm): - __select__ = specified_etype_implements('EUser') - self.vreg.register_vobject_class(EUserCreationForm) - req.form['etype'] = 'EUser' + class CWUserCreationForm(baseforms.CreationForm): + __select__ = specified_etype_implements('CWUser') + self.vreg.register_vobject_class(CWUserCreationForm) + req.form['etype'] = 'CWUser' self.assertIsInstance(self.vreg.select_view('creation', req, rset), - EUserCreationForm) + CWUserCreationForm) def test_select_view(self): # no entity @@ -267,7 +267,7 @@ self.failUnlessRaises(NoSelectableObject, self.vreg.select_view, 'table', req, rset) # one entity - rset, req = self.env.get_rset_and_req('EGroup X WHERE X name "managers"') + rset, req = self.env.get_rset_and_req('CWGroup X WHERE X name "managers"') self.assertIsInstance(self.vreg.select_view('primary', req, rset), baseviews.PrimaryView) self.assertIsInstance(self.vreg.select_view('list', req, rset), @@ -281,7 +281,7 @@ self.failUnlessRaises(NoSelectableObject, self.vreg.select_view, 'index', req, rset) # list of entities of the same type - rset, req = self.env.get_rset_and_req('EGroup X') + rset, req = self.env.get_rset_and_req('CWGroup X') self.assertIsInstance(self.vreg.select_view('primary', req, rset), baseviews.PrimaryView) self.assertIsInstance(self.vreg.select_view('list', req, rset), @@ -317,7 +317,7 @@ self.failUnlessRaises(NoSelectableObject, self.vreg.select_view, 'edition', req, rset) # mixed query - rset, req = self.env.get_rset_and_req('Any U,G WHERE U is EUser, G is EGroup') + rset, req = self.env.get_rset_and_req('Any U,G WHERE U is CWUser, G is CWGroup') self.failUnlessRaises(NoSelectableObject, self.vreg.select_view, 'edition', req, rset) self.failUnlessRaises(NoSelectableObject, @@ -325,9 +325,9 @@ self.assertIsInstance(self.vreg.select_view('table', req, rset), tableview.TableView) # euser primary view priority - rset, req = self.env.get_rset_and_req('EUser X WHERE X login "admin"') + rset, req = self.env.get_rset_and_req('CWUser X WHERE X login "admin"') self.assertIsInstance(self.vreg.select_view('primary', req, rset), - euser.EUserPrimaryView) + euser.CWUserPrimaryView) self.assertIsInstance(self.vreg.select_view('text', req, rset), baseviews.TextView) @@ -367,9 +367,9 @@ def test_form(self): for vid, rql, args in ( #('creation', 'Any X WHERE X eid 999999', {}), - ('edition', 'EGroup X WHERE X name "managers"', {}), - ('copy', 'EGroup X WHERE X name "managers"', {}), - ('muledit', 'EGroup X', {}), + ('edition', 'CWGroup X WHERE X name "managers"', {}), + ('copy', 'CWGroup X WHERE X name "managers"', {}), + ('muledit', 'CWGroup X', {}), #('muledit', 'Any X', {}), ): self._test_view(vid, rql, args) @@ -405,7 +405,7 @@ self.create_user('john') self.login('john') # it should not be possible to use SomeAction not owned objects - rset, req = self.env.get_rset_and_req('Any G WHERE G is EGroup, G name "managers"') + rset, req = self.env.get_rset_and_req('Any G WHERE G is CWGroup, G name "managers"') self.failIf('foo' in self.pactions(req, rset)) # insert a new card, and check that we can use SomeAction on our object self.execute('INSERT Card C: C title "zoubidou"') @@ -420,33 +420,33 @@ del self.vreg[SomeAction.__registry__][SomeAction.id] -class EETypeRQLAction(Action): +class CWETypeRQLAction(Action): id = 'testaction' - __select__ = implements('EEType') & rql_condition('X name "EEType"') + __select__ = implements('CWEType') & rql_condition('X name "CWEType"') title = 'bla' class RQLActionTC(ViewSelectorTC): def setUp(self): super(RQLActionTC, self).setUp() - self.vreg.register_vobject_class(EETypeRQLAction) + self.vreg.register_vobject_class(CWETypeRQLAction) def tearDown(self): super(RQLActionTC, self).tearDown() del self.vreg._registries['actions']['testaction'] def test(self): - rset, req = self.env.get_rset_and_req('EEType X WHERE X name "EEType"') + rset, req = self.env.get_rset_and_req('CWEType X WHERE X name "CWEType"') self.assertDictEqual(self.pactions(req, rset), {'useractions': USERACTIONS, 'siteactions': SITEACTIONS, 'mainactions': [('edit', actions.ModifyAction)], 'moreactions': [('delete', actions.DeleteAction), ('copy', actions.CopyAction), - ('testaction', EETypeRQLAction), + ('testaction', CWETypeRQLAction), ('managepermission', actions.ManagePermissionsAction)], }) - rset, req = self.env.get_rset_and_req('EEType X WHERE X name "ERType"') + rset, req = self.env.get_rset_and_req('CWEType X WHERE X name "CWRType"') self.assertDictEqual(self.pactions(req, rset), {'useractions': USERACTIONS, 'siteactions': SITEACTIONS, diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 web/test/unittest_widgets.py --- a/web/test/unittest_widgets.py Fri Apr 17 13:21:05 2009 +0200 +++ b/web/test/unittest_widgets.py Fri Apr 17 16:55:37 2009 +0200 @@ -32,7 +32,7 @@ u'') def test_textarea_widget(self): - self.add_entity('EProperty', pkey=u'ui.fckeditor', value=u'') + self.add_entity('CWProperty', pkey=u'ui.fckeditor', value=u'') self.commit() w = self.get_widget('State', 'description', 'String') self.assertEquals(w.name, 'description') @@ -58,7 +58,7 @@
''' % tal_format) def test_textarea_widget_previous_value(self): - self.add_entity('EProperty', pkey=u'ui.fckeditor', value=u'') + self.add_entity('CWProperty', pkey=u'ui.fckeditor', value=u'') self.commit() w = self.get_widget('State', 'description', 'String') req = self.request() @@ -284,11 +284,11 @@ def test_password_widget(self): - w = self.get_widget('EUser', 'upassword', 'Password') + w = self.get_widget('CWUser', 'upassword', 'Password') self.assertEquals(w.name, 'upassword') self.assertEquals(w.render_example(self.request()), '') self.assertDictEquals(w.attrs, {'accesskey': 'u'}) - entity = self.etype_instance('EUser') + entity = self.etype_instance('CWUser') entity.eid = 'X' self.assertEquals(w.required(entity), True) self.assertEquals(w.render(entity), '') diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 web/views/actions.py --- a/web/views/actions.py Fri Apr 17 13:21:05 2009 +0200 +++ b/web/views/actions.py Fri Apr 17 16:55:37 2009 +0200 @@ -162,7 +162,7 @@ if 'require_permission' in vreg.schema: cls.__select__ = (one_line_rset() & non_final_entity() & (match_user_groups('managers') - | relation_possible('require_permission', 'subject', 'EPermission', + | relation_possible('require_permission', 'subject', 'CWPermission', action='add'))) return super(ManagePermissionsAction, cls).registered(vreg) diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 web/views/basecontrollers.py --- a/web/views/basecontrollers.py Fri Apr 17 13:21:05 2009 +0200 +++ b/web/views/basecontrollers.py Fri Apr 17 16:55:37 2009 +0200 @@ -387,8 +387,8 @@ return self.req.external_resource(resource) def js_prop_widget(self, propkey, varname, tabindex=None): - """specific method for EProperty handling""" - entity = self.vreg.etype_class('EProperty')(self.req, None, None) + """specific method for CWProperty handling""" + entity = self.vreg.etype_class('CWProperty')(self.req, None, None) entity.eid = varname entity['pkey'] = propkey form = self.vreg.select_object('forms', 'edition', self.req, None, diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 web/views/calendar.py --- a/web/views/calendar.py Fri Apr 17 13:21:05 2009 +0200 +++ b/web/views/calendar.py Fri Apr 17 16:55:37 2009 +0200 @@ -155,7 +155,7 @@ task_max = 0 for row in xrange(self.rset.rowcount): task = self.rset.get_entity(row, 0) - if len(self.rset[row]) > 1 and self.rset.description[row][1] == 'EUser': + if len(self.rset[row]) > 1 and self.rset.description[row][1] == 'CWUser': user = self.rset.get_entity(row, 1) else: user = None diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 web/views/eproperties.py --- a/web/views/eproperties.py Fri Apr 17 13:21:05 2009 +0200 +++ b/web/views/eproperties.py Fri Apr 17 16:55:37 2009 +0200 @@ -1,4 +1,4 @@ -"""Specific views for EProperty +"""Specific views for CWProperty :organization: Logilab :copyright: 2007-2009 LOGILAB S.A. (Paris, FRANCE), all rights reserved. @@ -45,8 +45,8 @@ return someclass and 'class="%s"' % someclass or '' -class EPropertyPrimaryView(baseviews.PrimaryView): - __select__ = implements('EProperty') +class CWPropertyPrimaryView(baseviews.PrimaryView): + __select__ = implements('CWProperty') skip_none = False @@ -141,7 +141,7 @@ @property @cached def eprops_rset(self): - return self.req.execute('Any P,K,V WHERE P is EProperty, P pkey K, ' + return self.req.execute('Any P,K,V WHERE P is CWProperty, P pkey K, ' 'P value V, NOT P for_user U') @property @@ -156,7 +156,7 @@ if key in values: entity = self.eprops_rset.get_entity(values[key], 0) else: - entity = self.vreg.etype_class('EProperty')(self.req, None, None) + entity = self.vreg.etype_class('CWProperty')(self.req, None, None) entity.eid = self.req.varmaker.next() entity['pkey'] = key entity['value'] = self.vreg.property_value(key) @@ -216,7 +216,7 @@ @property @cached def eprops_rset(self): - return self.req.execute('Any P,K,V WHERE P is EProperty, P pkey K, P value V,' + return self.req.execute('Any P,K,V WHERE P is CWProperty, P pkey K, P value V,' 'P for_user U, U eid %(x)s', {'x': self.user.eid}) def form_row(self, form, key, splitlabel): @@ -253,7 +253,7 @@ class PropertyKeyField(StringField): - """specific field for EProperty.pkey to set the value widget according to + """specific field for CWProperty.pkey to set the value widget according to the selected key """ widget = Select @@ -276,7 +276,7 @@ class PropertyValueField(StringField): - """specific field for EProperty.value which will be different according to + """specific field for CWProperty.value which will be different according to the selected key type and vocabulary information """ widget = PlaceHolderWidget @@ -305,7 +305,7 @@ msg = form.req._('value associated to this key is not editable ' 'manually') self.widget = NotEditableWidget(entity.printable_value('value'), msg) - # XXX race condition when used from EPropertyForm, should not rely on + # XXX race condition when used from CWPropertyForm, should not rely on # instance attributes self.initial = pdef['default'] self.help = pdef['help'] @@ -325,6 +325,6 @@ wdg.attrs.setdefault('size', 3) self.widget = wdg -uicfg.rfields.set_rtag(PropertyKeyField, 'pkey', 'subject', 'EProperty') -uicfg.rfields.set_rtag(PropertyValueField, 'value', 'subject', 'EProperty') +uicfg.rfields.set_rtag(PropertyKeyField, 'pkey', 'subject', 'CWProperty') +uicfg.rfields.set_rtag(PropertyValueField, 'value', 'subject', 'CWProperty') diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 web/views/euser.py --- a/web/views/euser.py Fri Apr 17 13:21:05 2009 +0200 +++ b/web/views/euser.py Fri Apr 17 16:55:37 2009 +0200 @@ -14,23 +14,23 @@ from cubicweb.web.views.baseviews import PrimaryView -uicfg.rcategories.set_rtag('secondary', 'firstname', 'subject', 'EUser') -uicfg.rcategories.set_rtag('secondary', 'surname', 'subject', 'EUser') -uicfg.rcategories.set_rtag('metadata', 'last_login_time', 'subject', 'EUser') -uicfg.rcategories.set_rtag('primary', 'in_group', 'subject', 'EUser') -uicfg.rcategories.set_rtag('generated', 'owned_by', 'object', otype='EUser') -uicfg.rcategories.set_rtag('generated', 'created_by', 'object', otype='EUser') -uicfg.rcategories.set_rtag('metadata', 'bookmarked_by', 'object', otype='EUser') -uicfg.rinlined.set_rtag(True, 'use_email', 'subject', 'EUser') -uicfg.rmode.set_rtag('create', 'in_group', 'subject', 'EGroup') -uicfg.rmode.set_rtag('link', 'owned_by', 'object', 'EUser') -uicfg.rmode.set_rtag('link', 'created_by', 'object', 'EUser') -uicfg.rmode.set_rtag('create', 'bookmarked_by', 'object', 'EUser') +uicfg.rcategories.set_rtag('secondary', 'firstname', 'subject', 'CWUser') +uicfg.rcategories.set_rtag('secondary', 'surname', 'subject', 'CWUser') +uicfg.rcategories.set_rtag('metadata', 'last_login_time', 'subject', 'CWUser') +uicfg.rcategories.set_rtag('primary', 'in_group', 'subject', 'CWUser') +uicfg.rcategories.set_rtag('generated', 'owned_by', 'object', otype='CWUser') +uicfg.rcategories.set_rtag('generated', 'created_by', 'object', otype='CWUser') +uicfg.rcategories.set_rtag('metadata', 'bookmarked_by', 'object', otype='CWUser') +uicfg.rinlined.set_rtag(True, 'use_email', 'subject', 'CWUser') +uicfg.rmode.set_rtag('create', 'in_group', 'subject', 'CWGroup') +uicfg.rmode.set_rtag('link', 'owned_by', 'object', 'CWUser') +uicfg.rmode.set_rtag('link', 'created_by', 'object', 'CWUser') +uicfg.rmode.set_rtag('create', 'bookmarked_by', 'object', 'CWUser') class UserPreferencesEntityAction(action.Action): id = 'prefs' - __select__ = (one_line_rset() & implements('EUser') & + __select__ = (one_line_rset() & implements('CWUser') & match_user_groups('owners', 'managers')) title = _('preferences') @@ -41,14 +41,14 @@ return self.build_url('euser/%s'%login, vid='epropertiesform') -class EUserPrimaryView(PrimaryView): - __select__ = implements('EUser') +class CWUserPrimaryView(PrimaryView): + __select__ = implements('CWUser') skip_attrs = ('firstname', 'surname') def iter_relations(self, entity): # don't want to display user's entities - for rschema, targetschemas, x in super(EUserPrimaryView, self).iter_relations(entity): + for rschema, targetschemas, x in super(CWUserPrimaryView, self).iter_relations(entity): if x == 'object' and rschema.type in ('owned_by', 'for_user'): continue yield rschema, targetschemas, x @@ -63,7 +63,7 @@ ] class FoafView(EntityView): id = 'foaf' - __select__ = implements('EUser') + __select__ = implements('CWUser') title = _('foaf') templatable = False @@ -96,3 +96,6 @@ if emailaddr: self.w(u'%s\n' % html_escape(emailaddr)) self.w(u'\n') + +from logilab.common.deprecation import class_renamed +EUserPrimaryView = class_renamed('EUserPrimaryView', CWUserPrimaryView) diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 web/views/management.py --- a/web/views/management.py Fri Apr 17 13:21:05 2009 +0200 +++ b/web/views/management.py Fri Apr 17 16:55:37 2009 +0200 @@ -144,7 +144,7 @@ def require_permission_edit_form(self, entity): w = self.w _ = self.req._ - newperm = self.vreg.etype_class('EPermission')(self.req, None) + newperm = self.vreg.etype_class('CWPermission')(self.req, None) newperm.eid = self.req.varmaker.next() w(u'

%s

' % _('add a new permission')) begin_form(w, newperm, 'security', entity.rest_path()) @@ -156,7 +156,7 @@ w(u'%s%s%s \n' % (_("name"), _("label"), _('granted to groups'))) if getattr(entity, '__permissions__', None): - wdg = StaticComboBoxWidget(self.vreg, self.schema['EPermission'], + wdg = StaticComboBoxWidget(self.vreg, self.schema['CWPermission'], self.schema['name'], self.schema['String'], vocabfunc=lambda x: entity.__permissions__) else: diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 web/views/schema.py --- a/web/views/schema.py Fri Apr 17 13:21:05 2009 +0200 +++ b/web/views/schema.py Fri Apr 17 16:55:37 2009 +0200 @@ -22,19 +22,19 @@ from cubicweb.web.views.boxes import EditBox -AutomaticEntityForm.rcategories.set_rtag('primary', 'require_group', 'subject', 'EPermission') +AutomaticEntityForm.rcategories.set_rtag('primary', 'require_group', 'subject', 'CWPermission') AutomaticEntityForm.rcategories.set_rtag('generated', 'final', 'subject', 'EEtype') AutomaticEntityForm.rcategories.set_rtag('generated', 'final', 'subject', 'ERtype') -AutomaticEntityForm.rinlined.set_rtag(True, 'relation_type', 'subject', 'ENFRDef') -AutomaticEntityForm.rinlined.set_rtag(True, 'from_entity', 'subject', 'ENFRDef') -AutomaticEntityForm.rinlined.set_rtag(True, 'to_entity', 'subject', 'ENFRDef') +AutomaticEntityForm.rinlined.set_rtag(True, 'relation_type', 'subject', 'CWRelation') +AutomaticEntityForm.rinlined.set_rtag(True, 'from_entity', 'subject', 'CWRelation') +AutomaticEntityForm.rinlined.set_rtag(True, 'to_entity', 'subject', 'CWRelation') AutomaticEntityForm.rwidgets.set_rtag('StringWidget', 'expression', 'subject', 'RQLExpression') -EditBox.rmode.set_rtag('create', 'state_of', 'object', 'EEType') -EditBox.rmode.set_rtag('create', 'transition_of', 'object', 'EEType') -EditBox.rmode.set_rtag('create', 'relation_type', 'object', 'ERType') -EditBox.rmode.set_rtag('link', 'from_entity', 'object', 'EEType') -EditBox.rmode.set_rtag('link', 'to_entity', 'object', 'EEType') +EditBox.rmode.set_rtag('create', 'state_of', 'object', 'CWEType') +EditBox.rmode.set_rtag('create', 'transition_of', 'object', 'CWEType') +EditBox.rmode.set_rtag('create', 'relation_type', 'object', 'CWRType') +EditBox.rmode.set_rtag('link', 'from_entity', 'object', 'CWEType') +EditBox.rmode.set_rtag('link', 'to_entity', 'object', 'CWEType') class ViewSchemaAction(Action): @@ -58,35 +58,35 @@ def content_title(self, entity): return html_escape(entity.dc_long_title()) -class EETypePrimaryView(_SchemaEntityPrimaryView): - __select__ = implements('EEType') +class CWETypePrimaryView(_SchemaEntityPrimaryView): + __select__ = implements('CWEType') skip_attrs = _SchemaEntityPrimaryView.skip_attrs + ('name', 'meta', 'final') -class ERTypePrimaryView(_SchemaEntityPrimaryView): - __select__ = implements('ERType') +class CWRTypePrimaryView(_SchemaEntityPrimaryView): + __select__ = implements('CWRType') skip_attrs = _SchemaEntityPrimaryView.skip_attrs + ('name', 'meta', 'final', 'symetric', 'inlined') class ErdefPrimaryView(_SchemaEntityPrimaryView): - __select__ = implements('EFRDef', 'ENFRDef') + __select__ = implements('CWAttribute', 'CWRelation') show_attr_label = True -class EETypeOneLineView(baseviews.OneLineView): - __select__ = implements('EEType') +class CWETypeOneLineView(baseviews.OneLineView): + __select__ = implements('CWEType') def cell_call(self, row, col, **kwargs): entity = self.entity(row, col) final = entity.final if final: self.w(u'') - super(EETypeOneLineView, self).cell_call(row, col, **kwargs) + super(CWETypeOneLineView, self).cell_call(row, col, **kwargs) if final: self.w(u'') # in memory schema views (yams class instances) ############################### -class EETypeSchemaView(EETypePrimaryView): +class CWETypeSchemaView(CWETypePrimaryView): id = 'eschema' title = _('in memory entity schema') main_related_section = False @@ -94,7 +94,7 @@ 'has_text',) def render_entity_attributes(self, entity, siderelations): - super(EETypeSchemaView, self).render_entity_attributes(entity, siderelations) + super(CWETypeSchemaView, self).render_entity_attributes(entity, siderelations) eschema = self.vreg.schema.eschema(entity.name) viewer = SchemaViewer(self.req) layout = viewer.visit_entityschema(eschema, skiprels=self.skip_rels) @@ -105,13 +105,13 @@ html_escape(self.req._('graphical schema for %s') % entity.name))) -class ERTypeSchemaView(ERTypePrimaryView): +class CWRTypeSchemaView(CWRTypePrimaryView): id = 'eschema' title = _('in memory relation schema') main_related_section = False def render_entity_attributes(self, entity, siderelations): - super(ERTypeSchemaView, self).render_entity_attributes(entity, siderelations) + super(CWRTypeSchemaView, self).render_entity_attributes(entity, siderelations) rschema = self.vreg.schema.rschema(entity.name) viewer = SchemaViewer(self.req) layout = viewer.visit_relationschema(rschema) @@ -125,7 +125,7 @@ # schema images ############################################################### class ImageView(EntityView): - __select__ = implements('EEType') + __select__ = implements('CWEType') id = 'image' title = _('image') @@ -210,10 +210,10 @@ s2d.schema2dot(outputfile=tmpfile, visitor=visitor, prophdlr=RestrictedSchemaDotPropsHandler(self.req)) -class EETypeSchemaImageView(TmpFileViewMixin, EntityView): +class CWETypeSchemaImageView(TmpFileViewMixin, EntityView): id = 'eschemagraph' content_type = 'image/png' - __select__ = implements('EEType') + __select__ = implements('CWEType') skip_rels = ('owned_by', 'created_by', 'identity', 'is', 'is_instance_of') def _generate(self, tmpfile): @@ -224,8 +224,8 @@ s2d.schema2dot(outputfile=tmpfile, visitor=visitor, prophdlr=RestrictedSchemaDotPropsHandler(self.req)) -class ERTypeSchemaImageView(EETypeSchemaImageView): - __select__ = implements('ERType') +class CWRTypeSchemaImageView(CWETypeSchemaImageView): + __select__ = implements('CWRType') def _generate(self, tmpfile): """display schema information for an entity""" diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 web/views/startup.py --- a/web/views/startup.py Fri Apr 17 13:21:05 2009 +0200 +++ b/web/views/startup.py Fri Apr 17 16:55:37 2009 +0200 @@ -92,7 +92,7 @@ self.w(u'%s\n' % self.req._('system entities')) self.entity_types_table(eschema for eschema in schema.entities() if eschema.meta and not eschema.schema_entity()) - if 'EFRDef' in schema: # check schema support + if 'CWAttribute' in schema: # check schema support self.w(u'%s\n' % self.req._('schema entities')) self.entity_types_table(schema.eschema(etype) for etype in schema.schema_entity_types()) diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 web/views/urlrewrite.py --- a/web/views/urlrewrite.py Fri Apr 17 13:21:05 2009 +0200 +++ b/web/views/urlrewrite.py Fri Apr 17 16:55:37 2009 +0200 @@ -80,7 +80,7 @@ ('/manage', dict(vid='manage')), ('/notfound', dict(vid='404')), ('/error', dict(vid='error')), - (rgx('/schema/([^/]+?)/?'), dict(vid='eschema', rql=r'Any X WHERE X is EEType, X name "\1"')), + (rgx('/schema/([^/]+?)/?'), dict(vid='eschema', rql=r'Any X WHERE X is CWEType, X name "\1"')), (rgx('/add/([^/]+?)/?'), dict(vid='creation', etype=r'\1')), (rgx('/doc/images/(.+?)/?'), dict(vid='wdocimages', fid=r'\1')), (rgx('/doc/?'), dict(vid='wdoc', fid=r'main')), diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 web/views/vcard.py --- a/web/views/vcard.py Fri Apr 17 13:21:05 2009 +0200 +++ b/web/views/vcard.py Fri Apr 17 16:55:37 2009 +0200 @@ -13,13 +13,13 @@ VCARD_PHONE_TYPES = {'home': 'HOME', 'office': 'WORK', 'mobile': 'CELL', 'fax': 'FAX'} -class VCardEUserView(EntityView): +class VCardCWUserView(EntityView): """export a person information as a vcard""" id = 'vcard' title = _('vcard') templatable = False content_type = 'text/x-vcard' - __select__ = implements('EUser') + __select__ = implements('CWUser') def set_request_content_type(self): """overriden to set a .vcf filename""" @@ -49,4 +49,4 @@ w(u'EMAIL;TYPE=INTERNET:%s\n' % email.address) from logilab.common.deprecation import class_renamed -VCardEuserView = class_renamed('VCardEuserView', VCardEUserView) +VCardEuserView = class_renamed('VCardEuserView', VCardCWUserView) diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 web/views/workflow.py --- a/web/views/workflow.py Fri Apr 17 13:21:05 2009 +0200 +++ b/web/views/workflow.py Fri Apr 17 16:55:37 2009 +0200 @@ -86,12 +86,12 @@ rql = ' ORDERBY D DESC WHERE WF wf_info_for X,'\ 'WF from_state FS, WF to_state TS, WF comment C,'\ 'WF creation_date D' - if self.vreg.schema.eschema('EUser').has_perm(self.req, 'read'): + if self.vreg.schema.eschema('CWUser').has_perm(self.req, 'read'): sel += ',U,C' rql += ', WF owned_by U?' displaycols = range(5) headers = (_('from_state'), _('to_state'), _('comment'), _('date'), - _('EUser')) + _('CWUser')) else: sel += ',C' displaycols = range(4) @@ -130,7 +130,7 @@ class ViewWorkflowAction(action.Action): id = 'workflow' - __select__ = implements('EEType') & has_related_entities('state_of', 'object') + __select__ = implements('CWEType') & has_related_entities('state_of', 'object') category = 'mainactions' title = _('view workflow') @@ -139,9 +139,9 @@ return entity.absolute_url(vid='workflow') -class EETypeWorkflowView(view.EntityView): +class CWETypeWorkflowView(view.EntityView): id = 'workflow' - __select__ = implements('EEType') + __select__ = implements('CWEType') cache_max_age = 60*60*2 # stay in http cache for 2 hours by default def cell_call(self, row, col, **kwargs): @@ -205,10 +205,10 @@ yield transition.eid, transition.destination().eid, transition -class EETypeWorkflowImageView(TmpFileViewMixin, view.EntityView): +class CWETypeWorkflowImageView(TmpFileViewMixin, view.EntityView): id = 'ewfgraph' content_type = 'image/png' - __select__ = implements('EEType') + __select__ = implements('CWEType') def _generate(self, tmpfile): """display schema information for an entity""" diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 web/wdoc/tut_rql_en.rst --- a/web/wdoc/tut_rql_en.rst Fri Apr 17 13:21:05 2009 +0200 +++ b/web/wdoc/tut_rql_en.rst Fri Apr 17 16:55:37 2009 +0200 @@ -127,16 +127,16 @@ * `creation_date (Datetime)`, date on which the entity has been created * `modification_date (Datetime)`, lastest date on which the entity has been modified -* `created_by (EUser)`, relation to the user which has created this entity +* `created_by (CWUser)`, relation to the user which has created this entity -* `owned_by (EUser)`, relation to the user()s considered as owner of this +* `owned_by (CWUser)`, relation to the user()s considered as owner of this entity, the entity's creator by default * `is (Eetype)`, special relation to specify a variable type. A user's entity has the following schema: -:EUser: +:CWUser: :: login (String) not null diff -r 6cbc7bc8ea6d -r 5fe84a5f7035 web/wdoc/tut_rql_fr.rst --- a/web/wdoc/tut_rql_fr.rst Fri Apr 17 13:21:05 2009 +0200 +++ b/web/wdoc/tut_rql_fr.rst Fri Apr 17 16:55:37 2009 +0200 @@ -134,9 +134,9 @@ * `creation_date (Datetime)`, date de création de l'entité * `modification_date (Datetime)`, date de dernière modification de l'entité -* `created_by (EUser)`, relation vers l'utilisateur ayant créé l'entité +* `created_by (CWUser)`, relation vers l'utilisateur ayant créé l'entité -* `owned_by (EUser)`, relation vers le où les utilisateurs considérés comme +* `owned_by (CWUser)`, relation vers le où les utilisateurs considérés comme propriétaire de l'entité, par défaut le créateur de l'entité * `is (Eetype)`, relation spéciale permettant de spécifier le @@ -144,7 +144,7 @@ Enfin, le schéma standard d'un utilisateur est le suivant : -:EUser: +:CWUser: :: login (String, obligatoire)