kopia lustrzana https://github.com/OpenDroneMap/WebODM
Update Django to 2.2.27 and drf to 3.13.1
Required some fixes: - detail_route replaced with action(detail=True) - base_name replaced with basename - handler404 requires exception arg - DjangoObjectPermissionsFilter deprecated and moved to djangorestframework-guardian, now called ObjectPermissionsFilterpull/1159/head
rodzic
ae917662c9
commit
980ee89501
|
@ -1,6 +1,6 @@
|
||||||
from guardian.shortcuts import get_perms, get_users_with_perms, assign_perm, remove_perm
|
from guardian.shortcuts import get_perms, get_users_with_perms, assign_perm, remove_perm
|
||||||
from rest_framework import serializers, viewsets
|
from rest_framework import serializers, viewsets
|
||||||
from rest_framework.decorators import detail_route
|
from rest_framework.decorators import action
|
||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
from rest_framework import status
|
from rest_framework import status
|
||||||
from django.db import transaction
|
from django.db import transaction
|
||||||
|
@ -53,7 +53,7 @@ class ProjectViewSet(viewsets.ModelViewSet):
|
||||||
return None
|
return None
|
||||||
return super().paginate_queryset(queryset)
|
return super().paginate_queryset(queryset)
|
||||||
|
|
||||||
@detail_route(methods=['post'])
|
@action(detail=True, methods=['post'])
|
||||||
def duplicate(self, request, pk=None):
|
def duplicate(self, request, pk=None):
|
||||||
"""
|
"""
|
||||||
Duplicate a task
|
Duplicate a task
|
||||||
|
@ -66,7 +66,7 @@ class ProjectViewSet(viewsets.ModelViewSet):
|
||||||
else:
|
else:
|
||||||
return Response({'error': _("Cannot duplicate project")}, status=status.HTTP_200_OK)
|
return Response({'error': _("Cannot duplicate project")}, status=status.HTTP_200_OK)
|
||||||
|
|
||||||
@detail_route(methods=['get'])
|
@action(detail=True, methods=['get'])
|
||||||
def permissions(self, request, pk=None):
|
def permissions(self, request, pk=None):
|
||||||
project = get_and_check_project(request, pk, ('change_project', ))
|
project = get_and_check_project(request, pk, ('change_project', ))
|
||||||
|
|
||||||
|
@ -81,7 +81,7 @@ class ProjectViewSet(viewsets.ModelViewSet):
|
||||||
result.sort(key=lambda r: r['owner'], reverse=True)
|
result.sort(key=lambda r: r['owner'], reverse=True)
|
||||||
return Response(result, status=status.HTTP_200_OK)
|
return Response(result, status=status.HTTP_200_OK)
|
||||||
|
|
||||||
@detail_route(methods=['post'])
|
@action(detail=True, methods=['post'])
|
||||||
def edit(self, request, pk=None):
|
def edit(self, request, pk=None):
|
||||||
project = get_and_check_project(request, pk, ('change_project', ))
|
project = get_and_check_project(request, pk, ('change_project', ))
|
||||||
|
|
||||||
|
@ -135,4 +135,4 @@ class ProjectViewSet(viewsets.ModelViewSet):
|
||||||
except AttributeError as e:
|
except AttributeError as e:
|
||||||
return Response({'error': _("Invalid permissions")}, status=status.HTTP_400_BAD_REQUEST)
|
return Response({'error': _("Invalid permissions")}, status=status.HTTP_400_BAD_REQUEST)
|
||||||
|
|
||||||
return Response({'success': True}, status=status.HTTP_200_OK)
|
return Response({'success': True}, status=status.HTTP_200_OK)
|
||||||
|
|
|
@ -10,7 +10,7 @@ from django.db import transaction
|
||||||
from django.http import FileResponse
|
from django.http import FileResponse
|
||||||
from django.http import HttpResponse
|
from django.http import HttpResponse
|
||||||
from rest_framework import status, serializers, viewsets, filters, exceptions, permissions, parsers
|
from rest_framework import status, serializers, viewsets, filters, exceptions, permissions, parsers
|
||||||
from rest_framework.decorators import detail_route
|
from rest_framework.decorators import action
|
||||||
from rest_framework.permissions import AllowAny
|
from rest_framework.permissions import AllowAny
|
||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
from rest_framework.views import APIView
|
from rest_framework.views import APIView
|
||||||
|
@ -117,19 +117,19 @@ class TaskViewSet(viewsets.ViewSet):
|
||||||
|
|
||||||
return Response({'success': True})
|
return Response({'success': True})
|
||||||
|
|
||||||
@detail_route(methods=['post'])
|
@action(detail=True, methods=['post'])
|
||||||
def cancel(self, *args, **kwargs):
|
def cancel(self, *args, **kwargs):
|
||||||
return self.set_pending_action(pending_actions.CANCEL, *args, **kwargs)
|
return self.set_pending_action(pending_actions.CANCEL, *args, **kwargs)
|
||||||
|
|
||||||
@detail_route(methods=['post'])
|
@action(detail=True, methods=['post'])
|
||||||
def restart(self, *args, **kwargs):
|
def restart(self, *args, **kwargs):
|
||||||
return self.set_pending_action(pending_actions.RESTART, *args, **kwargs)
|
return self.set_pending_action(pending_actions.RESTART, *args, **kwargs)
|
||||||
|
|
||||||
@detail_route(methods=['post'])
|
@action(detail=True, methods=['post'])
|
||||||
def remove(self, *args, **kwargs):
|
def remove(self, *args, **kwargs):
|
||||||
return self.set_pending_action(pending_actions.REMOVE, *args, perms=('delete_project', ), **kwargs)
|
return self.set_pending_action(pending_actions.REMOVE, *args, perms=('delete_project', ), **kwargs)
|
||||||
|
|
||||||
@detail_route(methods=['get'])
|
@action(detail=True, methods=['get'])
|
||||||
def output(self, request, pk=None, project_pk=None):
|
def output(self, request, pk=None, project_pk=None):
|
||||||
"""
|
"""
|
||||||
Retrieve the console output for this task.
|
Retrieve the console output for this task.
|
||||||
|
@ -165,7 +165,7 @@ class TaskViewSet(viewsets.ViewSet):
|
||||||
serializer = TaskSerializer(task)
|
serializer = TaskSerializer(task)
|
||||||
return Response(serializer.data)
|
return Response(serializer.data)
|
||||||
|
|
||||||
@detail_route(methods=['post'])
|
@action(detail=True, methods=['post'])
|
||||||
def commit(self, request, pk=None, project_pk=None):
|
def commit(self, request, pk=None, project_pk=None):
|
||||||
"""
|
"""
|
||||||
Commit a task after all images have been uploaded
|
Commit a task after all images have been uploaded
|
||||||
|
@ -188,7 +188,7 @@ class TaskViewSet(viewsets.ViewSet):
|
||||||
serializer = TaskSerializer(task)
|
serializer = TaskSerializer(task)
|
||||||
return Response(serializer.data, status=status.HTTP_200_OK)
|
return Response(serializer.data, status=status.HTTP_200_OK)
|
||||||
|
|
||||||
@detail_route(methods=['post'])
|
@action(detail=True, methods=['post'])
|
||||||
def upload(self, request, pk=None, project_pk=None):
|
def upload(self, request, pk=None, project_pk=None):
|
||||||
"""
|
"""
|
||||||
Add images to a task
|
Add images to a task
|
||||||
|
@ -216,7 +216,7 @@ class TaskViewSet(viewsets.ViewSet):
|
||||||
|
|
||||||
return Response({'success': True}, status=status.HTTP_200_OK)
|
return Response({'success': True}, status=status.HTTP_200_OK)
|
||||||
|
|
||||||
@detail_route(methods=['post'])
|
@action(detail=True, methods=['post'])
|
||||||
def duplicate(self, request, pk=None, project_pk=None):
|
def duplicate(self, request, pk=None, project_pk=None):
|
||||||
"""
|
"""
|
||||||
Duplicate a task
|
Duplicate a task
|
||||||
|
|
|
@ -18,14 +18,14 @@ from webodm import settings
|
||||||
router = routers.DefaultRouter()
|
router = routers.DefaultRouter()
|
||||||
router.register(r'projects', ProjectViewSet)
|
router.register(r'projects', ProjectViewSet)
|
||||||
router.register(r'processingnodes', ProcessingNodeViewSet)
|
router.register(r'processingnodes', ProcessingNodeViewSet)
|
||||||
router.register(r'presets', PresetViewSet, base_name='presets')
|
router.register(r'presets', PresetViewSet, basename='presets')
|
||||||
|
|
||||||
tasks_router = routers.NestedSimpleRouter(router, r'projects', lookup='project')
|
tasks_router = routers.NestedSimpleRouter(router, r'projects', lookup='project')
|
||||||
tasks_router.register(r'tasks', TaskViewSet, base_name='projects-tasks')
|
tasks_router.register(r'tasks', TaskViewSet, basename='projects-tasks')
|
||||||
|
|
||||||
admin_router = routers.DefaultRouter()
|
admin_router = routers.DefaultRouter()
|
||||||
admin_router.register(r'admin/users', AdminUserViewSet, base_name='admin-users')
|
admin_router.register(r'admin/users', AdminUserViewSet, basename='admin-users')
|
||||||
admin_router.register(r'admin/groups', AdminGroupViewSet, base_name='admin-groups')
|
admin_router.register(r'admin/groups', AdminGroupViewSet, basename='admin-groups')
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
url(r'processingnodes/options/$', ProcessingNodeOptionsView.as_view()),
|
url(r'processingnodes/options/$', ProcessingNodeOptionsView.as_view()),
|
||||||
|
|
|
@ -151,8 +151,8 @@ def welcome(request):
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
def handler404(request):
|
def handler404(request, exception):
|
||||||
return render(request, '404.html', status=404)
|
return render(request, '404.html', status=404)
|
||||||
|
|
||||||
def handler500(request):
|
def handler500(request):
|
||||||
return render(request, '500.html', status=500)
|
return render(request, '500.html', status=500)
|
||||||
|
|
|
@ -3,20 +3,21 @@ appdirs==1.4.0
|
||||||
APScheduler==3.2.0
|
APScheduler==3.2.0
|
||||||
billiard==3.6.3.0
|
billiard==3.6.3.0
|
||||||
celery==4.4.0
|
celery==4.4.0
|
||||||
coreapi==2.0.9
|
coreapi>=2.3.3
|
||||||
Django==2.1.15
|
Django==2.2.27
|
||||||
django-appconf==1.0.2
|
django-appconf==1.0.2
|
||||||
django-codemirror2==0.2
|
django-codemirror2==0.2
|
||||||
django-colorfield==0.1.15
|
django-colorfield==0.1.15
|
||||||
django-compressor==2.2
|
django-compressor==2.2
|
||||||
django-cors-headers==3.0.2
|
django-cors-headers==3.0.2
|
||||||
django-filter==2.0.0
|
django-filter==2.4.0
|
||||||
django-guardian==1.4.9
|
django-guardian==1.4.9
|
||||||
django-imagekit==4.0.1
|
django-imagekit==4.0.1
|
||||||
django-libsass==0.7
|
django-libsass==0.7
|
||||||
django-webpack-loader==0.6.0
|
django-webpack-loader==0.6.0
|
||||||
djangorestframework==3.9.1
|
djangorestframework==3.13.1
|
||||||
djangorestframework-jwt==1.9.0
|
djangorestframework-jwt==1.9.0
|
||||||
|
djangorestframework-guardian==0.3.0
|
||||||
drf-nested-routers==0.11.1
|
drf-nested-routers==0.11.1
|
||||||
funcsigs==1.0.2
|
funcsigs==1.0.2
|
||||||
futures==3.1.1
|
futures==3.1.1
|
||||||
|
@ -33,7 +34,6 @@ piexif==1.0.13
|
||||||
pilkit==2.0
|
pilkit==2.0
|
||||||
Pillow==8.3.2
|
Pillow==8.3.2
|
||||||
pip-autoremove==0.9.0
|
pip-autoremove==0.9.0
|
||||||
psycopg2==2.8.6
|
|
||||||
psycopg2-binary==2.8.6
|
psycopg2-binary==2.8.6
|
||||||
PyJWT==1.5.3
|
PyJWT==1.5.3
|
||||||
pyodm==1.5.9
|
pyodm==1.5.9
|
||||||
|
|
|
@ -311,7 +311,7 @@ REST_FRAMEWORK = {
|
||||||
'rest_framework.permissions.DjangoObjectPermissions',
|
'rest_framework.permissions.DjangoObjectPermissions',
|
||||||
],
|
],
|
||||||
'DEFAULT_FILTER_BACKENDS': [
|
'DEFAULT_FILTER_BACKENDS': [
|
||||||
'rest_framework.filters.DjangoObjectPermissionsFilter',
|
'rest_framework_guardian.filters.ObjectPermissionsFilter',
|
||||||
'django_filters.rest_framework.DjangoFilterBackend',
|
'django_filters.rest_framework.DjangoFilterBackend',
|
||||||
'rest_framework.filters.OrderingFilter',
|
'rest_framework.filters.OrderingFilter',
|
||||||
],
|
],
|
||||||
|
|
Ładowanie…
Reference in New Issue