mirror of https://github.com/openspug/spug
A 发布申请批量删除支持按保留数量删除
parent
122188c35e
commit
41dc95ad4d
|
@ -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)
|
||||
|
||||
|
||||
|
|
|
@ -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()
|
||||
})
|
||||
},
|
||||
})
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue