diff --git a/spug_api/apps/app/models.py b/spug_api/apps/app/models.py index 6306238..d874626 100644 --- a/spug_api/apps/app/models.py +++ b/spug_api/apps/app/models.py @@ -73,11 +73,13 @@ class AppExtend1(models.Model, ModelMixin): class AppExtend2(models.Model, ModelMixin): app = models.OneToOneField(App, primary_key=True, on_delete=models.CASCADE) - actions = models.TextField() + server_actions = models.TextField() + host_actions = models.TextField() def to_dict(self, *args, **kwargs): tmp = super().to_dict(*args, **kwargs) - tmp['actions'] = json.loads(self.actions) + tmp['server_actions'] = json.loads(self.server_actions) + tmp['host_actions'] = json.loads(self.host_actions) return tmp def __repr__(self): diff --git a/spug_api/apps/app/views.py b/spug_api/apps/app/views.py index 0ce2d6f..6ff9a1d 100644 --- a/spug_api/apps/app/views.py +++ b/spug_api/apps/app/views.py @@ -47,11 +47,15 @@ class AppView(View): AppExtend1.objects.create(app=app, **extend_form) elif form.extend == '2': extend_form, error = JsonParser( - Argument('actions', type=list, filter=lambda x: len(x), help='请输入执行动作') + Argument('server_actions', type=list, help='请输入执行动作'), + Argument('host_actions', type=list, help='请输入执行动作') ).parse(request.body) if error: return json_response(error=error) - extend_form.actions = json.dumps(extend_form.actions) + if len(extend_form.server_actions) + len(extend_form.host_actions) == 0: + return json_response(error='请至少设置一个执行的动作') + extend_form.server_actions = json.dumps(extend_form.server_actions) + extend_form.host_actions = json.dumps(extend_form.host_actions) if form.id: App.objects.filter(pk=form.id).update(**form) AppExtend2.objects.filter(app_id=form.id).update(**extend_form) diff --git a/spug_api/apps/deploy/views.py b/spug_api/apps/deploy/views.py index 4888286..2d999e1 100644 --- a/spug_api/apps/deploy/views.py +++ b/spug_api/apps/deploy/views.py @@ -105,13 +105,22 @@ class RequestDetailView(View): return json_response(error='为找到指定发布申请') hosts = Host.objects.filter(id__in=json.loads(req.host_ids)) targets = [{'id': x.id, 'title': f'{x.name}({x.hostname}:{x.port})'} for x in hosts] + server_steps, host_steps = [], [] + if req.app.extend == '2': + for item in json.loads(req.app.extend_obj.actions): + if item['target'] == 'server': + server_steps.append(item['name']) + else: + host_steps.append(item['name']) return json_response({ 'app_name': req.app.name, 'env_name': req.app.env.name, 'status': req.status, 'type': req.type, 'status_alias': req.get_status_display(), - 'targets': targets + 'targets': targets, + 'server_steps': server_steps, + 'host_steps': host_steps }) def post(self, request, r_id):