Skip to content

Commit

Permalink
Add order to queryset to ensure correctness of pagination result.
Browse files Browse the repository at this point in the history
Originally, rows of querysets is in unspecified order if sorting is not chosen.
This causes problem when django pagination is used.
It can only be guaranteed if the sort type if explicitly chosen.

JIRA: PDC-1063
  • Loading branch information
zkl94 committed Nov 3, 2015
1 parent b9b012e commit 9a378f2
Show file tree
Hide file tree
Showing 10 changed files with 50 additions and 50 deletions.
4 changes: 2 additions & 2 deletions pdc/apps/auth/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -279,7 +279,7 @@ def list(self, request, *args, **kwargs):
"""
return super(PermissionViewSet, self).list(request, *args, **kwargs)

queryset = Permission.objects.all()
queryset = Permission.objects.all().order_by("id")
serializer_class = serializers.PermissionSerializer
filter_class = filters.PermissionFilter

Expand Down Expand Up @@ -481,7 +481,7 @@ def update(self, request, *args, **kwargs):
"""
return super(GroupViewSet, self).update(request, *args, **kwargs)

queryset = Group.objects.all()
queryset = Group.objects.all().order_by('id')
serializer_class = serializers.GroupSerializer
filter_class = filters.GroupFilter
Group.export = group_obj_export
Expand Down
8 changes: 4 additions & 4 deletions pdc/apps/common/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ class ArchListView(ListView):

class SigKeyListView(ListView):
model = SigKey
queryset = SigKey.objects.all()
queryset = SigKey.objects.all().order_by('id')
allow_empty = True
template_name = "sigkey_list.html"
context_object_name = "sigkey_list"
Expand All @@ -50,7 +50,7 @@ class LabelViewSet(pdc_viewsets.PDCModelViewSet):
browsers, such as ``RESTClient``, ``RESTConsole``.
"""
serializer_class = LabelSerializer
queryset = Label.objects.all()
queryset = Label.objects.all().order_by('id')
filter_class = LabelFilter

def create(self, request, *args, **kwargs):
Expand Down Expand Up @@ -225,7 +225,7 @@ class ArchViewSet(pdc_viewsets.ChangeSetCreateModelMixin,
browsers, such as ``RESTClient``, ``RESTConsole``.
"""
serializer_class = ArchSerializer
queryset = Arch.objects.all()
queryset = Arch.objects.all().order_by('id')
lookup_field = 'name'

