Commit ab250793 authored by Aurelien Campeas's avatar Aurelien Campeas
Browse files

server/source/native: fix wrong usage of .lstrip that produce garbled error...

server/source/native: fix wrong usage of .lstrip that produce garbled error messages (closes #2777641)

Fixed an .rstrip(...) for the general case (untested).
Fixed an .lstrip(...) for the sqlite path (tested).

--HG--
branch : oldstable
parent d8b0984c923c
......@@ -758,13 +758,17 @@ class NativeSQLSource(SQLAdapterMixIn, AbstractSource):
mo = re.search('unique_cw_[^ ]+_idx', arg)
if mo is not None:
index_name = mo.group(0)
elements = index_name.rstrip('_idx').split('_cw_')[1:]
# right-chop '_idx' postfix
# (garanteed to be there, see regexp above)
elements = index_name[:-4].split('_cw_')[1:]
etype = elements[0]
rtypes = elements[1:]
raise UniqueTogetherError(etype, rtypes)
mo = re.search('columns (.*) are not unique', arg)
if mo is not None: # sqlite in use
rtypes = [c.strip().lstrip('cw_') for c in mo.group(1).split(',')]
# we left chop the 'cw_' prefix of attribute names
rtypes = [c.strip()[3:]
for c in mo.group(1).split(',')]
etype = '???'
raise UniqueTogetherError(etype, rtypes)
raise
......
......@@ -52,6 +52,7 @@ class Affaire(WorkflowableEntityType):
class Societe(EntityType):
__unique_together__ = [('nom', 'type', 'cp')]
__permissions__ = {
'read': ('managers', 'users', 'guests'),
'update': ('managers', 'owners', ERQLExpression('U login L, X nom L')),
......
......@@ -53,6 +53,15 @@ class RepositoryTC(CubicWebTC):
and relation
"""
def test_uniquetogether(self):
self.execute('INSERT Societe S: S nom "Logilab", S type "SSLL", S cp "75013"')
with self.assertRaises(ValidationError) as wraperr:
self.execute('INSERT Societe S: S nom "Logilab", S type "SSLL", S cp "75013"')
self.assertEqual({'nom': u'violates unique_together constraints (cp, nom, type)',
'cp': u'violates unique_together constraints (cp, nom, type)',
'type': u'violates unique_together constraints (cp, nom, type)'},
wraperr.exception.args[1])
def test_fill_schema(self):
origshema = self.repo.schema
try:
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment