From 375de8270e655718ef35436d94686feaf11b2784 Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Thu, 30 Oct 2014 02:28:19 -0400 Subject: [PATCH] Add manager class to handle the metadata types of a document type easily --- mayan/apps/metadata/classes.py | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/mayan/apps/metadata/classes.py b/mayan/apps/metadata/classes.py index 5bb9db0709..7065dd7974 100644 --- a/mayan/apps/metadata/classes.py +++ b/mayan/apps/metadata/classes.py @@ -2,6 +2,8 @@ from django.utils.translation import ugettext_lazy as _ from acls.classes import EncapsulatedObject +from .models import DocumentTypeMetadataType, MetadataType + class MetadataClass(object): def __init__(self, dictionary): @@ -16,3 +18,32 @@ class MetadataClass(object): class MetadataObjectWrapper(EncapsulatedObject): source_object_name = u'metadata_object' + + +class DocumentTypeMetadataTypeManager(object): + @staticmethod + @property + def factory(document_type): + instance = DocumentTypeMetadataTypeManager(document_type) + return instance + + def __init__(self, document_type): + self.document_type = document_type + + 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.document_type.documenttypemetadatatype_set.filter(**kwargs).values_list('metadata_type', flat=True)) + except self.document_type.documenttypemetadatatype_set.model.DoesNotExist: + return MetadataType.objects.none() + + def add(self, metadata_type, required=False): + DocumentTypeMetadataType.objects.create(document_type=self.document_type, metadata_type= metadata_type, required=required) + + def remove(self, metadata_type): + DocumentTypeMetadataType.objects.get(document_type=self.document_type, metadata_type= metadata_type).delete()