def list(self, request, *args, **kwargs):
Expand Down Expand Up @@ -307,7 +307,7 @@ class SigKeyViewSet(pdc_viewsets.StrictQueryParamMixin,
browsers, such as ``RESTClient``, ``RESTConsole``.
"""
serializer_class = SigKeySerializer
queryset = SigKey.objects.all()
queryset = SigKey.objects.all().order_by('id')
filter_class = SigKeyFilter
lookup_field = 'key_id'

Expand Down
26 changes: 13 additions & 13 deletions pdc/apps/component/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ class GlobalComponentViewSet(viewsets.PDCModelViewSet):
"""
model = GlobalComponent
queryset = GlobalComponent.objects.all()
queryset = GlobalComponent.objects.all().order_by('id')
serializer_class = GlobalComponentSerializer
filter_class = ComponentFilter

Expand Down Expand Up @@ -354,7 +354,7 @@ class GlobalComponentContactViewSet(HackedComponentContactMixin,
"""

model = GlobalComponent
queryset = GlobalComponent.objects.all()
queryset = GlobalComponent.objects.all().order_by('id')
serializer_class = HackedContactSerializer
filter_class = RoleContactFilter

Expand Down Expand Up @@ -512,7 +512,7 @@ class GlobalComponentLabelViewSet(viewsets.PDCModelViewSet):
browsers, such as ``RESTClient``, ``RESTConsole``.
"""
model = Label
queryset = Label.objects.all()
queryset = Label.objects.all().order_by('id')
serializer_class = LabelSerializer
filter_class = LabelFilter

Expand Down Expand Up @@ -634,7 +634,7 @@ class ReleaseComponentTypeViewSet(viewsets.StrictQueryParamMixin,
API endpoint that allows release_component_types to be viewed.
"""
serializer_class = ReleaseComponentTypeSerializer
queryset = ReleaseComponentType.objects.all()
queryset = ReleaseComponentType.objects.all().order_by('id')

def list(self, request, *args, **kwargs):
"""
Expand Down Expand Up @@ -674,7 +674,7 @@ class ReleaseComponentViewSet(viewsets.PDCModelViewSet):
"""
model = ReleaseComponent
queryset = model.objects.all()
queryset = model.objects.all().order_by('id')
serializer_class = ReleaseComponentSerializer
filter_class = ReleaseComponentFilter
extra_query_params = ('include_inactive_release', )
Expand Down Expand Up @@ -1107,7 +1107,7 @@ class ReleaseComponentContactViewSet(HackedComponentContactMixin,
API]($URL:releasecomponentcontacts-list$) instead.
"""
model = ReleaseComponent
queryset = ReleaseComponent.objects.all()
queryset = ReleaseComponent.objects.all().order_by('id')
serializer_class = HackedContactSerializer
gcc_serializer_class = HackedContactSerializer
extra_query_params = ('contact_role', )
Expand Down Expand Up @@ -1351,7 +1351,7 @@ class BugzillaComponentViewSet(viewsets.PDCModelViewSet):
"""
model = BugzillaComponent
queryset = model.objects.all()
queryset = model.objects.all().order_by('id')
serializer_class = BugzillaComponentSerializer
filter_class = BugzillaComponentFilter

Expand Down Expand Up @@ -1592,7 +1592,7 @@ class GroupTypeViewSet(viewsets.PDCModelViewSet):
API endpoint that allows component_group_types to be viewed or edited.
"""
serializer_class = GroupTypeSerializer
queryset = GroupType.objects.all()
queryset = GroupType.objects.all().order_by('id')
filter_class = GroupTypeFilter

def create(self, request, *args, **kwargs):
Expand Down Expand Up @@ -1673,7 +1673,7 @@ class GroupViewSet(viewsets.PDCModelViewSet):
API endpoint that allows component_groups to be viewed or edited.
"""
serializer_class = GroupSerializer
queryset = ReleaseComponentGroup.objects.all()
queryset = ReleaseComponentGroup.objects.all().order_by('id')
filter_class = GroupFilter

def create(self, request, *args, **kwargs):
Expand Down Expand Up @@ -1780,7 +1780,7 @@ class ReleaseComponentRelationshipTypeViewSet(viewsets.StrictQueryParamMixin,
API endpoint that allows release_component_relationship_types to be viewed.
"""
serializer_class = RCRelationshipTypeSerializer
queryset = ReleaseComponentRelationshipType.objects.all()
queryset = ReleaseComponentRelationshipType.objects.all().order_by('id')

def list(self, request, *args, **kwargs):
"""
Expand All @@ -1800,7 +1800,7 @@ class ReleaseComponentRelationshipViewSet(viewsets.PDCModelViewSet):
API endpoint that allows release component relationship to be viewed or edited.
"""
serializer_class = ReleaseComponentRelationshipSerializer
queryset = ReleaseComponentRelationship.objects.all()
queryset = ReleaseComponentRelationship.objects.all().order_by('id')
filter_class = ReleaseComponentRelationshipFilter

def create(self, request, *args, **kwargs):
Expand Down Expand Up @@ -1999,7 +1999,7 @@ def create(self, *args, **kwargs):
# TODO Remove Info from name once 0.2.0 gets out
class GlobalComponentContactInfoViewSet(_BaseContactViewSet):

queryset = GlobalComponentContact.objects.all().select_related()
queryset = GlobalComponentContact.objects.all().select_related().order_by('id')
serializer_class = GlobalComponentContactSerializer
filter_class = GlobalComponentContactFilter
docstring_macros = {
Expand All @@ -2011,7 +2011,7 @@ class GlobalComponentContactInfoViewSet(_BaseContactViewSet):
# TODO Remove Info from name once 0.2.0 gets out
class ReleaseComponentContactInfoViewSet(_BaseContactViewSet):

queryset = ReleaseComponentContact.objects.all().select_related()
queryset = ReleaseComponentContact.objects.all().select_related().order_by('id')
serializer_class = ReleaseComponentContactSerializer
filter_class = ReleaseComponentContactFilter
docstring_macros = {
Expand Down
6 changes: 3 additions & 3 deletions pdc/apps/compose/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ class ComposeListView(SearchView):
form_class = ComposeSearchForm
queryset = Compose.objects.all() \
.select_related('release', 'compose_type') \
.prefetch_related('linked_releases')
.prefetch_related('linked_releases').order_by('id')
allow_empty = True
template_name = "compose_list.html"
context_object_name = "compose_list"
Expand Down Expand Up @@ -428,7 +428,7 @@ class ComposeViewSet(StrictQueryParamMixin,
template contains a string `{{package}}` which should be replaced with the
package name you are interested in.
"""
queryset = Compose.objects.all()
queryset = Compose.objects.all().order_by('id')
serializer_class = ComposeSerializer
filter_class = ComposeFilter
lookup_field = 'compose_id'
Expand Down Expand Up @@ -877,7 +877,7 @@ class ReleaseOverridesRPMViewSet(StrictQueryParamMixin,
"""

serializer_class = OverrideRPMSerializer
queryset = OverrideRPM.objects.all()
queryset = OverrideRPM.objects.all().order_by('id')
filter_class = OverrideRPMFilter

def create(self, *args, **kwargs):
Expand Down
10 changes: 5 additions & 5 deletions pdc/apps/contact/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,7 @@ def destroy(self, request, *args, **kwargs):
return super(PersonViewSet, self).destroy(request, *args, **kwargs)

serializer_class = PersonSerializer
queryset = Person.objects.all()
queryset = Person.objects.all().order_by('id')
filter_class = PersonFilterSet


Expand Down Expand Up @@ -307,7 +307,7 @@ def destroy(self, request, *args, **kwargs):
return super(MaillistViewSet, self).destroy(request, *args, **kwargs)

serializer_class = MaillistSerializer
queryset = Maillist.objects.all()
queryset = Maillist.objects.all().order_by('id')
filter_class = MaillistFilterSet


Expand Down Expand Up @@ -479,7 +479,7 @@ def destroy(self, request, *args, **kwargs):
return super(ContactRoleViewSet, self).destroy(request, *args, **kwargs)

serializer_class = ContactRoleSerializer
queryset = ContactRole.objects.all()
queryset = ContactRole.objects.all().order_by('id')
filter_class = ContactRoleFilterSet
lookup_field = 'name'
overwrite_lookup_field = False
Expand Down Expand Up @@ -737,11 +737,11 @@ def destroy(self, request, *args, **kwargs):
return super(RoleContactViewSet, self).destroy(request, *args, **kwargs)

serializer_class = RoleContactSerializer
queryset = RoleContact.objects.all()
queryset = RoleContact.objects.all().order_by('id')
extra_query_params = ('contact_role', 'username', 'mail_name', 'email')

def get_queryset(self):
queryset = RoleContact.objects.all()
queryset = RoleContact.objects.all().order_by('id')

filters = self.request.query_params
person_kwarg = {}
Expand Down
2 changes: 1 addition & 1 deletion pdc/apps/osbs/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ class OSBSViewSet(common_viewsets.StrictQueryParamMixin,
is `null`, it indicates that the client should use its default value.
"""

queryset = models.OSBSRecord.objects.filter(component__type__has_osbs=True)
queryset = models.OSBSRecord.objects.filter(component__type__has_osbs=True).order_by('component__id')
serializer_class = serializers.OSBSSerializer
filter_class = filters.OSBSFilter
lookup_fields = (('component__release__release_id', r'[^/]+'),
Expand Down
6 changes: 3 additions & 3 deletions pdc/apps/package/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ class RPMViewSet(pdc_viewsets.StrictQueryParamMixin,
"""
API endpoint that allows RPMs to be viewed.
"""
queryset = models.RPM.objects.all()
queryset = models.RPM.objects.all().order_by("id")
serializer_class = serializers.RPMSerializer
filter_class = filters.RPMFilter

Expand Down Expand Up @@ -129,7 +129,7 @@ class ImageViewSet(pdc_viewsets.StrictQueryParamMixin,
"""
List and query images.
"""
queryset = models.Image.objects.all()
queryset = models.Image.objects.all().order_by('id')
serializer_class = serializers.ImageSerializer
filter_class = filters.ImageFilter

Expand Down Expand Up @@ -159,7 +159,7 @@ class BuildImageViewSet(pdc_viewsets.PDCModelViewSet):
"""
ViewSet for BuildImage.
"""
queryset = models.BuildImage.objects.all()
queryset = models.BuildImage.objects.all().order_by('id')
serializer_class = serializers.BuildImageSerializer
filter_class = filters.BuildImageFilter

Expand Down
6 changes: 3 additions & 3 deletions pdc/apps/partners/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
class PartnerTypeViewSet(StrictQueryParamMixin,
mixins.ListModelMixin,
viewsets.GenericViewSet):
queryset = models.PartnerType.objects.all()
queryset = models.PartnerType.objects.all().order_by('id')
serializer_class = serializers.PartnerTypeSerializer

def list(self, request, *args, **kwargs):
Expand All @@ -37,7 +37,7 @@ def list(self, request, *args, **kwargs):


class PartnerViewSet(PDCModelViewSet):
queryset = models.Partner.objects.all()
queryset = models.Partner.objects.all().order_by('id')
lookup_field = 'short'
serializer_class = serializers.PartnerSerializer
filter_class = filters.PartnerFilterSet
Expand Down Expand Up @@ -123,7 +123,7 @@ class PartnerMappingViewSet(StrictQueryParamMixin,
'partner',
'variant_arch__arch',
'variant_arch__variant__release'
)
).order_by('id')
serializer_class = serializers.PartnerMappingSerializer
lookup_fields = (
('partner__short', r'[^/]+'),
Expand Down
Loading

0 comments on commit 9a378f2

Please sign in to comment.