diff --git a/gestion/gest_crans.py b/gestion/gest_crans.py index d62ca737..b9775afd 100755 --- a/gestion/gest_crans.py +++ b/gestion/gest_crans.py @@ -1140,6 +1140,69 @@ def del_club(club): ################################################################## ## Fonctions de remplissage ou modification des paramètres machine +def set_wifi(machine): + """ + Définition des paramètres spécifiques d'une borne wifi : + * Canaux + * Puissance + * Position GPS + * Variables nvram + """ + if not isadm: + #ça ne devrait jamais arriver mais on n'est jamais trop prudent + arg = u'--title "Erreur" ' + arg += u'--msgbox "Vous n\'avez pas les droits de modification de cette machine.\n\n" 0 0' + dialog(arg) + # On redemande + return 1 + + nom = machine.nom() + + # Construction de la boite de dialogue + arg = u'--title "Paramètres spécifiques wifi de "%s"" ' % (nom) + arg += u'--form "" 0 0 0 ' + # Borne wifi + arg += u'"Canaux :" 1 1 "%s" 1 14 10 0 ' % machine.canal(None, False) + arg += u'"Puissance :" 2 1 "%s" 2 14 4 0 ' % machine.puissance() + arg += u'"Position N :" 3 1 "%s" 3 14 12 0 ' % machine.position()[0] + arg += u'"Position E :" 3 29 "%s" 3 42 12 0 ' % machine.position()[1] + arg += u'"Nvram (la valeur none supprime la variable) :" 4 1 "%s" 5 1 50 0 ' % ', '.join(machine.nvram()) + + # Affichage + annul, result = dialog(arg) + if annul: return 1 + + # Traitement + err = '' + try: machine.canal(result[0]) + except ValueError, c: err += c.args[0] + '\n' + try: machine.puissance(result[1]) + except ValueError, c: err += c.args[0] + '\n' + try: machine.position((result[2].strip(),result[3].strip())) + except ValueError, c: err += c.args[0] + '\n' + try: + for nvram in result[4].split(','): + if len(nvram.strip()): #On évite les variables vides + if not '=' in nvram: + err += "Une variable nvram doit etre de la forme : 'variable=valeur'\n" + else : + variable = nvram.split('=')[0].strip() + valeur = nvram.split('=')[1].strip() + if valeur.lower() == "none": + valeur=None + machine.nvram(variable, valeur) + except ValueError, c: err += c.args[0] + '\n' + # Des erreurs ? + if err: + arg = u'--title "Paramètres machine wifi" ' + arg += u'--msgbox "%s\n\n" 0 0' % err + dialog(arg) + # On redemande + return set_wifi(machine) + + if machine.modifs and confirm(machine): + return set_wifi(machine) + def set_machine(machine): """ Définition des paramètres d'une machine : @@ -1147,8 +1210,6 @@ def set_machine(machine): * Adresse MAC * IP * ports ouverts si adm - * Remarque - Si borne wifi demande aussi canal et puissance """ if machine.proprietaire().__class__ == AssociationCrans: if not isadm: @@ -1174,21 +1235,16 @@ def set_machine(machine): arg += u'"PortsTCP machine->ext :" 5 1 "%s" 5 25 50 0 ' % ' '.join(machine.portTCPout()) arg += u'"PortsUDP ext->machine :" 6 1 "%s" 6 25 50 0 ' % ' '.join(machine.portUDPin()) arg += u'"PortsUDP machine->ext :" 7 1 "%s" 7 25 50 0 ' % ' '.join(machine.portUDPout()) - if isinstance(machine, BorneWifi) and isadm: - # Borne wifi - p = u'Mettre le lieu de la borne comme première remarque.' - arg += u'"Canaux :" 2 35 "%s" 2 43 14 0 ' % machine.canal(None, False) - arg += u'"Puissance :" 3 35 "%s" 3 47 4 0 ' % machine.puissance() if isadm and machine.proprietaire().__class__ == AssociationCrans: arg += u'"Prise :" 8 1 "%s" 8 9 5 0 ' % machine.prise() else: p = u'Pour ajouter une remarque modifier la dernière de la liste.' - + # Affichage annul, result = dialog(arg) if annul: return 1 - + # Traitement err = '' try: machine.nom(result[0]) @@ -1226,12 +1282,6 @@ def set_machine(machine): machine.portUDPout(result[6].split()) except ValueError, c: err += c.args[0] + '\n' - if isadm and isinstance(machine, BorneWifi): - try: machine.canal(result[7]) - except ValueError, c: err += c.args[0] + '\n' - try: machine.puissance(result[8]) - except ValueError, c: err += c.args[0] + '\n' - if isadm and machine.proprietaire().__class__ == AssociationCrans: try: machine.prise(result[-1]) except ValueError, c: err += c.args[0] + '\n' @@ -1509,6 +1559,11 @@ def modif_machine(machine): arg += u'"Alias" "Créer ou supprimer un alias de la machine" ' arg += u'"Exemptions" "Modifier la liste d\'exemption d\'upload de la machine" ' arg += u'"Remarques" "Ajouter ou supprimer une remarque de la machine" ' + if isinstance(machine, BorneWifi) and isadm: + # Borne wifi + arg += u'"Wifi" "Modifier les paramètres spécifiques aux bornes wifi" ' + + annul, res = dialog(arg) @@ -1525,6 +1580,8 @@ def modif_machine(machine): set_machine_exemption(machine) elif res[0] == 'Remarques': set_rque(machine) + elif res[0] == 'Wifi': + set_wifi(machine) if machine.modifs: return confirm(machine)