server/sources/native.py
branchstable
changeset 8821 c4aa23af0baa
parent 8707 28cbd267e96b
parent 8820 dbffb6959564
child 8900 010a59e12d89
child 8910 7652c3d46ba3
equal deleted inserted replaced
8758:3a0d91237e2c 8821:c4aa23af0baa
   754                 # need string comparison because of various backends
   754                 # need string comparison because of various backends
   755                 for arg in ex.args:
   755                 for arg in ex.args:
   756                     mo = re.search('unique_cw_[^ ]+_idx', arg)
   756                     mo = re.search('unique_cw_[^ ]+_idx', arg)
   757                     if mo is not None:
   757                     if mo is not None:
   758                         index_name = mo.group(0)
   758                         index_name = mo.group(0)
   759                         elements = index_name.rstrip('_idx').split('_cw_')[1:]
   759                         # right-chop '_idx' postfix
       
   760                         # (garanteed to be there, see regexp above)
       
   761                         elements = index_name[:-4].split('_cw_')[1:]
   760                         etype = elements[0]
   762                         etype = elements[0]
   761                         rtypes = elements[1:]
   763                         rtypes = elements[1:]
   762                         raise UniqueTogetherError(etype, rtypes)
   764                         raise UniqueTogetherError(etype, rtypes)
   763                     mo = re.search('columns (.*) are not unique', arg)
   765                     mo = re.search('columns (.*) are not unique', arg)
   764                     if mo is not None: # sqlite in use
   766                     if mo is not None: # sqlite in use
   765                         rtypes = [c.strip().lstrip('cw_') for c in mo.group(1).split(',')]
   767                         # we left chop the 'cw_' prefix of attribute names
       
   768                         rtypes = [c.strip()[3:]
       
   769                                   for c in mo.group(1).split(',')]
   766                         etype = '???'
   770                         etype = '???'
   767                         raise UniqueTogetherError(etype, rtypes)
   771                         raise UniqueTogetherError(etype, rtypes)
   768             raise
   772             raise
   769         return cursor
   773         return cursor
   770 
   774