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