A 发布申请批量删除支持按保留数量删除

pull/103/head
vapao 2020-05-28 11:00:44 +08:00
parent 122188c35e
commit 41dc95ad4d
2 changed files with 34 additions and 11 deletions

View File

@ -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)

View File

@ -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: (
<Form>
<Form.Item required label="截止日期" help={<div>将删除截止日期<span style={{color: 'red'}}>之前</span></div>}>
<DatePicker placeholder="请输入" onChange={val => this.setState({expire: val.format('YYYY-MM-DD')})}/>
<Form.Item label="截止日期" help={<div>将删除截止日期<span style={{color: 'red'}}>之前</span></div>}>
<DatePicker style={{width: 200}} placeholder="请输入" onChange={val => this.setState({expire: val.format('YYYY-MM-DD')})}/>
</Form.Item>
<Form.Item label="保留记录" help="每个应用每个环境仅保留最新的N条发布申请优先级高于截止日期">
<Input allowClear style={{width: 200}} placeholder="请输入保留个数" onChange={e => this.setState({count: e.target.value})} />
</Form.Item>
</Form>
),
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()
})
},
})
};