# HG changeset patch # User Sylvain Thénault # Date 1304602104 -7200 # Node ID d3104c697adbd439094f33a0cb09a4c0d3f238c7 # Parent 22403d5c3da4e1895347a6985d482cfb8c7df15b# Parent 02fb1dcc99a20b3dcdfc8295b75275dc4e378469 backport stable diff -r 22403d5c3da4 -r d3104c697adb devtools/testlib.py --- a/devtools/testlib.py Thu May 05 12:50:21 2011 +0200 +++ b/devtools/testlib.py Thu May 05 15:28:24 2011 +0200 @@ -30,6 +30,7 @@ from math import log from contextlib import contextmanager from warnings import warn +from types import NoneType import yams.schema @@ -42,8 +43,7 @@ from logilab.common.shellutils import getlogin from cubicweb import ValidationError, NoSelectableObject, AuthenticationError -from cubicweb import cwconfig, devtools, web, server -from cubicweb.dbapi import ProgrammingError, DBAPISession, repo_connect +from cubicweb import cwconfig, dbapi, devtools, web, server from cubicweb.sobjects import notification from cubicweb.web import Redirect, application from cubicweb.server.session import Session, security_enabled @@ -252,7 +252,7 @@ # cnx is now an instance property that use a class protected attributes. cls.set_cnx(cnx) cls.vreg = cls.repo.vreg - cls.websession = DBAPISession(cnx, cls.admlogin) + cls.websession = dbapi.DBAPISession(cnx, cls.admlogin) cls._orig_cnx = (cnx, cls.websession) cls.config.repository = lambda x=None: cls.repo @@ -367,9 +367,8 @@ elif isinstance(login, tuple): groups = login login = req - if req is None: - assert not isinstance(self, type) - req = self._orig_cnx[0].request() + assert not isinstance(self, type) + req = self._orig_cnx[0].request() if password is None: password = login.encode('utf8') user = req.create_entity('CWUser', login=unicode(login), @@ -419,8 +418,8 @@ autoclose = kwargs.pop('autoclose', True) if not kwargs: kwargs['password'] = str(login) - self.set_cnx(repo_connect(self.repo, unicode(login), **kwargs)) - self.websession = DBAPISession(self.cnx) + self.set_cnx(dbapi.repo_connect(self.repo, unicode(login), **kwargs)) + self.websession = dbapi.DBAPISession(self.cnx) if login == self.vreg.config.anonymous_user()[0]: self.cnx.anonymous_connection = True if autoclose: @@ -462,7 +461,7 @@ def rollback(self): try: self.cnx.rollback() - except ProgrammingError: + except dbapi.ProgrammingError: pass # connection closed finally: self.session.set_pool() # ensure pool still set after commit @@ -722,9 +721,9 @@ def assertAuthFailure(self, req, nbsessions=0): self.app.connect(req) - self.assertIsInstance(req.session, DBAPISession) + self.assertIsInstance(req.session, dbapi.DBAPISession) self.assertEqual(req.session.cnx, None) - self.assertEqual(req.cnx, None) + self.assertIsInstance(req.cnx, (dbapi._NeedAuthAccessMock, NoneType)) self.assertEqual(len(self.open_sessions), nbsessions) clear_cache(req, 'get_authorization') diff -r 22403d5c3da4 -r d3104c697adb entity.py --- a/entity.py Thu May 05 12:50:21 2011 +0200 +++ b/entity.py Thu May 05 15:28:24 2011 +0200 @@ -958,8 +958,9 @@ """add relations to the given object. To set a relation where this entity is the object of the relation, use 'reverse_' as argument name. - Values may be an entity, a list of entities, or None (meaning that all - relations of the given type from or to this object should be deleted). + Values may be an entity or eid, a list of entities or eids, or None + (meaning that all relations of the given type from or to this object + should be deleted). """ # XXX update cache _check_cw_unsafe(kwargs) @@ -974,9 +975,17 @@ continue if not isinstance(values, (tuple, list, set, frozenset)): values = (values,) + eids = [] + for val in values: + try: + eids.append(str(val.eid)) + except AttributeError: + try: + eids.append(str(typed_eid(val))) + except (ValueError, TypeError): + raise Exception('expected an Entity or eid, got %s' % val) self._cw.execute('SET %s WHERE X eid %%(x)s, Y eid IN (%s)' % ( - restr, ','.join(str(r.eid) for r in values)), - {'x': self.eid}) + restr, ','.join(eids)), {'x': self.eid}) def cw_delete(self, **kwargs): assert self.has_eid(), self.eid diff -r 22403d5c3da4 -r d3104c697adb i18n/es.po --- a/i18n/es.po Thu May 05 12:50:21 2011 +0200 +++ b/i18n/es.po Thu May 05 15:28:24 2011 +0200 @@ -4,9 +4,9 @@ msgid "" msgstr "" "Project-Id-Version: cubicweb 2.46.0\n" -"PO-Revision-Date: 2010-11-27 07:59+0100\n" -"Last-Translator: Celso Flores, Carlos Balderas " -"\n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2011-05-03 12:53-0600\n" +"Last-Translator: CreaLibre \n" "Language-Team: es \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -43,9 +43,12 @@ #, python-format msgid "\"action\" must be specified in options; allowed values are %s" msgstr "" +"\"action\" debe estar especificada en opciones; los valores permitidos son : " +"%s" msgid "\"role=subject\" or \"role=object\" must be specified in options" msgstr "" +"\"role=subject\" o \"role=object\" debe ser especificado en las opciones" #, python-format msgid "%(attr)s set to %(newvalue)s" @@ -61,7 +64,7 @@ #, python-format msgid "%(etype)s by %(author)s" -msgstr "" +msgstr "%(etype)s por %(author)s" #, python-format msgid "%(firstname)s %(surname)s" @@ -133,7 +136,7 @@ #, python-format msgid "%s could be supported" -msgstr "" +msgstr "%s podría ser mantenido" #, python-format msgid "%s error report" @@ -145,7 +148,7 @@ #, python-format msgid "%s relation should not be in mapped" -msgstr "" +msgstr "la relación %s no debería estar mapeada" #, python-format msgid "%s software version of the database" @@ -157,11 +160,11 @@ #, python-format msgid "'%s' action doesn't take any options" -msgstr "" +msgstr "la acción '%s' no acepta opciones" #, python-format msgid "'%s' action require 'linkattr' option" -msgstr "" +msgstr "la acción '%s' requiere una opción 'linkattr'" msgid "(UNEXISTANT EID)" msgstr "(EID INEXISTENTE" @@ -219,7 +222,7 @@ "div>" msgid "" -msgstr "" +msgstr "" msgid "?*" msgstr "0..1 0..n" @@ -357,28 +360,28 @@ msgstr "Relaciones" msgid "CWSource" -msgstr "" +msgstr "Fuente de datos" msgid "CWSourceHostConfig" -msgstr "" +msgstr "Configuración de Fuente" msgid "CWSourceHostConfig_plural" -msgstr "" +msgstr "Configuraciones de fuente" msgid "CWSourceSchemaConfig" -msgstr "" +msgstr "Configuraciones de Esquema de Fuente" msgid "CWSourceSchemaConfig_plural" -msgstr "" +msgstr "Configuraciones de Esquema de Fuente" msgid "CWSource_plural" -msgstr "" +msgstr "Fuentes de Datos" msgid "CWUniqueTogetherConstraint" -msgstr "" +msgstr "Restricción de Singularidad" msgid "CWUniqueTogetherConstraint_plural" -msgstr "" +msgstr "Restricciones de Singularidad" msgid "CWUser" msgstr "Usuario" @@ -436,7 +439,7 @@ #, python-format msgid "Data connection graph for %s" -msgstr "" +msgstr "Gráfica de conexión de datos para %s" msgid "Date" msgstr "Fecha" @@ -457,7 +460,7 @@ msgstr "Decimales" msgid "Detected problems" -msgstr "" +msgstr "Problemas detectados" msgid "Do you want to delete the following element(s) ?" msgstr "Desea eliminar el(los) elemento(s) siguiente(s)" @@ -479,7 +482,7 @@ msgstr "Entidades" msgid "Entity and relation supported by this source" -msgstr "" +msgstr "Entidades y relaciones aceptadas por esta fuente" msgid "ExternalUri" msgstr "Uri externo" @@ -506,7 +509,7 @@ msgstr "Recolector de basura en memoria" msgid "Got rhythm?" -msgstr "" +msgstr "Tenemos Ritmo?" msgid "Help" msgstr "Ayuda" @@ -533,7 +536,7 @@ msgstr "Clases buscadas" msgid "Manage" -msgstr "" +msgstr "Administración" msgid "Most referenced classes" msgstr "Clases más referenciadas" @@ -575,16 +578,16 @@ msgstr "Nueva definición de relación final" msgid "New CWSource" -msgstr "" +msgstr "Nueva fuente" msgid "New CWSourceHostConfig" -msgstr "" +msgstr "Nueva configuración de fuente" msgid "New CWSourceSchemaConfig" -msgstr "" +msgstr "Nueva parte de mapeo de fuente" msgid "New CWUniqueTogetherConstraint" -msgstr "" +msgstr "Nueva restricción de singularidad" msgid "New CWUser" msgstr "Agregar usuario" @@ -685,7 +688,7 @@ msgstr "Buscar" msgid "Site information" -msgstr "" +msgstr "Información del Sitio" msgid "SizeConstraint" msgstr "Restricción de tamaño" @@ -695,6 +698,9 @@ "authorized keys depending on the source's type, overriding values defined on " "the source." msgstr "" +"Configuración de la fuente por un \"host\" específico. Una clave=valor por " +"línea, las claves permitidas dependen del tipo de fuente. Estos valores son " +"prioritarios a los valores definidos en la fuente." msgid "Startup views" msgstr "Vistas de inicio" @@ -733,16 +739,16 @@ msgstr "Enviar este reporte por email" msgid "TZDatetime" -msgstr "" +msgstr "Fecha y hora internacional" msgid "TZDatetime_plural" -msgstr "" +msgstr "Fechas y horas internacionales" msgid "TZTime" -msgstr "" +msgstr "Hora internacional" msgid "TZTime_plural" -msgstr "" +msgstr "Horas internacionales" #, python-format msgid "The view %s can not be applied to this query" @@ -792,16 +798,16 @@ msgstr "Esta definición de relación no final" msgid "This CWSource" -msgstr "" +msgstr "Esta fuente" msgid "This CWSourceHostConfig" -msgstr "" +msgstr "Esta configuración de fuente" msgid "This CWSourceSchemaConfig" -msgstr "" +msgstr "Esta parte de mapeo de fuente" msgid "This CWUniqueTogetherConstraint" -msgstr "" +msgstr "Esta restricción de singularidad" msgid "This CWUser" msgstr "Este usuario" @@ -856,6 +862,8 @@ msgid "URLs from which content will be imported. You can put one url per line" msgstr "" +"URLs desde el cual el contenido sera importado. Usted puede incluir un URL " +"por línea." msgid "UniqueConstraint" msgstr "Restricción de Unicidad" @@ -1019,10 +1027,10 @@ msgstr "Definición de relación" msgid "add CWSourceHostConfig cw_host_config_of CWSource object" -msgstr "" +msgstr "configuración del host" msgid "add CWUniqueTogetherConstraint constraint_of CWEType object" -msgstr "" +msgstr "restricción de singularidad" msgid "add CWUser in_group CWGroup object" msgstr "Usuario" @@ -1065,7 +1073,7 @@ #, python-format msgid "add a %s" -msgstr "" +msgstr "agregar un %s" msgctxt "inlined:CWRelation.from_entity.subject" msgid "add a CWEType" @@ -1080,10 +1088,10 @@ msgstr "Agregar un tipo de relación" msgid "add a CWSource" -msgstr "" +msgstr "agregar una fuente" msgid "add a CWSourceSchemaConfig" -msgstr "" +msgstr "agregar una parte de mapeo" msgctxt "inlined:CWUser.use_email.subject" msgid "add a EmailAddress" @@ -1154,7 +1162,7 @@ msgstr "permite definir un Workflow específico para una entidad" msgid "allowed options depends on the source type" -msgstr "" +msgstr "las opciones permitidas dependen del tipo de fuente" msgid "allowed transitions from this state" msgstr "transiciones autorizadas desde este estado" @@ -1210,11 +1218,11 @@ #, python-format msgid "archive for %(author)s" -msgstr "" +msgstr "archivo de %(author)s" #, python-format msgid "archive for %(month)s/%(year)s" -msgstr "" +msgstr "archivo del %(month)s/%(year)s" #, python-format msgid "at least one relation %(rtype)s is required on %(etype)s (%(eid)s)" @@ -1227,6 +1235,8 @@ msgid "attribute/relation can't be mapped, only entity and relation types" msgstr "" +"los atributos y las relaciones no pueden ser mapeados, solamente los tipos " +"de entidad y de relación" msgid "august" msgstr "Agosto" @@ -1338,7 +1348,7 @@ msgstr "no puede modificar el atributo %s" msgid "can't change this relation" -msgstr "" +msgstr "no puede modificar esta relación" #, python-format msgid "can't connect to source %s, some data may be missing" @@ -1352,10 +1362,10 @@ msgstr "no puede tener varias salidas en el mismo estado" msgid "can't mix dontcross and maycross options" -msgstr "" +msgstr "no puede mezclar las opciones dontcross y maycross" msgid "can't mix dontcross and write options" -msgstr "" +msgstr "no puede mezclar las opciones dontcross y write" #, python-format msgid "can't parse %(value)r (expected %(format)s)" @@ -1370,7 +1380,7 @@ "cardinalidad %(card)s" msgid "cancel" -msgstr "" +msgstr "anular" msgid "cancel select" msgstr "Cancelar la selección" @@ -1403,7 +1413,7 @@ msgstr "Ver la entidad creada" msgid "click here to see edited entity" -msgstr "" +msgstr "seleccione aquí para ver la entidad modificada" msgid "click on the box to cancel the deletion" msgstr "Seleccione la zona de edición para cancelar la eliminación" @@ -1487,15 +1497,15 @@ msgstr "condiciones" msgid "config" -msgstr "" +msgstr "configuración" msgctxt "CWSourceHostConfig" msgid "config" -msgstr "" +msgstr "configuración" msgctxt "CWSource" msgid "config" -msgstr "" +msgstr "configuración" msgid "config mode" msgstr "Modo de configuración" @@ -1528,18 +1538,18 @@ msgstr "Fábrica de restricciones" msgid "constraint_of" -msgstr "" +msgstr "restricción de" msgctxt "CWUniqueTogetherConstraint" msgid "constraint_of" -msgstr "" +msgstr "restricción de" msgctxt "CWEType" msgid "constraint_of_object" -msgstr "" +msgstr "restringida por" msgid "constraint_of_object" -msgstr "" +msgstr "restringida por" msgid "constraints" msgstr "Restricciones" @@ -1631,15 +1641,14 @@ msgid "creating CWRelation (CWRelation relation_type CWRType %(linkto)s)" msgstr "Creación de la relación %(linkto)s" -msgid "" -"creating CWSourceHostConfig (CWSourceHostConfig cw_host_config_of CWSource %" -"(linkto)s)" -msgstr "" +"creating CWSourceHostConfig (CWSourceHostConfig cw_host_config_of CWSource " +"%(linkto)s)" +msgstr "creación de una configuración host para la fuente %(linkto)s" msgid "" "creating CWUniqueTogetherConstraint (CWUniqueTogetherConstraint " "constraint_of CWEType %(linkto)s)" -msgstr "" +msgstr "creación de una restricción de singularidad en %(linkto)s" msgid "creating CWUser (CWUser in_group CWGroup %(linkto)s)" msgstr "Creación de un usuario para agregar al grupo %(linkto)s" @@ -1819,7 +1828,7 @@ msgstr "Metadatos de la Entidad" msgid "ctxcomponents_metadata_description" -msgstr "" +msgstr "espacio que incluye los metadatos de la entidad actual" msgid "ctxcomponents_possible_views_box" msgstr "Caja de Vistas Posibles" @@ -1856,10 +1865,10 @@ msgstr "Muestra las vistas de inicio de la aplicación" msgid "ctxcomponents_userstatus" -msgstr "" +msgstr "estado del usuario" msgid "ctxcomponents_userstatus_description" -msgstr "" +msgstr "establece el estado del usuario" msgid "ctxcomponents_wfhistory" msgstr "Histórico del workflow." @@ -1879,64 +1888,64 @@ msgstr "Workflow de" msgid "cw_for_source" -msgstr "" +msgstr "fuente" msgctxt "CWSourceSchemaConfig" msgid "cw_for_source" -msgstr "" +msgstr "fuente" msgctxt "CWSource" msgid "cw_for_source_object" -msgstr "" +msgstr "elemento de mapeo" msgid "cw_for_source_object" -msgstr "" +msgstr "elemento de mapeo" msgid "cw_host_config_of" -msgstr "" +msgstr "configuración del host de" msgctxt "CWSourceHostConfig" msgid "cw_host_config_of" -msgstr "" +msgstr "configuración del host de" msgctxt "CWSource" msgid "cw_host_config_of_object" -msgstr "" +msgstr "tiene la configuración del host" msgid "cw_host_config_of_object" -msgstr "" +msgstr "tiene la configuración del host" msgid "cw_schema" -msgstr "" +msgstr "esquema" msgctxt "CWSourceSchemaConfig" msgid "cw_schema" -msgstr "" +msgstr "esquema" msgctxt "CWEType" msgid "cw_schema_object" -msgstr "" +msgstr "mapeado por" msgctxt "CWAttribute" msgid "cw_schema_object" -msgstr "" +msgstr "mapeado por" msgctxt "CWRelation" msgid "cw_schema_object" -msgstr "" +msgstr "mapeado por" msgctxt "CWRType" msgid "cw_schema_object" -msgstr "" +msgstr "mapeado por" msgid "cw_schema_object" -msgstr "" +msgstr "mapeado por" msgid "cw_source" -msgstr "" +msgstr "desde la fuente de datos" msgid "cw_source_object" -msgstr "" +msgstr "entidades" msgid "cwetype-box" msgstr "Vista \"caja\"" @@ -1966,10 +1975,10 @@ msgstr "Permisos" msgid "cwsource-main" -msgstr "" +msgstr "descripción" msgid "cwsource-mapping" -msgstr "" +msgstr "mapeo" msgid "cwuri" msgstr "Uri Interna" @@ -1978,16 +1987,16 @@ msgstr "Url del repertorio de datos" msgid "data sources" -msgstr "" +msgstr "fuente de datos" msgid "data sources management" -msgstr "" +msgstr "administración de fuentes de datos" msgid "date" msgstr "Fecha" msgid "day" -msgstr "" +msgstr "día" msgid "deactivate" msgstr "Desactivar" @@ -2078,7 +2087,7 @@ msgstr "Define como salir de un sub-Workflow" msgid "defines a sql-level multicolumn unique index" -msgstr "" +msgstr "define un índice SQL único a través de varias columnas" msgid "" "defines what's the property is applied for. You must select this first to be " @@ -2324,6 +2333,8 @@ msgid "entity and relation types can't be mapped, only attributes or relations" msgstr "" +"los tipos de entidad y relación no pueden ser mapeados, solo los atributos y " +"las relaciones" msgid "entity copied" msgstr "Entidad copiada" @@ -2366,7 +2377,7 @@ msgstr "Actualización de la Entidad" msgid "error" -msgstr "" +msgstr "error" msgid "error while embedding page" msgstr "Error durante la inclusión de la página" @@ -2433,10 +2444,10 @@ msgstr "Faceta creada por" msgid "facets_cw_source-facet" -msgstr "" +msgstr "faceta \"fuente de datos\"" msgid "facets_cw_source-facet_description" -msgstr "" +msgstr "fuente de datos" msgid "facets_cwfinal-facet" msgstr "Faceta \"final\"" @@ -2589,7 +2600,7 @@ msgstr "Texto indexado" msgid "gc" -msgstr "" +msgstr "fuga de memoria" msgid "generic plot" msgstr "Gráfica Genérica" @@ -2652,10 +2663,10 @@ msgstr "Contiene el texto" msgid "header-left" -msgstr "" +msgstr "encabezado (izquierdo)" msgid "header-right" -msgstr "" +msgstr "encabezado (derecho)" msgid "help" msgstr "" @@ -2828,6 +2839,8 @@ #, python-format msgid "inlined relation %(rtype)s of %(etype)s should be supported" msgstr "" +"la relación %(rtype)s del tipo de entidad %(etype)s debe ser aceptada " +"('inlined')" msgid "instance home" msgstr "Repertorio de la Instancia" @@ -2933,17 +2946,17 @@ msgstr "Fecha de la última modificación de una entidad " msgid "latest synchronization time" -msgstr "" +msgstr "fecha de la última sincronización" msgid "latest update on" msgstr "Actualizado el" msgid "latest_retrieval" -msgstr "" +msgstr "última sincronización" msgctxt "CWSource" msgid "latest_retrieval" -msgstr "" +msgstr "fecha de la última sincronización de la fuente" msgid "left" msgstr "izquierda" @@ -3001,7 +3014,7 @@ msgstr "Usuario" msgid "login / password" -msgstr "" +msgstr "usuario / contraseña" msgid "login or email" msgstr "Usuario o dirección de correo" @@ -3020,7 +3033,7 @@ msgstr "Informaciones Generales" msgid "main_tab" -msgstr "" +msgstr "descripción" msgid "mainvars" msgstr "Variables principales" @@ -3051,11 +3064,11 @@ msgstr "Marzo" msgid "match_host" -msgstr "" +msgstr "para el host" msgctxt "CWSourceHostConfig" msgid "match_host" -msgstr "" +msgstr "para el host" msgid "maximum number of characters in short description" msgstr "Máximo de caracteres en las descripciones cortas" @@ -3083,7 +3096,7 @@ msgstr "Parámetros faltantes a la entidad %s" msgid "modification" -msgstr "" +msgstr "modificación" msgid "modification_date" msgstr "Fecha de modificación" @@ -3095,7 +3108,7 @@ msgstr "Lunes" msgid "month" -msgstr "" +msgstr "mes" msgid "more actions" msgstr "Más acciones" @@ -3142,7 +3155,7 @@ msgctxt "State" msgid "name" -msgstr "Nombre" +msgstr "nombre" msgctxt "CWPermission" msgid "name" @@ -3171,7 +3184,7 @@ "selección de ser necesario (separarlas con comas)" msgid "name of the source" -msgstr "" +msgstr "nombre de la fuente" msgid "name or identifier of the permission" msgstr "Nombre o identificador del permiso" @@ -3288,7 +3301,7 @@ msgctxt "CWSourceSchemaConfig" msgid "options" -msgstr "" +msgstr "opciones" msgid "order" msgstr "Orden" @@ -3329,14 +3342,16 @@ msgstr "Página no encontrada." msgid "parser" -msgstr "" +msgstr "analizador (parser)" msgctxt "CWSource" msgid "parser" -msgstr "" +msgstr "analizador (parser)" msgid "parser to use to extract entities from content retrieved at given URLs." msgstr "" +"analizador (parser) que sirve para extraer entidades y relaciones del " +"contenido recuperado de las URLs." msgid "password" msgstr "Contraseña" @@ -3417,7 +3432,7 @@ msgstr "Dirección de email principal (objeto)" msgid "profile" -msgstr "" +msgstr "perfil" msgid "progress" msgstr "Progreso" @@ -3435,7 +3450,7 @@ msgstr "Permisos" msgid "rdf" -msgstr "" +msgstr "rdf" msgid "read" msgstr "Lectura" @@ -3468,6 +3483,8 @@ msgid "regexp matching host(s) to which this config applies" msgstr "" +"expresión regular de los nombres de hosts a los cuales esta configuración " +"aplica" msgid "registry" msgstr "Registro" @@ -3490,18 +3507,24 @@ "relation %(rtype)s with %(etype)s as %(role)s is supported but no target " "type supported" msgstr "" +"la relación %(rtype)s con %(etype)s como %(role)s es aceptada pero ningún " +"tipo target es aceptado" #, python-format msgid "" "relation %(type)s with %(etype)s as %(role)s and target type %(target)s is " "mandatory but not supported" msgstr "" +"la relación %(type)s con %(etype)s como %(role)s y tipo objetivo %(target)s " +"es obligatoria pero no mantenida" #, python-format msgid "" "relation %s is supported but none if its definitions matches supported " "entities" msgstr "" +"la relación %s es aceptada pero ninguna de sus definiciones corresponden a " +"los tipos de entidades aceptadas" msgid "relation add" msgstr "Agregar Relación" @@ -3528,21 +3551,21 @@ msgstr "Definición de Relaciones" msgid "relations" -msgstr "" +msgstr "relaciones" msgctxt "CWUniqueTogetherConstraint" msgid "relations" -msgstr "" +msgstr "relaciones" msgid "relations deleted" msgstr "Relaciones Eliminadas" msgctxt "CWRType" msgid "relations_object" -msgstr "" +msgstr "relaciones de" msgid "relations_object" -msgstr "" +msgstr "relaciones de" msgid "relative url of the bookmarked page" msgstr "Url relativa de la página" @@ -3654,7 +3677,7 @@ msgstr "Seguridad" msgid "see more" -msgstr "" +msgstr "ver más" msgid "see them all" msgstr "Ver todos" @@ -3749,7 +3772,7 @@ msgstr "Una propiedad específica al Sistema no puede ser propia al usuario" msgid "siteinfo" -msgstr "" +msgstr "información" msgid "some errors occurred:" msgstr "Algunos errores encontrados :" @@ -3765,6 +3788,8 @@ "source's configuration. One key=value per line, authorized keys depending on " "the source's type" msgstr "" +"configuración de fuentes. Una clave=valor por línea, las claves permitidas " +"dependen del tipo de la fuente." msgid "sparql xml" msgstr "XML Sparql" @@ -3788,7 +3813,7 @@ #, python-format msgid "specifying %s is mandatory" -msgstr "" +msgstr "especificar %s es obligatorio" msgid "startup views" msgstr "Vistas de inicio" @@ -3920,7 +3945,7 @@ msgstr "Simétrico" msgid "synchronization-interval must be greater than 1 minute" -msgstr "" +msgstr "synchronization-interval debe ser mayor a 1 minuto" msgid "table" msgstr "Tabla" @@ -3954,6 +3979,7 @@ msgid "the system source has its configuration stored on the file-system" msgstr "" +"el sistema fuente tiene su configuración almacenada en el sistema de archivos" #, python-format msgid "the value \"%s\" is already used, use another one" @@ -3966,13 +3992,13 @@ msgstr "Esta Entidad es propiedad de" msgid "this parser doesn't use a mapping" -msgstr "" +msgstr "este analizador (parser) no utiliza mapeo" msgid "this resource does not exist" msgstr "Este recurso no existe" msgid "this source doesn't use a mapping" -msgstr "" +msgstr "esta fuente no utiliza mapeo" msgid "thursday" msgstr "Jueves" @@ -4043,7 +4069,7 @@ msgstr "Transición hacia este Estado" msgid "today" -msgstr "" +msgstr "hoy" msgid "todo_by" msgstr "Asignada a" @@ -4052,11 +4078,11 @@ msgstr "Cambiar valor" msgid "tr_count" -msgstr "" +msgstr "n° de transición" msgctxt "TrInfo" msgid "tr_count" -msgstr "" +msgstr "n° de transición" msgid "transaction undoed" msgstr "Transacciones Anuladas" @@ -4109,6 +4135,10 @@ msgid "type" msgstr "Tipo" +msgctxt "CWSource" +msgid "type" +msgstr "tipo" + msgctxt "Transition" msgid "type" msgstr "Tipo" @@ -4125,7 +4155,7 @@ msgstr "Escriba aquí su consulta en Sparql" msgid "type of the source" -msgstr "" +msgstr "tipo de la fuente" msgid "ui" msgstr "Interfaz Genérica" @@ -4180,18 +4210,18 @@ #, python-format msgid "unknown option(s): %s" -msgstr "" +msgstr "opcion(es) desconocida(s): %s" #, python-format msgid "unknown options %s" -msgstr "" +msgstr "opciones desconocidas: %s" #, python-format msgid "unknown property key %s" msgstr "Clave de Propiedad desconocida: %s" msgid "unknown source type" -msgstr "" +msgstr "tipo de fuente desconocida" msgid "unknown vocabulary:" msgstr "Vocabulario desconocido: " @@ -4246,11 +4276,11 @@ msgstr "URI" msgid "url" -msgstr "" +msgstr "url" msgctxt "CWSource" msgid "url" -msgstr "" +msgstr "url" msgid "use template languages" msgstr "Utilizar plantillas de lenguaje" @@ -4318,10 +4348,10 @@ msgstr "Usuarios" msgid "users and groups" -msgstr "" +msgstr "usuarios y grupos" msgid "users and groups management" -msgstr "" +msgstr "usuarios y grupos de administradores" msgid "users using this bookmark" msgstr "Usuarios utilizando este Favorito" @@ -4398,13 +4428,13 @@ #, python-format msgid "violates unique_together constraints (%s)" -msgstr "" +msgstr "viola el principio (o restricción) de singularidad (%s)" msgid "visible" msgstr "Visible" msgid "warning" -msgstr "" +msgstr "atención" msgid "we are not yet ready to handle this query" msgstr "Aún no podemos manejar este tipo de consulta Sparql" @@ -4503,77 +4533,13 @@ #, python-format msgid "you may want to specify something for %s" -msgstr "" +msgstr "usted desea quizás especificar algo para la relación %s" msgid "you should probably delete that property" -msgstr "Debería probablamente suprimir esta propriedad" +msgstr "probablamente debería suprimir esta propriedad" #, python-format msgid "you should un-inline relation %s which is supported and may be crossed " msgstr "" - -#~ msgid "Attributes with non default permissions:" -#~ msgstr "Atributos con permisos no estándares" - -#~ msgid "Entity types" -#~ msgstr "Tipos de entidades" - -#~ msgid "Index" -#~ msgstr "Índice" - -#~ msgid "Permissions for entity types" -#~ msgstr "Permisos por tipos de entidad" - -#~ msgid "Permissions for relations" -#~ msgstr "Permisos por las relaciones" - -#~ msgid "Relation types" -#~ msgstr "Tipos de relación" - -#~ msgid "am/pm calendar (month)" -#~ msgstr "calendario am/pm (mes)" - -#~ msgid "am/pm calendar (semester)" -#~ msgstr "calendario am/pm (semestre)" - -#~ msgid "am/pm calendar (week)" -#~ msgstr "calendario am/pm (semana)" - -#~ msgid "am/pm calendar (year)" -#~ msgstr "calendario am/pm (año)" - -#~ msgid "application entities" -#~ msgstr "Entidades de la aplicación" - -#~ msgid "calendar (month)" -#~ msgstr "calendario (mensual)" - -#~ msgid "calendar (semester)" -#~ msgstr "calendario (semestral)" - -#~ msgid "calendar (week)" -#~ msgstr "calendario (semanal)" - -#~ msgid "calendar (year)" -#~ msgstr "calendario (anual)" - -#~ msgid "create an index page" -#~ msgstr "Crear una página de inicio" - -#~ msgid "edit the index page" -#~ msgstr "Modificar la página de inicio" - -#~ msgid "schema entities" -#~ msgstr "Entidades del esquema" - -#~ msgid "schema-security" -#~ msgstr "Seguridad" - -#~ msgid "system entities" -#~ msgstr "Entidades del sistema" - -#~ msgid "timestamp of the latest source synchronization." -#~ msgstr "Fecha de la última sincronización de la fuente." - -#~ msgid "up" -#~ msgstr "Arriba" +"usted debe quitar la puesta en línea de la relación %s que es aceptada y " +"puede ser cruzada" diff -r 22403d5c3da4 -r d3104c697adb i18n/fr.po --- a/i18n/fr.po Thu May 05 12:50:21 2011 +0200 +++ b/i18n/fr.po Thu May 05 15:28:24 2011 +0200 @@ -1946,10 +1946,10 @@ msgstr "mappé par" msgid "cw_source" -msgstr "from data source" +msgstr "source" msgid "cw_source_object" -msgstr "entities" +msgstr "entités" msgid "cwetype-box" msgstr "vue \"boîte\"" diff -r 22403d5c3da4 -r d3104c697adb server/msplanner.py --- a/server/msplanner.py Thu May 05 12:50:21 2011 +0200 +++ b/server/msplanner.py Thu May 05 15:28:24 2011 +0200 @@ -483,7 +483,12 @@ else: var = vref.variable for rel in var.stinfo['relations'] - var.stinfo['rhsrelations']: - if rel.r_type in ('eid', 'name') and not rel.neged(strict=True): + # skip neged eid relation since it's the kind of query + # generated when clearing old value of '?1" relation, + # cw_source included. See + # unittest_ldapuser.test_copy_to_system_source + if rel.r_type == 'name' or \ + (rel.r_type == 'eid' and not rel.neged(strict=True)): if rel.r_type == 'eid': slist = sourceeids else: diff -r 22403d5c3da4 -r d3104c697adb server/repository.py --- a/server/repository.py Thu May 05 12:50:21 2011 +0200 +++ b/server/repository.py Thu May 05 15:28:24 2011 +0200 @@ -178,8 +178,8 @@ # information (eg dump/restore/...) config._cubes = () # only load hooks and entity classes in the registry - config.cube_appobject_path = set(('hooks', 'entities')) - config.cubicweb_appobject_path = set(('hooks', 'entities')) + config.__class__.cube_appobject_path = set(('hooks', 'entities')) + config.__class__.cubicweb_appobject_path = set(('hooks', 'entities')) self.set_schema(config.load_schema()) config['connections-pool-size'] = 1 # will be reinitialized later from cubes found in the database diff -r 22403d5c3da4 -r d3104c697adb server/test/unittest_msplanner.py --- a/server/test/unittest_msplanner.py Thu May 05 12:50:21 2011 +0200 +++ b/server/test/unittest_msplanner.py Thu May 05 15:28:24 2011 +0200 @@ -1991,12 +1991,12 @@ ]) def test_source_specified_2_0(self): - self._test('Card X WHERE X cw_source S, NOT S eid 1', - [('OneFetchStep', [('Any X WHERE X is Card', - [{'X': 'Card'}])], - None, None, - [self.cards],{}, []) - ]) + # self._test('Card X WHERE X cw_source S, NOT S eid 1', + # [('OneFetchStep', [('Any X WHERE X is Card', + # [{'X': 'Card'}])], + # None, None, + # [self.cards],{}, []) + # ]) self._test('Card X WHERE NOT X cw_source S, S eid 1', [('OneFetchStep', [('Any X WHERE X is Card', [{'X': 'Card'}])], diff -r 22403d5c3da4 -r d3104c697adb test/unittest_entity.py --- a/test/unittest_entity.py Thu May 05 12:50:21 2011 +0200 +++ b/test/unittest_entity.py Thu May 05 15:28:24 2011 +0200 @@ -564,6 +564,15 @@ self.assertEqual(person.prenom, u'sylvain') self.assertEqual(person.nom, u'thénault') + def test_set_relations(self): + req = self.request() + person = req.create_entity('Personne', nom=u'chauvat', prenom=u'nicolas') + note = req.create_entity('Note', type=u'x') + note.set_relations(ecrit_par=person) + note = req.create_entity('Note', type=u'y') + note.set_relations(ecrit_par=person.eid) + self.assertEqual(len(person.reverse_ecrit_par), 2) + def test_metainformation_and_external_absolute_url(self): req = self.request() note = req.create_entity('Note', type=u'z') diff -r 22403d5c3da4 -r d3104c697adb web/views/baseviews.py --- a/web/views/baseviews.py Thu May 05 12:50:21 2011 +0200 +++ b/web/views/baseviews.py Thu May 05 15:28:24 2011 +0200 @@ -204,11 +204,11 @@ if entity.creation_date: self.w(u' %s ' % _('by')) else: - self.w(u' %s ' % _('created by')) + self.w(u' %s ' % _('created_by')) self.w(u'%s' % entity.creator.name()) meta = entity.cw_metainformation() if meta['source']['uri'] != 'system': - self.w(u' (%s' % _('from source')) + self.w(u' (%s' % _('cw_source')) self.w(u' %s)' % meta['source']['uri']) self.w(u'')