From ae55a617d021e670b51a1f09cb66bcfc872a8bf2 Mon Sep 17 00:00:00 2001 From: vapao Date: Tue, 23 Mar 2021 11:50:56 +0800 Subject: [PATCH] update --- spug_api/apps/repository/urls.py | 1 + spug_api/apps/repository/views.py | 19 ++++++- .../src/pages/deploy/repository/Detail.js | 56 ++++++++++--------- spug_web/src/pages/deploy/repository/Table.js | 18 +----- 4 files changed, 52 insertions(+), 42 deletions(-) diff --git a/spug_api/apps/repository/urls.py b/spug_api/apps/repository/urls.py index 2c66d75..6132a1f 100644 --- a/spug_api/apps/repository/urls.py +++ b/spug_api/apps/repository/urls.py @@ -7,4 +7,5 @@ from .views import * urlpatterns = [ path('', RepositoryView.as_view()), + path('request/', get_requests), ] diff --git a/spug_api/apps/repository/views.py b/spug_api/apps/repository/views.py index ec77176..6a5e1b1 100644 --- a/spug_api/apps/repository/views.py +++ b/spug_api/apps/repository/views.py @@ -5,6 +5,7 @@ from django.views.generic import View from django.db.models import F from libs import json_response, JsonParser, Argument from apps.repository.models import Repository +from apps.deploy.models import DeployRequest from apps.repository.utils import dispatch from apps.app.models import Deploy from threading import Thread @@ -66,5 +67,21 @@ class RepositoryView(View): repository = Repository.objects.filter(pk=form.id).first() if not repository: return json_response(error='未找到指定构建记录') - + if repository.deployrequest_set.exists(): + return json_response(error='已关联发布申请无法删除') + repository.delete() return json_response(error=error) + + +def get_requests(request): + form, error = JsonParser( + Argument('repository_id', type=int, help='参数错误') + ).parse(request.GET) + if error is None: + requests = [] + for item in DeployRequest.objects.filter(repository_id=form.repository_id): + data = item.to_dict(selects=('id', 'name', 'created_at')) + data['host_ids'] = json.loads(item.host_ids) + data['status_alias'] = item.get_status_display() + requests.append(data) + return json_response(requests) diff --git a/spug_web/src/pages/deploy/repository/Detail.js b/spug_web/src/pages/deploy/repository/Detail.js index f537062..3a5334e 100644 --- a/spug_web/src/pages/deploy/repository/Detail.js +++ b/spug_web/src/pages/deploy/repository/Detail.js @@ -1,44 +1,45 @@ import React, { useState, useEffect } from 'react'; import { observer } from 'mobx-react'; -import { Drawer, Descriptions, Table } from 'antd'; +import { Drawer, Descriptions, Table, Button } from 'antd'; import { http } from 'libs'; import store from './store'; -import styles from './index.module.less'; export default observer(function (props) { const [fetching, setFetching] = useState(true); - const [order, setOrder] = useState({}); + const [requests, setRequests] = useState([]); + const [loading, setLoading] = useState(false); useEffect(() => { if (store.record.id && props.visible) { - + http.get('/api/repository/request/', {params: {repository_id: store.record.id}}) + .then(res => setRequests(res)) + .finally(() => setFetching(false)) } }, [props.visible]) - const columns = [{ - title: '应用名称', - key: 'name', - }, { - title: '商品主图', - dataIndex: 'pic', - }, { - title: '单价', - dataIndex: 'price', - align: 'right', - }, { - title: '数量', - key: 'number', - align: 'right', - }, { - title: '金额', - key: 'money', - align: 'right', - }] + function handleDelete() { + setLoading(true); + http.delete('/api/repository/', {params: {id: store.record.id}}) + .then(() => { + store.fetchRecords(); + store.detailVisible = false + }) + .finally(() => setLoading(false)) + } const record = store.record; const [extra1, extra2, extra3] = record.extra || []; return ( - store.detailVisible = false}> + store.detailVisible = false} + footer={( +
+ Tips: 已关联发布申请的构建版本无法删除。 + +
+ )}> 基本信息}> {record.app_name} {record.env_name} @@ -55,7 +56,12 @@ export default observer(function (props) { {record.created_by_user} 发布记录} style={{marginTop: 24}}/> - +
+ + `${v.length}台`}/> + + +
) }) \ No newline at end of file diff --git a/spug_web/src/pages/deploy/repository/Table.js b/spug_web/src/pages/deploy/repository/Table.js index ea3c40f..6518d33 100644 --- a/spug_web/src/pages/deploy/repository/Table.js +++ b/spug_web/src/pages/deploy/repository/Table.js @@ -14,20 +14,6 @@ import store from './store'; function ComTable() { const [loading, setLoading] = useState(); - function handleDelete(info) { - Modal.confirm({ - title: '删除确认', - content: `确定要删除【${info['name']}】?`, - onOk: () => { - return http.delete('/api/config/environment/', {params: {id: info.id}}) - .then(() => { - message.success('删除成功'); - store.fetchRecords() - }) - } - }) - } - function handleRebuild(info) { if (info.status === '5') { Modal.confirm({ @@ -71,10 +57,10 @@ function ComTable() { showTotal: total => `共 ${total} 条`, pageSizeOptions: ['10', '20', '50', '100'] }}> - + - +