unistra / python-glpi-api

Python module for interacting with GLPI using the API.
GNU General Public License v3.0
18 stars 10 forks source link

Update fields from plugin Fields #24

Closed skreu closed 7 months ago

skreu commented 8 months ago

Bonjour,

J'essaie de modifier les valeurs de certains champs de mon "Applicatif" au sein de GLPI via l'api. J'utilise le plugin Fields qui m'a permis d'ajouter des champs particulier au sein de chaque Applicatif.

Lorsque j'utilise cette commande, tout fonctionne bien : glpi.update('Appliance', {'id' : '1', 'name': 'monnouveaunom}) Si je veux update un champ créé par le plugin Field je n'y arrive pas. glpi.update('Appliance', {'id' : '1', 'PluginFieldsApplianceobjetapplicatif.monchampfield': 'monnouveauchamp}) En revanche si je ne prends que la fin cela fonctionne : glpi.update('Appliance', {'id' : '1', 'monchampfield': 'monnouveauchamp})

Ma question est la suivante, le cas précédemment vu concerne le cas ou les champs sont à texte simple... J'ai un champ que je veux updater mais qui se présente sous la forme d'un DropDown...

Comment suis-je censé l'updater ? Je veux lui attribuer la modalité "S" du dropdown (qui a pour id 12) glpi.update('Appliance', {'id' : '1', 'plugin_fields_champaplusieursmodfielddropdo777592026.PluginFieldsApplianceobjetapplicatif.PluginFieldsVhampaplusieursmodfieldDropdown.name': 'S'})

Ne fonctionne pas... J'ai essayé juste avec "name" mais ca me change l'intitulé de mon Appliance... J'ai également essayé avec ["12"] ou "["12"]" ou [12] ou "[12] pour les valeurs mais sans succès...

Auriez vous une idée ? Bien cordialement,

skreu commented 8 months ago

Personne ? Je n'arrive toujours pas à updater le champ à plusieurs modalité qui se présente sous une forme dropdown... Cela devrait pourtant être simple mais je n'ai pas compris encore comment cela devait fonctionner

skreu commented 8 months ago

Bonjour finalement j'ai réussi à résoudre mes problèmes...

Dans le cadre d'un dropDown la solution est la suivante :

glpi.update('Appliance', {'id' : '1', 'plugin_fields_champaplusieursmodfielddropdo777592026: '12'}) où 12 est l'ID de la modalité voulue (en l'occurence dans mon exemple 'S')

Dans le cadre d'un champ dans un autre onglet la meilleure solution que j'ai trouvé est de faire un deuxième appel avec glpi.update('Appliance/?c_id='4', {'id' : '1', 'plugin_fields_champaplusieursmodfielddropdo777592026: '12'})

où 4 correspond à l'identifiant du conteneur de l'onglet (Que l'on peut retrouver dans Glpi sous Configuration -> Champ supplémentaires puis ajouter la colonne d'ID.)

En espérant que ça puisse aider d'autres personnes ;) Bien à vous,

fmenabe commented 7 months ago

Bonjour @skreu,

Désolé, j'ai jamais eu le temps de regarder ton problème ...

Comme tu as pu t'en rendre compte, ce qui devrait être simple et évident avec l'API GLPI ne l'ai jamais vraiment !

Merci d'avoir post ta solution, ça pourra effectivement être utile à d'autres personnes.