mirror of
https://gitlab.com/JKANetwork/powerfulcomputermanager.git
synced 2026-02-20 20:21:31 +01:00
200 lines
9.5 KiB
Python
200 lines
9.5 KiB
Python
#!/usr/bin/python3
|
|
# Version 0.5
|
|
import easygui
|
|
import configparser
|
|
import json
|
|
import requests
|
|
import subprocess, platform
|
|
|
|
def ping(host):
|
|
"""
|
|
Returns True if host (str) responds to a ping request.
|
|
Remember that a host may not respond to a ping (ICMP) request even if the host name is valid.
|
|
"""
|
|
# Option for the number of packets as a function of
|
|
param = '-n' if platform.system().lower()=='windows' else '-c'
|
|
# Building the command. Ex: "ping -c 1 google.com"
|
|
command = ['ping', param, '1', host]
|
|
return subprocess.call(command) == 0
|
|
|
|
## sendmenudot, returns of choice of a series of choices that has "." as delimiter inside it (For returning index)
|
|
def sendmenudot(text,title,choices):
|
|
menu = easygui.choicebox(text,title,choices)
|
|
if menu is not None:
|
|
return menu.split('.')[0]
|
|
else:
|
|
return menu
|
|
## showchoicesapi, apiurl has to have all (Inlcuding server part)
|
|
def showchoicesapi(text,title,apiurl,field='Name'):
|
|
try:
|
|
jsonobj = json.loads(requests.get(apiurl).text)
|
|
listitems = []
|
|
for ite in jsonobj:
|
|
listitems.append(ite[field])
|
|
return easygui.choicebox(text,title,listitems)
|
|
except:
|
|
easygui.msgbox(msg='Error en la aplicación al consultar', title=title, ok_button='OK')
|
|
return None
|
|
|
|
def sendsettoapi(suburl,goodtext): # Send a add/del/modify to API. Doesn't return more than "Valid" and "Not valid"
|
|
global c_server
|
|
try:
|
|
jsonobj = json.loads(requests.get(c_server+suburl).text)
|
|
if jsonobj is not None and jsonobj['RESULT'] is not None and jsonobj['RESULT'] == 'ERROR':
|
|
if jsonobj['TEXT']:
|
|
easygui.msgbox(jsonobj['TEXT'],"Error","Ok")
|
|
else:
|
|
easygui.msgbox("Error no especificado","Error","Ok")
|
|
return 1
|
|
else:
|
|
easygui.msgbox(goodtext,"Exito","Ok")
|
|
return 0
|
|
except:
|
|
easygui.msgbox("Error inesperado","Error","Ok")
|
|
return 1
|
|
|
|
|
|
config = configparser.ConfigParser()
|
|
config.read('configpcm.ini')
|
|
|
|
c_server = config['General']['server']
|
|
c_resources = config['General']['resources'].replace('\\\\','\\')
|
|
|
|
|
|
def menuprinc():
|
|
menu = sendmenudot("Menú principal","Seleccione opción",['1.Equipos','2.Grupos','3.Recetas','4.Reportes/Listados'])
|
|
if menu == '1':
|
|
mcomputers()
|
|
elif menu == '2':
|
|
mgroups()
|
|
elif menu == '3':
|
|
mcooks()
|
|
elif menu == '4':
|
|
mreports()
|
|
|
|
def mcomputers():
|
|
global c_server
|
|
menu = sendmenudot("Menú equipos","Seleccione opción",['1.Añadir equipo','2.Borrar equipo','3.Añadir equipo a un grupo','4.Listado de equipos'])
|
|
|
|
if menu == '1':
|
|
newcomputer = easygui.enterbox("Nombre del nuevo equipo","Añadir equipo")
|
|
if easygui.ynbox("Nombre del equipo: '"+newcomputer+"'. ¿Seguro?","Añadir equipo"):
|
|
sendsettoapi("/add/computer?ComputerName="+newcomputer,"Equipo añadido a la base de datos")
|
|
elif menu == '2':
|
|
whatc = showchoicesapi("Seleccione equipo a borrar","Borrar equipo",c_server+"/get/computers")
|
|
if whatc is not None and easygui.ynbox("Se va a borrar el equipo '"+whatc+"'. ¿Seguro?","Borrar equipo"):
|
|
sendsettoapi("/del/computer?ComputerName="+whatc,"Equipo borrado")
|
|
elif menu == '3':
|
|
m_addcomputergroup()
|
|
elif menu == '4':
|
|
showchoicesapi("Lista de equipos","Listado de equipos",c_server+"/get/computers")
|
|
elif menu is None:
|
|
menuprinc()
|
|
return
|
|
mcomputers()
|
|
|
|
def mgroups():
|
|
global c_server
|
|
menu = sendmenudot("Menú grupos","Seleccione opción",['1.Añadir grupo','2.Borrar grupo','3.Añadir equipo a un grupo','4.Quitar equipo de un grupo','5.Listado de grupos','6.Listado de equipos de un grupo'])
|
|
if menu == '1':
|
|
newgroup = easygui.enterbox("Nombre del nuevo grupo","Añadir grupo")
|
|
if easygui.ynbox("Nombre del grupo: '"+newgroup+"'. ¿Seguro?","Añadir grupo"):
|
|
sendsettoapi("/add/group?GroupName="+newgroup,"Grupo añadido a la base de datos")
|
|
elif menu == '2':
|
|
group = showchoicesapi("Lista de grupos. Selecciona uno para borrarlo","Borrar grupo",c_server+"/get/groups",'Name')
|
|
if group is not None:
|
|
if easygui.ynbox("Borrar grupo '"+group+"'. ¿Seguro?","Borrar grupo"):
|
|
sendsettoapi("/del/group?GroupName="+group,"Grupo borrado")
|
|
elif menu == '3':
|
|
m_addcomputergroup()
|
|
elif menu == '4':
|
|
m_delcomputergroup()
|
|
elif menu == '5':
|
|
showchoicesapi("Listado de grupos","Listado de grupos",c_server+"/get/groups",field='Name')
|
|
elif menu == '6':
|
|
group = showchoicesapi("Lista de grupos","Listado de equipos de un grupo",c_server+"/get/groups")
|
|
showchoicesapi("Lista de equipos del grupo "+group,"Listado de equipos de un grupo",c_server+"/get/computersgrp?GroupName="+group)
|
|
elif menu is None:
|
|
menuprinc()
|
|
return
|
|
mcomputers()
|
|
|
|
def mcooks():
|
|
global c_server
|
|
global c_resources
|
|
menu = sendmenudot("Menú recetas","Seleccione opción",['1.Detalles de una receta','2.Renombrar receta','3.Añadir receta a un grupo','4.Eliminar receta de un grupo','5.Grupos de una receta'])
|
|
if menu == '1':
|
|
cook = showchoicesapi("Lista de recetas implementadas en algún grupo. Selecciona una para ver sus datos","Detalles de una receta",c_server+"/get/cookall",'CookName')
|
|
if cook is not None:
|
|
showchoicesapi("Lista de grupos de la receta "+cook,"Listado de grupos de una receta",c_server+"/get/grpcook?CookName="+cook)
|
|
elif menu == '2':
|
|
cook = showchoicesapi("Lista de recetas implementadas en algún grupo. Selecciona una para renombrarla. Si la receta no está en ningún grupo, se puede renombrar desde fuera.","Renombrar receta",c_server+"/get/cookall",'CookName')
|
|
if cook is not None:
|
|
newname = easygui.enterbox("Nombre de la nueva receta","Renombrar receta")
|
|
if newname is not None and easygui.ynbox("Cambiar nombre de la receta '"+cook+"' por '"+newname+"'. ¿Seguro?","Renombrar receta"):
|
|
sendsettoapi("/upd/cookname?CookName="+cook+"&CookNewName="+newname,"Receta cambiada de nombre")
|
|
elif menu == '3':
|
|
cook = easygui.enterbox("Nombre de la receta","Añadir receta a un grupo")
|
|
group = showchoicesapi("Lista de grupos existentes","Listado de grupos",c_server+"/get/groups")
|
|
if easygui.ynbox("Añadir la receta "+cook+" al grupo '"+group+"'. ¿Seguro?","Añadir receta a un grupo"):
|
|
sendsettoapi("/add/cookgrp?CookName="+cook+"&GroupName="+group,"Receta añadida al grupo")
|
|
elif menu == '4':
|
|
cook = showchoicesapi("Lista de recetas implementadas en algún grupo. Selecciona una para elegir un grupo de esa receta para borrar. Si la receta no está en ningún grupo, no saldrá.","Eliminar receta de un grupo",c_server+"/get/cookall",'CookName')
|
|
if cook is not None:
|
|
group = showchoicesapi("Lista de grupos que tienen esa receta. Selecciona el grupo a quitar","Eliminar receta de un grupo",c_server+"/get/grpcook?CookName="+cook,'Name')
|
|
if group is not None and easygui.ynbox("Se va a quitar la receta "+cook+" del grupo "+group+". ¿Seguro?","Eliminar receta de un grupo"):
|
|
sendsettoapi("/del/cookgrp?CookName="+cook+"&GroupName="+group,"Receta quitada del grupo")
|
|
elif menu == '5':
|
|
cook = showchoicesapi("Lista de recetas implementadas en algún grupo. Selecciona una para elegir un grupo de esa receta para borrar. Si la receta no está en ningún grupo, no saldrá.","Eliminar receta de un grupo",c_server+"/get/cookall",'CookName')
|
|
if cook is not None:
|
|
showchoicesapi("Lista de grupos que tienen esa receta. Selecciona el grupo a quitar","Eliminar receta de un grupo",c_server+"/get/grpcook?CookName="+cook,'Name')
|
|
elif menu is None:
|
|
menuprinc()
|
|
return
|
|
|
|
mcooks()
|
|
|
|
def mreports():
|
|
global c_server
|
|
global c_resources
|
|
menu = sendmenudot("Menú reportes","Seleccione opción",['1.Listado de equipos','2.Listado de grupos','3.Equipos y recetas de un grupo','4.Grupos de una receta'])
|
|
|
|
if menu == '1': #Listado de equipos
|
|
showchoicesapi("Lista de equipos","Listado de equipos",c_server+"/get/computers")
|
|
elif menu == '2': #Listado de grupos
|
|
showchoicesapi("Lista de grupos","Listado de grupos",c_server+"/get/groups")
|
|
elif menu == '3':
|
|
group = showchoicesapi("Lista de grupos","Listado de grupos",c_server+"/get/groups")
|
|
showchoicesapi("Lista de equipos del grupo "+group,"Listado de equipos y recetas de un grupo",c_server+"/get/computersgrp?GroupName="+group)
|
|
showchoicesapi("Lista de recetas del grupo "+group,"Listado de equipos y recetas de un grupo",c_server+"/get/cookgrp?GroupName="+group,'CookName')
|
|
elif menu == '4':
|
|
cook = showchoicesapi("Lista de recetas con grupo. Selecciona una para ver sus grupos","Listado de grupos de una receta",c_server+"/get/cookall",'CookName')
|
|
if cook is not None:
|
|
showchoicesapi("Lista de grupos de la receta "+cook,"Listado de grupos de una receta",c_server+"/get/grpcook?CookName="+cook)
|
|
elif menu is None:
|
|
menuprinc()
|
|
return
|
|
mreports()
|
|
|
|
|
|
def m_addcomputergroup():
|
|
whatc = howchoicesapi("Seleccione equipo a añadir a un grupo","Añadir Equipo a grupo",c_server+"/get/computers")
|
|
if whatc is None:
|
|
return
|
|
whatg = showchoicesapi("Seleccione grupo a ser añadido","Añadir Equipo a grupo",c_server+"/get/groups")
|
|
if whatg is None:
|
|
return
|
|
sendsettoapi("/add/grpcomputer?ComputerName="+whatc+"&GroupName="+whatg,"Equipo añadido al grupo")
|
|
|
|
def m_delcomputergroup():
|
|
group = showchoicesapi("Seleccione grupo del que quitar un equipo","Borrar equipo de un grupo",c_server+"/get/groups")
|
|
if group is None:
|
|
return
|
|
computer = showchoicesapi("Seleccione grupo a ser quitado","Borrar equipo de un grupo",c_server+"/get/computersgrp?GroupName="+group)
|
|
if computer is None:
|
|
return
|
|
if easygui.ynbox("Quitar el equipo "+computer+" del grupo '"+group+"'. ¿Seguro?","Borrar equipo de un grupo"):
|
|
sendsettoapi("/del/grpcomputer?ComputerName="+computer+"&GroupName="+group,"Equipo quitado del grupo")
|
|
|
|
menuprinc()
|