kopia lustrzana https://github.com/OpenDroneMap/WebODM
Added task action tests
rodzic
145103ce03
commit
a91e2bd108
|
@ -50,8 +50,8 @@ class TaskViewSet(viewsets.ViewSet):
|
||||||
raise exceptions.NotFound()
|
raise exceptions.NotFound()
|
||||||
return project
|
return project
|
||||||
|
|
||||||
def set_pending_action(self, pending_action, request, pk=None, project_pk=None):
|
def set_pending_action(self, pending_action, request, pk=None, project_pk=None, perms=('change_project', )):
|
||||||
self.get_and_check_project(request, project_pk, ('change_project',))
|
self.get_and_check_project(request, project_pk, perms)
|
||||||
try:
|
try:
|
||||||
task = self.queryset.get(pk=pk, project=project_pk)
|
task = self.queryset.get(pk=pk, project=project_pk)
|
||||||
except ObjectDoesNotExist:
|
except ObjectDoesNotExist:
|
||||||
|
@ -76,8 +76,7 @@ class TaskViewSet(viewsets.ViewSet):
|
||||||
|
|
||||||
@detail_route(methods=['post'])
|
@detail_route(methods=['post'])
|
||||||
def remove(self, *args, **kwargs):
|
def remove(self, *args, **kwargs):
|
||||||
# TODO: this should check for delete_project perms
|
return self.set_pending_action(models.Task.PendingActions.REMOVE, *args, perms=('delete_project', ), **kwargs)
|
||||||
return self.set_pending_action(models.Task.PendingActions.REMOVE, *args, **kwargs)
|
|
||||||
|
|
||||||
@detail_route(methods=['get'])
|
@detail_route(methods=['get'])
|
||||||
def output(self, request, pk=None, project_pk=None):
|
def output(self, request, pk=None, project_pk=None):
|
||||||
|
|
|
@ -57,6 +57,7 @@
|
||||||
ul#side-menu.nav{
|
ul#side-menu.nav{
|
||||||
a{
|
a{
|
||||||
color: #111;
|
color: #111;
|
||||||
|
word-break: break-all;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
from .classes import BootTestCase
|
from .classes import BootTestCase
|
||||||
from rest_framework.test import APIClient
|
from rest_framework.test import APIClient
|
||||||
from rest_framework import status
|
from rest_framework import status
|
||||||
|
import datetime
|
||||||
|
|
||||||
from app.models import Project, Task
|
from app.models import Project, Task
|
||||||
from nodeodm.models import ProcessingNode
|
from nodeodm.models import ProcessingNode
|
||||||
|
@ -73,7 +74,7 @@ class TestApi(BootTestCase):
|
||||||
|
|
||||||
# Create some tasks
|
# Create some tasks
|
||||||
task = Task.objects.create(project=project)
|
task = Task.objects.create(project=project)
|
||||||
task2 = Task.objects.create(project=project)
|
task2 = Task.objects.create(project=project, created_at=task.created_at + datetime.timedelta(0, 1))
|
||||||
other_task = Task.objects.create(project=other_project)
|
other_task = Task.objects.create(project=other_project)
|
||||||
|
|
||||||
# Can list project tasks to a project we have access to
|
# Can list project tasks to a project we have access to
|
||||||
|
@ -160,12 +161,23 @@ class TestApi(BootTestCase):
|
||||||
self.assertTrue(task.last_error is None)
|
self.assertTrue(task.last_error is None)
|
||||||
self.assertTrue(task.pending_action == task.PendingActions.CANCEL)
|
self.assertTrue(task.pending_action == task.PendingActions.CANCEL)
|
||||||
|
|
||||||
# Cannot cancel a task for which we don't have permission
|
res = client.post('/api/projects/{}/tasks/{}/restart/'.format(project.id, task.id))
|
||||||
res = client.post('/api/projects/{}/tasks/{}/cancel/'.format(other_project.id, other_task.id))
|
self.assertTrue(res.data["success"])
|
||||||
self.assertEqual(res.status_code, status.HTTP_404_NOT_FOUND)
|
task.refresh_from_db()
|
||||||
|
self.assertTrue(task.last_error is None)
|
||||||
|
self.assertTrue(task.pending_action == task.PendingActions.RESTART)
|
||||||
|
|
||||||
# TODO: test restart and delete operations
|
# Cannot cancel, restart or delete a task for which we don't have permission
|
||||||
|
for action in ['cancel', 'remove', 'restart']:
|
||||||
|
res = client.post('/api/projects/{}/tasks/{}/{}/'.format(other_project.id, other_task.id, action))
|
||||||
|
self.assertEqual(res.status_code, status.HTTP_404_NOT_FOUND)
|
||||||
|
|
||||||
|
# Can delete
|
||||||
|
res = client.post('/api/projects/{}/tasks/{}/remove/'.format(project.id, task.id))
|
||||||
|
self.assertTrue(res.data["success"])
|
||||||
|
task.refresh_from_db()
|
||||||
|
self.assertTrue(task.last_error is None)
|
||||||
|
self.assertTrue(task.pending_action == task.PendingActions.REMOVE)
|
||||||
|
|
||||||
def test_processingnodes(self):
|
def test_processingnodes(self):
|
||||||
client = APIClient()
|
client = APIClient()
|
||||||
|
|
Ładowanie…
Reference in New Issue