##// END OF EJS Templates
delete interface added to views...
Miguel Urco -
r18:b1ece123c007
parent child
Show More
@@ -0,0 +1,33
1 {% extends "base.html" %}
2 {% load bootstrap3 %}
3 {% load static %}
4 {% load main_tags %}
5
6 {% block dev-active %}{{dev_active}}{% endblock %}
7 {% block camp-active %}{{camp_active}}{% endblock %}
8 {% block exp-active %}{{exp_active}}{% endblock %}
9 {% block conf-active %}{{conf_active}}{% endblock %}
10
11 {% block content-title %}{{title}}{% endblock %}
12 {% block content-suptitle %}{{suptitle}}{% endblock %}
13
14 {% block content %}
15 <form action="" method="post">
16 {% csrf_token %}
17 <p>Are you sure you want to delete "{{ object }}"?</p>
18 <button type="button" class="btn btn-primary pull-right" style="margin-left: 10px" id="bt_cancel">Cancel</button>
19 <button type=submit class="btn btn-primary pull-right" style="margin-left: 10px" id="bt_ok">Confirm</button>
20 </form>
21 {% endblock %}
22
23 {% block sidebar%}
24 {% include "sidebar_devices.html" %}
25 {% endblock %}
26
27 {% block extra-js%}
28 <script type="text/javascript">
29 $("#bt_cancel").click(function() {
30 document.location = "{%if url_cancel%} {% url url_cancel id_item %} {%endif%}";
31 });
32 </script>
33 {% endblock %} No newline at end of file
@@ -1,104 +1,106
1 1 from itertools import chain
2 2 from django.db import models
3 3 from polymorphic import PolymorphicModel
4 4
5 5 CONF_STATES = (
6 6 (0, 'Active'),
7 7 (1, 'Historial'),
8 8 )
9 9
10 10 DEV_STATES = (
11 11 (0, 'No connected'),
12 12 (1, 'Connected'),
13 13 (2, 'Configured'),
14 14 (3, 'Running'),
15 15 )
16 16
17 17 DEV_TYPES = (
18 18 ('', 'Select a device type'),
19 19 ('rc', 'Radar Controller'),
20 20 ('dds', 'Direct Digital Synthesizer'),
21 21 ('jars', 'Jicamarca Radar System'),
22 22 ('usrp', 'Universal Software Radio Peripheral'),
23 23 ('cgs', 'Clock Generator System'),
24 24 ('abs', 'Automatic Beam Switching'),
25 25 )
26 26
27 27 # Create your models here.
28 28
29 29 class DeviceType(models.Model):
30 30
31 31 name = models.CharField(max_length = 10, choices = DEV_TYPES, default = 'rc')
32 32
33 33 description = models.TextField(blank=True, null=True)
34 34
35 35 # info = models.TextField(blank=True, null=True)
36 36 # status = models.PositiveSmallIntegerField(default=1, choices=STATES)
37 37
38 38 class Meta:
39 39 db_table = 'db_device_types'
40 40
41 41 def __unicode__(self):
42 42 return u'%s' % self.name
43 43
44 44 class Device(models.Model):
45 45
46 46 device_type = models.ForeignKey(DeviceType)
47 47 name = models.CharField(max_length=40, default='')
48 48 ip_address = models.GenericIPAddressField(protocol='IPv4', default='0.0.0.0')
49 49 port_address = models.PositiveSmallIntegerField(default=2000)
50 50 description = models.TextField(blank=True, null=True)
51 51 status = models.PositiveSmallIntegerField(default=0, choices=DEV_STATES)
52 52
53 53 # serial_number = models.CharField(max_length=40, default='')
54 54 # mac_address = models.CharField(max_length = 20, null=True, blank=True)
55 55
56 56
57 57 class Meta:
58 58 db_table = 'db_devices'
59 59
60 60 def __unicode__(self):
61 61 return u'[%s]: %s | %s' % (self.device_type.name, self.name, self.ip_address)
62 62
63 63 class Campaign(models.Model):
64 64
65 65 name = models.CharField(max_length=40, unique=True)
66 66 start_date = models.DateTimeField(blank=True, null=True)
67 67 end_date = models.DateTimeField(blank=True, null=True)
68 68 tags = models.CharField(max_length=40)
69 69 description = models.TextField(blank=True, null=True)
70 70 template = models.BooleanField(default=False)
71 71
72 72 class Meta:
73 73 db_table = 'db_campaigns'
74 74
75 75 def __unicode__(self):
76 76 return u'%s: %s - %s' % (self.name, self.start_date.date(), self.end_date.date())
77 77
78 78 class Experiment(models.Model):
79 79
80 80 campaign = models.ForeignKey(Campaign)
81 81 name = models.CharField(max_length=40, default='')
82 82 start_time = models.TimeField(default='00:00:00')
83 83 end_time = models.TimeField(default='23:59:59')
84 84
85 85 class Meta:
86 86 db_table = 'db_experiments'
87 87
88 88 def __unicode__(self):
89 89 return u'[%s]: %s: %s - %s' % (self.campaign.name, self.name, self.start_time, self.end_time)
90 90
91 91 class Configuration(PolymorphicModel):
92 92
93 93 experiment = models.ForeignKey(Experiment)
94 94 device = models.ForeignKey(Device)
95 95 status = models.PositiveSmallIntegerField(default=0, choices=CONF_STATES)
96 96 date = models.DateTimeField(auto_now=True, blank=True)
97 97
98 98 # parameters = models.TextField(default='{}')
99 99 class Meta:
100 100 db_table = 'db_configurations'
101 101
102 102 def __unicode__(self):
103 return u'%s [%s]' % (self.experiment.name, self.device.name)
103 return u'[%s - %s]: %s' % (self.experiment.campaign.name,
104 self.experiment.name,
105 self.device.name)
104 106 No newline at end of file
@@ -1,117 +1,117
1 1 <!DOCTYPE html>
2 2 {% load static %}
3 3 <html lang="en">
4 4 <head>
5 5 <meta charset="utf-8">
6 6 <title>{% block title %}Jicamarca Integrated Radar System:::::{% endblock %}</title>
7 7 <meta name="description" content="">
8 8 <meta name="author" content="">
9 9 <meta name="viewport" content="width=device-width, initial-scale=1">
10 10 {# bootstrap_css #}
11 11 <link href="{% static 'css/bootstrap-flatly.min.css' %}" media="screen" rel="stylesheet">
12 12 <style type="text/css">
13 13 body {padding-top: 60px}
14 14 .logo {padding-top: 5px; height: 50px}
15 15 .clickable-row {cursor: pointer;}
16 16 </style>
17 17 <!--[if lt IE 9]>
18 18 <script src="//html5shim.googlecode.com/svn/trunk/html5.js"></script>
19 19 <![endif]-->
20 20 {% block extra-head %}
21 21 {% endblock %}
22 22 </head>
23 23
24 24 <body>
25 25
26 26 {% block main_menu %}
27 27 <nav class="navbar navbar-default navbar-fixed-top" role="banner">
28 28 <div class="container-fluid">
29 29 <div class="navbar-header">
30 30 <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navigationbar">
31 31 <span class="sr-only">Toggle navigation</span>
32 32 <span class="icon-bar"></span>
33 33 <span class="icon-bar"></span>
34 34 <span class="icon-bar"></span>
35 35 </button>
36 36 <a class="navbar-brand" href="{% url 'index' %}" style="padding-top:1px"><img class="logo" alt="JRO" src="{% static "images/logo-jro-white-trans.png" %}"></a>
37 37 </div>
38 38 <div class="collapse navbar-collapse" id="navigationbar">
39 39 <ul class="nav navbar-nav">
40 <li class=" dropdown {% block dev-active %}{% endblock %}"><a href="{% url 'url_devices'%}">Devices</a>
41 </li>
40 42 <li class=" dropdown {% block camp-active %}{% endblock %}"><a href="{% url 'url_campaigns'%}">Campaigns</a>
41 43 </li>
42 44 <li class=" dropdown {% block exp-active %}{% endblock %}"><a href="{% url 'url_experiments'%}">Experiments</a>
43 45 </li>
44 <li class=" dropdown {% block dev-active %}{% endblock %}"><a href="{% url 'url_devices'%}">Devices</a>
45 </li>
46 46 <li class=" dropdown {% block conf-active %}{% endblock %}"><a href="{% url 'url_dev_confs'%}">Device Configurations</a>
47 47 </li>
48 48 </ul>
49 49 <ul class="nav navbar-nav navbar-right">
50 50 <li class="nav-divider"></li>
51 51 {% if user.is_authenticated %}
52 52 <li class="dropdown">
53 53 <a href="#" class="dropdown-toggle" data-toggle="dropdown">Hi {{ user.username }}<span class="caret"></span></a>
54 54 <ul class="dropdown-menu" role="menu">
55 55 <li><a href="#">Control Panel</a></li>
56 56 <li><a href="{% url 'django.contrib.auth.views.logout' %}">Logout</a></li>
57 57 </ul>
58 58 </li>
59 59 {% else %}
60 60 <li><a href="{% url 'django.contrib.auth.views.login' %}?next={{request.get_full_path}}">Login</a></li>
61 61 {% endif %}
62 62 </ul>
63 63 </div>
64 64 </div>
65 65 </nav>
66 66 <div style="clear: both;"></div>
67 67 {% endblock %}
68 68
69 69 <div class="container">
70 70 <div id="page" class="row" style="min-height:600px">
71 71
72 72 <div class="col-md-3 hidden-xs hidden-sm" role="complementary">
73 73 <br><br>
74 74 <div id="sidebar">
75 75 {% block sidebar%}
76 76 {% endblock %}
77 77 </div>
78 78 </div>
79 79
80 80 <div class="col-md-9 col-xs-12" role="main">
81 81 <div class="page-header">
82 82 <h1>{% block content-title %}{% endblock %} <small>{% block content-suptitle %}{% endblock %}</small></h1>
83 83 <hr>
84 84 </div>
85 85 {% block content %}
86 86 {% endblock %}
87 87 <br>
88 88 {% block messages %}
89 89 {% endblock %}
90 90 </div>
91 91
92 92
93 93 </div><!--/row-->
94 94 </div> <!-- container -->
95 95
96 96 <div id="debug">{{debug}}</div>
97 97
98 98 {% block footer %}
99 99 <footer class="footer">
100 100 <div class="container">
101 101 <p><hr></p>
102 102 <p>
103 103 &copy; <a href="http://jro.igp.gob.pe">Jicamarca Radio Observatory</a> - {% now "Y" %}
104 104 </p>
105 105 </div>
106 106 </footer>
107 107 {% endblock %}
108 108
109 109 {# bootstrap_javascript jquery=True #}
110 110 <script src="{% static 'js/jquery.min.js' %}"></script>
111 111 <script src="{% static 'js/bootstrap.min.js' %}"></script>
112 112
113 113 {% block extra-js %}
114 114 {% endblock%}
115 115 </body>
116 116 </html>
117 117
@@ -1,86 +1,84
1 1 {% extends "base.html" %}
2 2 {% load bootstrap3 %}
3 3 {% load static %}
4 4 {% load main_tags %}
5 5 {% block extra-head %}
6 6 <link href="{% static 'css/bootstrap-datetimepicker.min.css' %}" media="screen" rel="stylesheet">
7 7 {% endblock %}
8 8
9 9 {% block camp-active %}active{% endblock %}
10 10
11 11 {% block content-title %}{{title}}{% endblock %}
12 12 {% block content-suptitle %}{{suptitle}}{% endblock %}
13 13
14 14 {% block content %}
15 15 <table class="table table-bordered">
16 16 {% for key in campaign_keys %}
17 17 <tr><th>{{key|title}}</th><td>{{campaign|attr:key}}</td></tr>
18 18 {% endfor %}
19 19 </table>
20 20
21 21 <button class="btn btn-primary pull-right" style="margin-left: 10px" id="bt_export">Export</button>
22 22 <button class="btn btn-primary pull-right" style="margin-left: 10px" id="bt_edit">Edit</button>
23 23
24 24 <br></br>
25 25 <br></br>
26 26
27 27 <div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true">
28 28
29 29 <div class="panel panel-default">
30 30 <div class="panel-heading" role="tab" id="headingTwo">
31 31 <h4 class="panel-title">
32 32 <a class="collapsed" role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseTwo" aria-expanded="false" aria-controls="collapseTwo">
33 33 Experiment List
34 34 </a>
35 35 </h4>
36 36 </div>
37 37
38 38 <div id="collapseTwo" class="panel-collapse collapse in" role="tabpanel" aria-labelledby="headingTwo">
39 39 <div class="panel-body">
40 40 <table class="table table-hover">
41 41 <tr>
42 42 <th>#</th>
43 43 {% for header in experiment_keys %}
44 44 <th>{{ header|title }}</th>
45 45 {% endfor%}
46 46 </tr>
47 47 {% for item in experiments %}
48 48 <tr class="clickable-row" data-href="{% url 'url_experiment' item.id %}">
49 49 <td>{{ forloop.counter }}</td>
50 50 {% for key in experiment_keys %}
51 51 <td>{{ item|attr:key }}</td>
52 52 {% endfor %}
53 53 </tr>
54 54 {% endfor %}
55 55 </table>
56 56 <button class="btn btn-primary pull-right" id="bt_add">{{button}}</button>
57 57 </div>
58 58 </div>
59 59 </div>
60 60 </div>
61 61 {% endblock %}
62 62
63 63 {% block sidebar%}
64 64 {% include "sidebar_devices.html" %}
65 65 {% endblock %}
66 66
67 67 {% block extra-js%}
68 <script src="{% static 'js/moment.min.js' %}"></script>
69 <script src="{% static 'js/bootstrap-datetimepicker.min.js' %}"></script>
70 68 <script type="text/javascript">
71 69 $('.input-group.date').datetimepicker({"format": "YYYY-MM-DD HH:mm"});
72 70
73 71 $(".clickable-row").click(function() {
74 72 document.location = $(this).data("href");
75 73 });
76 74
77 75 $("#bt_edit").click(function() {
78 76 document.location = "{% url 'url_edit_campaign' campaign.id%}";
79 77 });
80 78
81 79 $("#bt_add").click(function() {
82 80 document.location = "{% url 'url_add_experiment' campaign.id%}";
83 81 });
84 82
85 83 </script>
86 84 {% endblock %} No newline at end of file
@@ -1,35 +1,34
1 1 {% extends "base.html" %}
2 2 {% load bootstrap3 %}
3 3 {% load static %}
4 4 {% load main_tags %}
5 5 {% block extra-head %}
6 6 <link href="{% static 'css/bootstrap-datetimepicker.min.css' %}" media="screen" rel="stylesheet">
7 7 {% endblock %}
8 8
9 9 {% block camp-active %}active{% endblock %}
10 10
11 11 {% block content-title %}{{title}}{% endblock %}
12 12 {% block content-suptitle %}{{suptitle}}{% endblock %}
13 13
14 14 {% block content %}
15 15 <form class="form" method="post" action="">
16 16 {% csrf_token %}
17 17 {% bootstrap_form form layout='horizontal' size='medium' %}
18 18 <div style="clear: both;"></div>
19 19 <br>
20 20 <button type="submit" class="btn btn-primary pull-right">{{button}}</button>
21 21 </form>
22 22 {% endblock %}
23 23
24 24 {% block sidebar%}
25 25 {% include "sidebar_devices.html" %}
26 26 {% endblock %}
27 27
28 28 {% block extra-js%}
29 <script src="{% static 'js/moment.min.js' %}"></script>
30 29 <script src="{% static 'js/bootstrap-datetimepicker.min.js' %}"></script>
31 30 <script type="text/javascript">
32 31 $('.input-group.date').datetimepicker({"format": "YYYY-MM-DD HH:mm"});
33 32
34 33 </script>
35 34 {% endblock %} No newline at end of file
@@ -1,54 +1,50
1 1 {% extends "base.html" %}
2 2 {% load bootstrap3 %}
3 3 {% load static %}
4 4 {% load main_tags %}
5 5 {% block extra-head %}
6 6 <link href="{% static 'css/bootstrap-datetimepicker.min.css' %}" media="screen" rel="stylesheet">
7 7 {% endblock %}
8 8
9 9 {% block camp-active %}active{% endblock %}
10 10
11 11 {% block content-title %}{{title}}{% endblock %}
12 12 {% block content-suptitle %}{{suptitle}}{% endblock %}
13 13
14 14 {% block content %}
15 15 <table class="table table-hover">
16 16 <tr>
17 17 <th>#</th>
18 18 {% for key in campaign_keys %}
19 19 <th>{{ key|title }}</th>
20 20 {% endfor%}
21 21 </tr>
22 22 {% for campaign in campaigns %}
23 23 <tr class="clickable-row" data-href="{% url 'url_campaign' campaign.id %}">
24 24 <td>{{ forloop.counter }}</td>
25 25 {% for key in campaign_keys %}
26 26 <td>{{ campaign|attr:key }}</td>
27 27 {% endfor %}
28 28 </tr>
29 29 {% endfor %}
30 30 </table>
31 31 <button class="btn btn-primary pull-right" id="bt_add">{{button}}</button>
32 32 {% endblock %}
33 33
34 34 {% block sidebar%}
35 35 {% include "sidebar_devices.html" %}
36 36 {% endblock %}
37 37
38 38 {% block extra-js%}
39 <script src="{% static 'js/moment.min.js' %}"></script>
40 <script src="{% static 'js/bootstrap-datetimepicker.min.js' %}"></script>
41 39 <script type="text/javascript">
42 $('.input-group.date').datetimepicker({"format": "YYYY-MM-DD HH:mm"});
43 $('.input-group.time').datetimepicker({"format": "HH:mm"});
44 40
45 41 $("#bt_add").click(function() {
46 42 document.location = "{% url 'url_add_campaign' %}";
47 43 });
48 44
49 45 $(".clickable-row").click(function() {
50 46 document.location = $(this).data("href");
51 47 });
52 48
53 49 </script>
54 50 {% endblock %} No newline at end of file
@@ -1,54 +1,50
1 1 {% extends "base.html" %}
2 2 {% load bootstrap3 %}
3 3 {% load static %}
4 4 {% load main_tags %}
5 5 {% block extra-head %}
6 6 <link href="{% static 'css/bootstrap-datetimepicker.min.css' %}" media="screen" rel="stylesheet">
7 7 {% endblock %}
8 8
9 9 {% block conf-active %}active{% endblock %}
10 10
11 11 {% block content-title %}{{title}}{% endblock %}
12 12 {% block content-suptitle %}{{suptitle}}{% endblock %}
13 13
14 14 {% block content %}
15 15 <table class="table table-hover">
16 16 <tr>
17 17 <th>#</th>
18 18 {% for key in configuration_keys %}
19 19 <th>{{ key|title }}</th>
20 20 {% endfor%}
21 21 </tr>
22 22 {% for item in configurations %}
23 23 <tr class="clickable-row" data-href="/{{item.device__device_type__name}}/{{item.id}}/">
24 24 <td>{{ forloop.counter }}</td>
25 25 {% for key in configuration_keys %}
26 26 <td>{{ item|attr:key }}</td>
27 27 {% endfor %}
28 28 </tr>
29 29 {% endfor %}
30 30 </table>
31 31 <button class="btn btn-primary pull-right" id="bt_add">{{button}}</button>
32 32 {% endblock %}
33 33
34 34 {% block sidebar%}
35 35 {% include "sidebar_devices.html" %}
36 36 {% endblock %}
37 37
38 38 {% block extra-js%}
39 <script src="{% static 'js/moment.min.js' %}"></script>
40 <script src="{% static 'js/bootstrap-datetimepicker.min.js' %}"></script>
41 39 <script type="text/javascript">
42 $('.input-group.date').datetimepicker({"format": "YYYY-MM-DD HH:mm"});
43 $('.input-group.time').datetimepicker({"format": "HH:mm"});
44
40
45 41 $("#bt_add").click(function() {
46 42 document.location = "{% url 'url_add_dev_conf' 0%}";
47 43 });
48 44
49 45 $(".clickable-row").click(function() {
50 46 document.location = $(this).data("href");
51 47 });
52 48
53 49 </script>
54 50 {% endblock %} No newline at end of file
@@ -1,36 +1,34
1 1 {% extends "base.html" %}
2 2 {% load bootstrap3 %}
3 3 {% load static %}
4 4 {% load main_tags %}
5 5
6 6 {% block dev-active %}active{% endblock %}
7 7
8 8 {% block content-title %}{{title}}{% endblock %}
9 9 {% block content-suptitle %}{{suptitle}}{% endblock %}
10 10
11 11 {% block content %}
12 12 <table class="table table-bordered">
13 13 {% for key in device_keys %}
14 14 <tr><th>{{key|title}}</th><td>{{device|attr:key}}</td></tr>
15 15 {% endfor %}
16 16 </table>
17 17 <button class="btn btn-primary pull-right" style="margin-left: 10px" id="bt_edit_device">Edit</button>
18 18 <br></br>
19 19 <br></br>
20 20 {% endblock %}
21 21
22 22 {% block sidebar%}
23 23 {% include "sidebar_devices.html" %}
24 24 {% endblock %}
25 25
26 26 {% block extra-js%}
27 <script src="{% static 'js/moment.min.js' %}"></script>
28 <script src="{% static 'js/bootstrap-datetimepicker.min.js' %}"></script>
29 27 <script type="text/javascript">
30 28
31 29 $("#bt_edit_device").click(function() {
32 30 document.location = "{% url 'url_edit_device' device.id%}";
33 31 });
34 32
35 33 </script>
36 34 {% endblock %} No newline at end of file
@@ -1,49 +1,47
1 1 {% extends "base.html" %}
2 2 {% load bootstrap3 %}
3 3 {% load static %}
4 4 {% load main_tags %}
5 5
6 6 {% block dev-active %}active{% endblock %}
7 7
8 8 {% block content-title %}{{title}}{% endblock %}
9 9 {% block content-suptitle %}{{suptitle}}{% endblock %}
10 10
11 11 {% block content %}
12 12 <table class="table table-hover">
13 13 <tr>
14 14 <th>#</th>
15 15 {% for key in device_keys %}
16 16 <th>{{ key|title }}</th>
17 17 {% endfor%}
18 18 </tr>
19 19 {% for device in devices %}
20 20 <tr class="clickable-row" data-href="{% url 'url_device' device.id %}">
21 21 <td>{{ forloop.counter }}</td>
22 22 {% for key in device_keys %}
23 23 <td>{{ device|attr:key }}</td>
24 24 {% endfor %}
25 25 </tr>
26 26 {% endfor %}
27 27 </table>
28 28 <button class="btn btn-primary pull-right" id="bt_add">{{button}}</button>
29 29 {% endblock %}
30 30
31 31 {% block sidebar%}
32 32 {% include "sidebar_devices.html" %}
33 33 {% endblock %}
34 34
35 35 {% block extra-js%}
36 <script src="{% static 'js/moment.min.js' %}"></script>
37 <script src="{% static 'js/bootstrap-datetimepicker.min.js' %}"></script>
38 36 <script type="text/javascript">
39 37
40 38 $("#bt_add").click(function() {
41 39 document.location = "{% url 'url_add_device' %}";
42 40 });
43 41
44 42 $(".clickable-row").click(function() {
45 43 document.location = $(this).data("href");
46 44 });
47 45
48 46 </script>
49 47 {% endblock %} No newline at end of file
@@ -1,83 +1,80
1 1 {% extends "base.html" %}
2 2 {% load bootstrap3 %}
3 3 {% load static %}
4 4 {% load main_tags %}
5 5 {% block extra-head %}
6 6 <link href="{% static 'css/bootstrap-datetimepicker.min.css' %}" media="screen" rel="stylesheet">
7 7 {% endblock %}
8 8
9 9 {% block exp-active %}active{% endblock %}
10 10
11 11 {% block content-title %}{{title}}{% endblock %}
12 12 {% block content-suptitle %}{{suptitle}}{% endblock %}
13 13
14 14 {% block content %}
15 15 <table class="table table-bordered">
16 16 {% for key in experiment_keys %}
17 17 <tr><th>{{key|title}}</th><td>{{experiment|attr:key}}</td></tr>
18 18 {% endfor %}
19 19 </table>
20 20 <button class="btn btn-primary pull-right" style="margin-left: 10px" id="bt_export">Export</button>
21 21 <button class="btn btn-primary pull-right" style="margin-left: 10px" id="bt_edit">Edit</button>
22 22 <br></br>
23 23 <br></br>
24 24
25 25 <div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true">
26 26
27 27 <div class="panel panel-default">
28 28 <div class="panel-heading" role="tab" id="headingTwo">
29 29 <h4 class="panel-title">
30 30 <a class="collapsed" role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseTwo" aria-expanded="false" aria-controls="collapseThree">
31 31 Device Configurations
32 32 </a>
33 33 </h4>
34 34 </div>
35 35 <div id="collapseTwo" class="panel-collapse collapse in" role="tabpanel" aria-labelledby="headingTwo">
36 36 <div class="panel-body">
37 37 <table class="table table-hover">
38 38 <tr>
39 39 <th>#</th>
40 40 {% for key in configuration_keys %}
41 41 <th>{{ key|title }}</th>
42 42 {% endfor%}
43 43 </tr>
44 44 {% for item in configurations %}
45 45 <tr class="clickable-row" data-href="/{{item.device__device_type__name}}/{{item.id}}/">
46 46 <td>{{ forloop.counter }}</td>
47 47 {% for key in configuration_keys %}
48 48 <td>{{ item|attr:key }}</td>
49 49 {% endfor %}
50 50 </tr>
51 51 {% endfor %}
52 52 </table>
53 53 <button class="btn btn-primary pull-right" id="bt_add_conf">{{button}}</button>
54 54 </div>
55 55 </div>
56 56 </div>
57 57 </div>
58 58 {% endblock %}
59 59
60 60 {% block sidebar%}
61 61 {% include "sidebar_devices.html" %}
62 62 {% endblock %}
63 63
64 64 {% block extra-js%}
65
66 <script src="{% static 'js/moment.min.js' %}"></script>
67 <script src="{% static 'js/bootstrap-datetimepicker.min.js' %}"></script>
68 65 <script type="text/javascript">
69 66
70 67 $(".clickable-row").click(function() {
71 68 document.location = $(this).data("href");
72 69 });
73 70
74 71 $("#bt_edit").click(function() {
75 72 document.location = "{% url 'url_edit_experiment' experiment.id%}";
76 73 });
77 74
78 75 $("#bt_add_conf").click(function() {
79 76 document.location = "{% url 'url_add_dev_conf' experiment.id%}";
80 77 });
81 78
82 79 </script>
83 80 {% endblock %} No newline at end of file
@@ -1,35 +1,33
1 1 {% extends "base.html" %}
2 2 {% load bootstrap3 %}
3 3 {% load static %}
4 4 {% load main_tags %}
5 5 {% block extra-head %}
6 6 <link href="{% static 'css/bootstrap-datetimepicker.min.css' %}" media="screen" rel="stylesheet">
7 7 {% endblock %}
8 8
9 9 {% block exp-active %}active{% endblock %}
10 10
11 11 {% block content-title %}{{title}}{% endblock %}
12 12 {% block content-suptitle %}{{suptitle}}{% endblock %}
13 13
14 14 {% block content %}
15 15 <form class="form" method="post" action="">
16 16 {% csrf_token %}
17 17 {% bootstrap_form form layout='horizontal' size='medium' %}
18 18 <div style="clear: both;"></div>
19 19 <br>
20 20 <button type="submit" class="btn btn-primary pull-right">{{button}}</button>
21 21 </form>
22 22 {% endblock %}
23 23
24 24 {% block sidebar%}
25 25 {% include "sidebar_devices.html" %}
26 26 {% endblock %}
27 27
28 28 {% block extra-js%}
29
30 <script src="{% static 'js/moment.min.js' %}"></script>
31 29 <script src="{% static 'js/bootstrap-datetimepicker.min.js' %}"></script>
32 30 <script type="text/javascript">
33 31 $('.input-group.date').datetimepicker({"format": "YYYY-MM-DD HH:mm"});
34 32 </script>
35 33 {% endblock %} No newline at end of file
@@ -1,54 +1,50
1 1 {% extends "base.html" %}
2 2 {% load bootstrap3 %}
3 3 {% load static %}
4 4 {% load main_tags %}
5 5 {% block extra-head %}
6 6 <link href="{% static 'css/bootstrap-datetimepicker.min.css' %}" media="screen" rel="stylesheet">
7 7 {% endblock %}
8 8
9 9 {% block exp-active %}active{% endblock %}
10 10
11 11 {% block content-title %}{{title}}{% endblock %}
12 12 {% block content-suptitle %}{{suptitle}}{% endblock %}
13 13
14 14 {% block content %}
15 15 <table class="table table-hover">
16 16 <tr>
17 17 <th>#</th>
18 18 {% for key in experiment_keys %}
19 19 <th>{{ key|title }}</th>
20 20 {% endfor%}
21 21 </tr>
22 22 {% for experiment in experiments %}
23 23 <tr class="clickable-row" data-href="{% url 'url_experiment' experiment.id %}">
24 24 <td>{{ forloop.counter }}</td>
25 25 {% for key in experiment_keys %}
26 26 <td>{{ experiment|attr:key }}</td>
27 27 {% endfor %}
28 28 </tr>
29 29 {% endfor %}
30 30 </table>
31 31 <button class="btn btn-primary pull-right" id="bt_add">{{button}}</button>
32 32 {% endblock %}
33 33
34 34 {% block sidebar%}
35 35 {% include "sidebar_devices.html" %}
36 36 {% endblock %}
37 37
38 38 {% block extra-js%}
39
40 <script src="{% static 'js/moment.min.js' %}"></script>
41 <script src="{% static 'js/bootstrap-datetimepicker.min.js' %}"></script>
42 39 <script type="text/javascript">
43 $('.input-group.date').datetimepicker({"format": "YYYY-MM-DD HH:mm"});
44
40
45 41 $(".clickable-row").click(function() {
46 42 document.location = $(this).data("href");
47 43 });
48 44
49 45 $("#bt_add").click(function() {
50 46 document.location = "{% url 'url_add_experiment' 0 %}";
51 47 });
52 48
53 49 </script>
54 50 {% endblock %} No newline at end of file
@@ -1,25 +1,27
1 1 from django.conf.urls import url
2 2
3 3 urlpatterns = (
4
5 4 url(r'^device/add/$', 'apps.main.views.add_device', name='url_add_device'),
6 5 url(r'^device/$', 'apps.main.views.devices', name='url_devices'),
7 6 url(r'^device/(?P<id_dev>-?\d+)/$', 'apps.main.views.device', name='url_device'),
8 7 url(r'^device/(?P<id_dev>-?\d+)/edit/$', 'apps.main.views.edit_device', name='url_edit_device'),
8 url(r'^device/(?P<id_dev>-?\d+)/delete/$', 'apps.main.views.delete_device', name='url_delete_device'),
9 9
10 10 url(r'^campaign/add/$', 'apps.main.views.add_campaign', name='url_add_campaign'),
11 11 url(r'^campaign/$', 'apps.main.views.campaigns', name='url_campaigns'),
12 12 url(r'^campaign/(?P<id_camp>-?\d+)/$', 'apps.main.views.campaign', name='url_campaign'),
13 13 url(r'^campaign/(?P<id_camp>-?\d+)/edit/$', 'apps.main.views.edit_campaign', name='url_edit_campaign'),
14 url(r'^campaign/(?P<id_camp>-?\d+)/delete/$', 'apps.main.views.delete_campaign', name='url_delete_campaign'),
14 15
15 16 url(r'^campaign/(?P<id_camp>-?\d+)/add_experiment/$', 'apps.main.views.add_experiment', name='url_add_experiment'),
16 17 url(r'^experiment/$', 'apps.main.views.experiments', name='url_experiments'),
17 18 url(r'^experiment/(?P<id_exp>-?\d+)/$', 'apps.main.views.experiment', name='url_experiment'),
18 19 url(r'^experiment/(?P<id_exp>-?\d+)/edit/$', 'apps.main.views.edit_experiment', name='url_edit_experiment'),
19
20 url(r'^experiment/(?P<id_exp>-?\d+)/delete/$', 'apps.main.views.delete_experiment', name='url_delete_experiment'),
21
20 22 url(r'^experiment/(?P<id_exp>-?\d+)/add_dev_conf/$', 'apps.main.views.add_dev_conf', name='url_add_dev_conf'),
21 23 url(r'^dev_conf/$', 'apps.main.views.dev_confs', name='url_dev_confs'),
22 24 url(r'^dev_conf/(?P<id_conf>-?\d+)/$', 'apps.main.views.dev_conf', name='url_dev_conf'),
23 25 url(r'^dev_conf/(?P<id_conf>-?\d+)/edit/$', 'apps.main.views.edit_dev_conf', name='url_edit_dev_conf'),
24
26 url(r'^dev_conf/(?P<id_conf>-?\d+)/delete/$', 'apps.main.views.delete_dev_conf', name='url_delete_dev_conf'),
25 27 )
@@ -1,507 +1,569
1 from django.shortcuts import render, redirect
1 from django.shortcuts import render, redirect, HttpResponse
2 2
3 3 from .forms import CampaignForm, ExperimentForm, DeviceForm, ConfigurationForm
4 4 from apps.cgs.forms import CGSConfigurationForm
5 5 from apps.jars.forms import JARSConfigurationForm
6 6 from apps.usrp.forms import USRPConfigurationForm
7 7 from apps.abs.forms import ABSConfigurationForm
8 8 from apps.rc.forms import RCConfigurationForm
9 9 from apps.dds.forms import DDSConfigurationForm
10 10
11 11 from .models import Campaign, Experiment, Device, Configuration
12 12 from apps.cgs.models import CGSConfiguration
13 13 from apps.jars.models import JARSConfiguration
14 14 from apps.usrp.models import USRPConfiguration
15 15 from apps.abs.models import ABSConfiguration
16 16 from apps.rc.models import RCConfiguration
17 17 from apps.dds.models import DDSConfiguration
18 18
19 19 # Create your views here.
20 20
21 21 CONF_FORMS = {
22 22 'rc': RCConfigurationForm,
23 23 'dds': DDSConfigurationForm,
24 24 'jars': JARSConfigurationForm,
25 25 'cgs': CGSConfigurationForm,
26 26 'abs': ABSConfigurationForm,
27 27 'usrp': USRPConfigurationForm,
28 28 }
29 29
30 30 CONF_MODELS = {
31 31 'rc': RCConfiguration,
32 32 'dds': DDSConfiguration,
33 33 'jars': JARSConfiguration,
34 34 'cgs': CGSConfiguration,
35 35 'abs': ABSConfiguration,
36 36 'usrp': USRPConfiguration,
37 37 }
38 38
39 39 def index(request):
40 40 kwargs = {}
41 41
42 42 return render(request, 'index.html', kwargs)
43 43
44 44 def devices(request):
45 45
46 46 devices = Device.objects.all().order_by('device_type__name')
47 47
48 48 keys = ['id', 'device_type__name', 'name', 'ip_address']
49 49
50 50 kwargs = {}
51 51 kwargs['device_keys'] = keys[1:]
52 52 kwargs['devices'] = devices.values(*keys)
53 53 kwargs['title'] = 'Device'
54 54 kwargs['suptitle'] = 'List'
55 55 kwargs['button'] = 'New Device'
56 56
57 57 return render(request, 'devices.html', kwargs)
58 58
59 59 def device(request, id_dev):
60 60
61 61 device = Device.objects.get(pk=id_dev)
62 62
63 # form = DeviceForm(instance=device)
64
65 63 kwargs = {}
66 64 kwargs['device'] = device
67 65 kwargs['device_keys'] = ['device_type', 'name', 'ip_address', 'port_address', 'description']
68 66
69 67 kwargs['title'] = 'Device'
70 68 kwargs['suptitle'] = 'Details'
71 69
72 # kwargs['form'] = form
73 70 kwargs['button'] = 'Add Device'
74 71
75 72 return render(request, 'device.html', kwargs)
76 73
77 74 def add_device(request):
78 75
79 76 if request.method == 'GET':
80 77 form = DeviceForm()
81 78
82 79 if request.method == 'POST':
83 80 form = DeviceForm(request.POST)
84 81
85 82 if form.is_valid():
86 83 form.save()
87 84 return redirect('url_devices')
88 85
89 86 kwargs = {}
90 87 kwargs['form'] = form
91 88 kwargs['title'] = 'Device'
92 89 kwargs['suptitle'] = 'New'
93 90 kwargs['button'] = 'Create'
94 91
95 92 return render(request, 'device_edit.html', kwargs)
96 93
97 94 def edit_device(request, id_dev):
98 95
99 96 device = Device.objects.get(pk=id_dev)
100 97
101 98 if request.method=='GET':
102 99 form = DeviceForm(instance=device)
103 100
104 101 if request.method=='POST':
105 102 form = DeviceForm(request.POST, instance=device)
106 103
107 104 if form.is_valid():
108 105 form.save()
109 106 return redirect('url_devices')
110 107
111 108 kwargs = {}
112 109 kwargs['form'] = form
113 110 kwargs['title'] = 'Device'
114 111 kwargs['suptitle'] = 'Edit'
115 112 kwargs['button'] = 'Update'
116 113
117 114 return render(request, 'device_edit.html', kwargs)
118 115
116 def delete_device(request, id_dev):
117
118 device = Device.objects.get(pk=id_dev)
119
120 if request.method=='POST':
121
122 if request.user.is_staff:
123 device.delete()
124 return redirect('url_devices')
125
126 return HttpResponse("Not enough permission to delete this object")
127
128 kwargs = {'object':device, 'dev_active':'active',
129 'url_cancel':'url_device', 'id_item':id_dev}
130
131 return render(request, 'item_delete.html', kwargs)
132
119 133 def campaigns(request):
120 134
121 135 campaigns = Campaign.objects.all().order_by('start_date')
122 136
123 137 keys = ['id', 'name', 'start_date', 'end_date']
124 138
125 139 kwargs = {}
126 140 kwargs['campaign_keys'] = keys[1:]
127 141 kwargs['campaigns'] = campaigns.values(*keys)
128 142 kwargs['title'] = 'Campaign'
129 143 kwargs['suptitle'] = 'List'
130 144 kwargs['button'] = 'New Campaign'
131 145
132 146 return render(request, 'campaigns.html', kwargs)
133 147
134 148 def campaign(request, id_camp):
135 149
136 150 campaign = Campaign.objects.get(pk=id_camp)
137 151 experiments = Experiment.objects.filter(campaign=campaign)
138 152
139 153 form = CampaignForm(instance=campaign)
140 154
141 155 kwargs = {}
142 156 kwargs['campaign'] = campaign
143 157 kwargs['campaign_keys'] = ['name', 'start_date', 'end_date', 'tags', 'description']
144 158
145 159 keys = ['id', 'name', 'start_time', 'end_time']
146 160
147 161 kwargs['experiment_keys'] = keys[1:]
148 162 kwargs['experiments'] = experiments.values(*keys)
149 163
150 164 kwargs['title'] = 'Campaign'
151 165 kwargs['suptitle'] = 'Details'
152 166
153 167 kwargs['form'] = form
154 168 kwargs['button'] = 'Add Experiment'
155 169
156 170 return render(request, 'campaign.html', kwargs)
157 171
158 172 def add_campaign(request):
159 173
160 174 if request.method == 'GET':
161 175 form = CampaignForm()
162 176
163 177 if request.method == 'POST':
164 178 form = CampaignForm(request.POST)
165 179
166 180 if form.is_valid():
167 181 campaign = form.save()
168 182 return redirect('url_campaign', id_camp=campaign.id)
169 183
170 184 kwargs = {}
171 185 kwargs['form'] = form
172 186 kwargs['title'] = 'Campaign'
173 187 kwargs['suptitle'] = 'New'
174 188 kwargs['button'] = 'Create'
175 189
176 190 return render(request, 'campaign_edit.html', kwargs)
177 191
178 192 def edit_campaign(request, id_camp):
179 193
180 194 campaign = Campaign.objects.get(pk=id_camp)
181 195
182 196 if request.method=='GET':
183 197 form = CampaignForm(instance=campaign)
184 198
185 199 if request.method=='POST':
186 200 form = CampaignForm(request.POST, instance=campaign)
187 201
188 202 if form.is_valid():
189 203 form.save()
190 204 return redirect('url_campaign', id_camp=id_camp)
191 205
192 206 kwargs = {}
193 207 kwargs['form'] = form
194 208 kwargs['title'] = 'Campaign'
195 209 kwargs['suptitle'] = 'Edit'
196 210 kwargs['button'] = 'Update'
197 211
198 212 return render(request, 'campaign_edit.html', kwargs)
199 213
214 def delete_campaign(request, id_camp):
215
216 campaign = Campaign.objects.get(pk=id_camp)
217
218 if request.method=='POST':
219 if request.user.is_staff:
220 campaign.delete()
221 return redirect('url_campaigns')
222
223 return HttpResponse("Not enough permission to delete this object")
224
225 kwargs = {'object':campaign, 'camp_active':'active',
226 'url_cancel':'url_campaign', 'id_item':id_camp}
227
228 return render(request, 'item_delete.html', kwargs)
229
200 230 def experiments(request):
201 231
202 232 campaigns = Experiment.objects.all().order_by('start_time')
203 233
204 234 keys = ['id', 'campaign__name', 'name', 'start_time', 'end_time']
205 235
206 236 kwargs = {}
207 237
208 238 kwargs['experiment_keys'] = keys[1:]
209 239 kwargs['experiments'] = campaigns.values(*keys)
210 240
211 241 kwargs['title'] = 'Experiment'
212 242 kwargs['suptitle'] = 'List'
213 243 kwargs['button'] = 'New Experiment'
214 244
215 245 return render(request, 'experiments.html', kwargs)
216 246
217 247 def experiment(request, id_exp):
218 248
219 249 experiment = Experiment.objects.get(pk=id_exp)
220 250
221 251 experiments = Experiment.objects.filter(campaign=experiment.campaign)
222 252 configurations = Configuration.objects.filter(experiment=experiment)
223 253
224 254 kwargs = {}
225 255
226 256 exp_keys = ['id', 'campaign', 'name', 'start_time', 'end_time']
227 257 conf_keys = ['id', 'device__name', 'device__device_type__name', 'device__ip_address']
228 258
229 259
230 260 kwargs['experiment_keys'] = exp_keys[1:]
231 261 kwargs['experiment'] = experiment
232 262
233 263 kwargs['experiments'] = experiments.values(*exp_keys)
234 264
235 265 kwargs['configuration_keys'] = conf_keys[1:]
236 266 kwargs['configurations'] = configurations.values(*conf_keys)
237 267
238 268 kwargs['title'] = 'Experiment'
239 269 kwargs['suptitle'] = 'Details'
240 270
241 # kwargs['form'] = form
242 271 kwargs['button'] = 'Add Device'
243 272
244 273 return render(request, 'experiment.html', kwargs)
245 274
246 275 def add_experiment(request, id_camp=0):
247 276
248 277 if request.method == 'GET':
249 278 form = ExperimentForm(initial={'campaign':id_camp})
250 279
251 280 if request.method == 'POST':
252 281 form = ExperimentForm(request.POST, initial={'campaign':id_camp})
253 282
254 283 if form.is_valid():
255 284 experiment = form.save()
256 285 return redirect('url_experiment', id_exp=experiment.id)
257 286
258 287 kwargs = {}
259 288 kwargs['form'] = form
260 289 kwargs['title'] = 'Experiment'
261 290 kwargs['suptitle'] = 'New'
262 291 kwargs['button'] = 'Create'
263 292
264 293 return render(request, 'experiment_edit.html', kwargs)
265 294
266 295 def edit_experiment(request, id_exp):
267 296
268 297 experiment = Experiment.objects.get(pk=id_exp)
269 298
270 299 if request.method == 'GET':
271 300 form = ExperimentForm(instance=experiment)
272 301
273 302 if request.method=='POST':
274 303 form = ExperimentForm(request.POST, instance=experiment)
275 304
276 305 if form.is_valid():
277 306 experiment = form.save()
278 307 return redirect('url_experiment', id_exp=experiment.id)
279 308
280 309 kwargs = {}
281 310 kwargs['form'] = form
282 311 kwargs['title'] = 'Experiment'
283 312 kwargs['suptitle'] = 'Edit'
284 313 kwargs['button'] = 'Update'
285 314
286 315 return render(request, 'experiment_edit.html', kwargs)
287 316
317 def delete_experiment(request, id_exp):
318
319 experiment = Experiment.objects.get(pk=id_exp)
320
321 if request.method=='POST':
322 if request.user.is_staff:
323 id_camp = experiment.campaign.id
324 experiment.delete()
325 return redirect('url_campaign', id_camp=id_camp)
326
327 return HttpResponse("Not enough permission to delete this object")
328
329 kwargs = {'object':experiment, 'exp_active':'active',
330 'url_cancel':'url_experiment', 'id_item':id_exp}
331
332 return render(request, 'item_delete.html', kwargs)
333
288 334 def dev_confs(request):
289 335
290 336 configurations = Configuration.objects.all().order_by('device__device_type')
291 337
292 338 keys = ['id', 'device__device_type__name', 'device__name', 'experiment__campaign__name', 'experiment__name']
293 339
294 340 kwargs = {}
295 341
296 342 kwargs['configuration_keys'] = keys[1:]
297 343 kwargs['configurations'] = configurations.values(*keys)
298 344
299 345 kwargs['title'] = 'Configuration'
300 346 kwargs['suptitle'] = 'List'
301 347 kwargs['button'] = 'New Configuration'
302 348
303 349 return render(request, 'dev_confs.html', kwargs)
304 350
305 351 def dev_conf(request, id_conf):
306 352
307 353 conf = Configuration.objects.get(pk=id_conf)
308 354
309 355 DevConfModel = CONF_MODELS[conf.device.device_type.name]
310 356 dev_conf = DevConfModel.objects.get(pk=id_conf)
311 357
312 358 kwargs = {}
313 359 kwargs['dev_conf'] = dev_conf
314 360 kwargs['dev_conf_keys'] = ['experiment', 'device']
315 361
316 362 kwargs['title'] = 'Configuration'
317 363 kwargs['suptitle'] = 'Details'
318 364
319 365 kwargs['button'] = 'Edit Configuration'
320 366
321 367 ###### SIDEBAR ######
322 368 experiments = Experiment.objects.filter(campaign=conf.experiment.campaign)
323 369 configurations = Configuration.objects.filter(experiment=conf.experiment)
324 370
325 371 exp_keys = ['id', 'campaign', 'name', 'start_time', 'end_time']
326 372 conf_keys = ['id', 'device__name', 'device__device_type__name', 'device__ip_address']
327 373
328 374 kwargs['experiment_keys'] = exp_keys[1:]
329 375 kwargs['experiments'] = experiments.values(*exp_keys)
330 376
331 377 kwargs['configuration_keys'] = conf_keys[1:]
332 378 kwargs['configurations'] = configurations.values(*conf_keys)
333 379
334 380 return render(request, 'dev_conf.html', kwargs)
335 381
336 382 def add_dev_conf(request, id_exp=0):
337 383
338 384 if request.method == 'GET':
339 385 form = ConfigurationForm(initial={'experiment':id_exp})
340 386
341 387 if request.method == 'POST':
342 388 form = ConfigurationForm(request.POST)
343 389
344 390 if form.is_valid():
345 391 experiment = Experiment.objects.get(pk=request.POST['experiment'])
346 392 device = Device.objects.get(pk=request.POST['device'])
347 393
348 394 exp_devices = Device.objects.filter(configuration__experiment=experiment)
349 395
350 396 if device.id not in exp_devices.values('id',):
351 397
352 398 DevConfModel = CONF_MODELS[device.device_type.name]
353 399 conf = DevConfModel(experiment=experiment, device=device)
354 400 conf.save()
355 401
356 402 return redirect('url_experiment', id_exp=experiment.id)
357 403
358 404 kwargs = {}
359 405 kwargs['form'] = form
360 406 kwargs['title'] = 'Configuration'
361 407 kwargs['suptitle'] = 'New'
362 408 kwargs['button'] = 'Create'
363 409
364 410 return render(request, 'dev_conf_edit.html', kwargs)
365 411
366 412 def edit_dev_conf(request, id_conf):
367 413
368 414 conf = Configuration.objects.get(pk=id_conf)
369 415
370 416 DevConfModel = CONF_MODELS[conf.device.device_type.name]
371 417 DevConfForm = CONF_FORMS[conf.device.device_type.name]
372 418
373 419 dev_conf = DevConfModel.objects.get(pk=id_conf)
374 420
375 421 if request.method=='GET':
376 422 form = DevConfForm(instance=dev_conf)
377 423
378 424 if request.method=='POST':
379 425 form = DevConfForm(request.POST, instance=dev_conf)
380 426
381 427 if form.is_valid():
382 428 form.save()
383 429 return redirect('url_dev_conf', id_conf=id_conf)
384 430
385 431 kwargs = {}
386 432 kwargs['form'] = form
387 433 kwargs['title'] = 'Device Configuration'
388 434 kwargs['suptitle'] = 'Edit'
389 435 kwargs['button'] = 'Update'
390 436
391 437 return render(request, 'dev_conf_edit.html', kwargs)
392 438
439 def delete_dev_conf(request, id_conf):
440
441 conf = Configuration.objects.get(pk=id_conf)
442
443 if request.method=='POST':
444 if request.user.is_staff:
445 id_exp = conf.experiment.id
446 conf.delete()
447 return redirect('url_experiment', id_exp=id_exp)
448
449 return HttpResponse("Not enough permission to delete this object")
450
451 kwargs = {'object':conf, 'conf_active':'active',
452 'url_cancel':'url_dev_conf', 'id_item':id_conf}
453
454 return render(request, 'item_delete.html', kwargs)
393 455
394 456 # def experiment(request, id_exp=0, id_dev_type=0):
395 457 # kwargs = {}
396 458 # if id_exp:
397 459 # experiment = Experiment.objects.get(pk=id_exp)
398 460 # devices = Configuration.objects.filter(configuration__experiment=experiment)
399 461 # kwargs['experiment'] = experiment
400 462 # kwargs['experiment_keys'] = ['campaign', 'name', 'start_time', 'end_time']
401 463 #
402 464 # form = ExperimentForm(instance=experiment)
403 465 #
404 466 # if id_dev_type:
405 467 # subform = DeviceTypeForm(initial={'device_type':id_dev_type})
406 468 # kwargs['keys'] = ['ip_address']
407 469 # keys = ['id']+kwargs['keys']
408 470 # kwargs['items'] = Device.objects.filter(device_type=id_dev_type).values(*keys)
409 471 # else:
410 472 # subform = DeviceTypeForm()
411 473 #
412 474 # kwargs['form'] = form
413 475 # kwargs['subform'] = subform
414 476 # kwargs['device_keys'] = ['device_type__name', 'ip_address']
415 477 # kwargs['devices'] = devices.values('device_type__name', 'ip_address', 'configuration__id')
416 478 # kwargs['suptitle'] = 'Detail'
417 479 # else:
418 480 # experiments = Experiment.objects.all().order_by('start_time')
419 481 # kwargs['keys'] = ['name', 'start_time', 'end_time']
420 482 # keys = ['id']+kwargs['keys']
421 483 # kwargs['items'] = experiments.values(*keys)
422 484 # kwargs['suptitle'] = 'List'
423 485 # kwargs['button'] = 'Add Experiment'
424 486 #
425 487 # kwargs['id_dev_type'] = id_dev_type
426 488 # kwargs['id_exp'] = id_exp
427 489 # return render_to_response("experiment.html", kwargs, context_instance=RequestContext(request))
428 490
429 491 # def edit_experiment(request, id_exp):
430 492 # if request.method=='POST':
431 493 # experiment = Experiment.objects.get(pk=id_exp)
432 494 # form = ExperimentForm(request.POST, instance=experiment)
433 495 # if form.is_valid():
434 496 # form.save()
435 497 # return redirect('experiment', id_exp=id_exp)
436 498
437 499 # def experiment_add_device(request, id_exp):
438 500 # if request.method=='POST':
439 501 # experiment = Experiment.objects.get(pk=id_exp)
440 502 #
441 503 # exp_devices = Device.objects.filter(configuration__experiment=experiment)
442 504 #
443 505 # device = Device.objects.get(pk=request.POST['device'])
444 506 #
445 507 # if device.id in exp_devices.values('id',):
446 508 # return redirect('experiment', id_exp=id_exp)
447 509 #
448 510 # model = MODELS[device.device_type.alias]
449 511 # conf = model(experiment=experiment, device=device)
450 512 # conf.save()
451 513 # return redirect('experiment', id_exp=id_exp)
452 514
453 515 # def add_experiment(request):
454 516 #
455 517 # kwargs = {}
456 518 # if request.method == 'POST':
457 519 # form = ExperimentForm(request.POST)
458 520 # if form.is_valid():
459 521 # experiment = form.save()
460 522 # return redirect('experiment', id_exp=experiment.id)
461 523 # else:
462 524 # form = ExperimentForm()
463 525 # kwargs['form_new'] = form
464 526 # kwargs['title'] = 'Experiment'
465 527 # kwargs['suptitle'] = 'New'
466 528 # kwargs['id_exp'] = 0
467 529 # return render_to_response("experiment.html", kwargs, context_instance=RequestContext(request))
468 530
469 531 # def device(request, id_dev=0):
470 532 # kwargs = {}
471 533 # if id_dev:
472 534 # device = Device.objects.get(pk=id_dev)
473 535 # kwargs['form'] = DeviceForm(instance=device)
474 536 # kwargs['action'] = 'edit/'
475 537 # kwargs['button'] = 'Update'
476 538 # kwargs['suptitle'] = 'Detail'
477 539 # else:
478 540 # devices = Device.objects.all()
479 541 # kwargs['keys'] = ['device_type__name', 'ip_address']
480 542 # keys = ['id']+kwargs['keys']
481 543 # kwargs['items'] = devices.values(*keys)
482 544 # kwargs['suptitle'] = 'List'
483 545 # kwargs['button'] = 'Add Device'
484 546 # return render_to_response("device.html", kwargs, context_instance=RequestContext(request))
485 547 #
486 548 # def edit_device(request, id_dev):
487 549 # if request.method=='POST':
488 550 # device = Device.objects.get(pk=id_dev)
489 551 # form = DeviceForm(request.POST, instance=device)
490 552 # if form.is_valid():
491 553 # form.save()
492 554 # return redirect('devices')
493 555 #
494 556 # def add_device(request):
495 557 # kwargs = {}
496 558 # if request.method == 'POST':
497 559 # form = DeviceForm(request.POST)
498 560 # if form.is_valid():
499 561 # form.save()
500 562 # return redirect('devices')
501 563 # else:
502 564 # form = DeviceForm()
503 565 # kwargs['form'] = form
504 566 # kwargs['button'] = 'Create'
505 567 # kwargs['suptitle'] = 'New'
506 568 # return render_to_response("device.html", kwargs, context_instance=RequestContext(request))
507 569
General Comments 0
You need to be logged in to leave comments. Login now