# HG changeset patch # User sylvain.thenault@logilab.fr # Date 1241536410 -7200 # Node ID 7ff9f0726ee47ca3cde3d8ee54f675bd49a9a409 # Parent 04a215f2ff439c4681070c456e13a0884baba1f4# Parent 1f16db872f920f715c70e096571411a1901039dc merge diff -r 1f16db872f92 -r 7ff9f0726ee4 devtools/devctl.py --- a/devtools/devctl.py Tue May 05 07:58:05 2009 -0700 +++ b/devtools/devctl.py Tue May 05 17:13:30 2009 +0200 @@ -91,11 +91,10 @@ cleanup_sys_modules(libconfig) if cubedir: config = DevCubeConfiguration(cube) - schema = config.load_schema() else: config = libconfig - schema = config.load_schema() libconfig = None + schema = config.load_schema(remove_unused_rtypes=False) vreg = CubicWebRegistry(config) # set_schema triggers objects registrations vreg.set_schema(schema) @@ -110,7 +109,7 @@ w('# singular and plural forms for each entity type\n') w('\n') if libconfig is not None: - libschema = libconfig.load_schema() + libschema = libconfig.load_schema(remove_unused_rtypes=False) entities = [e for e in schema.entities() if not e in libschema] else: entities = schema.entities() @@ -154,13 +153,15 @@ for rschema in rschemas: if rschema.is_final(): continue + if libconfig is not None: + librschema = libschema.get(rschema) for teschema in rschema.targets(eschema, role): - if libconfig is not None: + if libconfig is not None and librschema is not None: if role == 'subject': subjtype, objtype = eschema, teschema else: subjtype, objtype = teschema, eschema - if rschema.has_rdef(subjtype, objtype): + if librschema.has_rdef(subjtype, objtype): continue if actionbox.relation_mode(rschema, eschema, teschema, role) == 'create': if role == 'subject': diff -r 1f16db872f92 -r 7ff9f0726ee4 i18n/en.po --- a/i18n/en.po Tue May 05 07:58:05 2009 -0700 +++ b/i18n/en.po Tue May 05 17:13:30 2009 +0200 @@ -225,70 +225,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: " @@ -330,37 +330,37 @@ msgid "New Bookmark" msgstr "New bookmark" -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" @@ -466,37 +466,37 @@ msgid "This Bookmark" msgstr "This bookmark" -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" @@ -738,49 +738,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" @@ -789,7 +789,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" @@ -801,43 +801,43 @@ 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" msgstr "add a bookmark" -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" @@ -1332,54 +1332,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)" @@ -1388,7 +1388,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)" @@ -1400,7 +1400,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" @@ -2362,37 +2362,37 @@ msgid "remove this Bookmark" msgstr "remove this bookmark" -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 1f16db872f92 -r 7ff9f0726ee4 i18n/es.po --- a/i18n/es.po Tue May 05 07:58:05 2009 -0700 +++ b/i18n/es.po Tue May 05 17:13:30 2009 +0200 @@ -230,70 +230,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 "Cache" -msgid "ECache_plural" +msgid "CWCache_plural" msgstr "Caches" -msgid "EConstraint" +msgid "CWConstraint" msgstr "Restricción" -msgid "EConstraintType" +msgid "CWConstraintType" msgstr "Tipo de Restricción" -msgid "EConstraintType_plural" +msgid "CWConstraintType_plural" msgstr "Tipos de Restricción" -msgid "EConstraint_plural" +msgid "CWConstraint_plural" msgstr "Restricciones" -msgid "EEType" +msgid "CWEType" msgstr "Tipo de entidad" -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: " @@ -335,37 +335,37 @@ msgid "New Bookmark" msgstr "Agregar a Favoritos" -msgid "New ECache" +msgid "New CWCache" msgstr "Agregar Cache" -msgid "New EConstraint" +msgid "New CWConstraint" msgstr "Agregar Restricción" -msgid "New EConstraintType" +msgid "New CWConstraintType" msgstr "Agregar tipo de Restricción" -msgid "New EEType" +msgid "New CWEType" msgstr "Agregar 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 "Agregar autorización" -msgid "New EProperty" +msgid "New CWProperty" msgstr "Agregar Propiedad" -msgid "New ERType" +msgid "New CWRType" msgstr "Agregar tipo de relación" -msgid "New EUser" +msgid "New CWUser" msgstr "Agregar usuario" msgid "New EmailAddress" @@ -471,37 +471,37 @@ msgid "This Bookmark" msgstr "Este favorito" -msgid "This ECache" +msgid "This CWCache" msgstr "Este Cache" -msgid "This EConstraint" +msgid "This CWConstraint" msgstr "Esta Restricción" -msgid "This EConstraintType" +msgid "This CWConstraintType" msgstr "Este tipo de Restricció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" @@ -761,49 +761,49 @@ msgid "add" msgstr "Agregar" -msgid "add Bookmark bookmarked_by EUser object" +msgid "add Bookmark bookmarked_by CWUser object" msgstr "Agregar a los favoritos " -msgid "add EEType add_permission RQLExpression subject" +msgid "add CWEType add_permission RQLExpression subject" msgstr "Agregar una autorización" -msgid "add EEType delete_permission RQLExpression subject" +msgid "add CWEType delete_permission RQLExpression subject" msgstr "Eliminar una autorizació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 "Restricció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 "Restricció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 "Agregar Propiedad" -msgid "add ERType add_permission RQLExpression subject" +msgid "add CWRType add_permission RQLExpression subject" msgstr "Agregar expresión RQL de agregación" -msgid "add ERType delete_permission RQLExpression subject" +msgid "add CWRType delete_permission RQLExpression subject" msgstr "Agregar expresión RQL de eliminación" -msgid "add ERType read_permission RQLExpression subject" +msgid "add CWRType read_permission RQLExpression subject" msgstr "Agregar expresión RQL de lectura" -msgid "add EUser in_group EGroup object" +msgid "add CWUser in_group CWGroup object" msgstr "Agregar 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" @@ -812,7 +812,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" @@ -824,43 +824,43 @@ 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" msgstr "Agregar un Favorito" -msgid "add a ECache" +msgid "add a CWCache" msgstr "Agregar un cache" -msgid "add a EConstraint" +msgid "add a CWConstraint" msgstr "Agregar una Restricción" -msgid "add a EConstraintType" +msgid "add a CWConstraintType" msgstr "Agregar un tipo de Restricció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" @@ -1381,60 +1381,60 @@ 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 "Creando Favorito" -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 del atributo %(linkto)s" -msgid "creating ENFRDef (ENFRDef relation_type ERType %(linkto)s)" +msgid "creating CWRelation (CWRelation relation_type CWRType %(linkto)s)" msgstr "Creación de la 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 autorizar 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" @@ -1445,7 +1445,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)" @@ -1457,7 +1457,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" @@ -2457,37 +2457,37 @@ msgid "remove this Bookmark" msgstr "Eliminar este Favorito" -msgid "remove this ECache" +msgid "remove this CWCache" msgstr "Eliminar esta cache de aplicación" -msgid "remove this EConstraint" +msgid "remove this CWConstraint" msgstr "Eliminar esta restricción" -msgid "remove this EConstraintType" +msgid "remove this CWConstraintType" msgstr "Eliminar este tipo de restricción" -msgid "remove this EEType" +msgid "remove this CWEType" msgstr "Eliminar este tipo de entidad" -msgid "remove this EFRDef" +msgid "remove this CWAttribute" msgstr "Eliminar este atributo" -msgid "remove this EGroup" +msgid "remove this CWGroup" msgstr "Eliminar este grupo" -msgid "remove this ENFRDef" +msgid "remove this CWRelation" msgstr "Eliminar esta relación" -msgid "remove this EPermission" +msgid "remove this CWPermission" msgstr "Eliminar este permiso" -msgid "remove this EProperty" +msgid "remove this CWProperty" msgstr "Eliminar esta propiedad" -msgid "remove this ERType" +msgid "remove this CWRType" msgstr "Eliminar esta definición de relación" -msgid "remove this EUser" +msgid "remove this CWUser" msgstr "Eliminar este usuario" msgid "remove this EmailAddress" diff -r 1f16db872f92 -r 7ff9f0726ee4 i18n/fr.po --- a/i18n/fr.po Tue May 05 07:58:05 2009 -0700 +++ b/i18n/fr.po Tue May 05 17:13:30 2009 +0200 @@ -230,70 +230,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: " @@ -335,37 +335,37 @@ msgid "New Bookmark" msgstr "Nouveau signet" -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" @@ -471,37 +471,37 @@ msgid "This Bookmark" msgstr "Ce signet" -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" @@ -759,49 +759,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" @@ -810,7 +810,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" @@ -822,43 +822,43 @@ 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" msgstr "ajouter un signet" -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" @@ -1380,60 +1380,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" @@ -1444,7 +1444,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)" @@ -1456,7 +1456,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" @@ -2457,37 +2457,37 @@ msgid "remove this Bookmark" msgstr "supprimer ce signet" -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 1f16db872f92 -r 7ff9f0726ee4 server/serverconfig.py --- a/server/serverconfig.py Tue May 05 07:58:05 2009 -0700 +++ b/server/serverconfig.py Tue May 05 17:13:30 2009 +0200 @@ -81,7 +81,7 @@ 'system (using cron for instance).', 'group': 'main', 'inputlevel': 1, }), - + # email configuration ('default-recipients-mode', {'type' : 'choice', @@ -123,14 +123,14 @@ 'group': 'pyro-server', 'inputlevel': 2, }), ) + CubicWebConfiguration.options) - + # read the schema from the database read_application_schema = True bootstrap_schema = True - + # check user's state at login time consider_user_state = True - + # hooks registration configuration # all hooks should be activated during normal execution core_hooks = True @@ -142,7 +142,7 @@ # should some hooks be deactivated during [pre|post]create script execution free_wheel = False - + # list of enables sources when sources restriction is necessary # (eg repository initialization at least) _enabled_sources = None @@ -150,7 +150,7 @@ def enabled_sources(self, sourceuris=None): self._enabled_sources = sourceuris clear_cache(self, 'sources') - + @classmethod def schemas_lib_dir(cls): """application schema directory""" @@ -172,17 +172,17 @@ else: # no cubes self.init_cubes(()) - + def write_bootstrap_cubes_file(self, cubes): stream = file(join(self.apphome, 'bootstrap_cubes'), 'w') stream.write('# this is a generated file only used for bootstraping\n') stream.write('# you should not have to edit this\n') stream.write('%s\n' % ','.join(cubes)) stream.close() - + def sources_file(self): return join(self.apphome, 'sources') - + # this method has to be cached since when the server is running using a # restricted user, this user usually don't have access to the sources # configuration file (#16102) @@ -196,11 +196,11 @@ return allsources return dict((uri, config) for uri, config in allsources.items() if uri in self._enabled_sources or uri == 'admin') - + def pyro_enabled(self): """pyro is always enabled in standalone repository configuration""" return True - + def load_hooks(self, vreg): hooks = {} for path in reversed([self.apphome] + self.cubes_path()): @@ -209,8 +209,8 @@ self.warning('application_hooks.py is deprecated, use dynamic ' 'objects to register hooks (%s)', hooksfile) context = {} - # Use execfile rather than `load_module_from_name` because - # the latter gets fooled by the `sys.modules` cache when + # Use execfile rather than `load_module_from_name` because + # the latter gets fooled by the `sys.modules` cache when # loading different configurations one after the other # (another fix would have been to do : # sys.modules.pop('applications_hooks') @@ -231,8 +231,8 @@ cb = hookdef.make_callback(event) hooks.setdefault(event, {}).setdefault(ertype, []).append(cb) return hooks - - def load_schema(self, expand_cubes=False, construction_mode='strict'): + + def load_schema(self, expand_cubes=False, **kwargs): from cubicweb.schema import CubicWebSchemaLoader if expand_cubes: # in case some new dependencies have been introduced, we have to @@ -240,18 +240,18 @@ origcubes = self.cubes() self._cubes = None self.init_cubes(self.expand_cubes(origcubes)) - schema = CubicWebSchemaLoader().load(self, construction_mode=construction_mode) + schema = CubicWebSchemaLoader().load(self, **kwargs) if expand_cubes: # restaure original value self._cubes = origcubes return schema - + def load_bootstrap_schema(self): from cubicweb.schema import BootstrapSchemaLoader schema = BootstrapSchemaLoader().load(self) schema.name = 'bootstrap' return schema - + def set_sources_mode(self, sources): if 'migration' in sources: from cubicweb.server.sources import source_adapter @@ -274,7 +274,7 @@ enabled_sources = sources self._enabled_sources = enabled_sources clear_cache(self, 'sources') - + def migration_handler(self, schema=None, interactive=True, cnx=None, repo=None, connect=True): """return a migration handler instance""" diff -r 1f16db872f92 -r 7ff9f0726ee4 skeleton/debian/rules.tmpl --- a/skeleton/debian/rules.tmpl Tue May 05 07:58:05 2009 -0700 +++ b/skeleton/debian/rules.tmpl Tue May 05 17:13:30 2009 +0200 @@ -25,7 +25,7 @@ dh_installdirs -i python setup.py -q install --no-compile --prefix=debian/%(distname)s/usr/ # remove generated .egg-info file - rm -rf debian/cubicweb-comment/usr/lib/python* + rm -rf debian/%(distname)s/usr/lib/python* # Build architecture-independent files here. diff -r 1f16db872f92 -r 7ff9f0726ee4 web/views/authentication.py --- a/web/views/authentication.py Tue May 05 07:58:05 2009 -0700 +++ b/web/views/authentication.py Tue May 05 17:13:30 2009 +0200 @@ -1,7 +1,7 @@ """user authentication component :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" @@ -12,11 +12,11 @@ from cubicweb.dbapi import repo_connect, ConnectionProperties from cubicweb.web import ExplicitLogin, InvalidSession from cubicweb.web.application import AbstractAuthenticationManager - + class RepositoryAuthenticationManager(AbstractAuthenticationManager): """authenticate user associated to a request and check session validity""" - + def __init__(self): self.repo = self.config.repository(self.vreg) self.log_queries = self.config['query-log-file']