delete batchid na gui

This commit is contained in:
David Brazda
2023-11-23 14:19:13 +01:00
parent c84fefe6a6
commit b087024ae6
6 changed files with 123 additions and 3 deletions

View File

@ -343,7 +343,7 @@ def capsule(target: object, db: object, inter_batch_params: dict = None):
print(f"Daily report ERROR - {val}")
except Exception as e:
print("Nepodarilo se vytvorit report image", str(e)+format_exc())
target.release()
print("Runner STOPPED")
#vrátí konkrétní sadu testlistu
@ -519,6 +519,8 @@ def batch_run_manager(id: UUID, runReq: RunRequest, rundays: list[RunDay]):
#i.history += str(runner.__dict__)+"<BR>"
db.save()
inter_batch_params = None
runReq = None
#vytvoreni report image pro batch
try:
res, val = generate_trading_report_image(batch_id=batch_id)
@ -1077,6 +1079,23 @@ def delete_report_files(id):
print(f"An error occurred while deleting the file: {e}")
return (-1, str(e))
#delete runners by BatchID
#NOTE: Batch image is deleted on runners level - uvidime jak to bude moc overhead
def delete_archived_runners_byBatchID(batch_id: str):
res, runner_ids = get_archived_runnerslist_byBatchID(batch_id)
if res != 0:
print(f"no batch {batch_id} found")
return -1, f"no batch {batch_id} found"
res, val = delete_archived_runners_byIDs(runner_ids)
if res == 0:
return 0, batch_id
else:
print(f"error delete")
return res, f"ERROR deleting {batch_id} : {val}"
#delete runner in archive and archive detail and runner logs
#predelano do JEDNE TRANSAKCE
def delete_archived_runners_byIDs(ids: list[UUID]):
@ -1096,8 +1115,9 @@ def delete_archived_runners_byIDs(ids: list[UUID]):
c.execute("SELECT COUNT(*) FROM runner_header WHERE batch_id = ?", (batch_id,))
count = c.fetchone()[0]
if count == 1:
# If it's the last record, call delete_report_files
# If it's the last record, call delete_batch_report_files
delete_report_files(batch_id)
print("Batch report file deleted")
resh = c.execute(f"DELETE from runner_header WHERE runner_id='{str(id)}';")
print("header deleted",resh.rowcount)

View File

@ -440,6 +440,17 @@ def _delete_archived_runners_byIDs(runner_ids: list[UUID]):
elif res < 0:
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail=f"Error: {res}:{id}")
#delete archive runner from header and detail
@app.delete("/archived_runners/batch/{batch_id}", dependencies=[Depends(api_key_auth)], status_code=status.HTTP_200_OK)
def _delete_archived_runners_byBatchID(batch_id: str):
res, id = cs.delete_archived_runners_byBatchID(batch_id=batch_id)
if res == 0: return id
elif res == -1:
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail=f"Error: {res}:{id}")
else:
raise HTTPException(status_code=status.HTTP_406_NOT_ACCEPTABLE, detail=f"Error not changed: {res}:{batch_id}:{id}")
#WIP - TOM indicator preview from frontend
#return indicator value for archived runner
@app.put("/archived_runners/{runner_id}/previewindicator", dependencies=[Depends(api_key_auth)], status_code=status.HTTP_200_OK)

View File

@ -302,6 +302,7 @@
<div id="controls">
<button id="button_edit_arch" class="btn btn-outline-success btn-sm">Edit(a)</button>
<button id="button_delete_arch" class="btn btn-outline-success btn-sm">Delete(d)</button>
<button id="button_delete_batch" class="btn btn-outline-success btn-sm">Delete Batch(b)</button>
<button id="button_show_arch" class="btn btn-outline-success btn-sm">Show(w)</button>
<button id="button_refresh" class="refresh btn btn-outline-success btn-sm">Refresh</button>
<button id="button_compare_arch" class="refresh btn btn-outline-success btn-sm">Compare</button>
@ -366,6 +367,28 @@
</form>
</div>
</div>
<div id="delModalBatch" class="modal fade">
<div class="modal-dialog">
<form method="post" id="delFormBatch">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title"><i class="fa fa-plus"></i> Delete Batch</h4>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<div class="form-group">
<label for="batch_id_del" class="form-label">Batch ID</label>
<input type="text" class="form-control" id="batch_id_del" name="delidarchive" placeholder="batch id" readonly>
</div>
</div>
<div class="modal-footer">
<input type="submit" name="delete" id="deletebatch" class="btn btn-primary" value="Delete" />
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
</div>
</div>
</form>
</div>
</div>
<div id="logModal" class="modal fade" style="--bs-modal-width: 825px;">
<div class="modal-dialog">
<div class="modal-content">

