def test_q_serializer_10(self): "Value is a model instance" self.login() self._create_contacts() q = Q(position=self.baker) self._assertQIsOK(q, [self.marianne]) qsr = QSerializer() str_q = qsr.dumps(q) self._assertQEqual(FakeContact, q, qsr.loads(str_q))
def test_q_serializer_11(self): "__in=[...] + model instance" self.login() self._create_contacts() q = Q(position__in=[self.boxer, self.fighter]) self._assertQIsOK(q, [self.richard, self.adrian]) qsr = QSerializer() str_q = qsr.dumps(q) self._assertQEqual(FakeContact, q, qsr.loads(str_q))
def _build_extrafilter(arguments, extra_filter=None): json_q_filter = arguments.get('q_filter') q_filter = Q() serializer = QSerializer() # TODO: better validation of q_filter ? (corresponding EntityCell allowed + searchable ?) # - limit the max depth of sub-fields chain ? # - do no allow all fields ? if json_q_filter: try: q_filter = serializer.loads(json_q_filter) except: try: q_filter = get_q_from_dict( _clean_value(json_q_filter, json_load, {})) except: raise else: warnings.warn( 'Old format for "q_filter" is deprecated is used : {}'. format(json_q_filter), DeprecationWarning) return (serializer.dumps(q_filter), q_filter if extra_filter is None else q_filter & extra_filter)