From 41dc95ad4d8c225ef9d437ceeb4e531d0bfa1829 Mon Sep 17 00:00:00 2001 From: vapao Date: Thu, 28 May 2020 11:00:44 +0800 Subject: [PATCH] =?UTF-8?q?A=20=E5=8F=91=E5=B8=83=E7=94=B3=E8=AF=B7?= =?UTF-8?q?=E6=89=B9=E9=87=8F=E5=88=A0=E9=99=A4=E6=94=AF=E6=8C=81=E6=8C=89?= =?UTF-8?q?=E4=BF=9D=E7=95=99=E6=95=B0=E9=87=8F=E5=88=A0=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- spug_api/apps/deploy/views.py | 20 +++++++++++++++-- spug_web/src/pages/deploy/request/index.js | 25 ++++++++++++++-------- 2 files changed, 34 insertions(+), 11 deletions(-) diff --git a/spug_api/apps/deploy/views.py b/spug_api/apps/deploy/views.py index 5a0024f..11be404 100644 --- a/spug_api/apps/deploy/views.py +++ b/spug_api/apps/deploy/views.py @@ -10,6 +10,7 @@ from apps.deploy.models import DeployRequest from apps.app.models import Deploy from apps.deploy.utils import deploy_dispatch from apps.host.models import Host +from collections import defaultdict from threading import Thread from datetime import datetime import json @@ -109,14 +110,29 @@ class RequestView(View): def delete(self, request): form, error = JsonParser( Argument('id', type=int, required=False), - Argument('expire', required=False) + Argument('expire', required=False), + Argument('count', type=int, required=False, help='请输入数字') ).parse(request.GET) if error is None: if form.id: DeployRequest.objects.filter(pk=form.id, status__in=('0', '1', '-1')).delete() - if form.expire: + return json_response() + elif form.count: + if form.count < 1: + return json_response(error='请输入正确的保留数量') + counter, ids = defaultdict(int), [] + for item in DeployRequest.objects.all(): + if counter[item.deploy_id] == form.count: + ids.append(item.id) + else: + counter[item.deploy_id] += 1 + count, _ = DeployRequest.objects.filter(id__in=ids).delete() + return json_response(count) + elif form.expire: count, _ = DeployRequest.objects.filter(created_at__lt=form.expire).delete() return json_response(count) + else: + return json_response(error='请至少使用一个删除条件') return json_response(error=error) diff --git a/spug_web/src/pages/deploy/request/index.js b/spug_web/src/pages/deploy/request/index.js index 988b99b..a2584a1 100644 --- a/spug_web/src/pages/deploy/request/index.js +++ b/spug_web/src/pages/deploy/request/index.js @@ -5,7 +5,7 @@ */ import React from 'react'; import { observer } from 'mobx-react'; -import { Button, Select, DatePicker, Radio, Row, Col, Modal, Form, message } from 'antd'; +import { Button, Select, DatePicker, Radio, Row, Col, Modal, Form, Input, message } from 'antd'; import { SearchForm, AuthFragment, AuthCard } from 'components'; import SelectApp from './SelectApp'; import Ext1Form from './Ext1Form'; @@ -22,7 +22,8 @@ class Index extends React.Component { constructor(props) { super(props); this.state = { - expire: undefined + expire: undefined, + count: '' } } @@ -41,16 +42,22 @@ class Index extends React.Component { title: '批量删除发布申请', content: (
- 将删除截止日期之前的所有发布申请记录。}> - this.setState({expire: val.format('YYYY-MM-DD')})}/> + 将删除截止日期之前的所有发布申请记录。}> + this.setState({expire: val.format('YYYY-MM-DD')})}/> + + + this.setState({count: e.target.value})} /> ), - onOk: () => http.delete(`/api/deploy/request/?expire=${this.state.expire}`) - .then(res => { - message.success(`成功删除${res}条记录`); - store.fetchRecords() - }), + onOk: () => { + const {expire, count} = this.state; + return http.delete('/api/deploy/request/', {params: {expire, count}}) + .then(res => { + message.success(`成功删除${res}条记录`); + store.fetchRecords() + }) + }, }) };