Skip to content
Snippets Groups Projects

Filter by rotation_angle and mirroring

Merged Erwan Rouchet requested to merge list-filter-rotation-mirror into master
4 files
+ 265
1
Compare changes
  • Side-by-side
  • Inline
Files
4
@@ -181,6 +181,22 @@ class ElementsListAutoSchema(AutoSchema):
type=UUID,
required=False,
),
OpenApiParameter(
'rotation_angle',
description='Restrict to elements with the given rotation angle.',
type={
'type': 'integer',
'minimum': 0,
'maximum': 359,
},
required=False,
),
OpenApiParameter(
'mirrored',
description='Restrict to or exclude mirrored elements.',
type=bool,
required=False,
)
]
# Add method-specific parameters
@@ -450,9 +466,21 @@ class ElementsListBase(CorpusACLMixin, DestroyModelMixin, ListAPIView):
}
errors = {}
if 'name' in self.request.query_params:
if 'name' in self.clean_params:
filters['name__icontains'] = self.clean_params['name']
if 'rotation_angle' in self.clean_params:
try:
rotation_angle = int(self.clean_params['rotation_angle'])
assert 0 <= rotation_angle <= 359, 'A rotation angle must be between 0 and 359 degrees'
except (AssertionError, TypeError, ValueError) as e:
errors['rotation_angle'] = [str(e)]
else:
filters['rotation_angle'] = rotation_angle
if 'mirrored' in self.clean_params:
filters['mirrored'] = self.clean_params['mirrored'].lower() not in ('false', '0')
if self.type_filter:
filters['type'] = self.type_filter
elif self.folder_filter is not None:
Loading