#print ("<td>") #print ("<b>Chiavi selezionate per l'eliminazione:</b>") #print ("</td>") #print ("<td>") #for i in range (len(flt.DecodeList(MyDB.keys(RedisKey)))): # print (mhl.MyTextForm(FormName,flt.DecodeList(MyDB.keys(RedisKey))[i],"50","required","readonly")) #print ("</td>") #print ("</tr>") # .. o questa versione, dove, oltre al filtro, si devono anche selezionare una per una: print("<tr>") print("<td>") print("<b>Seleziona le chiavi da eliminare:</b>") print("</td>") print("<td>") for i in range(len(flt.DecodeList(MyDB.keys(RedisKey)))): print(mhl.MyCheckboxForm(FormName, flt.DecodeList(MyDB.keys(RedisKey))[i]), flt.DecodeList(MyDB.keys(RedisKey))[i], "<br/>") print("</td>") print("</tr>") print("<tr>") print("<td colspan=\"2\">") #print ("<hr/>") # La linea orizzontale print("</td>") print("</tr>") print("<tr>") print("<td>") print("") # Testo nella 1a colonna
#print ("<hr>") print("</fieldset>") # NON FUNZIONA, credo per un'istruzione del programma, quel cilent.loop_forever() #print (mhl.MyActionForm("/cgi-bin/mqtt2redis_webstart.py","POST")) #print (mhl.MyButtonForm("submit","Start")) #print (mhl.MyActionForm("/cgi-bin/mqtt2redis_webstop.py","POST")) #print (mhl.MyButtonForm("submit","Stop")) print("<br/>") # Riga vuota / no linea orizzonatale print("<br/>") # Riga vuota / no linea orizzonatale # Gruppi Redis # Non riesco a filtrare con una normale 'regex', mi son stufato e allora prendo tutti # quelli che hanno "sets:*:Config" e poi eliminero` il finale ":Config" SetsRedis = flt.DecodeList(MyDB.keys("sets:*:Config")) for i in range(len(SetsRedis)): # La lista e` (uguale alla lista puntata da i [i]), # presa per tutta la sua lunghezza di caratteri [:L-7], # tolto 7, che e` la lunghezza di ":Config" SetsRedis[i] = SetsRedis[i][:len(SetsRedis[i]) - 7] SetsRedisOn = [] SetsRedisOff = [] print("<fieldset>") print("<legend>Gruppi GRAPH</legend>") for i in range(len(SetsRedis)): Appoggio = flt.Decode( subprocess.check_output( ['/var/www/cgi-bin/setsgraph_init.d.sh', 'status', SetsRedis[i]])) print("<b>", SetsRedis[i], "</b>", Appoggio, "<br/><hr/>") # .split() Divido le parole
# Controllo se piu` di un argomento o se richiesto l'help if len(sys.argv) != 4 or sys.argv[1] == "-h": print("\n\tUso: %s <RedisKey> <Start> <Stop>" % sys.argv[0]) print(""" Questo programma prende una chiave Redis di gruppo (sets:*), elabora, e crea il rispettivo file .csv """) exit() if len(sys.argv) == 4 and MyDB.exists(sys.argv[1]): # Setto le variabili per comodita` e chiarezza di programma KeyVal = sys.argv[1] Key = KeyVal[:-7] # Toglie ":Valori" KeySort = flt.DecodeList( MyDB.sort(Key, alpha=1) ) # Devo mantenerla sempre ordinata, altrimenti i dati non coincidono, e` una stringa, quindi "alpha=1" print("Input sets: \t\t", KeyVal) print("Key: \t\t\t", Key) print("Key contents: \t\t", KeySort) # Ho usato il secondo e terzo valore (sets:NOME:ID), perche potrebbero esserci dei duplicati fra allarmi e grafici e .. altro (se ci sara`) FileName = DirBase + "/" + Key.split(":")[1] + Key.split(":")[2] + ".csv" if os.path.isfile(FileName): print("Deleting: \t\t\"%s\"" % FileName) os.remove(FileName) # Elimino il file se esiste # Creazione dell'intestazione: DATA, Descrizione1, Descrizione2, .., DescrizioneN IntestazioneCSV = "Data" for i in range(len(KeySort)): Descrizione = "none" # Metto qualcosa nel caso mancasse la descrizione if MyDB.hexists(KeySort[i], "Descrizione"): Descrizione = flt.Decode(MyDB.hget(KeySort[i], "Descrizione"))
print ("<hr/><br/>") print ("<h2>","<center>","Modifica chiave Redis","</center>","</h2>") # Inizio del form print (mhl.MyActionForm("/cgi-bin/changesetredis.py","POST")) print ("<table>") # 2 colonne print ("<tr>") print ("<td>") print ("Seleziona la chiave da modificare:") print ("</td>") print ("<td>") print (mhl.MyDropDown(FormName,flt.DecodeList(MyDB.keys(RedisKey)),"")) # print ("</td>") print ("</tr>") print ("<tr>") print ("<td colspan=\"2\">") #print ("<hr/>") # La linea orizzontale print ("</td>") print ("</tr>") print ("<tr>") print ("<td>") print ("") # Testo nella 1a colonna print ("</td>") print ("<td>") print (mhl.MyButtonForm("submit","Modifica"))
print("<td>") print("Key: ") print("</td>") print("<td>") print(mhl.MyTextForm(FormName, RedisKey, "40", "required", "readonly")) print("</td>") print("</tr>") # A dire la verita`, per come ho sistemato ora .. questa parte e` inutile. print("<tr>") print("<td>") print("Contenuto:") print("</td>") print("<td>") #print (str(flt.DecodeList(MyDB.smembers(RedisKey)))) # Meglio se lo visualizzo tutto, col form sarei limitato. LISTA = flt.DecodeList( MyDB.smembers(RedisKey)) # Appoggio a variabile l'elenco/lista print("<fieldset>") # Ho usato il "fieldset" come separatore/raggruppatore #print ("<legend>Contenuto</legend>") for i in range(len(LISTA)): print(LISTA[i], "<br/>") print("</fieldset>") print("</td>") print("</tr>") print("<br/>") # Aggiungo uno spazio (una riga) print("<tr>") print("<td>") print("Elimina:") print("</td>") print("<td>")
print ("Key: ") print ("</td>") print ("<td>") print (mhl.MyTextForm(FormName,RedisKey,"40","required","")) print ("</td>") print ("</tr>") print ("<tr>") print ("<td>") print ("Aggiungi:") print ("</td>") print ("<td>") #print (mhl.MyDropDown("add",flt.DecodeList(MyDB.keys("?:*:*:*:*:*[^:Valori]")),"")) # Sto` provando a filtrare le chiavi, questa e` la meglio che ho trovato. # Non riesco a filtrare con una normale 'regex', mi son stufato e allora prendo tutti # quelli che hanno ":Valori" e poi eliminero` il finale ":Valori" LISTA = flt.DecodeList(MyDB.keys("?:*:*:*:*:Valori")) for i in range (len(LISTA)): # La lista e` (uguale alla lista puntata da i [i]), # presa per tutta la sua lunghezza di caratteri [:L-7], # tolto 7, che e` la lunghezza di ":Valori" LISTAi=LISTA[i][:len(LISTA[i])-7] print (mhl.MyCheckboxForm("add",LISTAi), LISTAi, "<br/>") print ("</td>") print ("</tr>") print ("<tr>") print ("<td colspan=\"2\">") print ("<hr/>") # La linea orizzontale print ("</td>") print ("</tr>")