mirror of https://github.com/openspug/spug
A api update
parent
550c74ae89
commit
c5e68f7f13
|
@ -5,12 +5,20 @@ from apps.app.models import App
|
|||
|
||||
|
||||
class DeployRequest(models.Model, ModelMixin):
|
||||
STATUS = (
|
||||
('-2', '发布失败'),
|
||||
('-1', '已驳回'),
|
||||
('1', '待审核'),
|
||||
('2', '待发布'),
|
||||
('3', '已完成'),
|
||||
)
|
||||
app = models.ForeignKey(App, on_delete=models.CASCADE)
|
||||
name = models.CharField(max_length=50)
|
||||
extra1 = models.TextField()
|
||||
extra2 = models.TextField()
|
||||
extra = models.TextField()
|
||||
host_ids = models.TextField()
|
||||
desc = models.CharField(max_length=255, null=True)
|
||||
status = models.CharField(max_length=2, choices=STATUS)
|
||||
reason = models.CharField(max_length=255, null=True)
|
||||
|
||||
created_at = models.CharField(max_length=20, default=human_time)
|
||||
created_by = models.ForeignKey(User, models.PROTECT, related_name='+')
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
from django.urls import path
|
||||
|
||||
from .views import *
|
||||
|
||||
urlpatterns = [
|
||||
path('request/', RequestView.as_view()),
|
||||
]
|
|
@ -1,23 +1,54 @@
|
|||
from django.views.generic import View
|
||||
from django.db.models import F
|
||||
from libs import json_response, JsonParser, Argument
|
||||
from apps.deploy.models import DeployRequest
|
||||
from apps.app.models import App
|
||||
import json
|
||||
|
||||
|
||||
class RequestView(View):
|
||||
def get(self, request):
|
||||
requests = DeployRequest.objects.all()
|
||||
return json_response(requests)
|
||||
data = []
|
||||
for item in DeployRequest.objects.annotate(
|
||||
env_name=F('app__env__name'),
|
||||
app_name=F('app__name'),
|
||||
app_host_ids=F('app__host_ids'),
|
||||
app_extend=F('app__extend'),
|
||||
created_by_user=F('created_by__nickname')):
|
||||
tmp = item.to_dict()
|
||||
tmp['env_name'] = item.env_name
|
||||
tmp['app_name'] = item.app_name
|
||||
tmp['app_extend'] = item.app_extend
|
||||
tmp['extra'] = json.loads(item.extra)
|
||||
tmp['host_ids'] = json.loads(item.host_ids)
|
||||
tmp['app_host_ids'] = json.loads(item.app_host_ids)
|
||||
tmp['status_alias'] = item.get_status_display()
|
||||
tmp['created_by_user'] = item.created_by_user
|
||||
data.append(tmp)
|
||||
return json_response(data)
|
||||
|
||||
def post(self, request):
|
||||
form, error = JsonParser(
|
||||
Argument('id', type=int, required=False),
|
||||
Argument('app_id', type=int, help='缺少必要参数'),
|
||||
Argument('name', help='请输申请标题'),
|
||||
Argument('extra1', help='缺少必要参数'),
|
||||
Argument('extra2', help='缺少必要参数'),
|
||||
Argument('extra', type=list, help='缺少必要参数'),
|
||||
Argument('host_ids', type=list, filter=lambda x: len(x), help='请选择要部署的主机'),
|
||||
Argument('desc', required=False),
|
||||
).parse(request.body)
|
||||
if error is None:
|
||||
app = App.objects.filter(pk=form.app_id).first()
|
||||
if not app:
|
||||
return json_response(error='未找到该应用')
|
||||
form.status = '1' if app.is_audit else '2'
|
||||
form.extra = json.dumps(form.extra)
|
||||
form.host_ids = json.dumps(form.host_ids)
|
||||
DeployRequest.objects.create(**form)
|
||||
if form.id:
|
||||
DeployRequest.objects.filter(pk=form.id).update(
|
||||
created_by=request.user,
|
||||
reason=None,
|
||||
**form
|
||||
)
|
||||
else:
|
||||
DeployRequest.objects.create(created_by=request.user, **form)
|
||||
return json_response(error=error)
|
||||
|
|
|
@ -39,6 +39,7 @@ INSTALLED_APPS = [
|
|||
'apps.alarm',
|
||||
'apps.config',
|
||||
'apps.app',
|
||||
'apps.deploy',
|
||||
]
|
||||
|
||||
MIDDLEWARE = [
|
||||
|
|
|
@ -25,4 +25,5 @@ urlpatterns = [
|
|||
path('setting/', include('apps.setting.urls')),
|
||||
path('config/', include('apps.config.urls')),
|
||||
path('app/', include('apps.app.urls')),
|
||||
path('deploy/', include('apps.deploy.urls')),
|
||||
]
|
||||
|
|
Loading…
Reference in New Issue