浏览代码

Add exclude filter for Traps, Trap configs and States

Signed-off-by: Sven Velt <sven@velt.de>
Sven Velt 10 年之前
父节点
当前提交
026b1f7499

+ 9 - 0
states/forms.py

@@ -22,3 +22,12 @@ class StateSimpleFilter(forms.Form):
 
 
 
+class StateSimpleExclude(forms.Form):
+	exclude_hostname = forms.MultipleChoiceField(required=False)
+	exclude_state = forms.MultipleChoiceField(required=False)
+	exclude_start_time = forms.MultipleChoiceField(required=False)
+	exclude_stop_time = forms.MultipleChoiceField(required=False)
+	exclude_read = forms.MultipleChoiceField(label='Exclude Read', required=False)
+
+
+

+ 8 - 0
states/templates/states/state_index.html

@@ -44,6 +44,14 @@
 				</td>
 			</tr>
 			<tr>
+				{% for field in stateexclude %}
+				<th>{{ field.label_tag }}</th>{% endfor %}
+			</tr>
+			<tr>
+				{% for field in stateexclude %}
+				<td>{{ field }}</td>{% endfor %}
+			</tr>
+			<tr>
 				<td colspan=4 style="text-align:center;"><input type="submit" value="Filter now"></td>
 				<td colspan=4 style="text-align:center;"><a href="{% url "state_index" %}">Reset all</a>
 			</tr>

+ 6 - 0
states/views.py

@@ -36,6 +36,12 @@ def state_index(Request):
 	ssf.fields['read'].choices = [ ('False', 'Unread'), ('True', 'Read') ]
 	env['statefilter'] = ssf
 
+	sse = StateSimpleExclude(Request.GET)
+	for field in ssf.fields.keys():
+		sse.fields[u'exclude_%s' % field].choices = ssf.fields[field].choices
+	env['stateexclude'] = sse
+
+
 	env['stats_states_active'] = State.objects.filter(stop_time__isnull=True).count()
 	env['stats_states_finished'] = State.objects.filter(start_time__isnull=False, stop_time__isnull=False).count()
 	env['stats_states_weired'] = State.objects.filter( Q(start_time__isnull=True, stop_time__isnull=False) | Q(start_time__isnull=True, stop_time__isnull=True)).count()

+ 15 - 0
traps/forms.py

@@ -24,9 +24,24 @@ class TrapSimpleFilter(forms.Form):
 
 
 
+class TrapSimpleExclude(forms.Form):
+	exclude_hostname = forms.MultipleChoiceField(required=False)
+	exclude_trapoid = forms.MultipleChoiceField(label='Exclude Traps', required=False)
+	exclude_category = forms.MultipleChoiceField(required=False)
+	exclude_severity = forms.MultipleChoiceField(required=False)
+	exclude_trapread = forms.MultipleChoiceField(label='Exclude Read', required=False)
+
+
+
 class CfgTrapSimpleFilter(forms.Form):
 	category = forms.MultipleChoiceField(required=False)
 	severity = forms.MultipleChoiceField(required=False)
 
 
 
+class CfgTrapSimpleExclude(forms.Form):
+	exclude_category = forms.MultipleChoiceField(required=False)
+	exclude_severity = forms.MultipleChoiceField(required=False)
+
+
+

+ 8 - 0
traps/templates/traps/trap_config_index.html

@@ -35,6 +35,14 @@
 				</td>
 			</tr>
 			<tr>
+				{% for field in cfgtrapexclude %}
+				<th>{{ field.label_tag }}</th>{% endfor %}
+			</tr>
+			<tr>
+				{% for field in cfgtrapexclude %}
+				<td>{{ field }}</td>{% endfor %}
+			</tr>
+			<tr>
 				<td colspan=1 style="text-align:center;"><input type="submit" value="Filter now"></td>
 				<td colspan=1 style="text-align:center;"><a href="{% url "trap_config_index" %}">Reset all</a></td>
 			</tr>

+ 8 - 0
traps/templates/traps/trap_index.html

@@ -45,6 +45,14 @@
 				</td>
 			</tr>
 			<tr>
+				{% for field in trapexclude %}
+				<th>{{ field.label_tag }}</th>{% endfor %}
+			</tr>
+			<tr>
+				{% for field in trapexclude %}
+				<td>{{ field }}</td>{% endfor %}
+			</tr>
+			<tr>
 				<td colspan=4 style="text-align:center;"><input type="submit" value="Filter now"></td>
 				<td colspan=1 style="text-align:center;"><a href="{% url "trap_index" %}">Reset all</a></td>
 			</tr>

+ 10 - 0
traps/views.py

@@ -34,6 +34,11 @@ def trap_index(Request):
 	tsf.fields['trapread'].choices = [ ('False', 'Unread'), ('True', 'Read') ]
 	env['trapfilter'] = tsf
 
+	tse = TrapSimpleExclude(Request.GET)
+	for field in tsf.fields.keys():
+		tse.fields[u'exclude_%s' % field].choices = tsf.fields[field].choices
+	env['trapexclude'] = tse
+
 	env['stats_traps_wo_trapname'] = Trap.objects.filter(trapname='').count()
 	env['stats_traps_wo_category'] = Trap.objects.filter(category='').count()
 	env['stats_traps_wo_severity'] = Trap.objects.filter(severity='').count()
@@ -83,6 +88,11 @@ def config_index(Request):
 	ctsf.fields['category'].choices = [ (x, x) for x in CfgTrap.objects.exclude(category='').values_list('category', flat=True).order_by('category').distinct() ] + [ ('__', '<EMPTY>'), ]
 	env['cfgtrapfilter'] = ctsf
 
+	ctse = CfgTrapSimpleExclude(Request.GET)
+	for field in ctsf.fields.keys():
+		ctse.fields[u'exclude_%s' % field].choices = ctsf.fields[field].choices
+	env['cfgtrapexclude'] = ctse
+
 	env['stats_cfgtraps_wo_category'] = CfgTrap.objects.filter(category='').count()
 	env['stats_cfgtraps_wo_severity'] = CfgTrap.objects.filter(severity='').count()