Merge branch 'hotfix/restore-objective-order' into develop
This commit is contained in:
commit
c89567d611
|
|
@ -1,5 +1,5 @@
|
||||||
import graphene
|
import graphene
|
||||||
from django.db.models import Q
|
from django.db.models import F, Q
|
||||||
from graphene import relay
|
from graphene import relay
|
||||||
from graphene_django import DjangoObjectType
|
from graphene_django import DjangoObjectType
|
||||||
from graphene_django.filter import DjangoFilterConnectionField
|
from graphene_django.filter import DjangoFilterConnectionField
|
||||||
|
|
@ -55,11 +55,16 @@ class ObjectiveGroupNode(DjangoObjectType, HiddenForMixin):
|
||||||
|
|
||||||
# todo
|
# todo
|
||||||
# raise NotImplemented('not in correct order')
|
# raise NotImplemented('not in correct order')
|
||||||
|
# order_by =
|
||||||
|
owner_last = F('owner').asc(nulls_first=True)
|
||||||
|
order_first = F('order').asc(nulls_last=True)
|
||||||
|
|
||||||
if user.has_perm('users.can_manage_school_class_content'): # teacher
|
if user.has_perm('users.can_manage_school_class_content'): # teacher
|
||||||
return base_qs.filter(objectives_from_publisher | objectives_from_user)
|
qs = base_qs.filter(objectives_from_publisher | objectives_from_user)
|
||||||
else: # student
|
else: # student
|
||||||
return base_qs.filter(objectives_from_publisher | objectives_from_teacher)
|
qs = base_qs.filter(objectives_from_publisher | objectives_from_teacher)
|
||||||
|
|
||||||
|
return qs.order_by(owner_last, order_first)
|
||||||
|
|
||||||
|
|
||||||
class ObjectivesQuery(object):
|
class ObjectivesQuery(object):
|
||||||
|
|
|
||||||
|
|
@ -29,8 +29,9 @@ class ObjectiveOrderTestCase(TestCase):
|
||||||
|
|
||||||
self.client = Client(schema=schema, context_value=request)
|
self.client = Client(schema=schema, context_value=request)
|
||||||
|
|
||||||
Objective.objects.create(text='first', group=self.objective_group, order=0)
|
Objective.objects.create(text='fifth', group=self.objective_group, owner=user)
|
||||||
Objective.objects.create(text='second', group=self.objective_group, order=1)
|
Objective.objects.create(text='second', group=self.objective_group, order=1)
|
||||||
|
Objective.objects.create(text='first', group=self.objective_group, order=0)
|
||||||
Objective.objects.create(text='third', group=self.objective_group)
|
Objective.objects.create(text='third', group=self.objective_group)
|
||||||
Objective.objects.create(text='fourth', group=self.objective_group)
|
Objective.objects.create(text='fourth', group=self.objective_group)
|
||||||
|
|
||||||
|
|
@ -53,10 +54,11 @@ class ObjectiveOrderTestCase(TestCase):
|
||||||
self.assertIsNone(result.get('errors'))
|
self.assertIsNone(result.get('errors'))
|
||||||
objective_nodes = result.get('data').get('objectiveGroup').get('objectives')
|
objective_nodes = result.get('data').get('objectiveGroup').get('objectives')
|
||||||
|
|
||||||
objective1, objective2, objective3, objective4 = [node for node in objective_nodes]
|
objective1, objective2, objective3, objective4, objective5 = [node for node in objective_nodes]
|
||||||
|
|
||||||
self.assertEqual(objective1.get('text'), 'first')
|
self.assertEqual(objective1.get('text'), 'first')
|
||||||
self.assertEqual(objective2.get('text'), 'second')
|
self.assertEqual(objective2.get('text'), 'second')
|
||||||
self.assertEqual(objective3.get('text'), 'third')
|
self.assertEqual(objective3.get('text'), 'third')
|
||||||
self.assertEqual(objective4.get('text'), 'fourth')
|
self.assertEqual(objective4.get('text'), 'fourth')
|
||||||
|
self.assertEqual(objective5.get('text'), 'fifth')
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue