##// 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 21 def clean(self):
22 22 return
23 # # Custom validation to force an integer when type of unit = "Unit"
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
23 #
29 24
30 25 class Meta:
31 26 model = CGSConfiguration
32 27 #exclude = ('freqs', 'clk_in', 'mult','div',)
33 28 # exclude = ('freqs',)
34 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 7 from apps.main.models import Device, Experiment
8 8
9 from files import read_json_file
9 10 # Create your models here.
10 11
11 12 class CGSConfiguration(Configuration):
12
13 #device = models.ForeignKey(Device)
14 #exp = models.ForeignKey(Experiment, default = None)
13
15 14 freq0 = models.FloatField(verbose_name='Frequency 0',validators=[MinValueValidator(62.5e6), MaxValueValidator(450e6)], blank=True, null=True)
16 15 freq1 = models.FloatField(verbose_name='Frequency 1',validators=[MinValueValidator(62.5e6), MaxValueValidator(450e6)], blank=True, null=True)
17 16 freq2 = models.FloatField(verbose_name='Frequency 2',validators=[MinValueValidator(62.5e6), MaxValueValidator(450e6)], blank=True, null=True)
18 17 freq3 = models.FloatField(verbose_name='Frequency 3',validators=[MinValueValidator(62.5e6), MaxValueValidator(450e6)], blank=True, null=True)
19 18 #jfreqs = JSONField(default={"frequencies":[{"f0":freq0,"f1":freq1,"f2":freq2,"f3":freq3}]}, blank=True)
20 #clk_in = models.PositiveIntegerField(default=10e6)
21 #mult = models.PositiveIntegerField(default=40)
22 #div = models.PositiveIntegerField(default=1)
19
23 20
24 21 def verify_frequencies(self):
25 22
26 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 41 class Meta:
@@ -7,9 +7,7 urlpatterns = (
7 7 url(r'^(?P<id_conf>-?\d+)/edit/$', 'apps.cgs.views.cgs_conf_edit', name='url_edit_cgs_conf'),
8 8 url(r'^(?P<id_conf>-?\d+)/write/$', 'apps.cgs.views.cgs_conf_write', name='url_write_cgs_conf'),
9 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'),
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'),
10 url(r'^(?P<id_conf>-?\d+)/import/$', 'apps.cgs.views.cgs_conf_import', name='url_import_cgs_conf'),
13 11 url(r'^(?P<id_conf>-?\d+)/export/$', 'apps.cgs.views.cgs_conf_export', name='url_export_cgs_conf'),
14 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 4 from apps.main.models import Experiment, Configuration
5 5 from .models import CGSConfiguration
6 6
7 from .forms import CGSConfigurationForm
7 from .forms import CGSConfigurationForm, UploadFileForm
8 8 from apps.main.views import sidebar
9 9
10 10 import requests
@@ -244,6 +244,58 def cgs_conf_read(request, id_conf):
244 244
245 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 299 def cgs_conf_export(request, id_conf):
248 300
249 301 conf = get_object_or_404(CGSConfiguration, pk=id_conf)
General Comments 0
You need to be logged in to leave comments. Login now