From 6a88fd2d60507ab855492802b479ee323d473d19 Mon Sep 17 00:00:00 2001 From: ibuler Date: Wed, 4 Apr 2018 08:47:02 +0800 Subject: [PATCH 1/3] =?UTF-8?q?[Update]=20=E4=BF=AE=E6=94=B9api=E6=9D=83?= =?UTF-8?q?=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/users/api.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/users/api.py b/apps/users/api.py index df2f2079c..69818f741 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') From d966e22cf906503e5905038e5ef9ef4788353165 Mon Sep 17 00:00:00 2001 From: ibuler Date: Wed, 4 Apr 2018 13:01:57 +0800 Subject: [PATCH 2/3] =?UTF-8?q?[Update]=20=E4=BF=AE=E6=94=B9=E5=B0=8Fbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/assets/models/asset.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/assets/models/asset.py b/apps/assets/models/asset.py index a5e578760..4aaa0287d 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')) From 1d7ba3e204579b00638aff52ec33b05878a600f9 Mon Sep 17 00:00:00 2001 From: ibuler Date: Wed, 4 Apr 2018 13:03:36 +0800 Subject: [PATCH 3/3] =?UTF-8?q?[Bugfix]=20=E4=BF=AE=E5=A4=8D=E5=B0=8Fbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/ops/celery/signal_handler.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/apps/ops/celery/signal_handler.py b/apps/ops/celery/signal_handler.py index 8309c0246..c64befbb7 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))