'Adds IF statements to queryset'

def iff(self, *args, **kwargs):

    if len([x for x in kwargs.values() if (x is None)]):
        raise CQLEngineException('None    values    on    iff    are    not    allowed')
    clone = copy.deepcopy(self)
    for operator in args:
        if (not isinstance(operator, ConditionalClause)):
            raise QueryException('{0}    is    not    a    valid    query    operator'.format(operator))
        clone._conditional.append(operator)
    for (arg, val) in kwargs.items():
        if isinstance(val, Token):
            raise QueryException('Token()    values    are    not    valid    in    conditionals')
        (col_name, col_op) = self._parse_filter_arg(arg)
        try:
            column = self.model._get_column(col_name)
        except KeyError:
            raise QueryException("Can't    resolve    column    name:    '{0}'".format(col_name))
        if isinstance(val, BaseQueryFunction):
            query_val = val
        else:
            query_val = column.to_database(val)
        operator_class = BaseWhereOperator.get_operator((col_op or 'EQ'))
        operator = operator_class()
        clone._conditional.append(WhereClause(column.db_field_name, operator, query_val))
    return clone
