Refactor the document metadata add, edit and remove views.

This commit is contained in:
Roberto Rosario
2016-12-28 00:55:09 -04:00
parent 66a49ccefc
commit 5167bbadee
7 changed files with 444 additions and 435 deletions

View File

@@ -9,7 +9,7 @@ from .classes import MetadataLookup
from .models import MetadataType
class MetadataForm(forms.Form):
class DocumentMetadataForm(forms.Form):
id = forms.CharField(label=_('ID'), widget=forms.HiddenInput)
name = forms.CharField(
@@ -22,7 +22,7 @@ class MetadataForm(forms.Form):
)
def __init__(self, *args, **kwargs):
super(MetadataForm, self).__init__(*args, **kwargs)
super(DocumentMetadataForm, self).__init__(*args, **kwargs)
# Set form fields initial values
if 'initial' in kwargs:
@@ -104,23 +104,30 @@ class MetadataForm(forms.Form):
return self.cleaned_data
MetadataFormSet = formset_factory(MetadataForm, extra=0)
DocumentMetadataFormSet = formset_factory(DocumentMetadataForm, extra=0)
class AddMetadataForm(forms.Form):
metadata_type = forms.ModelChoiceField(
queryset=MetadataType.objects.all(), label=_('Metadata type')
class DocumentAddMetadataForm(forms.Form):
metadata_type = forms.ModelMultipleChoiceField(
help_text=_('Metadata types to be added to the selected documents.'),
label=_('Metadata type'), queryset=MetadataType.objects.all(),
widget=forms.SelectMultiple(
attrs={'class': 'select2'},
)
)
def __init__(self, *args, **kwargs):
document_type = kwargs.pop('document_type')
super(AddMetadataForm, self).__init__(*args, **kwargs)
self.fields['metadata_type'].queryset = MetadataType.objects.filter(
pk__in=document_type.metadata.values_list(
'metadata_type', flat=True
queryset = kwargs.pop(
'queryset', MetadataType.objects.get_for_document_type(
document_type=document_type
)
)
super(DocumentAddMetadataForm, self).__init__(*args, **kwargs)
self.fields['metadata_type'].queryset = queryset
class MetadataTypeForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
@@ -136,14 +143,16 @@ class MetadataTypeForm(forms.ModelForm):
model = MetadataType
class MetadataRemoveForm(MetadataForm):
class DocumentMetadataRemoveForm(DocumentMetadataForm):
update = forms.BooleanField(
initial=False, label=_('Remove'), required=False
)
def __init__(self, *args, **kwargs):
super(MetadataRemoveForm, self).__init__(*args, **kwargs)
super(DocumentMetadataRemoveForm, self).__init__(*args, **kwargs)
self.fields.pop('value')
MetadataRemoveFormSet = formset_factory(MetadataRemoveForm, extra=0)
DocumentMetadataRemoveFormSet = formset_factory(
DocumentMetadataRemoveForm, extra=0
)