##// END OF EJS Templates
Device model changed: ...
Miguel Urco -
r9:0497a2a4b7ea
parent child
Show More
@@ -1,67 +1,69
1 from itertools import chain
1 from itertools import chain
2 from django.db import models
2 from django.db import models
3 from polymorphic import PolymorphicModel
3 from polymorphic import PolymorphicModel
4
4
5 STATES = (
5 STATES = (
6 (0, 'Inactive'),
6 (0, 'Inactive'),
7 (1, 'Active'),
7 (1, 'Active'),
8 )
8 )
9
9
10 # Create your models here.
10 # Create your models here.
11
11
12 class DeviceType(models.Model):
12 class DeviceType(models.Model):
13
13
14 name = models.CharField(max_length=40)
14 name = models.CharField(max_length=40)
15 alias = models.CharField(max_length=40)
15 alias = models.CharField(max_length=40)
16 info = models.TextField(blank=True, null=True)
16 info = models.TextField(blank=True, null=True)
17 status = models.PositiveSmallIntegerField(default=1, choices=STATES)
17 status = models.PositiveSmallIntegerField(default=1, choices=STATES)
18
18
19 class Meta:
19 class Meta:
20 db_table = 'device_types'
20 db_table = 'device_types'
21
21
22 def __unicode__(self):
22 def __unicode__(self):
23 return u'%s' % self.alias
23 return u'%s' % self.alias
24
24
25 class Device(models.Model):
25 class Device(models.Model):
26
26
27 device_type = models.ForeignKey(DeviceType)
27 device_type = models.ForeignKey(DeviceType)
28 name = models.CharField(max_length=40, default='')
28 model = models.CharField(max_length=40, default='')
29 model = models.CharField(max_length=40, default='')
29 serial = models.CharField(max_length=40, default='')
30 serial_number = models.CharField(max_length=40, default='')
30 ip_address = models.GenericIPAddressField(protocol='IPv4', default='0.0.0.0')
31 ip_address = models.GenericIPAddressField(protocol='IPv4', default='0.0.0.0')
31 mac_address = models.CharField(max_length = 20, null=True, blank=True)
32 mac_address = models.CharField(max_length = 20, null=True, blank=True)
33 description = models.TextField(blank=True, null=True)
32 status = models.PositiveSmallIntegerField(default=1, choices=STATES)
34 status = models.PositiveSmallIntegerField(default=1, choices=STATES)
33
35
34 class Meta:
36 class Meta:
35 db_table = 'devices'
37 db_table = 'devices'
36
38
37 def __unicode__(self):
39 def __unicode__(self):
38 return u'%s - %s' % (self.device_type, self.ip_address)
40 return u'%s - %s' % (self.device_type, self.ip_address)
39
41
40 class Experiment(models.Model):
42 class Experiment(models.Model):
41
43
42 name = models.CharField(max_length=40)
44 name = models.CharField(max_length=40)
43 alias = models.CharField(max_length=40)
45 alias = models.CharField(max_length=40)
44 start_date = models.DateTimeField()
46 start_date = models.DateTimeField()
45 end_date = models.DateTimeField()
47 end_date = models.DateTimeField()
46 template = models.BooleanField(default=False)
48 template = models.BooleanField(default=False)
47 status = models.PositiveSmallIntegerField(default=1, choices=STATES)
49 status = models.PositiveSmallIntegerField(default=1, choices=STATES)
48
50
49 class Meta:
51 class Meta:
50 db_table = 'experiments'
52 db_table = 'experiments'
51
53
52 def __unicode__(self):
54 def __unicode__(self):
53 return u'%s: %s - %s' % (self.alias, self.start_date, self.end_date)
55 return u'%s: %s - %s' % (self.alias, self.start_date, self.end_date)
54
56
55 class Configuration(PolymorphicModel):
57 class Configuration(PolymorphicModel):
56
58
57 experiment = models.ForeignKey(Experiment)
59 experiment = models.ForeignKey(Experiment)
58 device = models.ForeignKey(Device)
60 device = models.ForeignKey(Device)
59 parameters = models.TextField(default='{}')
61 parameters = models.TextField(default='{}')
60 status = models.PositiveSmallIntegerField(default=1, choices=STATES)
62 status = models.PositiveSmallIntegerField(default=1, choices=STATES)
61
63
62 class Meta:
64 class Meta:
63 db_table = 'configurations'
65 db_table = 'configurations'
64
66
65 def __unicode__(self):
67 def __unicode__(self):
66 return u'%s - %s' % (self.experiment.alias, self.device)
68 return u'%s - %s' % (self.experiment.alias, self.device)
67 No newline at end of file
69
@@ -1,133 +1,133
1 from django.shortcuts import redirect, render_to_response
1 from django.shortcuts import redirect, render_to_response
2 from django.template import RequestContext
2 from django.template import RequestContext
3 from .forms import NewExperimentForm, NewDeviceForm, DeviceTypeForm
3 from .forms import NewExperimentForm, NewDeviceForm, DeviceTypeForm
4
4
5 from .models import Experiment, Device, Configuration
5 from .models import Experiment, Device, Configuration
6 from apps.cgs.models import CGSConfiguration
6 from apps.cgs.models import CGSConfiguration
7 from apps.jars.models import JARSConfiguration
7 from apps.jars.models import JARSConfiguration
8 #from apps.usrp.models import USRPConfiguration
8 #from apps.usrp.models import USRPConfiguration
9 from apps.abs.models import ABSConfiguration
9 from apps.abs.models import ABSConfiguration
10 from apps.rc.models import RCConfiguration
10 from apps.rc.models import RCConfiguration
11 from apps.dds.models import DDSConfiguration
11 from apps.dds.models import DDSConfiguration
12
12
13 # Create your views here.
13 # Create your views here.
14
14
15 MODELS = {
15 MODELS = {
16 'rc': RCConfiguration,
16 'rc': RCConfiguration,
17 'dds': DDSConfiguration,
17 'dds': DDSConfiguration,
18 'jars': JARSConfiguration,
18 'jars': JARSConfiguration,
19 'cgs': CGSConfiguration,
19 'cgs': CGSConfiguration,
20 'abs': ABSConfiguration,
20 'abs': ABSConfiguration,
21 }
21 }
22
22
23 def index(request):
23 def index(request):
24 kwargs = {}
24 kwargs = {}
25
25
26 return render_to_response("index.html", kwargs, context_instance=RequestContext(request))
26 return render_to_response("index.html", kwargs, context_instance=RequestContext(request))
27
27
28 def experiment(request, id_exp=0, id_dev_type=0):
28 def experiment(request, id_exp=0, id_dev_type=0):
29 kwargs = {}
29 kwargs = {}
30 if id_exp:
30 if id_exp:
31 experiment = Experiment.objects.get(pk=id_exp)
31 experiment = Experiment.objects.get(pk=id_exp)
32 devices = Device.objects.filter(configuration__experiment=experiment)
32 devices = Device.objects.filter(configuration__experiment=experiment)
33 kwargs['experiment'] = experiment
33 kwargs['experiment'] = experiment
34 kwargs['experiment_keys'] = ['name', 'alias', 'start_date', 'end_date']
34 kwargs['experiment_keys'] = ['name', 'alias', 'start_date', 'end_date']
35
35
36 form = NewExperimentForm(instance=experiment)
36 form = NewExperimentForm(instance=experiment)
37
37
38 if id_dev_type:
38 if id_dev_type:
39 subform = DeviceTypeForm(initial={'device_type':id_dev_type})
39 subform = DeviceTypeForm(initial={'device_type':id_dev_type})
40 kwargs['keys'] = ['model', 'ip_address', 'status']
40 kwargs['keys'] = ['model', 'ip_address', 'status']
41 keys = ['id']+kwargs['keys']
41 keys = ['id']+kwargs['keys']
42 kwargs['items'] = Device.objects.filter(device_type=id_dev_type).values(*keys)
42 kwargs['items'] = Device.objects.filter(device_type=id_dev_type).values(*keys)
43 else:
43 else:
44 subform = DeviceTypeForm()
44 subform = DeviceTypeForm()
45
45
46 kwargs['form'] = form
46 kwargs['form'] = form
47 kwargs['subform'] = subform
47 kwargs['subform'] = subform
48 kwargs['device_keys'] = ['device_type__name', 'model', 'ip_address', 'status']
48 kwargs['device_keys'] = ['device_type__name', 'model', 'ip_address', 'status']
49 kwargs['devices'] = devices.values('device_type__name', 'model', 'ip_address', 'status', 'device_type__alias', 'configuration__id')
49 kwargs['devices'] = devices.values('device_type__name', 'model', 'ip_address', 'status', 'device_type__alias', 'configuration__id')
50 kwargs['suptitle'] = 'Detail'
50 kwargs['suptitle'] = 'Detail'
51 else:
51 else:
52 experiments = Experiment.objects.all().order_by('start_date')
52 experiments = Experiment.objects.all().order_by('start_date')
53 kwargs['keys'] = ['name', 'start_date', 'end_date']
53 kwargs['keys'] = ['name', 'start_date', 'end_date']
54 keys = ['id']+kwargs['keys']
54 keys = ['id']+kwargs['keys']
55 kwargs['items'] = experiments.values(*keys)
55 kwargs['items'] = experiments.values(*keys)
56 kwargs['suptitle'] = 'List'
56 kwargs['suptitle'] = 'List'
57 kwargs['button'] = 'Add Experiment'
57 kwargs['button'] = 'Add Experiment'
58
58
59 kwargs['id_dev_type'] = id_dev_type
59 kwargs['id_dev_type'] = id_dev_type
60 kwargs['id_exp'] = id_exp
60 kwargs['id_exp'] = id_exp
61 return render_to_response("experiment.html", kwargs, context_instance=RequestContext(request))
61 return render_to_response("experiment.html", kwargs, context_instance=RequestContext(request))
62
62
63 def edit_experiment(request, id_exp):
63 def edit_experiment(request, id_exp):
64 if request.method=='POST':
64 if request.method=='POST':
65 experiment = Experiment.objects.get(pk=id_exp)
65 experiment = Experiment.objects.get(pk=id_exp)
66 form = NewExperimentForm(request.POST, instance=experiment)
66 form = NewExperimentForm(request.POST, instance=experiment)
67 if form.is_valid():
67 if form.is_valid():
68 form.save()
68 form.save()
69 return redirect('experiment', id_exp=id_exp)
69 return redirect('experiment', id_exp=id_exp)
70
70
71 def experiment_add_device(request, id_exp):
71 def experiment_add_device(request, id_exp):
72 if request.method=='POST':
72 if request.method=='POST':
73 experiment = Experiment.objects.get(pk=id_exp)
73 experiment = Experiment.objects.get(pk=id_exp)
74 device = Device.objects.get(pk=request.POST['device'])
74 device = Device.objects.get(pk=request.POST['device'])
75 model = MODELS[device.device_type.alias]
75 model = MODELS[device.device_type.alias]
76 conf = model(experiment=experiment, device=device)
76 conf = model(experiment=experiment, device=device)
77 conf.save()
77 conf.save()
78 return redirect('experiment', id_exp=id_exp)
78 return redirect('experiment', id_exp=id_exp)
79
79
80 def add_experiment(request):
80 def add_experiment(request):
81 kwargs = {}
81 kwargs = {}
82 if request.method == 'POST':
82 if request.method == 'POST':
83 form = NewExperimentForm(request.POST)
83 form = NewExperimentForm(request.POST)
84 if form.is_valid():
84 if form.is_valid():
85 experiment = form.save()
85 experiment = form.save()
86 return redirect('experiment', id_exp=experiment.id)
86 return redirect('experiment', id_exp=experiment.id)
87 else:
87 else:
88 form = NewExperimentForm()
88 form = NewExperimentForm()
89 kwargs['form_new'] = form
89 kwargs['form_new'] = form
90 kwargs['title'] = 'Experiment'
90 kwargs['title'] = 'Experiment'
91 kwargs['suptitle'] = 'New'
91 kwargs['suptitle'] = 'New'
92 kwargs['id_exp'] = 0
92 kwargs['id_exp'] = 0
93 return render_to_response("experiment.html", kwargs, context_instance=RequestContext(request))
93 return render_to_response("experiment.html", kwargs, context_instance=RequestContext(request))
94
94
95 def device(request, id_dev=0):
95 def device(request, id_dev=0):
96 kwargs = {}
96 kwargs = {}
97 if id_dev:
97 if id_dev:
98 device = Device.objects.get(pk=id_dev)
98 device = Device.objects.get(pk=id_dev)
99 kwargs['form'] = NewDeviceForm(instance=device)
99 kwargs['form'] = NewDeviceForm(instance=device)
100 kwargs['action'] = 'edit/'
100 kwargs['action'] = 'edit/'
101 kwargs['button'] = 'Update'
101 kwargs['button'] = 'Update'
102 kwargs['suptitle'] = 'Detail'
102 kwargs['suptitle'] = 'Detail'
103 else:
103 else:
104 devices = Device.objects.all()
104 devices = Device.objects.all()
105 kwargs['keys'] = ['device_type__name', 'model', 'serial', 'ip_address', 'status']
105 kwargs['keys'] = ['device_type__name', 'model', 'serial_number', 'ip_address', 'status']
106 keys = ['id']+kwargs['keys']
106 keys = ['id']+kwargs['keys']
107 kwargs['items'] = devices.values(*keys)
107 kwargs['items'] = devices.values(*keys)
108 kwargs['suptitle'] = 'List'
108 kwargs['suptitle'] = 'List'
109 kwargs['button'] = 'Add Device'
109 kwargs['button'] = 'Add Device'
110 return render_to_response("device.html", kwargs, context_instance=RequestContext(request))
110 return render_to_response("device.html", kwargs, context_instance=RequestContext(request))
111
111
112 def edit_device(request, id_dev):
112 def edit_device(request, id_dev):
113 if request.method=='POST':
113 if request.method=='POST':
114 device = Device.objects.get(pk=id_dev)
114 device = Device.objects.get(pk=id_dev)
115 form = NewDeviceForm(request.POST, instance=device)
115 form = NewDeviceForm(request.POST, instance=device)
116 if form.is_valid():
116 if form.is_valid():
117 form.save()
117 form.save()
118 return redirect('devices')
118 return redirect('devices')
119
119
120 def add_device(request):
120 def add_device(request):
121 kwargs = {}
121 kwargs = {}
122 if request.method == 'POST':
122 if request.method == 'POST':
123 form = NewDeviceForm(request.POST)
123 form = NewDeviceForm(request.POST)
124 if form.is_valid():
124 if form.is_valid():
125 form.save()
125 form.save()
126 return redirect('devices')
126 return redirect('devices')
127 else:
127 else:
128 form = NewDeviceForm()
128 form = NewDeviceForm()
129 kwargs['form'] = form
129 kwargs['form'] = form
130 kwargs['button'] = 'Create'
130 kwargs['button'] = 'Create'
131 kwargs['suptitle'] = 'New'
131 kwargs['suptitle'] = 'New'
132 return render_to_response("device.html", kwargs, context_instance=RequestContext(request))
132 return render_to_response("device.html", kwargs, context_instance=RequestContext(request))
133
133
General Comments 0
You need to be logged in to leave comments. Login now