##// END OF EJS Templates
Task #95: se agrego la funcion "import" para archivos .json ...
Fiorella Quino -
r42:21a9f0375b43
parent child
Show More
@@ -0,0 +1,31
1 '''
2 Created on Feb 15, 2016
3
4 @author: Miguel Urco
5 '''
6
7 import json
8
9 def read_json_file(fp):
10
11 kwargs = {}
12
13 json_data = fp
14 data = json.load(json_data)
15 json_data.close()
16
17 frequency0 = data["Frequencies"][0][1]
18 frequency1 = data["Frequencies"][1][1]
19 frequency2 = data["Frequencies"][2][1]
20 frequency3 = data["Frequencies"][3][1]
21
22 kwargs['freq0'] = frequency0
23 kwargs['freq1'] = frequency1
24 kwargs['freq2'] = frequency2
25 kwargs['freq3'] = frequency3
26
27 return kwargs
28
29
30 def write_json_file(filename):
31 pass No newline at end of file
@@ -20,15 +20,15 class CGSConfigurationForm(forms.ModelForm):
20
20
21 def clean(self):
21 def clean(self):
22 return
22 return
23 # # Custom validation to force an integer when type of unit = "Unit"
23 #
24 # form_data = self.cleaned_data
25 # if (form_data['freq0'] or form_data['freq1'] or form_data['freq2'] or form_data['freq3'] < 0):
26 # raise forms.ValidationError("Please introduce positive Number")
27 #
28 # return form_data
29
24
30 class Meta:
25 class Meta:
31 model = CGSConfiguration
26 model = CGSConfiguration
32 #exclude = ('freqs', 'clk_in', 'mult','div',)
27 #exclude = ('freqs', 'clk_in', 'mult','div',)
33 # exclude = ('freqs',)
28 # exclude = ('freqs',)
34 fields = ('experiment', 'device', 'freq0', 'freq1', 'freq2', 'freq3')
29 fields = ('experiment', 'device', 'freq0', 'freq1', 'freq2', 'freq3')
30
31
32 class UploadFileForm(forms.Form):
33 title = forms.CharField(label='Extension Type', widget=forms.TextInput(attrs={'readonly':'readonly'}))
34 file = forms.FileField() No newline at end of file
@@ -6,24 +6,36 from django.core.validators import MinValueValidator, MaxValueValidator
6
6
7 from apps.main.models import Device, Experiment
7 from apps.main.models import Device, Experiment
8
8
9 from files import read_json_file
9 # Create your models here.
10 # Create your models here.
10
11
11 class CGSConfiguration(Configuration):
12 class CGSConfiguration(Configuration):
12
13
13 #device = models.ForeignKey(Device)
14 #exp = models.ForeignKey(Experiment, default = None)
15 freq0 = models.FloatField(verbose_name='Frequency 0',validators=[MinValueValidator(62.5e6), MaxValueValidator(450e6)], blank=True, null=True)
14 freq0 = models.FloatField(verbose_name='Frequency 0',validators=[MinValueValidator(62.5e6), MaxValueValidator(450e6)], blank=True, null=True)
16 freq1 = models.FloatField(verbose_name='Frequency 1',validators=[MinValueValidator(62.5e6), MaxValueValidator(450e6)], blank=True, null=True)
15 freq1 = models.FloatField(verbose_name='Frequency 1',validators=[MinValueValidator(62.5e6), MaxValueValidator(450e6)], blank=True, null=True)
17 freq2 = models.FloatField(verbose_name='Frequency 2',validators=[MinValueValidator(62.5e6), MaxValueValidator(450e6)], blank=True, null=True)
16 freq2 = models.FloatField(verbose_name='Frequency 2',validators=[MinValueValidator(62.5e6), MaxValueValidator(450e6)], blank=True, null=True)
18 freq3 = models.FloatField(verbose_name='Frequency 3',validators=[MinValueValidator(62.5e6), MaxValueValidator(450e6)], blank=True, null=True)
17 freq3 = models.FloatField(verbose_name='Frequency 3',validators=[MinValueValidator(62.5e6), MaxValueValidator(450e6)], blank=True, null=True)
19 #jfreqs = JSONField(default={"frequencies":[{"f0":freq0,"f1":freq1,"f2":freq2,"f3":freq3}]}, blank=True)
18 #jfreqs = JSONField(default={"frequencies":[{"f0":freq0,"f1":freq1,"f2":freq2,"f3":freq3}]}, blank=True)
20 #clk_in = models.PositiveIntegerField(default=10e6)
19
21 #mult = models.PositiveIntegerField(default=40)
22 #div = models.PositiveIntegerField(default=1)
23
20
24 def verify_frequencies(self):
21 def verify_frequencies(self):
25
22
26 return True
23 return True
24
25
26 def update_from_file(self, fp):
27
28 kwargs = read_json_file(fp)
29
30 if not kwargs:
31 return False
32
33 self.freq0 = kwargs['freq0']
34 self.freq1 = kwargs['freq1']
35 self.freq2 = kwargs['freq2']
36 self.freq3 = kwargs['freq3']
37
38 return True
27
39
28
40
29 class Meta:
41 class Meta:
@@ -7,9 +7,7 urlpatterns = (
7 url(r'^(?P<id_conf>-?\d+)/edit/$', 'apps.cgs.views.cgs_conf_edit', name='url_edit_cgs_conf'),
7 url(r'^(?P<id_conf>-?\d+)/edit/$', 'apps.cgs.views.cgs_conf_edit', name='url_edit_cgs_conf'),
8 url(r'^(?P<id_conf>-?\d+)/write/$', 'apps.cgs.views.cgs_conf_write', name='url_write_cgs_conf'),
8 url(r'^(?P<id_conf>-?\d+)/write/$', 'apps.cgs.views.cgs_conf_write', name='url_write_cgs_conf'),
9 url(r'^(?P<id_conf>-?\d+)/read/$', 'apps.cgs.views.cgs_conf_read', name='url_read_cgs_conf'),
9 url(r'^(?P<id_conf>-?\d+)/read/$', 'apps.cgs.views.cgs_conf_read', name='url_read_cgs_conf'),
10 #url(r'^(?P<id_conf>-?\d+)/write/$', 'apps.main.views.dev_conf_write', name='url_write_cgs_conf'),
10 url(r'^(?P<id_conf>-?\d+)/import/$', 'apps.cgs.views.cgs_conf_import', name='url_import_cgs_conf'),
11 #url(r'^(?P<id_conf>-?\d+)/read/$', 'apps.main.views.dev_conf_read', name='url_read_cgs_conf'),
12 url(r'^(?P<id_conf>-?\d+)/import/$', 'apps.main.views.dev_conf_import', name='url_import_cgs_conf'),
13 url(r'^(?P<id_conf>-?\d+)/export/$', 'apps.cgs.views.cgs_conf_export', name='url_export_cgs_conf'),
11 url(r'^(?P<id_conf>-?\d+)/export/$', 'apps.cgs.views.cgs_conf_export', name='url_export_cgs_conf'),
14 #url(r'^(?P<id_conf>-?\d+)/export/$', 'apps.main.views.dev_conf_export', name='url_export_cgs_conf'),
12 #url(r'^(?P<id_conf>-?\d+)/export/$', 'apps.main.views.dev_conf_export', name='url_export_cgs_conf'),
15 )
13 )
@@ -4,7 +4,7 from django.contrib import messages
4 from apps.main.models import Experiment, Configuration
4 from apps.main.models import Experiment, Configuration
5 from .models import CGSConfiguration
5 from .models import CGSConfiguration
6
6
7 from .forms import CGSConfigurationForm
7 from .forms import CGSConfigurationForm, UploadFileForm
8 from apps.main.views import sidebar
8 from apps.main.views import sidebar
9
9
10 import requests
10 import requests
@@ -244,6 +244,58 def cgs_conf_read(request, id_conf):
244
244
245 return render(request, 'cgs_conf_edit.html', kwargs)
245 return render(request, 'cgs_conf_edit.html', kwargs)
246
246
247 def cgs_conf_import(request, id_conf):
248
249 conf = get_object_or_404(CGSConfiguration, pk=id_conf)
250
251 if request.method == 'POST':
252 file_form = UploadFileForm(request.POST, request.FILES)
253
254 if file_form.is_valid():
255
256 try:
257 if conf.update_from_file(request.FILES['file']):
258
259 try:
260 conf.full_clean()
261 except ValidationError as e:
262 messages.error(request, e)
263 else:
264 conf.save()
265
266 messages.success(request, "Parameters imported from file: '%s'." %request.FILES['file'].name)
267 #messages.warning(request,"")
268 return redirect('url_cgs_conf', id_conf=conf.id)
269 except:
270 messages.error(request, "No JSON object could be decoded.")
271
272 messages.error(request, "Could not import parameters from file")
273
274 else:
275 file_form = UploadFileForm(initial={'title': '.json'})
276
277
278 kwargs = {}
279 kwargs['id_dev'] = conf.id
280 kwargs['title'] = 'Device Configuration'
281 kwargs['form'] = file_form
282 kwargs['suptitle'] = 'Importing file'
283 kwargs['button'] = 'Import'
284
285 kwargs.update(sidebar(conf))
286
287 return render(request, 'cgs_conf_import.html', kwargs)
288
289 def handle_uploaded_file(f):
290
291 data = {'freq0' : 62500000,
292 'freq1' : 62500000,
293 'freq2' : 62500000,
294 'freq3' : 62500000,
295 }
296
297 return data
298
247 def cgs_conf_export(request, id_conf):
299 def cgs_conf_export(request, id_conf):
248
300
249 conf = get_object_or_404(CGSConfiguration, pk=id_conf)
301 conf = get_object_or_404(CGSConfiguration, pk=id_conf)
General Comments 0
You need to be logged in to leave comments. Login now