code: def __find_handles(self, model, **spec):
          
          server_calls = []
          filter_names = dict([(f['name'], f['method'],) for f in model.get_filters()])
          if not spec:
              server_calls.append({'method': "%s_GetAll" % model.__name__, 'args': []})
          else:
              for key, value in spec.items():
                  if not key in filter_names:
                      raise ValueError("no server-method exists for filtering by '%s'" % key)
                  args = []
                  if not hasattr(value, '__iter__'):
                      value = [value]
  
                  if key.endswith('_list'):
                      vtype = type(value[0]).__name__
                      # TODO: this surely does not cover all cases of data types
                      array = self.soap_factory.create('ArrayOf%s' % vtype.capitalize())
                      getattr(array, "%s" % vtype).extend(value)
                      args.append(array)
                  else:
                      args.extend(value)
  
                  method = "%s_%s" % (model.__name__, filter_names[key])
                  if filter_names[key].startswith('GetAll'):
                      args = []
                  server_calls.append({'method': method, 'args': args, 'expect': "%sHandle" % model.__name__})
  
          handles = [
              map(Handle, self.fetch_list(scall['method'], scall.get('expect'), *scall['args']))
              for scall in server_calls
          ]
          return [h.wsdl for h in reduce(set.intersection, map(set, handles))]
docs: find model instances based on given filter (spec)
          The filter is based on available server-calls, so some values might not be available for filtering.
          Multiple filter-values is going to do multiple server-calls.
          For complex filters in small datasets, it might be faster to fetch all and do your own in-memory filter.
          Empty filter will fetch all.
  
          :param model: subclass of EConomicsModel
          :param spec: mapping of values to filter by
          :return: a list of EConomicsModel instances