(self, request, project_pk=None)
| 225 | }) |
| 226 | |
| 227 | def list(self, request, project_pk=None): |
| 228 | get_and_check_project(request, project_pk, defer=True) |
| 229 | query = Q(project=project_pk) |
| 230 | |
| 231 | status = request.query_params.get('status') |
| 232 | if status is not None: |
| 233 | try: |
| 234 | query &= Q(status=int(status)) |
| 235 | except ValueError: |
| 236 | raise exceptions.ValidationError("Invalid status parameter") |
| 237 | |
| 238 | available_assets = request.query_params.get('available_assets') |
| 239 | if available_assets is not None: |
| 240 | assets = [a.strip() for a in available_assets.split(",") if a.strip() != ""] |
| 241 | for a in assets: |
| 242 | query &= Q(available_assets__contains="{" + a + "}") |
| 243 | |
| 244 | bbox = request.query_params.get('bbox') |
| 245 | if bbox is not None: |
| 246 | try: |
| 247 | xmin, ymin, xmax, ymax = [float(v) for v in bbox.split(",")] |
| 248 | except: |
| 249 | raise exceptions.ValidationError("Invalid bbox parameter") |
| 250 | |
| 251 | geom = Polygon.from_bbox((xmin, ymin, xmax, ymax)) |
| 252 | query &= Q(orthophoto_extent__intersects=geom) | \ |
| 253 | Q(dsm_extent__intersects=geom) | \ |
| 254 | Q(dtm_extent__intersects=geom) |
| 255 | |
| 256 | tasks = self.queryset.filter(query) |
| 257 | tasks = filters.OrderingFilter().filter_queryset(self.request, tasks, self) |
| 258 | serializer = TaskSerializer(tasks, many=True) |
| 259 | return Response(serializer.data) |
| 260 | |
| 261 | def retrieve(self, request, pk=None, project_pk=None): |
| 262 | try: |
nothing calls this directly
no test coverage detected