from mymontools.tools import build_q_for_fields_and_querydict

from traps.models import Trap, CfgTrap

##############################################################################

def build_q_for_trap_filter(params):
	fields = (
		'hostname',
		'trapoid',
		'category',
		'severity',
		'trapread',
		)

	return build_q_for_fields_and_querydict(fields, params)


def build_q_for_trap_exclude(params):
	fields = (
		'exclude_hostname',
		'exclude_trapoid',
		'exclude_category',
		'exclude_severity',
		'exclude_trapread',
		)

	return build_q_for_fields_and_querydict(fields, params)


def get_filtered_traps_for_querydict(params, sortorder='-id'):
	traps = Trap.objects.order_by(sortorder)
	return traps.filter( build_q_for_trap_filter(params) ).exclude( build_q_for_trap_exclude(params) )


##############################################################################

def build_q_for_cfgtrap_filter(params):
	fields = (
		'severity',
		'category',
		)

	return build_q_for_fields_and_querydict(fields, params)


def build_q_for_cfgtrap_exclude(params):
	fields = (
		'exclude_severity',
		'exclude_category',
		)

	return build_q_for_fields_and_querydict(fields, params)


def get_filtered_cfgtraps_for_querydict(params, sortorder='trapname'):
	cfgtraps = CfgTrap.objects.order_by(sortorder)
	return cfgtraps.filter( build_q_for_trap_filter(params) ).exclude( build_q_for_trap_exclude(params) )