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 ObjectPermissionsFilter
pull/1159/head
Owen Kaluza 2022-03-18 17:51:55 +11:00
rodzic ae917662c9
commit 980ee89501
6 zmienionych plików z 25 dodań i 25 usunięć

Wyświetl plik

@ -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)

Wyświetl plik

@ -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

Wyświetl plik

@ -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()),

Wyświetl plik

@ -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)

Wyświetl plik

@ -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

Wyświetl plik

@ -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',
],