##// END OF EJS Templates
git-svn-id: http://jro-dev.igp.gob.pe/svn/jro_hard/radarsys/trunk/webapp@157 aa17d016-51d5-4e8b-934c-7b2bbb1bbe71
Fiorella Quino -
r136:82a57ea8b8e3
parent child
Show More
@@ -1,6 +1,7
1 1 from django.contrib import admin
2 from .models import JARSConfiguration
2 from .models import JARSConfiguration, JARSfilter
3 3
4 4 # Register your models here.
5 5
6 6 admin.site.register(JARSConfiguration)
7 admin.site.register(JARSfilter)
@@ -1,41 +1,41
1 1 from django import forms
2 2 from apps.main.models import Device, Experiment
3 3 from .models import JARSConfiguration, JARSfilter
4 4 from .widgets import SpectralWidget
5 5
6 6 class JARSConfigurationForm(forms.ModelForm):
7 7 def __init__(self, *args, **kwargs):
8 8 super(JARSConfigurationForm, self).__init__(*args, **kwargs)
9 9 instance = getattr(self, 'instance', None)
10 10
11 11 if instance and instance.pk:
12 12 devices = Device.objects.filter(device_type__name='jars')
13 13
14 14 if instance.experiment:
15 15 experiments = Experiment.objects.filter(pk=instance.experiment.id)
16 16 self.fields['experiment'].widget.choices = [(experiment.id, experiment) for experiment in experiments]
17 17
18 18 self.fields['device'].widget.choices = [(device.id, device) for device in devices]
19 19 #self.fields['spectral'].widget = SpectralWidget()
20 20 self.fields['spectral'].widget = SpectralWidget()
21 21 #-------------JARS Configuration needs an Experiment-----------------
22 22 def clean(self):
23 23 cleaned_data = super(JARSConfigurationForm, self).clean()
24 24 experiment = cleaned_data.get('experiment')
25 25 if experiment == None:
26 26 msg = "Error: Jars Configuration needs an Experiment"
27 27 self.add_error('experiment', msg)
28 28
29 29 class Meta:
30 30 model = JARSConfiguration
31 exclude = ('type', 'parameters', 'status')
31 exclude = ('type', 'parameters', 'status', 'filter_parms')
32 32
33 33
34 34 class JARSfilterForm(forms.ModelForm):
35 35 def __init__(self, *args, **kwargs):
36 36 super(JARSfilterForm, self).__init__(*args, **kwargs)
37 37 instance = getattr(self, 'instance', None)
38 38
39 39 class Meta:
40 40 model = JARSfilter
41 41 exclude = ('type', 'parameters', 'status') No newline at end of file
@@ -1,99 +1,132
1 1 from django.db import models
2 2 from apps.main.models import Configuration
3 3 from django.core.validators import MinValueValidator, MaxValueValidator
4 4
5 5 from apps.rc.models import RCConfiguration
6 6 # Create your models here.
7 7
8 8 EXPERIMENT_TYPE = (
9 9 (0, 'RAW_DATA'),
10 10 (1, 'PDATA'),
11 11 )
12 12
13 13 DATA_TYPE = (
14 14 (0, 'SHORT'),
15 15 (1, 'FLOAT'),
16 16 )
17 17
18 18 class JARSfilter(models.Model):
19 19
20 20 name = models.CharField(max_length=60, unique=True, default='')
21 21 clock = models.FloatField(verbose_name='Clock Input (MHz)',validators=[MinValueValidator(5), MaxValueValidator(75)], null=True, default=60)
22 22 mult = models.PositiveIntegerField(verbose_name='Multiplier',validators=[MinValueValidator(1), MaxValueValidator(20)], default=5)
23 23 fch = models.DecimalField(verbose_name='Frequency (MHz)', validators=[MinValueValidator(0), MaxValueValidator(150)], max_digits=19, decimal_places=16, null=True, default=49.9200)
24 24 filter_fir = models.PositiveIntegerField(verbose_name='FIR Filter',validators=[MinValueValidator(1), MaxValueValidator(20)], default = 6)
25 25 filter_2 = models.PositiveIntegerField(verbose_name='Filter 2',validators=[MinValueValidator(1), MaxValueValidator(20)], default = 10)
26 26 filter_5 = models.PositiveIntegerField(verbose_name='Filter 5',validators=[MinValueValidator(1), MaxValueValidator(20)], default = 1)
27 27 speed = models.PositiveIntegerField(verbose_name='Speed',validators=[MinValueValidator(0), MaxValueValidator(100000)], default = 0)
28 28
29 29 class Meta:
30 30 db_table = 'jars_filters'
31 #ordering = ['channel']
31
32 def __unicode__(self):
33 return u'%s' % (self.name)
34
35 def parms_to_dict(self):
36
37 parameters = {}
38
39 parameters['name'] = self.name
40 parameters['clock'] = float(self.clock)
41 parameters['mult'] = int(self.mult)
42 parameters['fch'] = float(self.fch)
43 parameters['filter_fir'] = int(self.filter_fir)
44 parameters['filter_2'] = int(self.filter_2)
45 parameters['filter_5'] = int(self.filter_5)
46 parameters['speed'] = int(self.speed)
47
48 return parameters
49
50 def dict_to_parms(self, parameters):
51
52 self.name = parameters['name']
53 self.clock = parameters['clock']
54 self.mult = parameters['mult']
55 self.fch = parameters['fch']
56 self.filter_fir = parameters['filter_fir']
57 self.filter_2 = parameters['filter_2']
58 self.filter_5 = parameters['filter_5']
59 self.speed = parameters['speed']
32 60
33 61
34 62 class JARSConfiguration(Configuration):
35 63
36 64 ADC_RESOLUTION = 8
37 65 PCI_DIO_BUSWIDTH = 32
38 66 HEADER_VERSION = 1103
39 67 BEGIN_ON_START = True
40 68 REFRESH_RATE = 1
41 69
42 70 rc = models.ForeignKey(RCConfiguration, on_delete=models.CASCADE, null=True)
43 71 exp_type = models.PositiveIntegerField(verbose_name='Experiment Type', choices=EXPERIMENT_TYPE, default=0)
44 72 cards_number = models.PositiveIntegerField(verbose_name='Number of Cards', validators=[MinValueValidator(1), MaxValueValidator(4)], default = 1)
45 73 channels_number = models.PositiveIntegerField(verbose_name='Number of Channels', validators=[MinValueValidator(1), MaxValueValidator(8)], default = 5)
46 74 channels = models.CharField(verbose_name='Channels', max_length=15, default = '1,2,3,4,5')
47 75 rd_directory = models.CharField(verbose_name='Raw Data Directory', max_length=40, default='', blank=True, null=True)
48 76 raw_data_blocks = models.PositiveIntegerField(verbose_name='Raw Data Blocks', validators=[MaxValueValidator(5000)], default=120)
49 77 data_type = models.PositiveIntegerField(verbose_name='Data Type', choices=DATA_TYPE, default=0)
50 78 acq_profiles = models.PositiveIntegerField(verbose_name='Acquired Profiles', validators=[MaxValueValidator(5000)], default=400)
51 79 profiles_block = models.PositiveIntegerField(verbose_name='Profiles Per Block', validators=[MaxValueValidator(5000)], default=400)
52 80 fftpoints = models.PositiveIntegerField(verbose_name='FFT Points',default=16)
53 81 incohe_integr = models.PositiveIntegerField(verbose_name='Incoherent Integrations',validators=[MinValueValidator(1)], default=30)
54 82 filter = models.ForeignKey(JARSfilter, on_delete=models.CASCADE, null=True)
55 83 spectral_number = models.PositiveIntegerField(verbose_name='# Spectral Combinations',validators=[MinValueValidator(1)], default=1)
56 84 spectral = models.CharField(verbose_name='Combinations', max_length=5000, default = '[0, 0],')
57 85 create_directory = models.BooleanField(verbose_name='Create Directory Per Day', default=True)
58 86 include_expname = models.BooleanField(verbose_name='Experiment Name in Directory', default=True)
59 87 acq_link = models.BooleanField(verbose_name='Acquisition Link', default=True)
60 88 view_raw_data = models.BooleanField(verbose_name='View Raw Data', default=True)
61 89 save_ch_dc = models.BooleanField(verbose_name='Save Channels DC', default=True)
90 filter_parms = models.CharField(max_length=10000, default='{}')
62 91
63 92 class Meta:
64 93 db_table = 'jars_configurations'
65 94
66 95 def parms_to_dict(self):
67 96
68 97 parameters = {}
69 98
70 99 parameters['name'] = self.name
71 100 parameters['rc'] = self.rc.name
72 101 parameters['exp_type'] = self.exp_type
73 102 parameters['cards_number'] = self.cards_number
74 103 parameters['channels_number'] = self.channels_number
75 104 parameters['channels'] = self.channels
76 105 parameters['rd_directory'] = self.rd_directory
77 106 parameters['raw_data_blocks'] = self.raw_data_blocks
78 107 parameters['data_type'] = self.data_type
79 108 parameters['acq_profiles'] = self.acq_profiles
80 109 parameters['profiles_block'] = self.profiles_block
81 110 parameters['filter'] = self.filter.name
82 111 parameters['create_directory'] = bool(self.create_directory)
83 112 parameters['include_expname'] = bool(self.include_expname)
84 113 parameters['acq_link'] = bool(self.acq_link)
85 114 parameters['view_raw_data'] = bool(self.view_raw_data)
86 115
87 116 return parameters
88 117
118 def add_parms_to_filter(self):
119 self.filter_parms = self.filter.parms_to_dict()
120 self.save()
121
89 122 def dict_to_parms(self, parameters):
90 123 return
91 124
92 125 def status_device(self):
93 126 return
94 127
95 128 def read_device(self):
96 129 return
97 130
98 131 def write_device(self):
99 132 return No newline at end of file
@@ -1,119 +1,146
1 1 from django.shortcuts import render_to_response
2 2 from django.template import RequestContext
3 3 from django.shortcuts import redirect, render, get_object_or_404
4 4 from django.contrib import messages
5 5
6 6 from apps.main.models import Device
7 7 from apps.main.views import sidebar
8 8
9 9 from .models import JARSConfiguration, JARSfilter
10 10 from .forms import JARSConfigurationForm, JARSfilterForm
11 11 # Create your views here.
12 12
13 13 def jars_conf(request, id_conf):
14 14
15 15 conf = get_object_or_404(JARSConfiguration, pk=id_conf)
16 16
17 17 ip=conf.device.ip_address
18 18 port=conf.device.port_address
19 19
20 20 kwargs = {}
21 21 kwargs['status'] = conf.device.get_status_display()
22 22
23 23
24 24 kwargs['dev_conf'] = conf
25 25 kwargs['dev_conf_keys'] = ['experiment', 'device',
26 'cards_number', 'channels_number',
27 'rd_directory', 'create_directory',
28 'include_expname', 'raw_data_blocks',
29 'acq_profiles', 'profiles_block', 'filter']
26 'cards_number', 'channels_number', 'channels',
27 'rd_directory', 'raw_data_blocks', 'data_type',
28 'acq_profiles', 'profiles_block', 'fftpoints',
29 'incohe_integr', 'filter', 'spectral_number',
30 'spectral', 'create_directory', 'include_expname',
31 'acq_link', 'view_raw_data', 'save_ch_dc']
30 32
31 33 kwargs['title'] = 'JARS Configuration'
32 34 kwargs['suptitle'] = 'Details'
33 35
34 36 kwargs['button'] = 'Edit Configuration'
35 37
36 38 kwargs['no_play'] = True
37 39
38 40 ###### SIDEBAR ######
39 41 kwargs.update(sidebar(conf=conf))
40 42
41 43 return render(request, 'jars_conf.html', kwargs)
42 44
43 45 def jars_conf_edit(request, id_conf):
44 46
45 47 conf = get_object_or_404(JARSConfiguration, pk=id_conf)
46 48
47 49 if request.method=='GET':
48 50 form = JARSConfigurationForm(instance=conf)
49 51
50 52 if request.method=='POST':
51 53 form = JARSConfigurationForm(request.POST, instance=conf)
52 54
53 55 if form.is_valid():
54 56 conf = form.save(commit=False)
55 57 conf.save()
56 58 return redirect('url_jars_conf', id_conf=conf.id)
57 59
58 60 ##ERRORS
59 61
60 62 kwargs = {}
61 63
62 64 kwargs['filter_id'] = conf.filter.id
63 65 kwargs['id_dev'] = conf.id
64 66 kwargs['form'] = form
65 67 kwargs['title'] = 'Device Configuration'
66 68 kwargs['suptitle'] = 'Edit'
67 69 kwargs['button'] = 'Save'
68 70
69 71 return render(request, 'jars_conf_edit.html', kwargs)
70 72
71 73 def view_filter(request, conf_id, filter_id):
72 74
73 75 conf = get_object_or_404(JARSConfiguration, pk=conf_id)
74 76 filter = get_object_or_404(JARSfilter, pk=filter_id)
75 77
78 filter_parms = eval(conf.filter_parms)
79 filter.name = filter_parms['name']
80 filter.clock = filter_parms['clock']
81 filter.mult = filter_parms['mult']
82 filter.fch = filter_parms['fch']
83 filter.filter_fir = filter_parms['filter_fir']
84 filter.filter_2 = filter_parms['filter_2']
85 filter.filter_5 = filter_parms['filter_5']
86 filter.speed = filter_parms['speed']
87
76 88 kwargs = {}
77 89 kwargs['conf'] = conf
78 90 kwargs['filter'] = filter
79 91 kwargs['dev_conf'] = filter
80 92 kwargs['dev_conf_keys'] = ['name', 'clock',
81 93 'mult', 'fch',
82 94 'filter_fir', 'filter_2',
83 95 'filter_5', 'speed']
84 96
85 97 kwargs['title'] = 'Filter View'
86 98 kwargs['suptitle'] = 'Details'
87 99 kwargs['button'] = 'SI'
88 100 kwargs['edit_button'] = 'Edit Filter'
89 101 kwargs['add_button'] = 'Add Filter'
90 102
91 103 return render(request, 'jars_filter.html', kwargs)
92 104
93 105 def edit_filter(request, conf_id, filter_id):
94 106
95 107 conf = get_object_or_404(JARSConfiguration, pk=conf_id)
108 filter_parms = eval(conf.filter_parms)
96 109
97 110 if filter_id:
98 111 filter = get_object_or_404(JARSfilter, pk=filter_id)
99 112
100 113 if request.method=='GET':
101 form = JARSfilterForm(instance=filter)
114 form = JARSfilterForm(initial=filter_parms)
102 115
103 116 if request.method=='POST':
117 parms = {}
118 parms['name'] = request.POST['name']
119 parms['clock'] = request.POST['clock']
120 parms['mult'] = request.POST['mult']
121 parms['fch'] = request.POST['fch']
122 parms['filter_fir'] = request.POST['filter_fir']
123 parms['filter_2'] = request.POST['filter_2']
124 parms['filter_5'] = request.POST['filter_5']
125 parms['speed'] = request.POST['speed']
126
127 conf.filter_parms = parms
128 conf.save()
129
104 130 #form = JARSfilterForm(request.POST)
105 form = JARSfilterForm(request.POST, instance=filter)
106 if form.is_valid():
107 form.save()
108 messages.success(request, 'JARS Filter successfully updated')
109 return redirect('url_jars_filter', conf.id, filter.id)
131 #form = JARSfilterForm(request.POST, instance=filter)
132 #if form.is_valid():
133 #form.save()
134 # messages.success(request, 'JARS Filter successfully updated')
135 # return redirect('url_jars_filter', conf.id, filter.id)
136 return redirect('url_jars_filter', conf.id, filter.id)
110 137
111 138 kwargs = {}
112 139 kwargs['form'] = form
113 140 kwargs['title'] = conf.name
114 141 kwargs['suptitle'] = 'Edit Filter'
115 142 kwargs['button'] = 'Save'
116 143 # kwargs['previous'] = conf.get_absolute_url_edit()
117 144 kwargs['dev_conf'] = conf
118 145
119 146 return render(request, 'jars_filter_edit.html', kwargs) No newline at end of file
General Comments 0
You need to be logged in to leave comments. Login now