瀏覽代碼

Create new trap configuration without trap in DB

Signed-off-by: Sven Velt <sven.velt@treuchtlingen.de>
Sven Velt 10 年之前
父節點
當前提交
d88b8ec512
共有 5 個文件被更改,包括 44 次插入10 次删除
  1. 7 0
      traps/forms.py
  2. 11 9
      traps/templates/traps/config_trapoid.html
  3. 4 1
      traps/templates/traps/trap_config_index.html
  4. 1 0
      traps/urls.py
  5. 21 0
      traps/views.py

+ 7 - 0
traps/forms.py

@@ -11,6 +11,13 @@ class CfgTrapForm(forms.ModelForm):
 
 
 
+class CfgTrapNewForm(forms.ModelForm):
+	class Meta:
+		model = CfgTrap
+		fields = ['trapoid', 'trapname', 'category', 'severity', ]
+
+
+
 ##############################################################################
 
 class TrapSimpleFilter(forms.Form):

+ 11 - 9
traps/templates/traps/config_trapoid.html

@@ -5,16 +5,18 @@
 		<form action="." method="post">
 			{% csrf_token %}
 			<tr>
-				<th colspan=2>Edit trap configuration</th>
-			</tr>
-			<tr>
-				<th>Trap OID</th>
-				<td>{{ form.instance.trapoid }}</td>
-			</tr>
-			<tr>
-				<th>Trap name (external resolver)</th>
-				<td>{{ snmptranslate_trapoid }}</td>
+				<th colspan=2>{% if form.instance.id %}Edit{% else %}New{% endif%} trap configuration</th>
 			</tr>
+			{% if form.instance.trapoid %}
+				<tr>
+					<th>Trap OID</th>
+					<td>{{ form.instance.trapoid }}</td>
+				</tr>
+				<tr>
+					<th>Trap name (external resolver)</th>
+					<td>{{ snmptranslate_trapoid }}</td>
+				</tr>
+			{% endif %}
 			{{ form }}
 			<tr>
 				<td colspan=2>

+ 4 - 1
traps/templates/traps/trap_config_index.html

@@ -34,7 +34,10 @@
 				</td>
 				<td>
 					<ul>
-						<li><a href="{% url "trap_index" %}">Traps</a>
+						<li><a href="{% url "trap_index" %}">Traps</a></li>
+					</ul>
+					<ul>
+						<li><a href="{% url "trap_config_trapoid_new" %}">New trap config</a></li>
 					</ul>
 				</td>
 			</tr>

+ 1 - 0
traps/urls.py

@@ -6,6 +6,7 @@ urlpatterns = patterns('',
 	url(r'^config/$', 'traps.views.config_index', name='trap_config_index'),
 	url(r'^config/export/$', 'traps.views.config_export', name='trap_config_export'),
 	url(r'^config/trapoid/(?P<trapoid>\.[0-9\.]+)/$', 'traps.views.config_trapoid', name='trap_config_trapoid'),
+	url(r'^config/trapoid/_new/$', 'traps.views.config_trapoid_new', name='trap_config_trapoid_new'),
 	url(r'^modify/$', 'traps.views.trap_modify', name='trap_modify'),
 	url(r'^resolve/trapoid/(?P<trapoid>\.[0-9\.]+)/$', 'traps.views.resolve_trapoid', name='trap_resolve_trapoid'),
 	url(r'^resolve/db/trapoid/(?P<trapoid>\.[0-9\.]+)/$', 'traps.views.resolve_trapoid', {'db':True,}, name='trap_resolve_db_trapoid'),

+ 21 - 0
traps/views.py

@@ -152,6 +152,27 @@ def config_trapoid(Request, trapoid):
 
 
 
+def config_trapoid_new(Request):
+	env = {}
+	cfgtrap = CfgTrap()
+
+	if Request.method == 'POST':
+		form = CfgTrapNewForm(Request.POST, instance=cfgtrap)
+		if form.is_valid():
+			cfgtrap = form.save()
+			if Request.POST.get('action') == 'save_update':
+				with connection.cursor() as c:
+					c.execute('UPDATE ' + Trap._meta.db_table + ' SET trapname=%s, category=%s, severity=%s WHERE trapoid=%s', [cfgtrap.trapname, cfgtrap.category, cfgtrap.severity, cfgtrap.trapoid,])
+			return HttpResponseRedirect( reverse('trap_config_index') )
+	else:
+		form = CfgTrapNewForm(instance=cfgtrap)
+
+	form.fields['trapname'].label = 'Trap name (in DB)'
+	env['form'] = form
+	return render(Request, 'traps/config_trapoid.html', env)
+
+
+
 def resolve_trapoid(Request, trapoid, db=False):
 	env = {}
 	env['trapoid'] = trapoid