diff --git a/apps/jars/forms.py b/apps/jars/forms.py index fc09f96..8132e1a 100644 --- a/apps/jars/forms.py +++ b/apps/jars/forms.py @@ -6,15 +6,18 @@ class JARSConfigurationForm(forms.ModelForm): def __init__(self, *args, **kwargs): super(JARSConfigurationForm, self).__init__(*args, **kwargs) instance = getattr(self, 'instance', None) - + if instance and instance.pk: devices = Device.objects.filter(device_type__name='jars') - self.fields['experiment'].widget.attrs['readonly'] = True - self.fields['experiment'].widget.choices = [(instance.experiment.id, instance.experiment)] + if instance.experiment: + self.fields['experiment'].widget.attrs['disabled'] = 'disabled' + + #self.fields['experiment'].widget.attrs['readonly'] = True + #self.fields['experiment'].widget.choices = [(instance.experiment.id, instance.experiment)] self.fields['device'].widget.choices = [(device.id, device) for device in devices] class Meta: model = JARSConfiguration - exclude = ('parameters', 'status') + exclude = ('type', 'parameters', 'status') diff --git a/apps/jars/models.py b/apps/jars/models.py index 0ef4556..6f6bdcd 100644 --- a/apps/jars/models.py +++ b/apps/jars/models.py @@ -1,9 +1,26 @@ from django.db import models from apps.main.models import Configuration +from django.core.validators import MinValueValidator, MaxValueValidator # Create your models here. +ANSWER = ( + (False, 'NO'), + (True, 'YES'), + ) + class JARSConfiguration(Configuration): + ADC_RESOLUTION = 8 + PCI_DIO_BUSWIDTH = 32 + + cards_number = models.PositiveIntegerField(verbose_name='Number of Cards',validators=[MaxValueValidator(4)], default = 1) + channels_number = models.PositiveIntegerField(verbose_name='Number of Channels',validators=[MinValueValidator(1), MaxValueValidator(8)], default = 1) + rd_directory = models.CharField(verbose_name='Raw Data Directory', max_length=40, default='', blank=True, null=True) + raw_data_blocks = models.PositiveIntegerField(verbose_name='Raw Data Blocks',validators=[MaxValueValidator(5000)], default=120) + acq_profiles = models.PositiveIntegerField(verbose_name='Acquired Profiles',validators=[MaxValueValidator(5000)], default=400) + profiles_block = models.PositiveIntegerField(verbose_name='Profiles Per Block',validators=[MaxValueValidator(5000)], default=400) + create_directory = models.BooleanField(verbose_name='Create Directory Per Day', default=True) + include_expname = models.BooleanField(verbose_name='Include Experiment Name in Directory', default=True) class Meta: db_table = 'jars_configurations' diff --git a/apps/jars/templates/jars_conf.html b/apps/jars/templates/jars_conf.html new file mode 100644 index 0000000..99944d7 --- /dev/null +++ b/apps/jars/templates/jars_conf.html @@ -0,0 +1 @@ +{% extends "dev_conf.html" %} \ No newline at end of file diff --git a/apps/jars/templates/jars_conf_edit.html b/apps/jars/templates/jars_conf_edit.html new file mode 100644 index 0000000..69a9783 --- /dev/null +++ b/apps/jars/templates/jars_conf_edit.html @@ -0,0 +1,8 @@ +{% extends "dev_conf_edit.html" %} +{% load bootstrap3 %} +{% load static %} +{% load main_tags %} + +{% block extra-js%} + +{% endblock %} \ No newline at end of file diff --git a/apps/jars/urls.py b/apps/jars/urls.py index de5c98d..0c717ce 100644 --- a/apps/jars/urls.py +++ b/apps/jars/urls.py @@ -1,11 +1,6 @@ from django.conf.urls import url urlpatterns = ( -# url(r'^(?P-?\d+)/$', 'apps.jars.views.jars_config', name='jars'), - url(r'^(?P-?\d+)/$', 'apps.main.views.dev_conf', name='url_jars_conf'), - url(r'^(?P-?\d+)/edit/$', 'apps.main.views.dev_conf_edit', name='url_edit_jars_conf'), - url(r'^(?P-?\d+)/write/$', 'apps.main.views.dev_conf_write', name='url_write_jars_conf'), - url(r'^(?P-?\d+)/read/$', 'apps.main.views.dev_conf_read', name='url_read_jars_conf'), - url(r'^(?P-?\d+)/import/$', 'apps.main.views.dev_conf_import', name='url_import_jars_conf'), - url(r'^(?P-?\d+)/export/$', 'apps.main.views.dev_conf_export', name='url_export_jars_conf'), + url(r'^(?P-?\d+)/$', 'apps.jars.views.jars_conf', name='url_jars_conf'), + url(r'^(?P-?\d+)/edit/$', 'apps.jars.views.jars_conf_edit', name='url_edit_jars_conf'), ) diff --git a/apps/jars/views.py b/apps/jars/views.py index bf56089..c50a18d 100644 --- a/apps/jars/views.py +++ b/apps/jars/views.py @@ -1,5 +1,6 @@ from django.shortcuts import render_to_response from django.template import RequestContext +from django.shortcuts import redirect, render, get_object_or_404 from apps.main.models import Device from apps.main.views import sidebar @@ -8,28 +9,59 @@ from .models import JARSConfiguration from .forms import JARSConfigurationForm # Create your views here. -def jars_config(request, id): - - if id: - conf = JARSConfiguration.objects.get(pk=id) - devices = Device.objects.filter(configuration__experiment=conf.experiment) - devices = devices.values('configuration__id', 'device_type__name') - for device in devices: - if device['device_type__name']=='jars': - device['active'] = 'active' -# form = JARSConfigurationForm(instance=conf) -# else: -# form = JARSConfigurationForm() - - kwargs = { - 'dev_conf': conf - } - - ###### SIDEBAR ###### - kwargs.update(sidebar(conf)) +def jars_conf(request, id_conf): - return render_to_response('jars.html', kwargs, context_instance=RequestContext(request)) + conf = get_object_or_404(JARSConfiguration, pk=id_conf) + ip=conf.device.ip_address + port=conf.device.port_address + + kwargs = {} + + kwargs['status'] = conf.device.get_status_display() + + + kwargs['dev_conf'] = conf + kwargs['dev_conf_keys'] = ['experiment', 'device', + 'cards_number', 'channels_number', + 'rd_directory', 'create_directory', + 'include_expname', 'raw_data_blocks', + 'acq_profiles', 'profiles_block'] + + kwargs['title'] = 'JARS Configuration' + kwargs['suptitle'] = 'Details' + + kwargs['button'] = 'Edit Configuration' + + kwargs['no_play'] = True + + ###### SIDEBAR ###### + kwargs.update(sidebar(conf=conf)) + + return render(request, 'jars_conf.html', kwargs) - - +def jars_conf_edit(request, id_conf): + + conf = get_object_or_404(JARSConfiguration, pk=id_conf) + + if request.method=='GET': + form = JARSConfigurationForm(instance=conf) + + if request.method=='POST': + form = JARSConfigurationForm(request.POST, instance=conf) + + if form.is_valid(): + conf = form.save(commit=False) + + return redirect('url_jars_conf', id_conf=conf.id) + + ##ERRORS + + kwargs = {} + kwargs['id_dev'] = conf.id + kwargs['form'] = form + kwargs['title'] = 'Device Configuration' + kwargs['suptitle'] = 'Edit' + kwargs['button'] = 'Save' + + return render(request, 'jars_conf_edit.html', kwargs) \ No newline at end of file