Skip to content
Snippets Groups Projects
forms.py 1.22 KiB
Newer Older
Fanna Lautenbach's avatar
Fanna Lautenbach committed
from .models import WorkSpecification, DataProductFilter

Nico Vermaas's avatar
Nico Vermaas committed
from django.forms import ModelForm


class WorkSpecificationForm(ModelForm):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
Fanna Lautenbach's avatar
Fanna Lautenbach committed
        self.fields['predecessor_specification'].required = False
        self.fields['filters'].required = False

    def _extract_filters(self):
        filter_names = [filter_name[0] for filter_name in DataProductFilter.objects.all().values_list('field')]
        filters = {}
        for filter_name in filter_names:
            if filter_name in self.data:
                filters[filter_name] = self.data[filter_name]
        return filters

    def clean(self):
        self.cleaned_data = super().clean()
        self.cleaned_data["filters"] = self._extract_filters()
        return self.cleaned_data

Nico Vermaas's avatar
Nico Vermaas committed
    class Meta:
        model = WorkSpecification
Fanna Lautenbach's avatar
Fanna Lautenbach committed
        fields = ['filters', 'selected_workflow', 'processing_site', 'predecessor_specification', 'batch_size']
Nico Vermaas's avatar
Nico Vermaas committed
        labels = {
            'selected_workflow': 'Selected workflow',
            'processing_site': 'Processing Site (ATDB)',
Fanna Lautenbach's avatar
Fanna Lautenbach committed
            'predecessor_specification': 'Predecessor work specification',
            'batch_size': 'Files per task'