Mercurial > p > roundup > code
diff roundup/backends/rdbms_common.py @ 6151:ff059afae50a
Make 'find' work for rev_multilink properties
| author | Ralf Schlatterbeck <rsc@runtux.com> |
|---|---|
| date | Fri, 01 May 2020 16:34:35 +0200 |
| parents | 8497bf3f23a1 |
| children | ba0cfc1a87c9 |
line wrap: on
line diff
--- a/roundup/backends/rdbms_common.py Fri May 01 16:33:05 2020 +0200 +++ b/roundup/backends/rdbms_common.py Fri May 01 16:34:35 2020 +0200 @@ -2252,21 +2252,29 @@ # now multilinks for prop, values in propspec.items(): - if not isinstance(props[prop], hyperdb.Multilink): + p = props[prop] + if not isinstance(p, hyperdb.Multilink): continue if not values: continue allvalues += (0, ) + tn = p.table_name + ln = p.linkid_name + nn = p.nodeid_name + cn = '_' + self.classname + ret = '' + if p.rev_property and isinstance(p.rev_property, Link): + ret = 'and %s.__retired__=%s ' % (tn, a) + allvalues += (0, ) if type(values) is type(''): allvalues += (values,) s = a else: allvalues += tuple(values) s = ','.join([a]*len(values)) - tn = '%s_%s'%(self.classname, prop) - sql.append("""select id from _%s, %s where __retired__=%s - and id = %s.nodeid and %s.linkid in (%s)"""%(self.classname, - tn, a, tn, tn, s)) + sql.append("""select %s.id from %s, %s where %s.__retired__=%s + %sand %s.id = %s.%s and %s.%s in (%s)"""%(cn, cn, tn, cn, + a, ret, cn, tn, nn, tn, ln, s)) if not sql: return []
