Seprate firmware related functions

Code cleanup
Allow deletiong of firmwares
This commit is contained in:
sepehr 2024-11-29 17:07:59 +03:00
parent 30d60a72ad
commit bee8869789
7 changed files with 401 additions and 357 deletions

View file

@ -8,12 +8,13 @@
from flask import request, jsonify,session,send_file
from playhouse.shortcuts import model_to_dict
import datetime
from libs.db import db_tasks,db_sysconfig,db_device,db_firmware,db_syslog
from libs import util
from libs.db import db_tasks,db_sysconfig,db_firmware,db_syslog
from libs import util,firm_lib
from libs.webutil import app, login_required, get_myself,buildResponse,get_myself,get_ip,get_agent
import bgtasks
import re
import logging
log = logging.getLogger("api.firmware")
import json
@ -85,7 +86,7 @@ def get_firms():
def get_downloadable_firms():
"""get list of availble Firmwares from Mikrotik Official webstire"""
input = request.json or {}
versions=util.get_mikrotik_versions()
versions=firm_lib.get_mikrotik_versions()
versions = sorted(versions, key=lambda x: [int(y) if y.isdigit() else int(re.sub(r'\D', '', y)) for y in x.split('.')])
return buildResponse({"versions":versions}, 200)
@ -105,6 +106,24 @@ def download_firmware_to_repository():
else:
return buildResponse({'status': status}, 200)
@app.route('/api/firmware/delete_from_repository', methods = ['POST'])
@login_required(role='admin',perm={'settings':'full'})
def delete_from_repository():
"""Delete File from Repo"""
input = request.json or {}
id = input.get('id',False)
firmware=db_firmware.get_firm(id)
log.error(firmware)
if firmware:
#Delete file from location
location=firmware.location
res=util.delete_file(location)
log.error(res)
if res:
firmware.delete_instance()
return buildResponse({'status': True}, 200)
return buildResponse({'status': False},200,error="Firm Already deleted")
@app.route('/api/firmware/update_firmware_settings', methods = ['POST'])
@login_required(role='admin',perm={'settings':'write'})
def update_firmware_settings():