1463 '%s:%s' % (self.rtype, self), |
1463 '%s:%s' % (self.rtype, self), |
1464 self._cw.form.get(self.__regid__)) |
1464 self._cw.form.get(self.__regid__)) |
1465 |
1465 |
1466 def add_rql_restrictions(self): |
1466 def add_rql_restrictions(self): |
1467 """add restriction for this facet into the rql syntax tree""" |
1467 """add restriction for this facet into the rql syntax tree""" |
1468 self.select.set_distinct(True) # XXX |
|
1469 value = self._cw.form.get(self.__regid__) |
1468 value = self._cw.form.get(self.__regid__) |
1470 if not value: # no value sent for this facet |
1469 if not value: # no value sent for this facet |
1471 return |
1470 return |
|
1471 exists = nodes.Exists() |
|
1472 self.select.add_restriction(exists) |
1472 var = self.select.make_variable() |
1473 var = self.select.make_variable() |
1473 if self.role == 'subject': |
1474 if self.role == 'subject': |
1474 self.select.add_relation(self.filtered_variable, self.rtype, var) |
1475 subj, obj = self.filtered_variable, var |
1475 else: |
1476 else: |
1476 self.select.add_relation(var, self.rtype, self.filtered_variable) |
1477 subj, obj = var, self.filtered_variable |
|
1478 exists.add_relation(subj, self.rtype, obj) |
1477 |
1479 |
1478 |
1480 |
1479 class BitFieldFacet(AttributeFacet): |
1481 class BitFieldFacet(AttributeFacet): |
1480 """Base facet class for Int field holding some bit values using binary |
1482 """Base facet class for Int field holding some bit values using binary |
1481 masks. |
1483 masks. |