Convert metadata app to use organizations.

This commit is contained in:
Roberto Rosario
2016-06-08 01:37:15 -04:00
parent 2035602836
commit 5466dcdad3
15 changed files with 222 additions and 103 deletions

View File

@@ -2,11 +2,13 @@ from __future__ import unicode_literals
from django.contrib import admin
from organizations.admin import OrganizationAdminMixin
from .models import MetadataType
@admin.register(MetadataType)
class MetadataTypeAdmin(admin.ModelAdmin):
class MetadataTypeAdmin(OrganizationAdminMixin, admin.ModelAdmin):
list_display = (
'name', 'label', 'default', 'lookup', 'validation', 'parser'
)

View File

@@ -49,7 +49,7 @@ def save_metadata(metadata_dict, document, create=False):
"""
if create:
# Use matched metadata now to create document metadata
document_metadata, created = DocumentMetadata.objects.get_or_create(
document_metadata, created = DocumentMetadata.on_organization.get_or_create(
document=document,
metadata_type=get_object_or_404(
MetadataType,
@@ -57,7 +57,7 @@ def save_metadata(metadata_dict, document, create=False):
)
else:
try:
document_metadata = DocumentMetadata.objects.get(
document_metadata = DocumentMetadata.on_organization.get(
document=document,
metadata_type=get_object_or_404(
MetadataType,
@@ -92,7 +92,7 @@ def metadata_repr_as_list(metadata_list):
output = []
for metadata_dict in metadata_list:
try:
output.append('%s - %s' % (MetadataType.objects.get(
output.append('%s - %s' % (MetadataType.on_organization.get(
pk=metadata_dict['id']), metadata_dict.get('value', '')))
except:
pass
@@ -107,9 +107,9 @@ def set_bulk_metadata(document, metadata_dictionary):
]
for metadata_type_name, value in metadata_dictionary.items():
metadata_type = MetadataType.objects.get(name=metadata_type_name)
metadata_type = MetadataType.on_organization.get(name=metadata_type_name)
if metadata_type in document_type_metadata_types:
DocumentMetadata.objects.get_or_create(
DocumentMetadata.on_organization.get_or_create(
document=document, metadata_type=metadata_type, value=value
)

View File

@@ -31,7 +31,7 @@ from .serializers import (
class APIMetadataTypeListView(generics.ListCreateAPIView):
serializer_class = MetadataTypeSerializer
queryset = MetadataType.objects.all()
queryset = MetadataType.on_organization.all()
permission_classes = (MayanPermission,)
filter_backends = (MayanObjectPermissionsFilter,)
@@ -53,7 +53,7 @@ class APIMetadataTypeListView(generics.ListCreateAPIView):
class APIMetadataTypeView(generics.RetrieveUpdateDestroyAPIView):
serializer_class = MetadataTypeSerializer
queryset = MetadataType.objects.all()
queryset = MetadataType.on_organization.all()
permission_classes = (MayanPermission,)
mayan_object_permissions = {
@@ -92,7 +92,7 @@ class APIDocumentMetadataListView(generics.ListCreateAPIView):
permission_classes = (MayanPermission,)
def get_document(self):
return get_object_or_404(Document, pk=self.kwargs['pk'])
return get_object_or_404(Document.on_organization, pk=self.kwargs['pk'])
def get_queryset(self):
document = self.get_document()
@@ -151,7 +151,7 @@ class APIDocumentMetadataListView(generics.ListCreateAPIView):
class APIDocumentMetadataView(generics.RetrieveUpdateDestroyAPIView):
serializer_class = DocumentMetadataSerializer
queryset = DocumentMetadata.objects.all()
queryset = DocumentMetadata.on_organization.all()
permission_classes = (MayanPermission,)
mayan_object_permissions = {
@@ -220,7 +220,7 @@ class APIDocumentTypeMetadataTypeOptionalListView(generics.ListCreateAPIView):
def get_queryset(self):
document_type = get_object_or_404(
DocumentType, pk=self.kwargs['document_type_pk']
DocumentType.on_organization, pk=self.kwargs['document_type_pk']
)
try:
Permission.check_permissions(
@@ -253,7 +253,7 @@ class APIDocumentTypeMetadataTypeOptionalListView(generics.ListCreateAPIView):
Add an optional metadata type to a document type.
"""
document_type = get_object_or_404(
DocumentType, pk=self.kwargs['document_type_pk']
DocumentType.on_organization, pk=self.kwargs['document_type_pk']
)
try:
@@ -270,7 +270,7 @@ class APIDocumentTypeMetadataTypeOptionalListView(generics.ListCreateAPIView):
if serializer.is_valid():
metadata_type = get_object_or_404(
MetadataType, pk=serializer.data['metadata_type_pk']
MetadataType.on_organization, pk=serializer.data['metadata_type_pk']
)
document_type_metadata_type = document_type.metadata.create(
metadata_type=metadata_type, required=self.required_metadata
@@ -313,7 +313,7 @@ class APIDocumentTypeMetadataTypeView(views.APIView):
"""
document_type_metadata_type = get_object_or_404(
DocumentTypeMetadataType, pk=self.kwargs['pk']
DocumentTypeMetadataType.on_organization, pk=self.kwargs['pk']
)
try:

View File

@@ -109,13 +109,13 @@ MetadataFormSet = formset_factory(MetadataForm, extra=0)
class AddMetadataForm(forms.Form):
metadata_type = forms.ModelChoiceField(
queryset=MetadataType.objects.all(), label=_('Metadata type')
queryset=MetadataType.on_organization.all(), label=_('Metadata type')
)
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(
self.fields['metadata_type'].queryset = MetadataType.on_organization.filter(
pk__in=document_type.metadata.values_list(
'metadata_type', flat=True
)

View File

@@ -44,7 +44,7 @@ def post_post_document_type_change_metadata(sender, instance, **kwargs):
# Add new document type metadata types to document
for document_type_metadata_type in instance.document_type.metadata.filter(required=True):
DocumentMetadata.objects.create(
DocumentMetadata.on_organization.create(
document=instance,
metadata_type=document_type_metadata_type.metadata_type,
value=None

View File

@@ -1,6 +1,35 @@
from __future__ import unicode_literals
from django.apps import apps
from django.db import models
class MetadataTypeManager(models.Manager):
def get_by_natural_key(self, name):
return self.get(name=name)
class OrganizationDocumentMetadataManager(models.Manager):
def get_queryset(self):
Document = apps.get_model('documents', 'Document')
MetadataType = apps.get_model('metadata', 'MetadataType')
return super(
OrganizationDocumentMetadataManager, self
).get_queryset().filter(
document__in=Document.on_organization.all(),
metadata_type__in=MetadataType.on_organization.all()
)
class OrganizationDocumentTypeMetadataTypeManager(models.Manager):
def get_queryset(self):
DocumentType = apps.get_model('documents', 'DocumentType')
MetadataType = apps.get_model('metadata', 'MetadataType')
return super(
OrganizationDocumentTypeMetadataTypeManager, self
).get_queryset().filter(
document_type__in=DocumentType.objects.all(),
metadata_type__in=MetadataType.on_organization.all()
)

View File

@@ -0,0 +1,21 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models
import organizations.shortcuts
class Migration(migrations.Migration):
dependencies = [
('organizations', '0002_add_data_default_organization'),
('metadata', '0007_auto_20150918_0800'),
]
operations = [
migrations.AddField(
model_name='metadatatype',
name='organization',
field=models.ForeignKey(default=organizations.shortcuts.get_current_organization, to='organizations.Organization'),
),
]

View File

@@ -10,9 +10,15 @@ from django.utils.module_loading import import_string
from django.utils.translation import ugettext_lazy as _
from documents.models import Document, DocumentType
from organizations.models import Organization
from organizations.managers import CurrentOrganizationManager
from organizations.shortcuts import get_current_organization
from .classes import MetadataLookup
from .managers import MetadataTypeManager
from .managers import (
MetadataTypeManager, OrganizationDocumentMetadataManager,
OrganizationDocumentTypeMetadataTypeManager
)
from .settings import setting_available_parsers, setting_available_validators
@@ -35,7 +41,9 @@ class MetadataType(models.Model):
"""
Define a type of metadata
"""
organization = models.ForeignKey(
Organization, default=get_current_organization
)
name = models.CharField(
max_length=48,
help_text=_(
@@ -79,6 +87,12 @@ class MetadataType(models.Model):
)
objects = MetadataTypeManager()
on_organization = CurrentOrganizationManager()
class Meta:
ordering = ('label',)
verbose_name = _('Metadata type')
verbose_name_plural = _('Metadata types')
def __str__(self):
return self.label
@@ -86,11 +100,6 @@ class MetadataType(models.Model):
def natural_key(self):
return (self.name,)
class Meta:
ordering = ('label',)
verbose_name = _('Metadata type')
verbose_name_plural = _('Metadata types')
@staticmethod
def comma_splitter(string):
splitter = shlex.shlex(string.encode('utf-8'), posix=True)
@@ -158,6 +167,14 @@ class DocumentMetadata(models.Model):
verbose_name=_('Value')
)
objects = models.Manager()
on_organization = OrganizationDocumentMetadataManager()
class Meta:
unique_together = ('document', 'metadata_type')
verbose_name = _('Document metadata')
verbose_name_plural = _('Document metadata')
def __str__(self):
return unicode(self.metadata_type)
@@ -184,11 +201,6 @@ class DocumentMetadata(models.Model):
document_type=self.document.document_type, value=self.value
)
class Meta:
unique_together = ('document', 'metadata_type')
verbose_name = _('Document metadata')
verbose_name_plural = _('Document metadata')
@property
def is_required(self):
return self.metadata_type.get_required_for(
@@ -207,10 +219,13 @@ class DocumentTypeMetadataType(models.Model):
)
required = models.BooleanField(default=False, verbose_name=_('Required'))
def __str__(self):
return unicode(self.metadata_type)
objects = models.Manager()
on_organization = OrganizationDocumentTypeMetadataTypeManager()
class Meta:
unique_together = ('document_type', 'metadata_type')
verbose_name = _('Document type metadata type options')
verbose_name_plural = _('Document type metadata types options')
def __str__(self):
return unicode(self.metadata_type)

View File

@@ -47,7 +47,7 @@ class DocumentNewMetadataSerializer(serializers.Serializer):
)
def create(self, validated_data):
metadata_type = MetadataType.objects.get(
metadata_type = MetadataType.on_organization.get(
pk=validated_data['metadata_type_pk']
)
instance = self.document.metadata.create(

View File

@@ -15,7 +15,7 @@ def task_remove_metadata_type(document_type_id, metadata_type_id):
app_label='metadata', model_name='DocumentMetadata'
)
DocumentMetadata.objects.filter(
DocumentMetadata.on_organization.filter(
document__document_type__id=document_type_id,
metadata_type__id=metadata_type_id
).delete()
@@ -31,7 +31,7 @@ def task_add_required_metadata_type(document_type_id, metadata_type_id):
app_label='metadata', model_name='MetadataType'
)
metadata_type = MetadataType.objects.get(pk=metadata_type_id)
metadata_type = MetadataType.on_organization.get(pk=metadata_type_id)
for document in DocumentType.objects.get(pk=document_type_id).documents.all():
for document in DocumentType.on_organization.get(pk=document_type_id).documents.all():
document.metadata.create(metadata_type=metadata_type)

View File

@@ -4,10 +4,9 @@ from django.contrib.auth import get_user_model
from django.core.urlresolvers import reverse
from django.test import override_settings
from rest_framework.test import APITestCase
from documents.models import DocumentType
from documents.tests import TEST_DOCUMENT_TYPE, TEST_SMALL_DOCUMENT_PATH
from rest_api.tests import GenericAPITestCase
from user_management.tests.literals import (
TEST_ADMIN_EMAIL, TEST_ADMIN_PASSWORD, TEST_ADMIN_USERNAME
)
@@ -23,19 +22,12 @@ TEST_METADATA_VALUE = 'test value'
TEST_METADATA_VALUE_EDITED = 'test value edited'
class MetadataTypeAPITestCase(APITestCase):
class MetadataTypeAPITestCase(GenericAPITestCase):
def setUp(self):
self.admin_user = get_user_model().objects.create_superuser(
username=TEST_ADMIN_USERNAME, email=TEST_ADMIN_EMAIL,
password=TEST_ADMIN_PASSWORD
)
self.client.login(
username=TEST_ADMIN_USERNAME, password=TEST_ADMIN_PASSWORD
)
super(MetadataTypeAPITestCase, self).setUp()
def tearDown(self):
self.admin_user.delete()
super(MetadataTypeAPITestCase, self).tearDown()
def test_metadata_type_create(self):
response = self.client.post(
@@ -45,7 +37,7 @@ class MetadataTypeAPITestCase(APITestCase):
}
)
metadata_type = MetadataType.objects.first()
metadata_type = MetadataType.on_organization.first()
self.assertEqual(response.status_code, 201)
self.assertEqual(response.data['id'], metadata_type.pk)
@@ -56,7 +48,7 @@ class MetadataTypeAPITestCase(APITestCase):
self.assertEqual(metadata_type.name, TEST_METADATA_TYPE_NAME)
def test_metadata_type_delete(self):
metadata_type = MetadataType.objects.create(
metadata_type = MetadataType.on_organization.create(
label=TEST_METADATA_TYPE_LABEL, name=TEST_METADATA_TYPE_NAME
)
@@ -66,10 +58,10 @@ class MetadataTypeAPITestCase(APITestCase):
self.assertEqual(response.status_code, 204)
self.assertEqual(MetadataType.objects.count(), 0)
self.assertEqual(MetadataType.on_organization.count(), 0)
def test_metadata_type_edit(self):
metadata_type = MetadataType.objects.create(
metadata_type = MetadataType.on_organization.create(
label=TEST_METADATA_TYPE_LABEL, name=TEST_METADATA_TYPE_NAME
)
@@ -89,28 +81,21 @@ class MetadataTypeAPITestCase(APITestCase):
self.assertEqual(metadata_type.name, TEST_METADATA_TYPE_NAME_2)
class DocumentTypeMetadataTypeAPITestCase(APITestCase):
class DocumentTypeMetadataTypeAPITestCase(GenericAPITestCase):
def setUp(self):
self.admin_user = get_user_model().objects.create_superuser(
username=TEST_ADMIN_USERNAME, email=TEST_ADMIN_EMAIL,
password=TEST_ADMIN_PASSWORD
)
super(DocumentTypeMetadataTypeAPITestCase, self).setUp()
self.client.login(
username=TEST_ADMIN_USERNAME, password=TEST_ADMIN_PASSWORD
)
self.document_type = DocumentType.objects.create(
self.document_type = DocumentType.on_organization.create(
label=TEST_DOCUMENT_TYPE
)
self.metadata_type = MetadataType.objects.create(
self.metadata_type = MetadataType.on_organization.create(
label=TEST_METADATA_TYPE_LABEL, name=TEST_METADATA_TYPE_NAME
)
def tearDown(self):
self.admin_user.delete()
self.document_type.delete()
super(DocumentTypeMetadataTypeAPITestCase, self).tearDown()
def test_document_type_metadata_type_optional_create(self):
response = self.client.post(
@@ -122,7 +107,7 @@ class DocumentTypeMetadataTypeAPITestCase(APITestCase):
self.assertEqual(response.status_code, 201)
document_type_metadata_type = DocumentTypeMetadataType.objects.filter(
document_type_metadata_type = DocumentTypeMetadataType.on_organization.filter(
document_type=self.document_type, required=False
).first()
@@ -142,7 +127,7 @@ class DocumentTypeMetadataTypeAPITestCase(APITestCase):
self.assertEqual(response.status_code, 201)
document_type_metadata_type = DocumentTypeMetadataType.objects.filter(
document_type_metadata_type = DocumentTypeMetadataType.on_organization.filter(
document_type=self.document_type, required=True
).first()
@@ -169,23 +154,16 @@ class DocumentTypeMetadataTypeAPITestCase(APITestCase):
self.assertEqual(self.document_type.metadata.all().count(), 0)
class DocumentMetadataAPITestCase(APITestCase):
class DocumentMetadataAPITestCase(GenericAPITestCase):
@override_settings(OCR_AUTO_OCR=False)
def setUp(self):
self.admin_user = get_user_model().objects.create_superuser(
username=TEST_ADMIN_USERNAME, email=TEST_ADMIN_EMAIL,
password=TEST_ADMIN_PASSWORD
)
super(DocumentMetadataAPITestCase, self).setUp()
self.client.login(
username=TEST_ADMIN_USERNAME, password=TEST_ADMIN_PASSWORD
)
self.document_type = DocumentType.objects.create(
self.document_type = DocumentType.on_organization.create(
label=TEST_DOCUMENT_TYPE
)
self.metadata_type = MetadataType.objects.create(
self.metadata_type = MetadataType.on_organization.create(
label=TEST_METADATA_TYPE_LABEL, name=TEST_METADATA_TYPE_NAME
)
@@ -199,8 +177,8 @@ class DocumentMetadataAPITestCase(APITestCase):
)
def tearDown(self):
self.admin_user.delete()
self.document_type.delete()
super(DocumentMetadataAPITestCase, self).tearDown()
def test_document_metadata_create(self):
response = self.client.post(
@@ -213,7 +191,7 @@ class DocumentMetadataAPITestCase(APITestCase):
}
)
document_metadata = DocumentMetadata.objects.get(
document_metadata = DocumentMetadata.on_organization.get(
document=self.document
)

View File

@@ -6,6 +6,7 @@ from django.test import TestCase, override_settings
from documents.models import DocumentType
from documents.tests import TEST_SMALL_DOCUMENT_PATH, TEST_DOCUMENT_TYPE
from organizations.tests import OrganizationTestCase
from ..models import MetadataType, DocumentMetadata
@@ -18,13 +19,14 @@ from .literals import (
@override_settings(OCR_AUTO_OCR=False)
class MetadataTestCase(TestCase):
class MetadataTestCase(OrganizationTestCase):
def setUp(self):
self.document_type = DocumentType.objects.create(
super(MetadataTestCase, self).setUp()
self.document_type = DocumentType.on_organization.create(
label=TEST_DOCUMENT_TYPE
)
self.metadata_type = MetadataType.objects.create(
self.metadata_type = MetadataType.on_organization.create(
name=TEST_METADATA_TYPE_NAME, label=TEST_METADATA_TYPE_LABEL
)
@@ -37,6 +39,7 @@ class MetadataTestCase(TestCase):
def tearDown(self):
self.document_type.delete()
super(MetadataTestCase, self).tearDown()
def test_no_default(self):
document_metadata = DocumentMetadata(

View File

@@ -0,0 +1,65 @@
from __future__ import unicode_literals
from organizations.tests.test_organization_views import OrganizationViewTestCase
from ..models import MetadataType
from .literals import (
TEST_DOCUMENT_METADATA_VALUE_2, TEST_METADATA_TYPE_LABEL,
TEST_METADATA_TYPE_LABEL_2, TEST_METADATA_TYPE_NAME,
TEST_METADATA_TYPE_NAME_2
)
class MetadataOrganizationViewTestCase(OrganizationViewTestCase):
def create_metadata_type(self):
with self.settings(ORGANIZATION_ID=self.organization_a.pk):
self.metadata_type = MetadataType.on_organization.create(
name=TEST_METADATA_TYPE_NAME, label=TEST_METADATA_TYPE_LABEL
)
def test_metadata_type_creation(self):
with self.settings(ORGANIZATION_ID=self.organization_a.pk):
response = self.post(
'metadata:setup_metadata_type_create', data={
'label': TEST_METADATA_TYPE_LABEL,
'name': TEST_METADATA_TYPE_NAME
}, follow=True
)
self.assertContains(response, text='created', status_code=200)
with self.settings(ORGANIZATION_ID=self.organization_b.pk):
self.assertEqual(MetadataType.on_organization.count(), 0)
def test_metadata_type_delete(self):
self.create_metadata_type()
with self.settings(ORGANIZATION_ID=self.organization_b.pk):
response = self.post(
'metadata:setup_metadata_type_delete',
args=(self.metadata_type.pk,), follow=True
)
self.assertEqual(response.status_code, 404)
with self.settings(ORGANIZATION_ID=self.organization_a.pk):
self.assertEqual(MetadataType.on_organization.count(), 1)
def test_metadata_type_edit(self):
self.create_metadata_type()
with self.settings(ORGANIZATION_ID=self.organization_b.pk):
response = self.post(
'metadata:setup_metadata_type_edit',
args=(self.metadata_type.pk,), data={
'label': TEST_METADATA_TYPE_LABEL_2,
}
)
self.assertEqual(response.status_code, 404)
with self.settings(ORGANIZATION_ID=self.organization_a.pk):
self.metadata_type.refresh_from_db()
self.assertEqual(
self.metadata_type.label, TEST_METADATA_TYPE_LABEL
)

View File

@@ -30,7 +30,7 @@ class DocumentMetadataTestCase(GenericDocumentViewTestCase):
def setUp(self):
super(DocumentMetadataTestCase, self).setUp()
self.metadata_type = MetadataType.objects.create(
self.metadata_type = MetadataType.on_organization.create(
name=TEST_METADATA_TYPE_NAME, label=TEST_METADATA_TYPE_LABEL
)
@@ -94,11 +94,11 @@ class DocumentMetadataTestCase(GenericDocumentViewTestCase):
permission_metadata_document_edit.stored_permission
)
document_type_2 = DocumentType.objects.create(
document_type_2 = DocumentType.on_organization.create(
label=TEST_DOCUMENT_TYPE_2
)
metadata_type_2 = MetadataType.objects.create(
metadata_type_2 = MetadataType.on_organization.create(
name=TEST_METADATA_TYPE_NAME_2, label=TEST_METADATA_TYPE_LABEL_2
)

View File

@@ -36,11 +36,11 @@ from .permissions import (
def metadata_edit(request, document_id=None, document_id_list=None):
if document_id:
documents = Document.objects.filter(pk=document_id)
documents = Document.on_organization.filter(pk=document_id)
if not documents:
raise Document.DoesNotExist
elif document_id_list:
documents = Document.objects.filter(pk__in=document_id_list)
documents = Document.on_organization.filter(pk__in=document_id_list)
try:
Permission.check_permissions(
@@ -186,11 +186,11 @@ def metadata_multiple_edit(request):
def metadata_add(request, document_id=None, document_id_list=None):
if document_id:
documents = Document.objects.filter(pk=document_id)
documents = Document.on_organization.filter(pk=document_id)
if not documents:
raise Document.DoesNotExist
elif document_id_list:
documents = Document.objects.select_related('document_type').filter(pk__in=document_id_list)
documents = Document.on_organization.select_related('document_type').filter(pk__in=document_id_list)
if len(set([document.document_type.pk for document in documents])) > 1:
messages.error(
request, _('Only select documents of the same type.')
@@ -241,7 +241,7 @@ def metadata_add(request, document_id=None, document_id_list=None):
metadata_type = form.cleaned_data['metadata_type']
for document in documents:
try:
document_metadata, created = DocumentMetadata.objects.get_or_create(
document_metadata, created = DocumentMetadata.on_organization.get_or_create(
document=document,
metadata_type=metadata_type,
defaults={'value': ''}
@@ -331,11 +331,11 @@ def metadata_multiple_add(request):
def metadata_remove(request, document_id=None, document_id_list=None):
if document_id:
documents = Document.objects.filter(pk=document_id)
documents = Document.on_organization.filter(pk=document_id)
if not documents:
raise Document.DoesNotExist
elif document_id_list:
documents = Document.objects.filter(pk__in=document_id_list)
documents = Document.on_organization.filter(pk__in=document_id_list)
try:
Permission.check_permissions(
@@ -416,10 +416,10 @@ def metadata_remove(request, document_id=None, document_id_list=None):
for form in formset.forms:
if form.cleaned_data['update']:
metadata_type = get_object_or_404(
MetadataType, pk=form.cleaned_data['id']
MetadataType.on_organization, pk=form.cleaned_data['id']
)
try:
document_metadata = DocumentMetadata.objects.get(
document_metadata = DocumentMetadata.on_organization.get(
document=document, metadata_type=metadata_type
)
document_metadata.delete()
@@ -494,7 +494,7 @@ class DocumentMetadataListView(SingleObjectListView):
)
def get_document(self):
return get_object_or_404(Document, pk=self.kwargs['pk'])
return get_object_or_404(Document.on_organization, pk=self.kwargs['pk'])
def get_extra_context(self):
document = self.get_document()
@@ -512,13 +512,14 @@ class DocumentMetadataListView(SingleObjectListView):
class MetadataTypeCreateView(SingleObjectCreateView):
extra_context = {'title': _('Create metadata type')}
form_class = MetadataTypeForm
model = MetadataType
post_action_redirect = reverse_lazy('metadata:setup_metadata_type_list')
view_permission = permission_metadata_type_create
def get_queryset(self):
return MetadataType.on_organization.all()
class MetadataTypeDeleteView(SingleObjectDeleteView):
model = MetadataType
post_action_redirect = reverse_lazy('metadata:setup_metadata_type_list')
view_permission = permission_metadata_type_delete
@@ -529,10 +530,12 @@ class MetadataTypeDeleteView(SingleObjectDeleteView):
'title': _('Delete the metadata type: %s?') % self.get_object(),
}
def get_queryset(self):
return MetadataType.on_organization.all()
class MetadataTypeEditView(SingleObjectEditView):
form_class = MetadataTypeForm
model = MetadataType
post_action_redirect = reverse_lazy('metadata:setup_metadata_type_list')
view_permission = permission_metadata_type_edit
@@ -542,13 +545,13 @@ class MetadataTypeEditView(SingleObjectEditView):
'title': _('Edit metadata type: %s') % self.get_object(),
}
def get_queryset(self):
return MetadataType.on_organization.all()
class MetadataTypeListView(SingleObjectListView):
view_permission = permission_metadata_type_view
def get_queryset(self):
return MetadataType.objects.all()
def get_extra_context(self):
return {
'extra_columns': (
@@ -561,6 +564,9 @@ class MetadataTypeListView(SingleObjectListView):
'title': _('Metadata types'),
}
def get_queryset(self):
return MetadataType.on_organization.all()
class SetupDocumentTypeMetadataOptionalView(AssignRemoveView):
decode_content_type = True
@@ -572,12 +578,12 @@ class SetupDocumentTypeMetadataOptionalView(AssignRemoveView):
self.get_object().metadata.create(metadata_type=item, required=False)
def get_object(self):
return get_object_or_404(DocumentType, pk=self.kwargs['pk'])
return get_object_or_404(DocumentType.on_organization, pk=self.kwargs['pk'])
def left_list(self):
return AssignRemoveView.generate_choices(
set(MetadataType.objects.all()) - set(
MetadataType.objects.filter(
set(MetadataType.on_organization.all()) - set(
MetadataType.on_organization.filter(
id__in=self.get_object().metadata.values_list(
'metadata_type', flat=True
)