@@ -0,0 +1,34 | |||||
|
1 | {% extends "base.html" %} | |||
|
2 | {% load bootstrap3 %} | |||
|
3 | {% load static %} | |||
|
4 | {% load main_tags %} | |||
|
5 | ||||
|
6 | {% block loc-active %}active{% endblock %} | |||
|
7 | ||||
|
8 | {% block content-title %}{{title}}{% endblock %} | |||
|
9 | {% block content-suptitle %}{{suptitle}}{% endblock %} | |||
|
10 | ||||
|
11 | {% block content %} | |||
|
12 | <table class="table table-bordered"> | |||
|
13 | {% for key in location_keys %} | |||
|
14 | <tr><th>{{key|title}}</th><td>{{location|attr:key}}</td></tr> | |||
|
15 | {% endfor %} | |||
|
16 | </table> | |||
|
17 | <button class="btn btn-primary pull-right" style="margin-left: 10px" id="bt_edit">Edit</button> | |||
|
18 | <br></br> | |||
|
19 | <br></br> | |||
|
20 | {% endblock %} | |||
|
21 | ||||
|
22 | {% block sidebar%} | |||
|
23 | {% include "sidebar_devices.html" %} | |||
|
24 | {% endblock %} | |||
|
25 | ||||
|
26 | {% block extra-js%} | |||
|
27 | <script type="text/javascript"> | |||
|
28 | ||||
|
29 | $("#bt_edit").click(function() { | |||
|
30 | document.location = "{% url 'url_edit_location' location.id%}"; | |||
|
31 | }); | |||
|
32 | ||||
|
33 | </script> | |||
|
34 | {% endblock %} No newline at end of file |
@@ -0,0 +1,29 | |||||
|
1 | {% extends "base.html" %} | |||
|
2 | {% load bootstrap3 %} | |||
|
3 | {% load static %} | |||
|
4 | {% load main_tags %} | |||
|
5 | {% block extra-head %} | |||
|
6 | <link href="{% static 'css/bootstrap-datetimepicker.min.css' %}" media="screen" rel="stylesheet"> | |||
|
7 | {% endblock %} | |||
|
8 | ||||
|
9 | {% block loc-active %}active{% endblock %} | |||
|
10 | ||||
|
11 | {% block content-title %}{{title}}{% endblock %} | |||
|
12 | {% block content-suptitle %}{{suptitle}}{% endblock %} | |||
|
13 | ||||
|
14 | {% block content %} | |||
|
15 | <form class="form" method="post" action=""> | |||
|
16 | {% csrf_token %} | |||
|
17 | {% bootstrap_form form layout='horizontal' size='medium' %} | |||
|
18 | <div style="clear: both;"></div> | |||
|
19 | <br> | |||
|
20 | <button type="submit" class="btn btn-primary pull-right">{{button}}</button> | |||
|
21 | </form> | |||
|
22 | {% endblock %} | |||
|
23 | ||||
|
24 | {% block sidebar%} | |||
|
25 | {% include "sidebar_devices.html" %} | |||
|
26 | {% endblock %} | |||
|
27 | ||||
|
28 | {% block extra-js%} | |||
|
29 | {% endblock %} No newline at end of file |
@@ -0,0 +1,47 | |||||
|
1 | {% extends "base.html" %} | |||
|
2 | {% load bootstrap3 %} | |||
|
3 | {% load static %} | |||
|
4 | {% load main_tags %} | |||
|
5 | ||||
|
6 | {% block loc-active %}active{% endblock %} | |||
|
7 | ||||
|
8 | {% block content-title %}{{title}}{% endblock %} | |||
|
9 | {% block content-suptitle %}{{suptitle}}{% endblock %} | |||
|
10 | ||||
|
11 | {% block content %} | |||
|
12 | <table class="table table-hover"> | |||
|
13 | <tr> | |||
|
14 | <th>#</th> | |||
|
15 | {% for key in location_keys %} | |||
|
16 | <th>{{ key|title }}</th> | |||
|
17 | {% endfor%} | |||
|
18 | </tr> | |||
|
19 | {% for location in locations %} | |||
|
20 | <tr class="clickable-row" data-href="{% url 'url_location' location.id %}"> | |||
|
21 | <td>{{ forloop.counter }}</td> | |||
|
22 | {% for key in location_keys %} | |||
|
23 | <td>{{ location|attr:key }}</td> | |||
|
24 | {% endfor %} | |||
|
25 | </tr> | |||
|
26 | {% endfor %} | |||
|
27 | </table> | |||
|
28 | <button class="btn btn-primary pull-right" id="bt_add">{{button}}</button> | |||
|
29 | {% endblock %} | |||
|
30 | ||||
|
31 | {% block sidebar%} | |||
|
32 | {% include "sidebar_devices.html" %} | |||
|
33 | {% endblock %} | |||
|
34 | ||||
|
35 | {% block extra-js%} | |||
|
36 | <script type="text/javascript"> | |||
|
37 | ||||
|
38 | $("#bt_add").click(function() { | |||
|
39 | document.location = "{% url 'url_add_location' %}"; | |||
|
40 | }); | |||
|
41 | ||||
|
42 | $(".clickable-row").click(function() { | |||
|
43 | document.location = $(this).data("href"); | |||
|
44 | }); | |||
|
45 | ||||
|
46 | </script> | |||
|
47 | {% endblock %} No newline at end of file |
@@ -1,7 +1,7 | |||||
1 | from django import forms |
|
1 | from django import forms | |
2 | from django.utils.safestring import mark_safe |
|
2 | from django.utils.safestring import mark_safe | |
3 |
|
3 | |||
4 | from .models import DeviceType, Device, Experiment, Campaign, Configuration |
|
4 | from .models import DeviceType, Device, Experiment, Campaign, Configuration, Location | |
5 |
|
5 | |||
6 | def add_empty_choice(choices, pos=0, label='-----'): |
|
6 | def add_empty_choice(choices, pos=0, label='-----'): | |
7 | if len(choices)>0: |
|
7 | if len(choices)>0: | |
@@ -45,6 +45,11 class ExperimentForm(forms.ModelForm): | |||||
45 | model = Experiment |
|
45 | model = Experiment | |
46 | fields = ['campaign', 'name', 'start_time', 'end_time'] |
|
46 | fields = ['campaign', 'name', 'start_time', 'end_time'] | |
47 |
|
47 | |||
|
48 | class LocationForm(forms.ModelForm): | |||
|
49 | class Meta: | |||
|
50 | model = Location | |||
|
51 | exclude = [''] | |||
|
52 | ||||
48 | class DeviceForm(forms.ModelForm): |
|
53 | class DeviceForm(forms.ModelForm): | |
49 | class Meta: |
|
54 | class Meta: | |
50 | model = Device |
|
55 | model = Device | |
@@ -57,4 +62,3 class ConfigurationForm(forms.ModelForm): | |||||
57 |
|
62 | |||
58 | class DeviceTypeForm(forms.Form): |
|
63 | class DeviceTypeForm(forms.Form): | |
59 | device_type = forms.ChoiceField(choices=add_empty_choice(DeviceType.objects.all().order_by('name').values_list('id', 'name'))) |
|
64 | device_type = forms.ChoiceField(choices=add_empty_choice(DeviceType.objects.all().order_by('name').values_list('id', 'name'))) | |
60 |
|
@@ -1,9 +1,14 | |||||
1 | from itertools import chain |
|
|||
2 |
|
|
1 | from django.db import models | |
3 | from polymorphic import PolymorphicModel |
|
2 | from polymorphic import PolymorphicModel | |
4 |
|
3 | |||
5 | from django.core.urlresolvers import reverse |
|
4 | from django.core.urlresolvers import reverse | |
6 |
|
5 | |||
|
6 | CONF_STATES = ( | |||
|
7 | (0, 'Disconnected'), | |||
|
8 | (1, 'Connected'), | |||
|
9 | (1, 'Running'), | |||
|
10 | ) | |||
|
11 | ||||
7 | CONF_TYPES = ( |
|
12 | CONF_TYPES = ( | |
8 | (0, 'Active'), |
|
13 | (0, 'Active'), | |
9 | (1, 'Historical'), |
|
14 | (1, 'Historical'), | |
@@ -28,15 +33,22 DEV_TYPES = ( | |||||
28 |
|
33 | |||
29 | # Create your models here. |
|
34 | # Create your models here. | |
30 |
|
35 | |||
|
36 | class Location(models.Model): | |||
|
37 | ||||
|
38 | name = models.CharField(max_length = 30) | |||
|
39 | description = models.TextField(blank=True, null=True) | |||
|
40 | ||||
|
41 | class Meta: | |||
|
42 | db_table = 'db_location' | |||
|
43 | ||||
|
44 | def __unicode__(self): | |||
|
45 | return u'%s' % self.name | |||
|
46 | ||||
31 | class DeviceType(models.Model): |
|
47 | class DeviceType(models.Model): | |
32 |
|
48 | |||
33 | name = models.CharField(max_length = 10, choices = DEV_TYPES, default = 'rc') |
|
49 | name = models.CharField(max_length = 10, choices = DEV_TYPES, default = 'rc') | |
34 |
|
||||
35 | description = models.TextField(blank=True, null=True) |
|
50 | description = models.TextField(blank=True, null=True) | |
36 |
|
51 | |||
37 | # info = models.TextField(blank=True, null=True) |
|
|||
38 | # status = models.PositiveSmallIntegerField(default=1, choices=STATES) |
|
|||
39 |
|
||||
40 | class Meta: |
|
52 | class Meta: | |
41 | db_table = 'db_device_types' |
|
53 | db_table = 'db_device_types' | |
42 |
|
54 | |||
@@ -46,16 +58,14 class DeviceType(models.Model): | |||||
46 | class Device(models.Model): |
|
58 | class Device(models.Model): | |
47 |
|
59 | |||
48 | device_type = models.ForeignKey(DeviceType) |
|
60 | device_type = models.ForeignKey(DeviceType) | |
|
61 | # location = models.ForeignKey(Location) | |||
|
62 | ||||
49 | name = models.CharField(max_length=40, default='') |
|
63 | name = models.CharField(max_length=40, default='') | |
50 | ip_address = models.GenericIPAddressField(protocol='IPv4', default='0.0.0.0') |
|
64 | ip_address = models.GenericIPAddressField(protocol='IPv4', default='0.0.0.0') | |
51 | port_address = models.PositiveSmallIntegerField(default=2000) |
|
65 | port_address = models.PositiveSmallIntegerField(default=2000) | |
52 | description = models.TextField(blank=True, null=True) |
|
66 | description = models.TextField(blank=True, null=True) | |
53 | status = models.PositiveSmallIntegerField(default=0, choices=DEV_STATES) |
|
67 | status = models.PositiveSmallIntegerField(default=0, choices=DEV_STATES) | |
54 |
|
68 | |||
55 | # serial_number = models.CharField(max_length=40, default='') |
|
|||
56 | # mac_address = models.CharField(max_length = 20, null=True, blank=True) |
|
|||
57 |
|
||||
58 |
|
||||
59 | class Meta: |
|
69 | class Meta: | |
60 | db_table = 'db_devices' |
|
70 | db_table = 'db_devices' | |
61 |
|
71 | |||
@@ -94,8 +104,12 class Configuration(PolymorphicModel): | |||||
94 |
|
104 | |||
95 | experiment = models.ForeignKey(Experiment) |
|
105 | experiment = models.ForeignKey(Experiment) | |
96 | device = models.ForeignKey(Device) |
|
106 | device = models.ForeignKey(Device) | |
|
107 | ||||
|
108 | status = models.PositiveSmallIntegerField(default=0, choices=CONF_STATES) | |||
97 | type = models.PositiveSmallIntegerField(default=0, choices=CONF_TYPES) |
|
109 | type = models.PositiveSmallIntegerField(default=0, choices=CONF_TYPES) | |
98 |
|
110 | |||
|
111 | name = models.CharField(max_length=40, default='') | |||
|
112 | ||||
99 | created_date = models.DateTimeField(auto_now_add=True) |
|
113 | created_date = models.DateTimeField(auto_now_add=True) | |
100 | programmed_date = models.DateTimeField(auto_now=True) |
|
114 | programmed_date = models.DateTimeField(auto_now=True) | |
101 |
|
115 |
@@ -37,13 +37,15 | |||||
37 | </div> |
|
37 | </div> | |
38 | <div class="collapse navbar-collapse" id="navigationbar"> |
|
38 | <div class="collapse navbar-collapse" id="navigationbar"> | |
39 | <ul class="nav navbar-nav"> |
|
39 | <ul class="nav navbar-nav"> | |
40 | <li class=" dropdown {% block dev-active %}{% endblock %}"><a href="{% url 'url_devices'%}">Devices</a> |
|
|||
41 | </li> |
|
|||
42 | <li class=" dropdown {% block camp-active %}{% endblock %}"><a href="{% url 'url_campaigns'%}">Campaigns</a> |
|
40 | <li class=" dropdown {% block camp-active %}{% endblock %}"><a href="{% url 'url_campaigns'%}">Campaigns</a> | |
43 | </li> |
|
41 | </li> | |
44 | <li class=" dropdown {% block exp-active %}{% endblock %}"><a href="{% url 'url_experiments'%}">Experiments</a> |
|
42 | <li class=" dropdown {% block exp-active %}{% endblock %}"><a href="{% url 'url_experiments'%}">Experiments</a> | |
45 | </li> |
|
43 | </li> | |
46 |
<li class=" dropdown {% block conf-active %}{% endblock %}"><a href="{% url 'url_dev_confs'%}"> |
|
44 | <li class=" dropdown {% block conf-active %}{% endblock %}"><a href="{% url 'url_dev_confs'%}">Configurations</a> | |
|
45 | </li> | |||
|
46 | <li class=" dropdown {% block dev-active %}{% endblock %}"><a href="{% url 'url_devices'%}">Devices</a> | |||
|
47 | </li> | |||
|
48 | <li class=" dropdown {% block loc-active %}{% endblock %}"><a href="{% url 'url_locations'%}">Locations</a> | |||
47 | </li> |
|
49 | </li> | |
48 | </ul> |
|
50 | </ul> | |
49 | <ul class="nav navbar-nav navbar-right"> |
|
51 | <ul class="nav navbar-nav navbar-right"> |
@@ -11,9 +11,9 | |||||
11 | {% block content %} |
|
11 | {% block content %} | |
12 |
|
12 | |||
13 | {% if form.is_multipart %} |
|
13 | {% if form.is_multipart %} | |
14 | <form class="form" enctype="multipart/form-data" method="post" action=""> |
|
14 | <form class="form" enctype="multipart/form-data" method="post" action="{{action}}"> | |
15 | {% else %} |
|
15 | {% else %} | |
16 | <form class="form" method="post" action=""> |
|
16 | <form class="form" method="post" action="{{action}}"> | |
17 | {% endif %} |
|
17 | {% endif %} | |
18 |
|
18 | |||
19 | {% csrf_token %} |
|
19 | {% csrf_token %} |
@@ -37,15 +37,15 | |||||
37 | <table class="table table-hover"> |
|
37 | <table class="table table-hover"> | |
38 | <tr> |
|
38 | <tr> | |
39 | <th>#</th> |
|
39 | <th>#</th> | |
40 |
{% for key in configuration_ |
|
40 | {% for key in configuration_labels %} | |
41 | <th>{{ key|title }}</th> |
|
41 | <th>{{ key|title }}</th> | |
42 | {% endfor%} |
|
42 | {% endfor%} | |
43 | </tr> |
|
43 | </tr> | |
44 | {% for item in configurations %} |
|
44 | {% for item in configurations %} | |
45 |
<tr class="clickable-row" data-href=" |
|
45 | <tr class="clickable-row" data-href="{{item.get_absolute_url}}"> | |
46 | <td>{{ forloop.counter }}</td> |
|
46 | <td>{{ forloop.counter }}</td> | |
47 | {% for key in configuration_keys %} |
|
47 | {% for key in configuration_keys %} | |
48 |
<td>{{ item| |
|
48 | <td>{{ item|value:key }}</td> | |
49 | {% endfor %} |
|
49 | {% endfor %} | |
50 | </tr> |
|
50 | </tr> | |
51 | {% endfor %} |
|
51 | {% endfor %} |
@@ -52,7 +52,7 | |||||
52 | </div> |
|
52 | </div> | |
53 | <div class="list-group"> |
|
53 | <div class="list-group"> | |
54 | {% for item in configurations %} |
|
54 | {% for item in configurations %} | |
55 |
<a href=" |
|
55 | <a href="{{item.get_absolute_url}}" class="list-group-item {{item.active}}">{{item.device.name}}</a> | |
56 | {% endfor %} |
|
56 | {% endfor %} | |
57 | </div> |
|
57 | </div> | |
58 | </div> |
|
58 | </div> | |
@@ -90,7 +90,7 | |||||
90 | </div> |
|
90 | </div> | |
91 | <div class="list-group"> |
|
91 | <div class="list-group"> | |
92 | {% for item in configurations %} |
|
92 | {% for item in configurations %} | |
93 |
<a href=" |
|
93 | <a href="{{item.get_absolute_url}}" class="list-group-item {%if item.id == dev_conf.id%}active{%endif%}">{{item.device.name}}</a> | |
94 | {% endfor %} |
|
94 | {% endfor %} | |
95 | </div> |
|
95 | </div> | |
96 | </div> |
|
96 | </div> |
@@ -17,6 +17,17 def attr(instance, key): | |||||
17 | def title(s): |
|
17 | def title(s): | |
18 | return s.replace('_', ' ').title() |
|
18 | return s.replace('_', ' ').title() | |
19 |
|
19 | |||
|
20 | @register.filter | |||
|
21 | def value(instance, key): | |||
|
22 | ||||
|
23 | item = instance | |||
|
24 | for my_key in key.split("__"): | |||
|
25 | print "TP Value", item, my_key | |||
|
26 | item = attr(item, my_key) | |||
|
27 | ||||
|
28 | print item | |||
|
29 | return item | |||
|
30 | ||||
20 | @register.simple_tag |
|
31 | @register.simple_tag | |
21 | def get_verbose_field_name(instance, field_name): |
|
32 | def get_verbose_field_name(instance, field_name): | |
22 | """ |
|
33 | """ |
@@ -1,6 +1,12 | |||||
1 | from django.conf.urls import url |
|
1 | from django.conf.urls import url | |
2 |
|
2 | |||
3 | urlpatterns = ( |
|
3 | urlpatterns = ( | |
|
4 | url(r'^location/new/$', 'apps.main.views.location_new', name='url_add_location'), | |||
|
5 | url(r'^location/$', 'apps.main.views.locations', name='url_locations'), | |||
|
6 | url(r'^location/(?P<id_loc>-?\d+)/$', 'apps.main.views.location', name='url_location'), | |||
|
7 | url(r'^location/(?P<id_loc>-?\d+)/edit/$', 'apps.main.views.location_edit', name='url_edit_location'), | |||
|
8 | url(r'^location/(?P<id_loc>-?\d+)/delete/$', 'apps.main.views.location_delete', name='url_delete_location'), | |||
|
9 | ||||
4 | url(r'^device/new/$', 'apps.main.views.device_new', name='url_add_device'), |
|
10 | url(r'^device/new/$', 'apps.main.views.device_new', name='url_add_device'), | |
5 | url(r'^device/$', 'apps.main.views.devices', name='url_devices'), |
|
11 | url(r'^device/$', 'apps.main.views.devices', name='url_devices'), | |
6 | url(r'^device/(?P<id_dev>-?\d+)/$', 'apps.main.views.device', name='url_device'), |
|
12 | url(r'^device/(?P<id_dev>-?\d+)/$', 'apps.main.views.device', name='url_device'), | |
@@ -24,4 +30,5 urlpatterns = ( | |||||
24 | url(r'^dev_conf/(?P<id_conf>-?\d+)/$', 'apps.main.views.dev_conf', name='url_dev_conf'), |
|
30 | url(r'^dev_conf/(?P<id_conf>-?\d+)/$', 'apps.main.views.dev_conf', name='url_dev_conf'), | |
25 | url(r'^dev_conf/(?P<id_conf>-?\d+)/edit/$', 'apps.main.views.dev_conf_edit', name='url_edit_dev_conf'), |
|
31 | url(r'^dev_conf/(?P<id_conf>-?\d+)/edit/$', 'apps.main.views.dev_conf_edit', name='url_edit_dev_conf'), | |
26 | url(r'^dev_conf/(?P<id_conf>-?\d+)/delete/$', 'apps.main.views.dev_conf_delete', name='url_delete_dev_conf'), |
|
32 | url(r'^dev_conf/(?P<id_conf>-?\d+)/delete/$', 'apps.main.views.dev_conf_delete', name='url_delete_dev_conf'), | |
|
33 | ||||
27 | ) |
|
34 | ) |
@@ -1,7 +1,7 | |||||
1 | from django.shortcuts import render, redirect, get_object_or_404, HttpResponse |
|
1 | from django.shortcuts import render, redirect, get_object_or_404, HttpResponse | |
2 | from django.contrib import messages |
|
2 | from django.contrib import messages | |
3 |
|
3 | |||
4 | from .forms import CampaignForm, ExperimentForm, DeviceForm, ConfigurationForm |
|
4 | from .forms import CampaignForm, ExperimentForm, DeviceForm, ConfigurationForm, LocationForm | |
5 | from apps.cgs.forms import CGSConfigurationForm |
|
5 | from apps.cgs.forms import CGSConfigurationForm | |
6 | from apps.jars.forms import JARSConfigurationForm |
|
6 | from apps.jars.forms import JARSConfigurationForm | |
7 | from apps.usrp.forms import USRPConfigurationForm |
|
7 | from apps.usrp.forms import USRPConfigurationForm | |
@@ -9,7 +9,7 from apps.abs.forms import ABSConfigurationForm | |||||
9 | from apps.rc.forms import RCConfigurationForm |
|
9 | from apps.rc.forms import RCConfigurationForm | |
10 | from apps.dds.forms import DDSConfigurationForm |
|
10 | from apps.dds.forms import DDSConfigurationForm | |
11 |
|
11 | |||
12 | from .models import Campaign, Experiment, Device, Configuration |
|
12 | from .models import Campaign, Experiment, Device, Configuration, Location | |
13 | from apps.cgs.models import CGSConfiguration |
|
13 | from apps.cgs.models import CGSConfiguration | |
14 | from apps.jars.models import JARSConfiguration |
|
14 | from apps.jars.models import JARSConfiguration | |
15 | from apps.usrp.models import USRPConfiguration |
|
15 | from apps.usrp.models import USRPConfiguration | |
@@ -42,12 +42,99 def index(request): | |||||
42 |
|
42 | |||
43 | return render(request, 'index.html', kwargs) |
|
43 | return render(request, 'index.html', kwargs) | |
44 |
|
44 | |||
|
45 | def locations(request): | |||
|
46 | ||||
|
47 | locations = Location.objects.all().order_by('name') | |||
|
48 | ||||
|
49 | keys = ['id', 'name', 'description'] | |||
|
50 | ||||
|
51 | kwargs = {} | |||
|
52 | kwargs['location_keys'] = keys[1:] | |||
|
53 | kwargs['locations'] = locations | |||
|
54 | kwargs['title'] = 'Location' | |||
|
55 | kwargs['suptitle'] = 'List' | |||
|
56 | kwargs['button'] = 'New Location' | |||
|
57 | ||||
|
58 | return render(request, 'locations.html', kwargs) | |||
|
59 | ||||
|
60 | def location(request, id_loc): | |||
|
61 | ||||
|
62 | location = get_object_or_404(Location, pk=id_loc) | |||
|
63 | ||||
|
64 | kwargs = {} | |||
|
65 | kwargs['location'] = location | |||
|
66 | kwargs['location_keys'] = ['name', 'description'] | |||
|
67 | ||||
|
68 | kwargs['title'] = 'Location' | |||
|
69 | kwargs['suptitle'] = 'Details' | |||
|
70 | ||||
|
71 | return render(request, 'location.html', kwargs) | |||
|
72 | ||||
|
73 | def location_new(request): | |||
|
74 | ||||
|
75 | if request.method == 'GET': | |||
|
76 | form = LocationForm() | |||
|
77 | ||||
|
78 | if request.method == 'POST': | |||
|
79 | form = LocationForm(request.POST) | |||
|
80 | ||||
|
81 | if form.is_valid(): | |||
|
82 | form.save() | |||
|
83 | return redirect('url_locations') | |||
|
84 | ||||
|
85 | kwargs = {} | |||
|
86 | kwargs['form'] = form | |||
|
87 | kwargs['title'] = 'Location' | |||
|
88 | kwargs['suptitle'] = 'New' | |||
|
89 | kwargs['button'] = 'Create' | |||
|
90 | ||||
|
91 | return render(request, 'location_edit.html', kwargs) | |||
|
92 | ||||
|
93 | def location_edit(request, id_loc): | |||
|
94 | ||||
|
95 | location = get_object_or_404(Location, pk=id_loc) | |||
|
96 | ||||
|
97 | if request.method=='GET': | |||
|
98 | form = LocationForm(instance=location) | |||
|
99 | ||||
|
100 | if request.method=='POST': | |||
|
101 | form = LocationForm(request.POST, instance=location) | |||
|
102 | ||||
|
103 | if form.is_valid(): | |||
|
104 | form.save() | |||
|
105 | return redirect('url_locations') | |||
|
106 | ||||
|
107 | kwargs = {} | |||
|
108 | kwargs['form'] = form | |||
|
109 | kwargs['title'] = 'Location' | |||
|
110 | kwargs['suptitle'] = 'Edit' | |||
|
111 | kwargs['button'] = 'Update' | |||
|
112 | ||||
|
113 | return render(request, 'location_edit.html', kwargs) | |||
|
114 | ||||
|
115 | def location_delete(request, id_loc): | |||
|
116 | ||||
|
117 | location = get_object_or_404(Location, pk=id_loc) | |||
|
118 | ||||
|
119 | if request.method=='POST': | |||
|
120 | ||||
|
121 | if request.user.is_staff: | |||
|
122 | location.delete() | |||
|
123 | return redirect('url_locations') | |||
|
124 | ||||
|
125 | return HttpResponse("Not enough permission to delete this object") | |||
|
126 | ||||
|
127 | kwargs = {'object':location, 'loc_active':'active', | |||
|
128 | 'url_cancel':'url_location', 'id_item':id_loc} | |||
|
129 | ||||
|
130 | return render(request, 'item_delete.html', kwargs) | |||
|
131 | ||||
45 | def devices(request): |
|
132 | def devices(request): | |
46 |
|
133 | |||
47 | devices = Device.objects.all().order_by('device_type__name') |
|
134 | devices = Device.objects.all().order_by('device_type__name') | |
48 |
|
135 | |||
49 | # keys = ['id', 'device_type__name', 'name', 'ip_address'] |
|
136 | # keys = ['id', 'device_type__name', 'name', 'ip_address'] | |
50 | keys = ['id', 'name', 'ip_address', 'device_type'] |
|
137 | keys = ['id', 'name', 'ip_address', 'port_address', 'device_type'] | |
51 |
|
138 | |||
52 | kwargs = {} |
|
139 | kwargs = {} | |
53 | kwargs['device_keys'] = keys[1:] |
|
140 | kwargs['device_keys'] = keys[1:] | |
@@ -69,8 +156,6 def device(request, id_dev): | |||||
69 | kwargs['title'] = 'Device' |
|
156 | kwargs['title'] = 'Device' | |
70 | kwargs['suptitle'] = 'Details' |
|
157 | kwargs['suptitle'] = 'Details' | |
71 |
|
158 | |||
72 | kwargs['button'] = 'Add Device' |
|
|||
73 |
|
||||
74 | return render(request, 'device.html', kwargs) |
|
159 | return render(request, 'device.html', kwargs) | |
75 |
|
160 | |||
76 | def device_new(request): |
|
161 | def device_new(request): | |
@@ -251,21 +336,23 def experiment(request, id_exp): | |||||
251 | experiment = get_object_or_404(Experiment, pk=id_exp) |
|
336 | experiment = get_object_or_404(Experiment, pk=id_exp) | |
252 |
|
337 | |||
253 | experiments = Experiment.objects.filter(campaign=experiment.campaign) |
|
338 | experiments = Experiment.objects.filter(campaign=experiment.campaign) | |
254 | configurations = Configuration.objects.filter(experiment=experiment) |
|
339 | configurations = Configuration.objects.filter(experiment=experiment, type=0) | |
255 |
|
340 | |||
256 | kwargs = {} |
|
341 | kwargs = {} | |
257 |
|
342 | |||
258 | exp_keys = ['id', 'campaign', 'name', 'start_time', 'end_time'] |
|
343 | exp_keys = ['id', 'campaign', 'name', 'start_time', 'end_time'] | |
259 |
conf_keys = ['id', 'device__name', 'device__device_type |
|
344 | conf_keys = ['id', 'device__name', 'device__device_type', 'device__ip_address', 'device__port_address'] | |
260 |
|
345 | |||
|
346 | conf_labels = ['id', 'device__name', 'device_type', 'ip_address', 'port_address'] | |||
261 |
|
347 | |||
262 | kwargs['experiment_keys'] = exp_keys[1:] |
|
348 | kwargs['experiment_keys'] = exp_keys[1:] | |
263 | kwargs['experiment'] = experiment |
|
349 | kwargs['experiment'] = experiment | |
264 |
|
350 | |||
265 | kwargs['experiments'] = experiments.values(*exp_keys) |
|
351 | kwargs['experiments'] = experiments.values(*exp_keys) | |
266 |
|
352 | |||
|
353 | kwargs['configuration_labels'] = conf_labels[1:] | |||
267 | kwargs['configuration_keys'] = conf_keys[1:] |
|
354 | kwargs['configuration_keys'] = conf_keys[1:] | |
268 | kwargs['configurations'] = configurations.values(*conf_keys) |
|
355 | kwargs['configurations'] = configurations #.values(*conf_keys) | |
269 |
|
356 | |||
270 | kwargs['title'] = 'Experiment' |
|
357 | kwargs['title'] = 'Experiment' | |
271 | kwargs['suptitle'] = 'Details' |
|
358 | kwargs['suptitle'] = 'Details' | |
@@ -335,7 +422,7 def experiment_delete(request, id_exp): | |||||
335 |
|
422 | |||
336 | def dev_confs(request): |
|
423 | def dev_confs(request): | |
337 |
|
424 | |||
338 | configurations = Configuration.objects.all().order_by('experiment') |
|
425 | configurations = Configuration.objects.all().order_by('type', 'device__device_type', 'experiment') | |
339 |
|
426 | |||
340 | # keys = ['id', 'device__device_type__name', 'device__name', 'experiment__campaign__name', 'experiment__name'] |
|
427 | # keys = ['id', 'device__device_type__name', 'device__name', 'experiment__campaign__name', 'experiment__name'] | |
341 |
|
428 | |||
@@ -385,7 +472,8 def dev_conf_new(request, id_exp=0): | |||||
385 | experiment = Experiment.objects.get(pk=request.POST['experiment']) |
|
472 | experiment = Experiment.objects.get(pk=request.POST['experiment']) | |
386 | device = Device.objects.get(pk=request.POST['device']) |
|
473 | device = Device.objects.get(pk=request.POST['device']) | |
387 |
|
474 | |||
388 |
exp_devices = Device.objects.filter(configuration__experiment=experiment |
|
475 | exp_devices = Device.objects.filter(configuration__experiment=experiment, | |
|
476 | configuration__type=0) | |||
389 |
|
477 | |||
390 | if device.id not in exp_devices.values('id',): |
|
478 | if device.id not in exp_devices.values('id',): | |
391 |
|
479 | |||
@@ -401,9 +489,6 def dev_conf_new(request, id_exp=0): | |||||
401 | kwargs['suptitle'] = 'New' |
|
489 | kwargs['suptitle'] = 'New' | |
402 | kwargs['button'] = 'Create' |
|
490 | kwargs['button'] = 'Create' | |
403 |
|
491 | |||
404 | ###### SIDEBAR ###### |
|
|||
405 | kwargs.update(sidebar(conf)) |
|
|||
406 |
|
||||
407 | return render(request, 'dev_conf_edit.html', kwargs) |
|
492 | return render(request, 'dev_conf_edit.html', kwargs) | |
408 |
|
493 | |||
409 | def dev_conf_edit(request, id_conf): |
|
494 | def dev_conf_edit(request, id_conf): | |
@@ -494,7 +579,7 def sidebar(conf): | |||||
494 | configurations = Configuration.objects.filter(experiment=conf.experiment, type=0) |
|
579 | configurations = Configuration.objects.filter(experiment=conf.experiment, type=0) | |
495 |
|
580 | |||
496 | exp_keys = ['id', 'campaign', 'name', 'start_time', 'end_time'] |
|
581 | exp_keys = ['id', 'campaign', 'name', 'start_time', 'end_time'] | |
497 | conf_keys = ['id', 'device__name', 'device__device_type__name', 'device__ip_address'] |
|
582 | conf_keys = ['id', 'device'] | |
498 |
|
583 | |||
499 | kwargs = {} |
|
584 | kwargs = {} | |
500 |
|
585 | |||
@@ -504,6 +589,6 def sidebar(conf): | |||||
504 | kwargs['experiments'] = experiments.values(*exp_keys) |
|
589 | kwargs['experiments'] = experiments.values(*exp_keys) | |
505 |
|
590 | |||
506 | kwargs['configuration_keys'] = conf_keys[1:] |
|
591 | kwargs['configuration_keys'] = conf_keys[1:] | |
507 | kwargs['configurations'] = configurations.values(*conf_keys) |
|
592 | kwargs['configurations'] = configurations #.values(*conf_keys) | |
508 |
|
593 | |||
509 | return kwargs No newline at end of file |
|
594 | return kwargs |
General Comments 0
You need to be logged in to leave comments.
Login now