|
6 | 6 | from rest_framework.response import Response |
7 | 7 | from rest_framework.views import APIView |
8 | 8 |
|
9 | | -from core.common.swagger_parameters import apps_param, ids_param, resources_body_param |
10 | | -from core.common.tasks import rebuild_indexes, populate_indexes |
| 9 | +from core.common.swagger_parameters import apps_param, ids_param, resources_body_param, uri_param |
| 10 | +from core.common.tasks import rebuild_indexes, populate_indexes, batch_index_resources |
11 | 11 | from core.common.utils import get_resource_class_from_resource_name |
12 | 12 |
|
13 | 13 |
|
@@ -41,21 +41,24 @@ class ResourceIndexView(APIView): |
41 | 41 | permission_classes = (IsAdminUser,) |
42 | 42 | parser_classes = (MultiPartParser,) |
43 | 43 |
|
44 | | - @swagger_auto_schema(manual_parameters=[ids_param, resources_body_param]) |
| 44 | + @swagger_auto_schema(manual_parameters=[ids_param, uri_param, resources_body_param]) |
45 | 45 | def post(self, _, resource): |
46 | 46 | model = get_resource_class_from_resource_name(resource) |
47 | 47 |
|
48 | 48 | if not model: |
49 | 49 | return Response(status=status.HTTP_404_NOT_FOUND) |
50 | 50 |
|
51 | 51 | ids = self.request.data.get('ids', None) |
| 52 | + uri = self.request.data.get('uri', None) |
| 53 | + |
52 | 54 | if ids: |
53 | 55 | ids = compact([i.strip() for i in compact(ids.split(','))]) |
54 | | - |
55 | | - if not ids: |
| 56 | + filters = {"{}__in".format(model.mnemonic_attr): ids} |
| 57 | + elif uri: |
| 58 | + filters = dict(uri__icontains=uri) |
| 59 | + else: |
56 | 60 | return Response(status=status.HTTP_400_BAD_REQUEST) |
57 | 61 |
|
58 | | - for instance in model.objects.filter(**{"{}__in".format(model.mnemonic_attr): ids}): |
59 | | - instance.save() |
| 62 | + batch_index_resources.delay(resource, filters) |
60 | 63 |
|
61 | 64 | return Response(status=status.HTTP_202_ACCEPTED) |
0 commit comments