Merge branch 'hotfix/restore-objective-order' into develop

This commit is contained in:
Ramon Wenger 2022-10-03 14:01:14 +02:00
commit c89567d611
2 changed files with 12 additions and 5 deletions

View File

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

View File

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