View File

@ -210,6 +210,7 @@ $(document).ready(function () {
$('#button_runagain_arch').attr('disabled','disabled');
$('#button_show_arch').attr('disabled','disabled');
$('#button_delete_arch').attr('disabled','disabled');
$('#button_delete_batch').attr('disabled','disabled');
$('#button_analyze').attr('disabled','disabled');
$('#button_edit_arch').attr('disabled','disabled');
$('#button_compare_arch').attr('disabled','disabled');
@ -222,6 +223,7 @@ $(document).ready(function () {
$('#button_analyze').attr('disabled','disabled');
$('#button_runagain_arch').attr('disabled','disabled');
$('#button_delete_arch').attr('disabled','disabled');
$('#button_delete_batch').attr('disabled','disabled');
$('#button_edit_arch').attr('disabled','disabled');
$('#button_compare_arch').attr('disabled','disabled');
} else {
@ -231,6 +233,7 @@ $(document).ready(function () {
$('#button_show_arch').attr('disabled',false);
$('#button_runagain_arch').attr('disabled',false);
$('#button_delete_arch').attr('disabled',false);
$('#button_delete_batch').attr('disabled',false);
$('#button_edit_arch').attr('disabled',false);
$('#button_compare_arch').attr('disabled',false);
}
@ -532,7 +535,56 @@ $(document).ready(function () {
refresh_logfile()
});
//delete button
//delete batch button
$('#button_delete_batch').click(function () {
row = archiveRecords.row('.selected').data();
if (row == undefined || row.batch_id == undefined) {
return
}
$('#batch_id_del').val(row.batch_id);
rows = archiveRecords.rows('.selected');
if (rows == undefined) {
return
}
$('#listofids').html("");
window.$('#delModalBatch').modal('show');
});
//delete batch modal
$("#delModalBatch").on('submit','#delFormBatch', function(event){
event.preventDefault();
row = archiveRecords.row('.selected').data();
if (row == undefined || row.batch_id == undefined) {
return
}
$.ajax({
url:"/archived_runners/batch/"+row.batch_id,
beforeSend: function (xhr) {
xhr.setRequestHeader('X-API-Key',
API_KEY); },
method:"DELETE",
contentType: "application/json",
dataType: "json",
data: JSON.stringify(row.batch_id),
success:function(data){
$('#delFormBatch')[0].reset();
window.$('#delModalBatch').modal('hide');
$('#button_delete_batch').attr('disabled', false);
//console.log(data)
archiveRecords.ajax.reload();
},
error: function(xhr, status, error) {
var err = eval("(" + xhr.responseText + ")");
window.alert(JSON.stringify(xhr));
console.log(JSON.stringify(xhr));
$('#button_delete_batch').attr('disabled', false);
archiveRecords.ajax.reload();
}
})
});
//delete arch button
$('#button_delete_arch').click(function () {
rows = archiveRecords.rows('.selected');
if (rows == undefined) {

View File

@ -902,6 +902,9 @@ Mousetrap.bind('e', function() {
Mousetrap.bind('d', function() {
$( "#button_delete_arch" ).trigger( "click" );
});
Mousetrap.bind('b', function() {
$( "#button_delete_batch" ).trigger( "click" );
});
Mousetrap.bind('c', function() {
$( "#button_copy" ).trigger( "click" );
});

View File

@ -509,6 +509,17 @@ class Strategy:
# self.order_notifs.stop()
# self.dataloader.stop()
def release(self):
#release large variables
self.bt = None
self.btdata= None
self.dataloader = None
self.state = None
self.rtqueue = None
self._streams = None
#for order updates from LIVE or BACKTEST
#updates are sent only for SYMBOL of strategy