diff --git a/apps/jars/forms.py b/apps/jars/forms.py index 31d9944..4085f01 100644 --- a/apps/jars/forms.py +++ b/apps/jars/forms.py @@ -1,6 +1,7 @@ from django import forms from apps.main.models import Device, Experiment from .models import JARSConfiguration +from .widgets import SpectralWidget class JARSConfigurationForm(forms.ModelForm): def __init__(self, *args, **kwargs): @@ -15,6 +16,7 @@ class JARSConfigurationForm(forms.ModelForm): self.fields['experiment'].widget.choices = [(experiment.id, experiment) for experiment in experiments] self.fields['device'].widget.choices = [(device.id, device) for device in devices] + self.fields['spectral'].widget = SpectralWidget() #-------------JARS Configuration needs an Experiment----------------- def clean(self): diff --git a/apps/jars/models.py b/apps/jars/models.py index 26669b2..8cd7f69 100644 --- a/apps/jars/models.py +++ b/apps/jars/models.py @@ -49,7 +49,7 @@ class JARSConfiguration(Configuration): incohe_integr = models.PositiveIntegerField(verbose_name='Incoherent Integrations',validators=[MinValueValidator(1)], default = 30) filter = models.ForeignKey(JARSfilter, on_delete=models.CASCADE, null=True, blank=True) spectral_number = models.PositiveIntegerField(verbose_name='# Spectral Combinations',validators=[MinValueValidator(1)], null=True, blank=True) - spectral = models.CharField(verbose_name='Combinations', max_length=15, default = '0,0|') + spectral = models.CharField(verbose_name='Combinations', max_length=5000, default = '[0,0]') create_directory = models.BooleanField(verbose_name='Create Directory Per Day', default=True) include_expname = models.BooleanField(verbose_name='Experiment Name in Directory', default=True) acq_link = models.BooleanField(verbose_name='Acquisition Link', default=True) diff --git a/apps/jars/widgets.py b/apps/jars/widgets.py new file mode 100644 index 0000000..f6695fb --- /dev/null +++ b/apps/jars/widgets.py @@ -0,0 +1,96 @@ + +import ast +import json +from itertools import chain + +from django import forms +from django.utils.safestring import mark_safe +from django.utils.encoding import force_unicode +from django.utils.html import conditional_escape + + +class SpectralWidget(forms.widgets.TextInput): + + def render(self, label, value, attrs=None): + + disabled = 'disabled' if attrs.get('disabled', False) else '' + name = attrs.get('name', label) + if '[' in value: + value = ast.literal_eval(value) + + codes = value + if not isinstance(value, list): + if len(value) > 1: + text='' + for val in value: + text = text+str(val)+',' + codes=text + else: + codes=value+"," + + html = ''' + + + + + + + + '''.format(disabled, label, name, codes) + + script = ''' + + ''' + + return mark_safe(html+script) \ No newline at end of file