diff --git a/mayan/apps/metadata/classes.py b/mayan/apps/metadata/classes.py index 34ab5c1ac3..49bf81d41c 100644 --- a/mayan/apps/metadata/classes.py +++ b/mayan/apps/metadata/classes.py @@ -4,38 +4,6 @@ from .models import DocumentTypeMetadataType, MetadataType from .tasks import task_add_required_metadata_type, task_remove_metadata_type -class DocumentTypeMetadataTypeHelper(object): - @staticmethod - @property - def constructor(source_object): - return DocumentTypeMetadataTypeHelper(source_object) - - def __init__(self, instance): - self.instance = instance - - def filter(self, **kwargs): - return self.get_query_set(**kwargs) - - def all(self): - return self.get_query_set() - - def get_query_set(self, **kwargs): - try: - return MetadataType.objects.filter(pk__in=self.instance.metadata.filter(**kwargs).values_list('metadata_type', flat=True)) - except MetadataType.DoesNotExist: - return MetadataType.objects.none() - - def add(self, metadata_type, required=False): - if metadata_type not in self.instance.metadata_type.all(): - DocumentTypeMetadataType.objects.create(document_type=self.instance, metadata_type=metadata_type, required=required) - if required: - task_add_required_metadata_type.apply_async(kwargs={'metadata_type_id': metadata_type.pk, 'document_type_id': self.instance.pk}, queue='metadata') - - def remove(self, metadata_type): - DocumentTypeMetadataType.objects.get(document_type=self.instance, metadata_type=metadata_type).delete() - task_remove_metadata_type.apply_async(kwargs={'metadata_type_id': metadata_type.pk, 'document_type_id': self.instance.pk}, queue='metadata') - - class DocumentMetadataHelper(object): @staticmethod @property diff --git a/mayan/apps/metadata/views.py b/mayan/apps/metadata/views.py index f98c994afb..3617803b28 100644 --- a/mayan/apps/metadata/views.py +++ b/mayan/apps/metadata/views.py @@ -295,7 +295,7 @@ def metadata_view(request, document_id): 'object_list': document.metadata.all(), 'extra_columns': [ {'name': _(u'Value'), 'attribute': 'value'}, - {'name': _(u'Required'), 'attribute': encapsulate(lambda x: x.metadata_type in document.document_type.metadata_type.filter(required=True))} + {'name': _(u'Required'), 'attribute': encapsulate(lambda x: x.metadata_type in document.document_type.metadata.filter(required=True))} ], 'hide_link': True, 'object': document, @@ -404,10 +404,10 @@ def setup_document_type_metadata(request, document_type_id): return assign_remove( request, - left_list=lambda: generate_choices_w_labels(set(MetadataType.objects.all()) - set(document_type.metadata_type.filter(required=False)) - set(document_type.metadata_type.filter(required=True)), display_object_type=False), - right_list=lambda: generate_choices_w_labels(document_type.metadata_type.filter(required=False), display_object_type=False), - add_method=lambda x: document_type.metadata_type.add(x, required=False), - remove_method=lambda x: document_type.metadata_type.remove(x), + left_list=lambda: generate_choices_w_labels(set(MetadataType.objects.all()) - set(MetadataType.objects.filter(id__in=document_type.metadata.values_list('metadata_type', flat=True))), display_object_type=False), + right_list=lambda: generate_choices_w_labels(document_type.metadata.filter(required=False), display_object_type=False), + add_method=lambda x: document_type.metadata.create(metadata_type=x, required=False), + remove_method=lambda x: x.delete(), extra_context={ 'document_type': document_type, 'navigation_object_name': 'document_type', @@ -424,10 +424,10 @@ def setup_document_type_metadata_required(request, document_type_id): return assign_remove( request, - left_list=lambda: generate_choices_w_labels(set(MetadataType.objects.all()) - set(document_type.metadata_type.filter(required=False)) - set(document_type.metadata_type.filter(required=True)), display_object_type=False), - right_list=lambda: generate_choices_w_labels(document_type.metadata_type.filter(required=True), display_object_type=False), - add_method=lambda x: document_type.metadata_type.add(x, required=True), - remove_method=lambda x: document_type.metadata_type.remove(x), + left_list=lambda: generate_choices_w_labels(set(MetadataType.objects.all()) - set(MetadataType.objects.filter(id__in=document_type.metadata.values_list('metadata_type', flat=True))), display_object_type=False), + right_list=lambda: generate_choices_w_labels(document_type.metadata.filter(required=True), display_object_type=False), + add_method=lambda x: document_type.metadata.create(metadata_type=x, required=True), + remove_method=lambda x: x.delete(), extra_context={ 'document_type': document_type, 'navigation_object_name': 'document_type',