Add manager class to handle the metadata types of a document type easily

This commit is contained in:
Roberto Rosario
2014-10-30 02:28:19 -04:00
parent 727ae0bea8
commit 375de8270e

View File

@@ -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()