diff --git a/apps/assets/models/asset.py b/apps/assets/models/asset.py index a5e57876051bc0d6de88c724cfd581df8d6d850b..4aaa0287dbbca0cf7d4de5fb6d1328b5ef4217b3 100644 --- a/apps/assets/models/asset.py +++ b/apps/assets/models/asset.py @@ -49,7 +49,7 @@ class Asset(models.Model): ip = models.GenericIPAddressField(max_length=32, verbose_name=_('IP'), db_index=True) hostname = models.CharField(max_length=128, unique=True, verbose_name=_('Hostname')) port = models.IntegerField(default=22, verbose_name=_('Port')) - domain = models.ForeignKey("assets.Domain", null=True, blank=True, related_name='assets', verbose_name=_("Domain")) + domain = models.ForeignKey("assets.Domain", null=True, blank=True, related_name='assets', verbose_name=_("Domain"), on_delete=models.SET_NULL) nodes = models.ManyToManyField('assets.Node', default=default_node, related_name='assets', verbose_name=_("Nodes")) is_active = models.BooleanField(default=True, verbose_name=_('Is active')) diff --git a/apps/ops/celery/signal_handler.py b/apps/ops/celery/signal_handler.py index 8309c0246489d8b09072daefc6cf21e9a6f26386..c64befbb7faaba56c9fd6988129e07030053e45c 100644 --- a/apps/ops/celery/signal_handler.py +++ b/apps/ops/celery/signal_handler.py @@ -3,6 +3,7 @@ import os import datetime import sys +import time from django.conf import settings from django.utils import timezone @@ -53,10 +54,19 @@ def after_task_publish_signal_handler(sender, headers=None, **kwargs): CeleryTask.objects.create( id=headers["id"], status=CeleryTask.WAITING, name=headers["task"] ) + cache.set(headers["id"], True, 3600) @task_prerun.connect def pre_run_task_signal_handler(sender, task_id=None, task=None, **kwargs): + time.sleep(0.1) + for i in range(5): + if cache.get(task_id, False): + break + else: + time.sleep(0.1) + continue + t = get_object_or_none(CeleryTask, id=task_id) if t is None: logger.warn("Not get the task: {}".format(task_id)) diff --git a/apps/users/api.py b/apps/users/api.py index df2f2079cdd8414286b9bcb1ed01cd8042ac9106..69818f741b7af7d8e842b8835599689b73133dc0 100644 --- a/apps/users/api.py +++ b/apps/users/api.py @@ -28,7 +28,7 @@ class UserViewSet(IDInFilterMixin, BulkModelViewSet): queryset = User.objects.exclude(role="App") # queryset = User.objects.all().exclude(role="App").order_by("date_joined") serializer_class = UserSerializer - permission_classes = (IsSuperUser, IsAuthenticated) + permission_classes = (IsSuperUserOrAppUser, IsAuthenticated) filter_fields = ('username', 'email', 'name', 'id')