##// END OF EJS Templates
Add Change IP function for DDS Device...
Juan C. Espinoza -
r219:5b7b585249bb
parent child
Show More
@@ -2,6 +2,7 from django import forms
2 from django.utils.safestring import mark_safe
2 from django.utils.safestring import mark_safe
3 from .models import Device, Experiment, Campaign, Location
3 from .models import Device, Experiment, Campaign, Location
4 from apps.main.models import Configuration
4 from apps.main.models import Configuration
5 from django.template.defaultfilters import default
5
6
6 FILE_FORMAT = (
7 FILE_FORMAT = (
7 ('json', 'json'),
8 ('json', 'json'),
@@ -181,3 +182,11 class FilterForm(forms.Form):
181 self.fields['template'] = forms.BooleanField(required=False)
182 self.fields['template'] = forms.BooleanField(required=False)
182 else:
183 else:
183 self.fields[field] = forms.CharField(required=False)
184 self.fields[field] = forms.CharField(required=False)
185
186 class ChangeIpForm(forms.Form):
187
188 ip_address = forms.GenericIPAddressField()
189 mask = forms.GenericIPAddressField(initial='255.255.255.0')
190 gateway = forms.GenericIPAddressField(initial='0.0.0.0')
191
192
@@ -1,5 +1,6
1
1
2 from datetime import datetime
2 from datetime import datetime
3 from django.template.base import kwarg_re
3
4
4 try:
5 try:
5 from polymorphic.models import PolymorphicModel
6 from polymorphic.models import PolymorphicModel
@@ -10,6 +11,7 from django.db import models
10 from django.core.urlresolvers import reverse
11 from django.core.urlresolvers import reverse
11 from django.shortcuts import get_object_or_404
12 from django.shortcuts import get_object_or_404
12
13
14 from devices.dds import api as dds_api
13
15
14 EXP_STATES = (
16 EXP_STATES = (
15 (0,'Error'), #RED
17 (0,'Error'), #RED
@@ -133,6 +135,32 class Device(models.Model):
133
135
134 return reverse('url_device', args=[str(self.id)])
136 return reverse('url_device', args=[str(self.id)])
135
137
138 def change_ip(self, ip_address, mask, gateway, **kwargs):
139
140 if self.device_type.name=='dds':
141 try:
142 #if True:
143 answer = dds_api.change_ip(ip = self.ip_address,
144 port = self.port_address,
145 new_ip = ip_address,
146 mask = mask,
147 gateway = gateway)
148 if answer[0]=='1':
149 self.message = 'DDS - {}'.format(answer)
150 self.ip_address = ip_address
151 self.save()
152 else:
153 self.message = 'DDS - {}'.format(answer)
154 return False
155 except Exception as e:
156 self.message = str(e)
157 return False
158 else:
159 self.message = 'Not implemented'
160 return False
161
162 return True
163
136
164
137 class Campaign(models.Model):
165 class Campaign(models.Model):
138
166
@@ -1,4 +1,5
1 {% extends 'base.html' %}
1 {% extends 'base.html' %}
2 {% load bootstrap3 %}
2
3
3 {% block content-title %}{{title}}{% endblock %}
4 {% block content-title %}{{title}}{% endblock %}
4 {% block content-suptitle %}{{suptitle}}{% endblock %}
5 {% block content-suptitle %}{{suptitle}}{% endblock %}
@@ -6,12 +7,19
6 {% block content %}
7 {% block content %}
7
8
8 <form action="" method="post" class="form">{% csrf_token %}
9 <form action="" method="post" class="form">{% csrf_token %}
10 {% if form %}
11 {% bootstrap_form form layout='horizontal' size='medium' %}
12 <div style="clear: both;"></div>
13 {% endif %}
9 {% if delete %}
14 {% if delete %}
10 <h3>Are you sure you wish to delete: {{ object }}?</h3>
15 <h3>Are you sure you wish to delete: {{ object }}?</h3>
11 {% else %}
16 {% else %}
12 <h4>Are you sure you wish to proceed?</h4>
17 {% if message %}
13 {% endif %}
18 <p>{{ message }}</p>
14 {% if message %}<p>{{ message }}</p>{% endif %}
19 {% else %}
20 <h4>Are you sure you wish to proceed?</h4>
21 {% endif %}
22 {% endif %}
15 <br>
23 <br>
16 <div class="pull-right">
24 <div class="pull-right">
17 <button class="btn btn-primary" type="submit">
25 <button class="btn btn-primary" type="submit">
@@ -14,7 +14,10
14 <tr><th>{{key|title}}</th><td>{{device|attr:key}}</td></tr>
14 <tr><th>{{key|title}}</th><td>{{device|attr:key}}</td></tr>
15 {% endfor %}
15 {% endfor %}
16 </table>
16 </table>
17 <button class="btn btn-primary pull-right" style="margin-left: 10px" id="bt_edit_device">Edit</button>
17 <div class="btn-group pull-right" role="group">
18 <button type="button" class="btn btn-primary" id="bt_edit_device">Edit</button>
19 <button type="button" class="btn btn-primary" id="bt_change_ip_device">Change IP</button>
20 </div>
18 <br></br>
21 <br></br>
19 <br></br>
22 <br></br>
20 {% endblock %}
23 {% endblock %}
@@ -30,5 +33,9
30 document.location = "{% url 'url_edit_device' device.id%}";
33 document.location = "{% url 'url_edit_device' device.id%}";
31 });
34 });
32
35
36 $("#bt_change_ip_device").click(function() {
37 document.location = "{% url 'url_change_ip_device' device.id%}";
38 });
39
33 </script>
40 </script>
34 {% endblock %} No newline at end of file
41 {% endblock %}
@@ -15,6 +15,7 urlpatterns = (
15 url(r'^device/(?P<id_dev>-?\d+)/$', views.device, name='url_device'),
15 url(r'^device/(?P<id_dev>-?\d+)/$', views.device, name='url_device'),
16 url(r'^device/(?P<id_dev>-?\d+)/edit/$', views.device_edit, name='url_edit_device'),
16 url(r'^device/(?P<id_dev>-?\d+)/edit/$', views.device_edit, name='url_edit_device'),
17 url(r'^device/(?P<id_dev>-?\d+)/delete/$', views.device_delete, name='url_delete_device'),
17 url(r'^device/(?P<id_dev>-?\d+)/delete/$', views.device_delete, name='url_delete_device'),
18 url(r'^device/(?P<id_dev>-?\d+)/change_ip/$', views.device_change_ip, name='url_change_ip_device'),
18
19
19 url(r'^campaign/new/$', views.campaign_new, name='url_add_campaign'),
20 url(r'^campaign/new/$', views.campaign_new, name='url_add_campaign'),
20 url(r'^campaign/$', views.campaigns, name='url_campaigns'),
21 url(r'^campaign/$', views.campaigns, name='url_campaigns'),
@@ -15,7 +15,7 except ImportError:
15 from urllib import urlencode
15 from urllib import urlencode
16
16
17 from .forms import CampaignForm, ExperimentForm, DeviceForm, ConfigurationForm, LocationForm, UploadFileForm, DownloadFileForm, OperationForm, NewForm
17 from .forms import CampaignForm, ExperimentForm, DeviceForm, ConfigurationForm, LocationForm, UploadFileForm, DownloadFileForm, OperationForm, NewForm
18 from .forms import OperationSearchForm, FilterForm
18 from .forms import OperationSearchForm, FilterForm, ChangeIpForm
19
19
20 from .tasks import task_start, task_stop
20 from .tasks import task_start, task_stop
21
21
@@ -276,6 +276,32 def device_delete(request, id_dev):
276 return render(request, 'confirm.html', kwargs)
276 return render(request, 'confirm.html', kwargs)
277
277
278
278
279 @user_passes_test(lambda u:u.is_staff)
280 def device_change_ip(request, id_dev):
281
282 device = get_object_or_404(Device, pk=id_dev)
283
284 if request.method=='POST':
285
286 if request.user.is_staff:
287 device.change_ip(**request.POST.dict())
288 messages.success(request, device.message)
289 else:
290 messages.error(request, 'Not enough permission to delete this object')
291 return redirect(device.get_absolute_url())
292
293 kwargs = {
294 'title': 'Device',
295 'suptitle': 'Change IP',
296 'object': device,
297 'previous': device.get_absolute_url(),
298 'form': ChangeIpForm(initial={'ip_address':device.ip_address}),
299 'message' : ' ',
300 }
301
302 return render(request, 'confirm.html', kwargs)
303
304
279 def campaigns(request):
305 def campaigns(request):
280
306
281 page = request.GET.get('page')
307 page = request.GET.get('page')
General Comments 0
You need to be logged in to leave comments. Login now