kopia lustrzana https://github.com/OpenDroneMap/WebODM
Plugins API signals, OAM plugin DS cleanup
rodzic
8f0791aacc
commit
37b4dff624
|
@ -499,6 +499,9 @@ class Task(models.Model):
|
|||
|
||||
self.update_available_assets_field()
|
||||
self.save()
|
||||
|
||||
from app.plugins import signals as plugin_signals
|
||||
plugin_signals.task_completed.send_robust(sender=self.__class__, task_id=self.id)
|
||||
else:
|
||||
# FAILED, CANCELED
|
||||
self.save()
|
||||
|
@ -576,6 +579,10 @@ class Task(models.Model):
|
|||
|
||||
|
||||
def delete(self, using=None, keep_parents=False):
|
||||
task_id = self.id
|
||||
from app.plugins import signals as plugin_signals
|
||||
plugin_signals.task_removing.send_robust(sender=self.__class__, task_id=task_id)
|
||||
|
||||
directory_to_delete = os.path.join(settings.MEDIA_ROOT,
|
||||
task_directory_path(self.id, self.project.id))
|
||||
|
||||
|
@ -587,6 +594,8 @@ class Task(models.Model):
|
|||
except FileNotFoundError as e:
|
||||
logger.warning(e)
|
||||
|
||||
plugin_signals.task_removed.send_robust(sender=self.__class__, task_id=task_id)
|
||||
|
||||
def set_failure(self, error_message):
|
||||
logger.error("FAILURE FOR {}: {}".format(self, error_message))
|
||||
self.last_error = error_message
|
||||
|
|
|
@ -67,6 +67,14 @@ class DataStore(ABC):
|
|||
def has_key(self, key):
|
||||
return self.get_datum(key) is not None
|
||||
|
||||
def del_key(self, key):
|
||||
datum = self.get_datum(key)
|
||||
if datum is not None:
|
||||
datum.delete()
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
|
||||
class UserDataStore(DataStore):
|
||||
def __init__(self, namespace, user):
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
import django.dispatch
|
||||
|
||||
task_completed = django.dispatch.Signal(providing_args=["task_id"])
|
||||
task_removing = django.dispatch.Signal(providing_args=["task_id"])
|
||||
task_removed = django.dispatch.Signal(providing_args=["task_id"])
|
|
@ -7,5 +7,6 @@ module.exports = {
|
|||
},
|
||||
setupFiles: ["<rootDir>/app/static/app/js/tests/setup/shims.js",
|
||||
"<rootDir>/app/static/app/js/tests/setup/setupTests.js",
|
||||
"<rootDir>/app/static/app/js/tests/setup/browserMock.js"]
|
||||
"<rootDir>/app/static/app/js/tests/setup/browserMock.js"],
|
||||
testURL: "http://localhost:8000/"
|
||||
};
|
|
@ -10,11 +10,12 @@ from rest_framework import status
|
|||
from rest_framework.response import Response
|
||||
|
||||
from app.models import ImageUpload
|
||||
from app.plugins import GlobalDataStore, get_site_settings
|
||||
from app.plugins import GlobalDataStore, get_site_settings, signals as plugin_signals
|
||||
from app.plugins.views import TaskView
|
||||
from app.plugins.worker import task
|
||||
|
||||
from webodm import settings
|
||||
from django.dispatch import receiver
|
||||
|
||||
import requests
|
||||
|
||||
|
@ -35,11 +36,15 @@ def get_task_info(task_id):
|
|||
'error': ''
|
||||
})
|
||||
|
||||
|
||||
def set_task_info(task_id, json):
|
||||
return ds.set_json(get_key_for(task_id, "info"), json)
|
||||
|
||||
|
||||
# TODO: task info cleanup when task is deleted via signal
|
||||
@receiver(plugin_signals.task_removed, dispatch_uid="oam_on_task_removed")
|
||||
def on_task_removed(sender, task_id, **kwargs):
|
||||
logger.info("Cleaning up OAM datastore for task {}".format(str(task_id)))
|
||||
ds.del_key(get_key_for(task_id, "info"))
|
||||
|
||||
|
||||
class Info(TaskView):
|
||||
|
@ -85,6 +90,7 @@ class Info(TaskView):
|
|||
|
||||
return Response(task_info, status=status.HTTP_200_OK)
|
||||
|
||||
|
||||
class JSONSerializer(serializers.Serializer):
|
||||
oamParams = serializers.JSONField(help_text="OpenAerialMap share parameters (sensor, title, provider, etc.)")
|
||||
|
||||
|
|
|
@ -30,7 +30,11 @@ class Plugin(PluginBase):
|
|||
def load_buttons_cb(request):
|
||||
if request.user.is_authenticated:
|
||||
ds = self.get_user_data_store(request.user)
|
||||
return {'token': ds.get_string('token')}
|
||||
token = ds.get_string('token')
|
||||
if token == '':
|
||||
return False
|
||||
|
||||
return {'token': token}
|
||||
else:
|
||||
return False
|
||||
|
||||
|
|
Ładowanie…
Reference in New Issue