diff --git a/server/books/schema/queries.py b/server/books/schema/queries.py index 338aae4b..bcf41e0e 100644 --- a/server/books/schema/queries.py +++ b/server/books/schema/queries.py @@ -199,7 +199,7 @@ class TopicNode(DjangoObjectType): class Meta: model = Topic only_fields = [ - 'slug', 'title', 'meta_title', 'teaser', 'description', 'vimeo_id', 'order', 'instructions' + 'slug', 'title', 'teaser', 'description', 'vimeo_id', 'order', 'instructions' ] filter_fields = { 'slug': ['exact', 'icontains', 'in'], diff --git a/server/books/tests/test_copy_visibility_for_other_class.py b/server/books/tests/test_copy_visibility_for_other_class.py new file mode 100644 index 00000000..39c3dcfd --- /dev/null +++ b/server/books/tests/test_copy_visibility_for_other_class.py @@ -0,0 +1,83 @@ +import logging + +from django.test import TestCase, RequestFactory +from graphene.test import Client +from graphql_relay import to_global_id + +from api.schema import schema +from books.models import ContentBlock, Chapter +from books.factories import ModuleFactory +from users.factories import SchoolClassFactory +from users.models import User +from users.services import create_users + +logger = logging.getLogger(__name__) + +class CopyVisibilityForClassesTestCase(TestCase): + def setUp(self): + module = ModuleFactory() + chapter = Chapter(title='Some Chapter') + module.add_child(instance=chapter) + create_users() + teacher = User.objects.get(username='teacher') + student1 = User.objects.get(username='student1') + student2 = User.objects.get(username='student2') + school_class1 = SchoolClassFactory(name='hidden-class', users=[teacher, student1]) + school_class2 = SchoolClassFactory(name='default-class', users=[teacher, student2]) + + default_content_block = ContentBlock(title='default block', slug='default') + hidden_content_block = ContentBlock(title='hidden block', slug='hidden') + + chapter.specific.add_child(instance=default_content_block) + chapter.specific.add_child(instance=hidden_content_block) + + hidden_content_block.hidden_for.add(school_class1) + + teacher_request = RequestFactory().get('/') + teacher_request.user = teacher + self.teacher_client = Client(schema=schema, context_value=teacher_request) + + student1_request = RequestFactory().get('/') + student1_request.user = student1 + self.student1_client = Client(schema=schema, context_value=student1_request) + + student2_request = RequestFactory().get('/') + student2_request.user = student2 + self.student2_client = Client(schema=schema, context_value=student2_request) + + self.chapter = to_global_id('ChapterNode', chapter.pk) + self.default_content_block = to_global_id('ContentBlockNode', default_content_block.pk) + self.hidden_content_block = to_global_id('ContentBlockNode', hidden_content_block.pk) + + def _get_result(self, query, client, id): + result = client.execute(query, variables={ + 'id': id + }) + return result + + def test_hidden_for_set_correctly(self): + self.assertEqual(ContentBlock.objects.count(), 2) + + query = """ + query ContentBlockQuery($id: ID!) { + contentBlock(id: $id) { + hiddenFor { + edges { + node { + id + name + } + } + } + } + } + """ + + result = self._get_result(query, self.teacher_client, self.hidden_content_block) + logger.info(result) + hiddenFor = result.get('data').get('contentBlock').get('hiddenFor').get('edges') + logger.info(hiddenFor) + self.assertTrue('hidden-class' in map(lambda x: x['node']['name'], hiddenFor)) + self.assertFalse('default-class' in map(lambda x: x['node']['name'], hiddenFor)) + + diff --git a/server/core/settings.py b/server/core/settings.py index 74892f06..f74aacd3 100644 --- a/server/core/settings.py +++ b/server/core/settings.py @@ -335,6 +335,11 @@ LOGGING = { 'level': 'WARNING', 'propagate': True, }, + 'wagtail': { + 'handlers': ['console'], + 'level': 'WARNING', + 'propagate': False, + }, } }