kopia lustrzana https://github.com/OpenDroneMap/WebODM
Server side task filtering
rodzic
b7e1e56b01
commit
041598979d
|
@ -96,8 +96,7 @@ class TaskViewSet(viewsets.ViewSet):
|
|||
|
||||
parser_classes = (parsers.MultiPartParser, parsers.JSONParser, parsers.FormParser, )
|
||||
ordering_fields = '__all__'
|
||||
filter_fields = ('status', ) # TODO: add filter fields
|
||||
|
||||
|
||||
def get_permissions(self):
|
||||
"""
|
||||
Instantiates and returns the list of permissions that this view requires.
|
||||
|
@ -159,7 +158,26 @@ class TaskViewSet(viewsets.ViewSet):
|
|||
|
||||
def list(self, request, project_pk=None):
|
||||
get_and_check_project(request, project_pk)
|
||||
tasks = self.queryset.filter(project=project_pk)
|
||||
query = {
|
||||
'project': project_pk
|
||||
}
|
||||
|
||||
status = request.query_params.get('status')
|
||||
if status is not None:
|
||||
try:
|
||||
query['status'] = int(status)
|
||||
except ValueError:
|
||||
raise exceptions.ValidationError("Invalid status parameter")
|
||||
|
||||
available_assets = request.query_params.get('available_assets')
|
||||
if available_assets is not None:
|
||||
assets = [a.strip() for a in available_assets.split(",") if a.strip() != ""]
|
||||
for a in assets:
|
||||
query['available_assets__contains'] = "{" + a + "}"
|
||||
|
||||
# TODO bounding box filtering
|
||||
|
||||
tasks = self.queryset.filter(**query)
|
||||
tasks = filters.OrderingFilter().filter_queryset(self.request, tasks, self)
|
||||
serializer = TaskSerializer(tasks, many=True)
|
||||
return Response(serializer.data)
|
||||
|
|
|
@ -76,13 +76,13 @@ class NewTaskPanel extends React.Component {
|
|||
}
|
||||
|
||||
loadAlignTasks = (bbox) => {
|
||||
// TODO: filter by status on server
|
||||
// TODO: filter by bbox
|
||||
this.setState({alignTasks: [], alignTo: "auto", loadingAlignTasks: true});
|
||||
|
||||
this.alignTasksRequest =
|
||||
$.getJSON(`/api/projects/${this.props.projectId}/tasks/?ordering=-created_at`, tasks => {
|
||||
$.getJSON(`/api/projects/${this.props.projectId}/tasks/?ordering=-created_at&status=${statusCodes.COMPLETED}&available_assets=georeferenced_model.laz`, tasks => {
|
||||
if (Array.isArray(tasks)){
|
||||
this.setState({loadingAlignTasks: false, alignTasks: tasks.filter(t => t.status === statusCodes.COMPLETED && t.available_assets.indexOf("georeferenced_model.laz") !== -1)});
|
||||
this.setState({loadingAlignTasks: false, alignTasks: tasks});
|
||||
}else{
|
||||
this.setState({loadingAlignTasks: false});
|
||||
}
|
||||
|
|
Ładowanie…
Reference in New Issue