##// END OF EJS Templates
template attribute added to RadarSys Models...
Miguel Urco -
r47:f6d4e6a94b9f
parent child
Show More
@@ -1,64 +1,64
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, Location
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:
8 choices = list(choices)
8 choices = list(choices)
9 choices.insert(0, (0, label))
9 choices.insert(0, (0, label))
10 return choices
10 return choices
11 else:
11 else:
12 return [(0, label)]
12 return [(0, label)]
13
13
14 class DatepickerWidget(forms.widgets.TextInput):
14 class DatepickerWidget(forms.widgets.TextInput):
15 def render(self, name, value, attrs=None):
15 def render(self, name, value, attrs=None):
16 input_html = super(DatepickerWidget, self).render(name, value, attrs)
16 input_html = super(DatepickerWidget, self).render(name, value, attrs)
17 html = '<div class="input-group date">'+input_html+'<span class="input-group-addon"><i class="glyphicon glyphicon-calendar"></i></span></div>'
17 html = '<div class="input-group date">'+input_html+'<span class="input-group-addon"><i class="glyphicon glyphicon-calendar"></i></span></div>'
18 return mark_safe(html)
18 return mark_safe(html)
19
19
20 class TimepickerWidget(forms.widgets.TextInput):
20 class TimepickerWidget(forms.widgets.TextInput):
21 def render(self, name, value, attrs=None):
21 def render(self, name, value, attrs=None):
22 input_html = super(TimepickerWidget, self).render(name, value, attrs)
22 input_html = super(TimepickerWidget, self).render(name, value, attrs)
23 html = '<div class="input-group time">'+input_html+'<span class="input-group-addon"><i class="glyphicon glyphicon-time"></i></span></div>'
23 html = '<div class="input-group time">'+input_html+'<span class="input-group-addon"><i class="glyphicon glyphicon-time"></i></span></div>'
24 return mark_safe(html)
24 return mark_safe(html)
25
25
26 class CampaignForm(forms.ModelForm):
26 class CampaignForm(forms.ModelForm):
27 def __init__(self, *args, **kwargs):
27 def __init__(self, *args, **kwargs):
28 super(CampaignForm, self).__init__(*args, **kwargs)
28 super(CampaignForm, self).__init__(*args, **kwargs)
29 self.fields['start_date'].widget = DatepickerWidget(self.fields['start_date'].widget.attrs)
29 self.fields['start_date'].widget = DatepickerWidget(self.fields['start_date'].widget.attrs)
30 self.fields['end_date'].widget = DatepickerWidget(self.fields['end_date'].widget.attrs)
30 self.fields['end_date'].widget = DatepickerWidget(self.fields['end_date'].widget.attrs)
31
31
32 class Meta:
32 class Meta:
33 model = Campaign
33 model = Campaign
34 fields = ['name', 'start_date', 'end_date', 'tags', 'description', 'template']
34 exclude = ['']
35
35
36 class ExperimentForm(forms.ModelForm):
36 class ExperimentForm(forms.ModelForm):
37 def __init__(self, *args, **kwargs):
37 def __init__(self, *args, **kwargs):
38 super(ExperimentForm, self).__init__(*args, **kwargs)
38 super(ExperimentForm, self).__init__(*args, **kwargs)
39 self.fields['start_time'].widget = TimepickerWidget(self.fields['start_time'].widget.attrs)
39 self.fields['start_time'].widget = TimepickerWidget(self.fields['start_time'].widget.attrs)
40 self.fields['end_time'].widget = TimepickerWidget(self.fields['end_time'].widget.attrs)
40 self.fields['end_time'].widget = TimepickerWidget(self.fields['end_time'].widget.attrs)
41
41
42 self.fields['campaign'].widget.attrs['readonly'] = True
42 self.fields['campaign'].widget.attrs['readonly'] = True
43
43
44 class Meta:
44 class Meta:
45 model = Experiment
45 model = Experiment
46 fields = ['campaign', 'name', 'start_time', 'end_time']
46 exclude = ['']
47
47
48 class LocationForm(forms.ModelForm):
48 class LocationForm(forms.ModelForm):
49 class Meta:
49 class Meta:
50 model = Location
50 model = Location
51 exclude = ['']
51 exclude = ['']
52
52
53 class DeviceForm(forms.ModelForm):
53 class DeviceForm(forms.ModelForm):
54 class Meta:
54 class Meta:
55 model = Device
55 model = Device
56 exclude = ['status']
56 exclude = ['status']
57
57
58 class ConfigurationForm(forms.ModelForm):
58 class ConfigurationForm(forms.ModelForm):
59 class Meta:
59 class Meta:
60 model = Configuration
60 model = Configuration
61 fields = ['experiment', 'device']
61 exclude = ['type', 'created_date', 'programmed_date', 'parameters']
62
62
63 class DeviceTypeForm(forms.Form):
63 class DeviceTypeForm(forms.Form):
64 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')))
@@ -1,142 +1,160
1 from django.db import models
1 from django.db import models
2 from polymorphic import PolymorphicModel
2 from polymorphic import PolymorphicModel
3
3
4 from django.core.urlresolvers import reverse
4 from django.core.urlresolvers import reverse
5
5
6 CONF_STATES = (
6 CONF_STATES = (
7 (0, 'Disconnected'),
7 (0, 'Disconnected'),
8 (1, 'Connected'),
8 (1, 'Connected'),
9 (1, 'Running'),
9 (1, 'Running'),
10 )
10 )
11
11
12 CONF_TYPES = (
12 CONF_TYPES = (
13 (0, 'Active'),
13 (0, 'Active'),
14 (1, 'Historical'),
14 (1, 'Historical'),
15 )
15 )
16
16
17 DEV_STATES = (
17 DEV_STATES = (
18 (0, 'No connected'),
18 (0, 'No connected'),
19 (1, 'Connected'),
19 (1, 'Connected'),
20 (2, 'Configured'),
20 (2, 'Configured'),
21 (3, 'Running'),
21 (3, 'Running'),
22 )
22 )
23
23
24 DEV_TYPES = (
24 DEV_TYPES = (
25 ('', 'Select a device type'),
25 ('', 'Select a device type'),
26 ('rc', 'Radar Controller'),
26 ('rc', 'Radar Controller'),
27 ('dds', 'Direct Digital Synthesizer'),
27 ('dds', 'Direct Digital Synthesizer'),
28 ('jars', 'Jicamarca Radar Acquisition System'),
28 ('jars', 'Jicamarca Radar Acquisition System'),
29 ('usrp', 'Universal Software Radio Peripheral'),
29 ('usrp', 'Universal Software Radio Peripheral'),
30 ('cgs', 'Clock Generator System'),
30 ('cgs', 'Clock Generator System'),
31 ('abs', 'Automatic Beam Switching'),
31 ('abs', 'Automatic Beam Switching'),
32 )
32 )
33
34 DEV_PORTS = {
35 'rc' : 2000,
36 'dds' : 2000,
37 'jars' : 2000,
38 'usrp' : 2000,
39 'cgs' : 8080,
40 'abs' : 8080
41 }
33
42
34 # Create your models here.
43 # Create your models here.
35
44
36 class Location(models.Model):
45 class Location(models.Model):
37
46
38 name = models.CharField(max_length = 30)
47 name = models.CharField(max_length = 30)
39 description = models.TextField(blank=True, null=True)
48 description = models.TextField(blank=True, null=True)
40
49
41 class Meta:
50 class Meta:
42 db_table = 'db_location'
51 db_table = 'db_location'
43
52
44 def __unicode__(self):
53 def __unicode__(self):
45 return u'%s' % self.name
54 return u'%s' % self.name
46
55
47 class DeviceType(models.Model):
56 class DeviceType(models.Model):
48
57
49 name = models.CharField(max_length = 10, choices = DEV_TYPES, default = 'rc')
58 name = models.CharField(max_length = 10, choices = DEV_TYPES, default = 'rc')
50 description = models.TextField(blank=True, null=True)
59 description = models.TextField(blank=True, null=True)
51
60
52 class Meta:
61 class Meta:
53 db_table = 'db_device_types'
62 db_table = 'db_device_types'
54
63
55 def __unicode__(self):
64 def __unicode__(self):
56 return u'%s' % self.get_name_display()
65 return u'%s' % self.get_name_display()
57
66
58 class Device(models.Model):
67 class Device(models.Model):
59
68
60 device_type = models.ForeignKey(DeviceType)
69 device_type = models.ForeignKey(DeviceType)
61 # location = models.ForeignKey(Location)
70 # location = models.ForeignKey(Location)
62
71
63 name = models.CharField(max_length=40, default='')
72 name = models.CharField(max_length=40, default='')
64 ip_address = models.GenericIPAddressField(protocol='IPv4', default='0.0.0.0')
73 ip_address = models.GenericIPAddressField(protocol='IPv4', default='0.0.0.0')
65 port_address = models.PositiveSmallIntegerField(default=2000)
74 port_address = models.PositiveSmallIntegerField(default=2000)
66 description = models.TextField(blank=True, null=True)
75 description = models.TextField(blank=True, null=True)
67 status = models.PositiveSmallIntegerField(default=0, choices=DEV_STATES)
76 status = models.PositiveSmallIntegerField(default=0, choices=DEV_STATES)
68
77
69 class Meta:
78 class Meta:
70 db_table = 'db_devices'
79 db_table = 'db_devices'
71
80
72 def __unicode__(self):
81 def __unicode__(self):
73 return u'%s | %s' % (self.name, self.ip_address)
82 return u'%s | %s' % (self.name, self.ip_address)
83
84 def get_status(self):
85
86 return self.status
87
74
88
75 class Campaign(models.Model):
89 class Campaign(models.Model):
76
90
91 template = models.BooleanField(default=False)
92
77 name = models.CharField(max_length=40, unique=True)
93 name = models.CharField(max_length=40, unique=True)
78 start_date = models.DateTimeField(blank=True, null=True)
94 start_date = models.DateTimeField(blank=True, null=True)
79 end_date = models.DateTimeField(blank=True, null=True)
95 end_date = models.DateTimeField(blank=True, null=True)
80 tags = models.CharField(max_length=40)
96 tags = models.CharField(max_length=40)
81 description = models.TextField(blank=True, null=True)
97 description = models.TextField(blank=True, null=True)
82 template = models.BooleanField(default=False)
83
98
84 class Meta:
99 class Meta:
85 db_table = 'db_campaigns'
100 db_table = 'db_campaigns'
86
101
87 def __unicode__(self):
102 def __unicode__(self):
88 return u'%s' % (self.name)
103 return u'%s' % (self.name)
89
104
90 class Experiment(models.Model):
105 class Experiment(models.Model):
91
106
107 template = models.BooleanField(default=False)
108
92 campaign = models.ForeignKey(Campaign)
109 campaign = models.ForeignKey(Campaign)
93 name = models.CharField(max_length=40, default='')
110 name = models.CharField(max_length=40, default='')
94 start_time = models.TimeField(default='00:00:00')
111 start_time = models.TimeField(default='00:00:00')
95 end_time = models.TimeField(default='23:59:59')
112 end_time = models.TimeField(default='23:59:59')
96
113
97 class Meta:
114 class Meta:
98 db_table = 'db_experiments'
115 db_table = 'db_experiments'
99
116
100 def __unicode__(self):
117 def __unicode__(self):
101 return u'[%s]: %s' % (self.campaign.name, self.name)
118 return u'[%s]: %s' % (self.campaign.name, self.name)
102
119
103 class Configuration(PolymorphicModel):
120 class Configuration(PolymorphicModel):
104
121
122 template = models.BooleanField(default=False)
123
124 name = models.CharField(verbose_name="Configuration Name", max_length=40, default='')
125
105 experiment = models.ForeignKey(Experiment)
126 experiment = models.ForeignKey(Experiment)
106 device = models.ForeignKey(Device)
127 device = models.ForeignKey(Device)
107
128
108 status = models.PositiveSmallIntegerField(default=0, choices=CONF_STATES)
109 type = models.PositiveSmallIntegerField(default=0, choices=CONF_TYPES)
129 type = models.PositiveSmallIntegerField(default=0, choices=CONF_TYPES)
110
130
111 name = models.CharField(max_length=40, default='')
112
113 created_date = models.DateTimeField(auto_now_add=True)
131 created_date = models.DateTimeField(auto_now_add=True)
114 programmed_date = models.DateTimeField(auto_now=True)
132 programmed_date = models.DateTimeField(auto_now=True)
115
133
116 parameters = models.TextField(default='{}')
134 parameters = models.TextField(default='{}')
117
135
118 class Meta:
136 class Meta:
119 db_table = 'db_configurations'
137 db_table = 'db_configurations'
120
138
121 def __unicode__(self):
139 def __unicode__(self):
122 return u'[%s - %s]: %s' % (self.experiment.campaign.name,
140 return u'[%s - %s]: %s' % (self.experiment.campaign.name,
123 self.experiment.name,
141 self.experiment.name,
124 self.device.name)
142 self.device.name)
125 def get_absolute_url(self):
126
143
144 def get_absolute_url(self):
127 return reverse('url_%s_conf' % self.device.device_type.name, args=[str(self.id)])
145 return reverse('url_%s_conf' % self.device.device_type.name, args=[str(self.id)])
128
146
129 def get_absolute_url_edit(self):
147 def get_absolute_url_edit(self):
130 return reverse('url_edit_%s_conf' % self.device.device_type.name, args=[str(self.id)])
148 return reverse('url_edit_%s_conf' % self.device.device_type.name, args=[str(self.id)])
131
149
132 def get_absolute_url_import(self):
150 def get_absolute_url_import(self):
133 return reverse('url_import_%s_conf' % self.device.device_type.name, args=[str(self.id)])
151 return reverse('url_import_%s_conf' % self.device.device_type.name, args=[str(self.id)])
134
152
135 def get_absolute_url_export(self):
153 def get_absolute_url_export(self):
136 return reverse('url_export_%s_conf' % self.device.device_type.name, args=[str(self.id)])
154 return reverse('url_export_%s_conf' % self.device.device_type.name, args=[str(self.id)])
137
155
138 def get_absolute_url_write(self):
156 def get_absolute_url_write(self):
139 return reverse('url_write_%s_conf' % self.device.device_type.name, args=[str(self.id)])
157 return reverse('url_write_%s_conf' % self.device.device_type.name, args=[str(self.id)])
140
158
141 def get_absolute_url_read(self):
159 def get_absolute_url_read(self):
142 return reverse('url_read_%s_conf' % self.device.device_type.name, args=[str(self.id)]) No newline at end of file
160 return reverse('url_read_%s_conf' % self.device.device_type.name, args=[str(self.id)])
@@ -1,36 +1,35
1 from django.template.defaulttags import register
1 from django.template.defaulttags import register
2
2
3 @register.filter
3 @register.filter
4 def attr(instance, key):
4 def attr(instance, key):
5
5
6 display_key = "get_" + key + "_display"
6 display_key = "get_" + key + "_display"
7
7
8 if hasattr(instance, display_key):
8 if hasattr(instance, display_key):
9 return getattr(instance, display_key)()
9 return getattr(instance, display_key)()
10
10
11 if hasattr(instance, key):
11 if hasattr(instance, key):
12 return getattr(instance, key)
12 return getattr(instance, key)
13
13
14 return instance.get(key)
14 return instance.get(key)
15
15
16 @register.filter
16 @register.filter
17 def title(s):
17 def title(s):
18 return s.replace('_', ' ').title()
18 return s.replace('_', ' ').title()
19
19
20 @register.filter
20 @register.filter
21 def value(instance, key):
21 def value(instance, key):
22
22
23 item = instance
23 item = instance
24 for my_key in key.split("__"):
24 for my_key in key.split("__"):
25 print "TP Value", item, my_key
26 item = attr(item, my_key)
25 item = attr(item, my_key)
27
26
28 print item
27 print item
29 return item
28 return item
30
29
31 @register.simple_tag
30 @register.simple_tag
32 def get_verbose_field_name(instance, field_name):
31 def get_verbose_field_name(instance, field_name):
33 """
32 """
34 Returns verbose_name for a field.
33 Returns verbose_name for a field.
35 """
34 """
36 return instance._meta.get_field(field_name).verbose_name.title() No newline at end of file
35 return instance._meta.get_field(field_name).verbose_name.title()
@@ -1,600 +1,595
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, LocationForm
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
8 from apps.abs.forms import ABSConfigurationForm
8 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, Location
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
16 from apps.abs.models import ABSConfiguration
16 from apps.abs.models import ABSConfiguration
17 from apps.rc.models import RCConfiguration
17 from apps.rc.models import RCConfiguration
18 from apps.dds.models import DDSConfiguration
18 from apps.dds.models import DDSConfiguration
19
19
20 # Create your views here.
20 # Create your views here.
21
21
22 CONF_FORMS = {
22 CONF_FORMS = {
23 'rc': RCConfigurationForm,
23 'rc': RCConfigurationForm,
24 'dds': DDSConfigurationForm,
24 'dds': DDSConfigurationForm,
25 'jars': JARSConfigurationForm,
25 'jars': JARSConfigurationForm,
26 'cgs': CGSConfigurationForm,
26 'cgs': CGSConfigurationForm,
27 'abs': ABSConfigurationForm,
27 'abs': ABSConfigurationForm,
28 'usrp': USRPConfigurationForm,
28 'usrp': USRPConfigurationForm,
29 }
29 }
30
30
31 CONF_MODELS = {
31 CONF_MODELS = {
32 'rc': RCConfiguration,
32 'rc': RCConfiguration,
33 'dds': DDSConfiguration,
33 'dds': DDSConfiguration,
34 'jars': JARSConfiguration,
34 'jars': JARSConfiguration,
35 'cgs': CGSConfiguration,
35 'cgs': CGSConfiguration,
36 'abs': ABSConfiguration,
36 'abs': ABSConfiguration,
37 'usrp': USRPConfiguration,
37 'usrp': USRPConfiguration,
38 }
38 }
39
39
40 def index(request):
40 def index(request):
41 kwargs = {}
41 kwargs = {}
42
42
43 return render(request, 'index.html', kwargs)
43 return render(request, 'index.html', kwargs)
44
44
45 def locations(request):
45 def locations(request):
46
46
47 locations = Location.objects.all().order_by('name')
47 locations = Location.objects.all().order_by('name')
48
48
49 keys = ['id', 'name', 'description']
49 keys = ['id', 'name', 'description']
50
50
51 kwargs = {}
51 kwargs = {}
52 kwargs['location_keys'] = keys[1:]
52 kwargs['location_keys'] = keys[1:]
53 kwargs['locations'] = locations
53 kwargs['locations'] = locations
54 kwargs['title'] = 'Location'
54 kwargs['title'] = 'Location'
55 kwargs['suptitle'] = 'List'
55 kwargs['suptitle'] = 'List'
56 kwargs['button'] = 'New Location'
56 kwargs['button'] = 'New Location'
57
57
58 return render(request, 'locations.html', kwargs)
58 return render(request, 'locations.html', kwargs)
59
59
60 def location(request, id_loc):
60 def location(request, id_loc):
61
61
62 location = get_object_or_404(Location, pk=id_loc)
62 location = get_object_or_404(Location, pk=id_loc)
63
63
64 kwargs = {}
64 kwargs = {}
65 kwargs['location'] = location
65 kwargs['location'] = location
66 kwargs['location_keys'] = ['name', 'description']
66 kwargs['location_keys'] = ['name', 'description']
67
67
68 kwargs['title'] = 'Location'
68 kwargs['title'] = 'Location'
69 kwargs['suptitle'] = 'Details'
69 kwargs['suptitle'] = 'Details'
70
70
71 return render(request, 'location.html', kwargs)
71 return render(request, 'location.html', kwargs)
72
72
73 def location_new(request):
73 def location_new(request):
74
74
75 if request.method == 'GET':
75 if request.method == 'GET':
76 form = LocationForm()
76 form = LocationForm()
77
77
78 if request.method == 'POST':
78 if request.method == 'POST':
79 form = LocationForm(request.POST)
79 form = LocationForm(request.POST)
80
80
81 if form.is_valid():
81 if form.is_valid():
82 form.save()
82 form.save()
83 return redirect('url_locations')
83 return redirect('url_locations')
84
84
85 kwargs = {}
85 kwargs = {}
86 kwargs['form'] = form
86 kwargs['form'] = form
87 kwargs['title'] = 'Location'
87 kwargs['title'] = 'Location'
88 kwargs['suptitle'] = 'New'
88 kwargs['suptitle'] = 'New'
89 kwargs['button'] = 'Create'
89 kwargs['button'] = 'Create'
90
90
91 return render(request, 'location_edit.html', kwargs)
91 return render(request, 'location_edit.html', kwargs)
92
92
93 def location_edit(request, id_loc):
93 def location_edit(request, id_loc):
94
94
95 location = get_object_or_404(Location, pk=id_loc)
95 location = get_object_or_404(Location, pk=id_loc)
96
96
97 if request.method=='GET':
97 if request.method=='GET':
98 form = LocationForm(instance=location)
98 form = LocationForm(instance=location)
99
99
100 if request.method=='POST':
100 if request.method=='POST':
101 form = LocationForm(request.POST, instance=location)
101 form = LocationForm(request.POST, instance=location)
102
102
103 if form.is_valid():
103 if form.is_valid():
104 form.save()
104 form.save()
105 return redirect('url_locations')
105 return redirect('url_locations')
106
106
107 kwargs = {}
107 kwargs = {}
108 kwargs['form'] = form
108 kwargs['form'] = form
109 kwargs['title'] = 'Location'
109 kwargs['title'] = 'Location'
110 kwargs['suptitle'] = 'Edit'
110 kwargs['suptitle'] = 'Edit'
111 kwargs['button'] = 'Update'
111 kwargs['button'] = 'Update'
112
112
113 return render(request, 'location_edit.html', kwargs)
113 return render(request, 'location_edit.html', kwargs)
114
114
115 def location_delete(request, id_loc):
115 def location_delete(request, id_loc):
116
116
117 location = get_object_or_404(Location, pk=id_loc)
117 location = get_object_or_404(Location, pk=id_loc)
118
118
119 if request.method=='POST':
119 if request.method=='POST':
120
120
121 if request.user.is_staff:
121 if request.user.is_staff:
122 location.delete()
122 location.delete()
123 return redirect('url_locations')
123 return redirect('url_locations')
124
124
125 return HttpResponse("Not enough permission to delete this object")
125 return HttpResponse("Not enough permission to delete this object")
126
126
127 kwargs = {'object':location, 'loc_active':'active',
127 kwargs = {'object':location, 'loc_active':'active',
128 'url_cancel':'url_location', 'id_item':id_loc}
128 'url_cancel':'url_location', 'id_item':id_loc}
129
129
130 return render(request, 'item_delete.html', kwargs)
130 return render(request, 'item_delete.html', kwargs)
131
131
132 def devices(request):
132 def devices(request):
133
133
134 devices = Device.objects.all().order_by('device_type__name')
134 devices = Device.objects.all().order_by('device_type__name')
135
135
136 # keys = ['id', 'device_type__name', 'name', 'ip_address']
136 # keys = ['id', 'device_type__name', 'name', 'ip_address']
137 keys = ['id', 'name', 'ip_address', 'port_address', 'device_type']
137 keys = ['id', 'name', 'ip_address', 'port_address', 'device_type']
138
138
139 kwargs = {}
139 kwargs = {}
140 kwargs['device_keys'] = keys[1:]
140 kwargs['device_keys'] = keys[1:]
141 kwargs['devices'] = devices#.values(*keys)
141 kwargs['devices'] = devices#.values(*keys)
142 kwargs['title'] = 'Device'
142 kwargs['title'] = 'Device'
143 kwargs['suptitle'] = 'List'
143 kwargs['suptitle'] = 'List'
144 kwargs['button'] = 'New Device'
144 kwargs['button'] = 'New Device'
145
145
146 return render(request, 'devices.html', kwargs)
146 return render(request, 'devices.html', kwargs)
147
147
148 def device(request, id_dev):
148 def device(request, id_dev):
149
149
150 device = get_object_or_404(Device, pk=id_dev)
150 device = get_object_or_404(Device, pk=id_dev)
151
151
152 kwargs = {}
152 kwargs = {}
153 kwargs['device'] = device
153 kwargs['device'] = device
154 kwargs['device_keys'] = ['device_type', 'name', 'ip_address', 'port_address', 'description']
154 kwargs['device_keys'] = ['device_type', 'name', 'ip_address', 'port_address', 'description']
155
155
156 kwargs['title'] = 'Device'
156 kwargs['title'] = 'Device'
157 kwargs['suptitle'] = 'Details'
157 kwargs['suptitle'] = 'Details'
158
158
159 return render(request, 'device.html', kwargs)
159 return render(request, 'device.html', kwargs)
160
160
161 def device_new(request):
161 def device_new(request):
162
162
163 if request.method == 'GET':
163 if request.method == 'GET':
164 form = DeviceForm()
164 form = DeviceForm()
165
165
166 if request.method == 'POST':
166 if request.method == 'POST':
167 form = DeviceForm(request.POST)
167 form = DeviceForm(request.POST)
168
168
169 if form.is_valid():
169 if form.is_valid():
170 form.save()
170 form.save()
171 return redirect('url_devices')
171 return redirect('url_devices')
172
172
173 kwargs = {}
173 kwargs = {}
174 kwargs['form'] = form
174 kwargs['form'] = form
175 kwargs['title'] = 'Device'
175 kwargs['title'] = 'Device'
176 kwargs['suptitle'] = 'New'
176 kwargs['suptitle'] = 'New'
177 kwargs['button'] = 'Create'
177 kwargs['button'] = 'Create'
178
178
179 return render(request, 'device_edit.html', kwargs)
179 return render(request, 'device_edit.html', kwargs)
180
180
181 def device_edit(request, id_dev):
181 def device_edit(request, id_dev):
182
182
183 device = get_object_or_404(Device, pk=id_dev)
183 device = get_object_or_404(Device, pk=id_dev)
184
184
185 if request.method=='GET':
185 if request.method=='GET':
186 form = DeviceForm(instance=device)
186 form = DeviceForm(instance=device)
187
187
188 if request.method=='POST':
188 if request.method=='POST':
189 form = DeviceForm(request.POST, instance=device)
189 form = DeviceForm(request.POST, instance=device)
190
190
191 if form.is_valid():
191 if form.is_valid():
192 form.save()
192 form.save()
193 return redirect('url_devices')
193 return redirect('url_devices')
194
194
195 kwargs = {}
195 kwargs = {}
196 kwargs['form'] = form
196 kwargs['form'] = form
197 kwargs['title'] = 'Device'
197 kwargs['title'] = 'Device'
198 kwargs['suptitle'] = 'Edit'
198 kwargs['suptitle'] = 'Edit'
199 kwargs['button'] = 'Update'
199 kwargs['button'] = 'Update'
200
200
201 return render(request, 'device_edit.html', kwargs)
201 return render(request, 'device_edit.html', kwargs)
202
202
203 def device_delete(request, id_dev):
203 def device_delete(request, id_dev):
204
204
205 device = get_object_or_404(Device, pk=id_dev)
205 device = get_object_or_404(Device, pk=id_dev)
206
206
207 if request.method=='POST':
207 if request.method=='POST':
208
208
209 if request.user.is_staff:
209 if request.user.is_staff:
210 device.delete()
210 device.delete()
211 return redirect('url_devices')
211 return redirect('url_devices')
212
212
213 return HttpResponse("Not enough permission to delete this object")
213 return HttpResponse("Not enough permission to delete this object")
214
214
215 kwargs = {'object':device, 'dev_active':'active',
215 kwargs = {'object':device, 'dev_active':'active',
216 'url_cancel':'url_device', 'id_item':id_dev}
216 'url_cancel':'url_device', 'id_item':id_dev}
217
217
218 return render(request, 'item_delete.html', kwargs)
218 return render(request, 'item_delete.html', kwargs)
219
219
220 def campaigns(request):
220 def campaigns(request):
221
221
222 campaigns = Campaign.objects.all().order_by('start_date')
222 campaigns = Campaign.objects.all().order_by('start_date')
223
223
224 keys = ['id', 'name', 'start_date', 'end_date']
224 keys = ['id', 'name', 'start_date', 'end_date']
225
225
226 kwargs = {}
226 kwargs = {}
227 kwargs['campaign_keys'] = keys[1:]
227 kwargs['campaign_keys'] = keys[1:]
228 kwargs['campaigns'] = campaigns#.values(*keys)
228 kwargs['campaigns'] = campaigns#.values(*keys)
229 kwargs['title'] = 'Campaign'
229 kwargs['title'] = 'Campaign'
230 kwargs['suptitle'] = 'List'
230 kwargs['suptitle'] = 'List'
231 kwargs['button'] = 'New Campaign'
231 kwargs['button'] = 'New Campaign'
232
232
233 return render(request, 'campaigns.html', kwargs)
233 return render(request, 'campaigns.html', kwargs)
234
234
235 def campaign(request, id_camp):
235 def campaign(request, id_camp):
236
236
237 campaign = get_object_or_404(Campaign, pk=id_camp)
237 campaign = get_object_or_404(Campaign, pk=id_camp)
238 experiments = Experiment.objects.filter(campaign=campaign)
238 experiments = Experiment.objects.filter(campaign=campaign)
239
239
240 form = CampaignForm(instance=campaign)
240 form = CampaignForm(instance=campaign)
241
241
242 kwargs = {}
242 kwargs = {}
243 kwargs['campaign'] = campaign
243 kwargs['campaign'] = campaign
244 kwargs['campaign_keys'] = ['name', 'start_date', 'end_date', 'tags', 'description']
244 kwargs['campaign_keys'] = ['name', 'start_date', 'end_date', 'tags', 'description']
245
245
246 keys = ['id', 'name', 'start_time', 'end_time']
246 keys = ['id', 'name', 'start_time', 'end_time']
247
247
248 kwargs['experiment_keys'] = keys[1:]
248 kwargs['experiment_keys'] = keys[1:]
249 kwargs['experiments'] = experiments.values(*keys)
249 kwargs['experiments'] = experiments.values(*keys)
250
250
251 kwargs['title'] = 'Campaign'
251 kwargs['title'] = 'Campaign'
252 kwargs['suptitle'] = 'Details'
252 kwargs['suptitle'] = 'Details'
253
253
254 kwargs['form'] = form
254 kwargs['form'] = form
255 kwargs['button'] = 'Add Experiment'
255 kwargs['button'] = 'Add Experiment'
256
256
257 return render(request, 'campaign.html', kwargs)
257 return render(request, 'campaign.html', kwargs)
258
258
259 def campaign_new(request):
259 def campaign_new(request):
260
260
261 if request.method == 'GET':
261 if request.method == 'GET':
262 form = CampaignForm()
262 form = CampaignForm()
263
263
264 if request.method == 'POST':
264 if request.method == 'POST':
265 form = CampaignForm(request.POST)
265 form = CampaignForm(request.POST)
266
266
267 if form.is_valid():
267 if form.is_valid():
268 campaign = form.save()
268 campaign = form.save()
269 return redirect('url_campaign', id_camp=campaign.id)
269 return redirect('url_campaign', id_camp=campaign.id)
270
270
271 kwargs = {}
271 kwargs = {}
272 kwargs['form'] = form
272 kwargs['form'] = form
273 kwargs['title'] = 'Campaign'
273 kwargs['title'] = 'Campaign'
274 kwargs['suptitle'] = 'New'
274 kwargs['suptitle'] = 'New'
275 kwargs['button'] = 'Create'
275 kwargs['button'] = 'Create'
276
276
277 return render(request, 'campaign_edit.html', kwargs)
277 return render(request, 'campaign_edit.html', kwargs)
278
278
279 def campaign_edit(request, id_camp):
279 def campaign_edit(request, id_camp):
280
280
281 campaign = get_object_or_404(Campaign, pk=id_camp)
281 campaign = get_object_or_404(Campaign, pk=id_camp)
282
282
283 if request.method=='GET':
283 if request.method=='GET':
284 form = CampaignForm(instance=campaign)
284 form = CampaignForm(instance=campaign)
285
285
286 if request.method=='POST':
286 if request.method=='POST':
287 form = CampaignForm(request.POST, instance=campaign)
287 form = CampaignForm(request.POST, instance=campaign)
288
288
289 if form.is_valid():
289 if form.is_valid():
290 form.save()
290 form.save()
291 return redirect('url_campaign', id_camp=id_camp)
291 return redirect('url_campaign', id_camp=id_camp)
292
292
293 kwargs = {}
293 kwargs = {}
294 kwargs['form'] = form
294 kwargs['form'] = form
295 kwargs['title'] = 'Campaign'
295 kwargs['title'] = 'Campaign'
296 kwargs['suptitle'] = 'Edit'
296 kwargs['suptitle'] = 'Edit'
297 kwargs['button'] = 'Update'
297 kwargs['button'] = 'Update'
298
298
299 return render(request, 'campaign_edit.html', kwargs)
299 return render(request, 'campaign_edit.html', kwargs)
300
300
301 def campaign_delete(request, id_camp):
301 def campaign_delete(request, id_camp):
302
302
303 campaign = get_object_or_404(Campaign, pk=id_camp)
303 campaign = get_object_or_404(Campaign, pk=id_camp)
304
304
305 if request.method=='POST':
305 if request.method=='POST':
306 if request.user.is_staff:
306 if request.user.is_staff:
307 campaign.delete()
307 campaign.delete()
308 return redirect('url_campaigns')
308 return redirect('url_campaigns')
309
309
310 return HttpResponse("Not enough permission to delete this object")
310 return HttpResponse("Not enough permission to delete this object")
311
311
312 kwargs = {'object':campaign, 'camp_active':'active',
312 kwargs = {'object':campaign, 'camp_active':'active',
313 'url_cancel':'url_campaign', 'id_item':id_camp}
313 'url_cancel':'url_campaign', 'id_item':id_camp}
314
314
315 return render(request, 'item_delete.html', kwargs)
315 return render(request, 'item_delete.html', kwargs)
316
316
317 def experiments(request):
317 def experiments(request):
318
318
319 experiment_list = Experiment.objects.all().order_by('campaign')
319 experiment_list = Experiment.objects.all().order_by('campaign')
320
320
321 keys = ['id', 'name', 'start_time', 'end_time', 'campaign']
321 keys = ['id', 'name', 'start_time', 'end_time', 'campaign']
322
322
323 kwargs = {}
323 kwargs = {}
324
324
325 kwargs['experiment_keys'] = keys[1:]
325 kwargs['experiment_keys'] = keys[1:]
326 kwargs['experiments'] = experiment_list#.values(*keys)
326 kwargs['experiments'] = experiment_list#.values(*keys)
327
327
328 kwargs['title'] = 'Experiment'
328 kwargs['title'] = 'Experiment'
329 kwargs['suptitle'] = 'List'
329 kwargs['suptitle'] = 'List'
330 kwargs['button'] = 'New Experiment'
330 kwargs['button'] = 'New Experiment'
331
331
332 return render(request, 'experiments.html', kwargs)
332 return render(request, 'experiments.html', kwargs)
333
333
334 def experiment(request, id_exp):
334 def experiment(request, id_exp):
335
335
336 experiment = get_object_or_404(Experiment, pk=id_exp)
336 experiment = get_object_or_404(Experiment, pk=id_exp)
337
337
338 experiments = Experiment.objects.filter(campaign=experiment.campaign)
338 experiments = Experiment.objects.filter(campaign=experiment.campaign)
339 configurations = Configuration.objects.filter(experiment=experiment, type=0)
339 configurations = Configuration.objects.filter(experiment=experiment, type=0)
340
340
341 kwargs = {}
341 kwargs = {}
342
342
343 exp_keys = ['id', 'campaign', 'name', 'start_time', 'end_time']
343 exp_keys = ['id', 'campaign', 'name', 'start_time', 'end_time']
344 conf_keys = ['id', 'device__name', 'device__device_type', 'device__ip_address', 'device__port_address']
344 conf_keys = ['id', 'device__name', 'device__device_type', 'device__ip_address', 'device__port_address']
345
345
346 conf_labels = ['id', 'device__name', 'device_type', 'ip_address', 'port_address']
346 conf_labels = ['id', 'device__name', 'device_type', 'ip_address', 'port_address']
347
347
348 kwargs['experiment_keys'] = exp_keys[1:]
348 kwargs['experiment_keys'] = exp_keys[1:]
349 kwargs['experiment'] = experiment
349 kwargs['experiment'] = experiment
350
350
351 kwargs['experiments'] = experiments.values(*exp_keys)
351 kwargs['experiments'] = experiments.values(*exp_keys)
352
352
353 kwargs['configuration_labels'] = conf_labels[1:]
353 kwargs['configuration_labels'] = conf_labels[1:]
354 kwargs['configuration_keys'] = conf_keys[1:]
354 kwargs['configuration_keys'] = conf_keys[1:]
355 kwargs['configurations'] = configurations #.values(*conf_keys)
355 kwargs['configurations'] = configurations #.values(*conf_keys)
356
356
357 kwargs['title'] = 'Experiment'
357 kwargs['title'] = 'Experiment'
358 kwargs['suptitle'] = 'Details'
358 kwargs['suptitle'] = 'Details'
359
359
360 kwargs['button'] = 'Add Configuration'
360 kwargs['button'] = 'Add Configuration'
361
361
362 return render(request, 'experiment.html', kwargs)
362 return render(request, 'experiment.html', kwargs)
363
363
364 def experiment_new(request, id_camp=0):
364 def experiment_new(request, id_camp=0):
365
365
366 if request.method == 'GET':
366 if request.method == 'GET':
367 form = ExperimentForm(initial={'campaign':id_camp})
367 form = ExperimentForm(initial={'campaign':id_camp})
368
368
369 if request.method == 'POST':
369 if request.method == 'POST':
370 form = ExperimentForm(request.POST, initial={'campaign':id_camp})
370 form = ExperimentForm(request.POST, initial={'campaign':id_camp})
371
371
372 if form.is_valid():
372 if form.is_valid():
373 experiment = form.save()
373 experiment = form.save()
374 return redirect('url_experiment', id_exp=experiment.id)
374 return redirect('url_experiment', id_exp=experiment.id)
375
375
376 kwargs = {}
376 kwargs = {}
377 kwargs['form'] = form
377 kwargs['form'] = form
378 kwargs['title'] = 'Experiment'
378 kwargs['title'] = 'Experiment'
379 kwargs['suptitle'] = 'New'
379 kwargs['suptitle'] = 'New'
380 kwargs['button'] = 'Create'
380 kwargs['button'] = 'Create'
381
381
382 return render(request, 'experiment_edit.html', kwargs)
382 return render(request, 'experiment_edit.html', kwargs)
383
383
384 def experiment_edit(request, id_exp):
384 def experiment_edit(request, id_exp):
385
385
386 experiment = get_object_or_404(Experiment, pk=id_exp)
386 experiment = get_object_or_404(Experiment, pk=id_exp)
387
387
388 if request.method == 'GET':
388 if request.method == 'GET':
389 form = ExperimentForm(instance=experiment)
389 form = ExperimentForm(instance=experiment)
390
390
391 if request.method=='POST':
391 if request.method=='POST':
392 form = ExperimentForm(request.POST, instance=experiment)
392 form = ExperimentForm(request.POST, instance=experiment)
393
393
394 if form.is_valid():
394 if form.is_valid():
395 experiment = form.save()
395 experiment = form.save()
396 return redirect('url_experiment', id_exp=experiment.id)
396 return redirect('url_experiment', id_exp=experiment.id)
397
397
398 kwargs = {}
398 kwargs = {}
399 kwargs['form'] = form
399 kwargs['form'] = form
400 kwargs['title'] = 'Experiment'
400 kwargs['title'] = 'Experiment'
401 kwargs['suptitle'] = 'Edit'
401 kwargs['suptitle'] = 'Edit'
402 kwargs['button'] = 'Update'
402 kwargs['button'] = 'Update'
403
403
404 return render(request, 'experiment_edit.html', kwargs)
404 return render(request, 'experiment_edit.html', kwargs)
405
405
406 def experiment_delete(request, id_exp):
406 def experiment_delete(request, id_exp):
407
407
408 experiment = get_object_or_404(Experiment, pk=id_exp)
408 experiment = get_object_or_404(Experiment, pk=id_exp)
409
409
410 if request.method=='POST':
410 if request.method=='POST':
411 if request.user.is_staff:
411 if request.user.is_staff:
412 id_camp = experiment.campaign.id
412 id_camp = experiment.campaign.id
413 experiment.delete()
413 experiment.delete()
414 return redirect('url_campaign', id_camp=id_camp)
414 return redirect('url_campaign', id_camp=id_camp)
415
415
416 return HttpResponse("Not enough permission to delete this object")
416 return HttpResponse("Not enough permission to delete this object")
417
417
418 kwargs = {'object':experiment, 'exp_active':'active',
418 kwargs = {'object':experiment, 'exp_active':'active',
419 'url_cancel':'url_experiment', 'id_item':id_exp}
419 'url_cancel':'url_experiment', 'id_item':id_exp}
420
420
421 return render(request, 'item_delete.html', kwargs)
421 return render(request, 'item_delete.html', kwargs)
422
422
423 def dev_confs(request):
423 def dev_confs(request):
424
424
425 configurations = Configuration.objects.all().order_by('type', 'device__device_type', 'experiment')
425 configurations = Configuration.objects.all().order_by('type', 'device__device_type', 'experiment')
426
426
427 # 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']
428
428
429 keys = ['id', 'device', 'experiment', 'type', 'programmed_date']
429 keys = ['id', 'device', 'experiment', 'type', 'programmed_date']
430
430
431 kwargs = {}
431 kwargs = {}
432
432
433 kwargs['configuration_keys'] = keys[1:]
433 kwargs['configuration_keys'] = keys[1:]
434 kwargs['configurations'] = configurations#.values(*keys)
434 kwargs['configurations'] = configurations#.values(*keys)
435
435
436 kwargs['title'] = 'Configuration'
436 kwargs['title'] = 'Configuration'
437 kwargs['suptitle'] = 'List'
437 kwargs['suptitle'] = 'List'
438 kwargs['button'] = 'New Configuration'
438 kwargs['button'] = 'New Configuration'
439
439
440 return render(request, 'dev_confs.html', kwargs)
440 return render(request, 'dev_confs.html', kwargs)
441
441
442 def dev_conf(request, id_conf):
442 def dev_conf(request, id_conf):
443
443
444 conf = get_object_or_404(Configuration, pk=id_conf)
444 conf = get_object_or_404(Configuration, pk=id_conf)
445
445
446 DevConfModel = CONF_MODELS[conf.device.device_type.name]
446 DevConfModel = CONF_MODELS[conf.device.device_type.name]
447 dev_conf = DevConfModel.objects.get(pk=id_conf)
447 dev_conf = DevConfModel.objects.get(pk=id_conf)
448
448
449 kwargs = {}
449 kwargs = {}
450 kwargs['dev_conf'] = dev_conf
450 kwargs['dev_conf'] = dev_conf
451 kwargs['dev_conf_keys'] = ['experiment', 'device']
451 kwargs['dev_conf_keys'] = ['name', 'experiment', 'device']
452
452
453 kwargs['title'] = 'Configuration'
453 kwargs['title'] = 'Configuration'
454 kwargs['suptitle'] = 'Details'
454 kwargs['suptitle'] = 'Details'
455
455
456 kwargs['button'] = 'Edit Configuration'
456 kwargs['button'] = 'Edit Configuration'
457
457
458 ###### SIDEBAR ######
458 ###### SIDEBAR ######
459 kwargs.update(sidebar(conf))
459 kwargs.update(sidebar(conf))
460
460
461 return render(request, 'dev_conf.html', kwargs)
461 return render(request, 'dev_conf.html', kwargs)
462
462
463 def dev_conf_new(request, id_exp=0):
463 def dev_conf_new(request, id_exp=0):
464
464
465 if request.method == 'GET':
465 if request.method == 'GET':
466 form = ConfigurationForm(initial={'experiment':id_exp})
466 form = ConfigurationForm(initial={'experiment':id_exp})
467
467
468 if request.method == 'POST':
468 if request.method == 'POST':
469 form = ConfigurationForm(request.POST)
469 experiment = Experiment.objects.get(pk=request.POST['experiment'])
470 device = Device.objects.get(pk=request.POST['device'])
471
472 DevConfForm = CONF_FORMS[device.device_type.name]
473
474 form = DevConfForm(request.POST, initial={'experiment':experiment.id})
470
475
471 if form.is_valid():
476 if form.is_valid():
472 experiment = Experiment.objects.get(pk=request.POST['experiment'])
477 dev_conf = form.save()
473 device = Device.objects.get(pk=request.POST['device'])
478
474
479 return redirect('url_experiment', id_exp=experiment.id)
475 exp_devices = Device.objects.filter(configuration__experiment=experiment,
476 configuration__type=0)
477
478 if device.id not in exp_devices.values('id',):
479
480 DevConfModel = CONF_MODELS[device.device_type.name]
481 conf = DevConfModel(experiment=experiment, device=device)
482 conf.save()
483
484 return redirect('url_experiment', id_exp=experiment.id)
485
480
486 kwargs = {}
481 kwargs = {}
487 kwargs['form'] = form
482 kwargs['form'] = form
488 kwargs['title'] = 'Configuration'
483 kwargs['title'] = 'Configuration'
489 kwargs['suptitle'] = 'New'
484 kwargs['suptitle'] = 'New'
490 kwargs['button'] = 'Create'
485 kwargs['button'] = 'Create'
491
486
492 return render(request, 'dev_conf_edit.html', kwargs)
487 return render(request, 'dev_conf_edit.html', kwargs)
493
488
494 def dev_conf_edit(request, id_conf):
489 def dev_conf_edit(request, id_conf):
495
490
496 conf = get_object_or_404(Configuration, pk=id_conf)
491 conf = get_object_or_404(Configuration, pk=id_conf)
497
492
498 DevConfModel = CONF_MODELS[conf.device.device_type.name]
493 DevConfModel = CONF_MODELS[conf.device.device_type.name]
499 DevConfForm = CONF_FORMS[conf.device.device_type.name]
494 DevConfForm = CONF_FORMS[conf.device.device_type.name]
500
495
501 dev_conf = DevConfModel.objects.get(pk=id_conf)
496 dev_conf = DevConfModel.objects.get(pk=id_conf)
502
497
503 if request.method=='GET':
498 if request.method=='GET':
504 form = DevConfForm(instance=dev_conf)
499 form = DevConfForm(instance=dev_conf)
505
500
506 if request.method=='POST':
501 if request.method=='POST':
507 form = DevConfForm(request.POST, instance=dev_conf)
502 form = DevConfForm(request.POST, instance=dev_conf)
508
503
509 if form.is_valid():
504 if form.is_valid():
510 form.save()
505 form.save()
511 return redirect('url_dev_conf', id_conf=id_conf)
506 return redirect('url_dev_conf', id_conf=id_conf)
512
507
513 kwargs = {}
508 kwargs = {}
514 kwargs['form'] = form
509 kwargs['form'] = form
515 kwargs['title'] = 'Device Configuration'
510 kwargs['title'] = 'Device Configuration'
516 kwargs['suptitle'] = 'Edit'
511 kwargs['suptitle'] = 'Edit'
517 kwargs['button'] = 'Update'
512 kwargs['button'] = 'Update'
518
513
519 ###### SIDEBAR ######
514 ###### SIDEBAR ######
520 kwargs.update(sidebar(conf))
515 kwargs.update(sidebar(conf))
521
516
522 return render(request, 'dev_conf_edit.html', kwargs)
517 return render(request, 'dev_conf_edit.html', kwargs)
523
518
524 def dev_conf_read(request, id_conf):
519 def dev_conf_read(request, id_conf):
525
520
526 conf = get_object_or_404(Configuration, pk=id_conf)
521 conf = get_object_or_404(Configuration, pk=id_conf)
527
522
528 messages.error(request, "Read View not implemented yet")
523 messages.error(request, "Read View not implemented yet")
529
524
530 return redirect('url_dev_conf', id_conf=conf.id)
525 return redirect('url_dev_conf', id_conf=conf.id)
531
526
532 def dev_conf_write(request, id_conf):
527 def dev_conf_write(request, id_conf):
533
528
534 conf = get_object_or_404(Configuration, pk=id_conf)
529 conf = get_object_or_404(Configuration, pk=id_conf)
535
530
536 messages.error(request, "Write View not implemented yet")
531 messages.error(request, "Write View not implemented yet")
537
532
538 return redirect('url_dev_conf', id_conf=conf.id)
533 return redirect('url_dev_conf', id_conf=conf.id)
539
534
540 def dev_conf_import(request, id_conf):
535 def dev_conf_import(request, id_conf):
541
536
542 conf = get_object_or_404(Configuration, pk=id_conf)
537 conf = get_object_or_404(Configuration, pk=id_conf)
543
538
544 messages.error(request, "Import View not implemented yet")
539 messages.error(request, "Import View not implemented yet")
545
540
546 return redirect('url_dev_conf', id_conf=conf.id)
541 return redirect('url_dev_conf', id_conf=conf.id)
547
542
548 def dev_conf_export(request, id_conf):
543 def dev_conf_export(request, id_conf):
549
544
550 conf = get_object_or_404(Configuration, pk=id_conf)
545 conf = get_object_or_404(Configuration, pk=id_conf)
551
546
552 messages.error(request, "Export View not implemented yet")
547 messages.error(request, "Export View not implemented yet")
553
548
554 return redirect('url_dev_conf', id_conf=conf.id)
549 return redirect('url_dev_conf', id_conf=conf.id)
555
550
556 def dev_conf_delete(request, id_conf):
551 def dev_conf_delete(request, id_conf):
557
552
558 conf = get_object_or_404(Configuration, pk=id_conf)
553 conf = get_object_or_404(Configuration, pk=id_conf)
559
554
560 if request.method=='POST':
555 if request.method=='POST':
561 if request.user.is_staff:
556 if request.user.is_staff:
562 id_exp = conf.experiment.id
557 id_exp = conf.experiment.id
563 conf.delete()
558 conf.delete()
564 return redirect('url_experiment', id_exp=id_exp)
559 return redirect('url_experiment', id_exp=id_exp)
565
560
566 return HttpResponse("Not enough permission to delete this object")
561 return HttpResponse("Not enough permission to delete this object")
567
562
568 kwargs = {'object':conf, 'conf_active':'active',
563 kwargs = {'object':conf, 'conf_active':'active',
569 'url_cancel':'url_dev_conf', 'id_item':id_conf}
564 'url_cancel':'url_dev_conf', 'id_item':id_conf}
570
565
571 ###### SIDEBAR ######
566 ###### SIDEBAR ######
572 kwargs.update(sidebar(conf))
567 kwargs.update(sidebar(conf))
573
568
574 return render(request, 'item_delete.html', kwargs)
569 return render(request, 'item_delete.html', kwargs)
575
570
576 def sidebar(conf):
571 def sidebar(conf):
577
572
578 experiments = Experiment.objects.filter(campaign=conf.experiment.campaign)
573 experiments = Experiment.objects.filter(campaign=conf.experiment.campaign)
579 configurations = Configuration.objects.filter(experiment=conf.experiment, type=0)
574 configurations = Configuration.objects.filter(experiment=conf.experiment, type=0)
580
575
581 exp_keys = ['id', 'campaign', 'name', 'start_time', 'end_time']
576 exp_keys = ['id', 'campaign', 'name', 'start_time', 'end_time']
582 conf_keys = ['id', 'device']
577 conf_keys = ['id', 'device']
583
578
584 kwargs = {}
579 kwargs = {}
585
580
586 kwargs['dev_conf'] = conf
581 kwargs['dev_conf'] = conf
587
582
588 kwargs['experiment_keys'] = exp_keys[1:]
583 kwargs['experiment_keys'] = exp_keys[1:]
589 kwargs['experiments'] = experiments.values(*exp_keys)
584 kwargs['experiments'] = experiments.values(*exp_keys)
590
585
591 kwargs['configuration_keys'] = conf_keys[1:]
586 kwargs['configuration_keys'] = conf_keys[1:]
592 kwargs['configurations'] = configurations #.values(*conf_keys)
587 kwargs['configurations'] = configurations #.values(*conf_keys)
593
588
594 return kwargs
589 return kwargs
595
590
596
591
597 def operation(request):
592 def operation(request):
598 pass
593 pass
599
594
600
595
General Comments 0
You need to be logged in to leave comments. Login now