diff --git a/mayan/apps/metadata/classes.py b/mayan/apps/metadata/classes.py
index 3d16e79cdb..08bd9a5d03 100644
--- a/mayan/apps/metadata/classes.py
+++ b/mayan/apps/metadata/classes.py
@@ -29,7 +29,10 @@ class MetadataLookup(object):
def get_as_context(cls):
result = {}
for entry in cls._registry:
- result[entry.name] = entry.value
+ try:
+ result[entry.name] = entry.value()
+ except TypeError:
+ result[entry.name] = entry.value
return result
diff --git a/mayan/apps/user_management/apps.py b/mayan/apps/user_management/apps.py
index b01334daa4..992b11dc9c 100644
--- a/mayan/apps/user_management/apps.py
+++ b/mayan/apps/user_management/apps.py
@@ -22,6 +22,14 @@ from .links import (
)
+def get_groups():
+ return ','.join([group.name for group in Group.objects.all()])
+
+
+def get_users():
+ return ','.join([user.get_full_name() or user.username for user in get_user_model().objects.all()])
+
+
class UserManagementApp(MayanAppConfig):
app_url = 'accounts'
name = 'user_management'
@@ -36,12 +44,12 @@ class UserManagementApp(MayanAppConfig):
APIEndPoint(app=self, version_string='1')
MetadataLookup(
- description=_('All the groups.'), name='group',
- value=Group.objects.all()
+ description=_('All the groups.'), name='groups',
+ value=get_groups
)
MetadataLookup(
description=_('All the users.'), name='users',
- value=User.objects.all()
+ value=get_users
)
SourceColumn(
diff --git a/mayan/apps/user_management/tests/test_views.py b/mayan/apps/user_management/tests/test_views.py
index 6e7ce52595..ff931c096a 100644
--- a/mayan/apps/user_management/tests/test_views.py
+++ b/mayan/apps/user_management/tests/test_views.py
@@ -1,8 +1,17 @@
from __future__ import unicode_literals
from django.contrib.auth import get_user_model
+from django.contrib.auth.models import Group
from common.tests.test_views import GenericViewTestCase
+from documents.tests.test_views import GenericDocumentViewTestCase
+
+from metadata.models import MetadataType
+from metadata.permissions import permission_metadata_document_edit
+
+from metadata.tests.literals import (
+ TEST_METADATA_TYPE_LABEL, TEST_METADATA_TYPE_NAME,
+)
from ..permissions import (
permission_user_delete, permission_user_edit, permission_user_view
@@ -179,3 +188,58 @@ class UserManagementViewTestCase(GenericViewTestCase):
self.assertContains(response, text='deleted', status_code=200)
self.assertEqual(get_user_model().objects.count(), 2)
+
+
+class MetadataLookupIntegrationTestCase(GenericDocumentViewTestCase):
+ def setUp(self):
+ super(MetadataLookupIntegrationTestCase, self).setUp()
+
+ self.metadata_type = MetadataType.objects.create(
+ name=TEST_METADATA_TYPE_NAME, label=TEST_METADATA_TYPE_LABEL
+ )
+
+ self.document_type.metadata.create(metadata_type=self.metadata_type)
+
+ def test_user_list_lookup_render(self):
+ self.login(
+ username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD
+ )
+
+ self.metadata_type.lookup = '{{ users }}'
+ self.metadata_type.save()
+ self.document.metadata.create(metadata_type=self.metadata_type)
+ self.role.permissions.add(
+ permission_metadata_document_edit.stored_permission
+ )
+
+ response = self.get(
+ viewname='metadata:metadata_edit', args=(self.document.pk,)
+ )
+
+ self.assertContains(
+ response, text=''.format(
+ TEST_USER_USERNAME, TEST_USER_USERNAME
+ ), status_code=200
+ )
+
+ def test_group_list_lookup_render(self):
+ self.login(
+ username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD
+ )
+
+ self.metadata_type.lookup = '{{ groups }}'
+ self.metadata_type.save()
+ self.document.metadata.create(metadata_type=self.metadata_type)
+ self.role.permissions.add(
+ permission_metadata_document_edit.stored_permission
+ )
+
+ response = self.get(
+ viewname='metadata:metadata_edit', args=(self.document.pk,)
+ )
+
+ self.assertContains(
+ response, text=''.format(
+ Group.objects.first().name, Group.objects.first().name
+ ), status_code=200
+ )