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 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 import status
|
||||
from django.db import transaction
|
||||
|
@ -53,7 +53,7 @@ class ProjectViewSet(viewsets.ModelViewSet):
|
|||
return None
|
||||
return super().paginate_queryset(queryset)
|
||||
|
||||
@detail_route(methods=['post'])
|
||||
@action(detail=True, methods=['post'])
|
||||
def duplicate(self, request, pk=None):
|
||||
"""
|
||||
Duplicate a task
|
||||
|
@ -66,7 +66,7 @@ class ProjectViewSet(viewsets.ModelViewSet):
|
|||
else:
|
||||
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):
|
||||
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)
|
||||
return Response(result, status=status.HTTP_200_OK)
|
||||
|
||||
@detail_route(methods=['post'])
|
||||
@action(detail=True, methods=['post'])
|
||||
def edit(self, request, pk=None):
|
||||
project = get_and_check_project(request, pk, ('change_project', ))
|
||||
|
||||
|
@ -135,4 +135,4 @@ class ProjectViewSet(viewsets.ModelViewSet):
|
|||
except AttributeError as e:
|
||||
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 HttpResponse
|
||||
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.response import Response
|
||||
from rest_framework.views import APIView
|
||||
|
@ -117,19 +117,19 @@ class TaskViewSet(viewsets.ViewSet):
|
|||
|
||||
return Response({'success': True})
|
||||
|
||||
@detail_route(methods=['post'])
|
||||
@action(detail=True, methods=['post'])
|
||||
def cancel(self, *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):
|
||||
return self.set_pending_action(pending_actions.RESTART, *args, **kwargs)
|
||||
|
||||
@detail_route(methods=['post'])
|
||||
@action(detail=True, methods=['post'])
|
||||
def remove(self, *args, **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):
|
||||
"""
|
||||
Retrieve the console output for this task.
|
||||
|
@ -165,7 +165,7 @@ class TaskViewSet(viewsets.ViewSet):
|
|||
serializer = TaskSerializer(task)
|
||||
return Response(serializer.data)
|
||||
|
||||
@detail_route(methods=['post'])
|
||||
@action(detail=True, methods=['post'])
|
||||
def commit(self, request, pk=None, project_pk=None):
|
||||
"""
|
||||
Commit a task after all images have been uploaded
|
||||
|
@ -188,7 +188,7 @@ class TaskViewSet(viewsets.ViewSet):
|
|||
serializer = TaskSerializer(task)
|
||||
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):
|
||||
"""
|
||||
Add images to a task
|
||||
|
@ -216,7 +216,7 @@ class TaskViewSet(viewsets.ViewSet):
|
|||
|
||||
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):
|
||||
"""
|
||||
Duplicate a task
|
||||
|
|
|
@ -18,14 +18,14 @@ from webodm import settings
|
|||
router = routers.DefaultRouter()
|
||||
router.register(r'projects', ProjectViewSet)
|
||||
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.register(r'tasks', TaskViewSet, base_name='projects-tasks')
|
||||
tasks_router.register(r'tasks', TaskViewSet, basename='projects-tasks')
|
||||
|
||||
admin_router = routers.DefaultRouter()
|
||||
admin_router.register(r'admin/users', AdminUserViewSet, base_name='admin-users')
|
||||
admin_router.register(r'admin/groups', AdminGroupViewSet, base_name='admin-groups')
|
||||
admin_router.register(r'admin/users', AdminUserViewSet, basename='admin-users')
|
||||
admin_router.register(r'admin/groups', AdminGroupViewSet, basename='admin-groups')
|
||||
|
||||
urlpatterns = [
|
||||
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)
|
||||
|
||||
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
|
||||
billiard==3.6.3.0
|
||||
celery==4.4.0
|
||||
coreapi==2.0.9
|
||||
Django==2.1.15
|
||||
coreapi>=2.3.3
|
||||
Django==2.2.27
|
||||
django-appconf==1.0.2
|
||||
django-codemirror2==0.2
|
||||
django-colorfield==0.1.15
|
||||
django-compressor==2.2
|
||||
django-cors-headers==3.0.2
|
||||
django-filter==2.0.0
|
||||
django-filter==2.4.0
|
||||
django-guardian==1.4.9
|
||||
django-imagekit==4.0.1
|
||||
django-libsass==0.7
|
||||
django-webpack-loader==0.6.0
|
||||
djangorestframework==3.9.1
|
||||
djangorestframework==3.13.1
|
||||
djangorestframework-jwt==1.9.0
|
||||
djangorestframework-guardian==0.3.0
|
||||
drf-nested-routers==0.11.1
|
||||
funcsigs==1.0.2
|
||||
futures==3.1.1
|
||||
|
@ -33,7 +34,6 @@ piexif==1.0.13
|
|||
pilkit==2.0
|
||||
Pillow==8.3.2
|
||||
pip-autoremove==0.9.0
|
||||
psycopg2==2.8.6
|
||||
psycopg2-binary==2.8.6
|
||||
PyJWT==1.5.3
|
||||
pyodm==1.5.9
|
||||
|
|
|
@ -311,7 +311,7 @@ REST_FRAMEWORK = {
|
|||
'rest_framework.permissions.DjangoObjectPermissions',
|
||||
],
|
||||
'DEFAULT_FILTER_BACKENDS': [
|
||||
'rest_framework.filters.DjangoObjectPermissionsFilter',
|
||||
'rest_framework_guardian.filters.ObjectPermissionsFilter',
|
||||
'django_filters.rest_framework.DjangoFilterBackend',
|
||||
'rest_framework.filters.OrderingFilter',
|
||||
],
|
||||
|
|
Ładowanie…
Reference in New Issue