robinm | Hello,
Pour vous donner un peu plus de détails concernant le contexte:
Je travaille sur le soft open-source: gophish (https://github.com/gophish/gophish) et plus particulierement sur le "python API client" (https://github.com/gophish/api-client-python)
Mon but est d'arriver a faire de l'integration automatique de groupes d'utilisateurs dans l'outil, on peut deja le faire via l'interface web, mais j'ai besoin d'utiliser l'api pour d'autres fonctionnalités.
dans la documentation de l'API, il est explicité la méthode a suivre pour integrer diretement des utilisteurs.:
Code :
- from gophish.models import *
- targets = [
- Target(first_name='John', last_name='Doe', email='johndoe@example.com'),
- Target(first_name='Jane', last_name='Doe', email='janedoe@example.com')]
- group = Group(name='Doe Company', targets=targets)
|
il me faut donc parser mon csv afin de pouvoir retrouver en sortie un tableau Targets[] equivalent a celui ci-dessus.
Voila ce que j'ai fait pour le moment afin d'y arriver:
Code :
- cr = csv.reader(open("Groupe 0.csv","rb" ))
- Targets = []
- for row in cr:
- x = "User(first_name='" + row[0] + "' , last_name='"+ row[1]+"', email='"+row[2]+"', position='"+row[3]+"')"
- Targets.append(x)
- # print x
- #print Targets
- test=str(Targets).replace(' ','')
- test2=str(test).replace('"','')
|
La variable "Position" n'est pas dans la doc mais est bien censée être interprétée par gophish derrière
le tableau que je créé grace a ma boucle me rajoute des guillemets et espaces en trop, j'essaye donc de les supprimer..
Pour info voici les classes utilisée par le client python de gophish:
Code :
- class User(Model):
- """ User contains the attributes for a member of a group
- used in Gophish """
- _valid_properties = {
- 'id': None, 'first_name': None, 'last_name': None, 'email': None,
- 'position': None}
- def __init__(self, **kwargs):
- for key, default in User._valid_properties.items():
- setattr(self, key, kwargs.get(key, default))
- @classmethod
- def parse(cls, json):
- user = cls()
- for key, val in json.items():
- if key in cls._valid_properties:
- setattr(user, key, val)
- return user
- class Group(Model):
- """ Groups contain one or more users """
- _valid_properties = {
- 'id': None, 'name': None, 'modified_date': datetime.now(tzlocal()),
- 'targets': []}
- def __init__(self, **kwargs):
- for key, default in Group._valid_properties.items():
- setattr(self, key, kwargs.get(key, default))
- @classmethod
- def parse(cls, json):
- group = cls()
- for key, val in json.items():
- if key == 'targets':
- targets = [User.parse(user) for user in val]
- setattr(group, key, targets)
- elif key == 'modified_date':
- setattr(group, key, parse_date(val))
- elif key in cls._valid_properties:
- setattr(group, key, val)
- return group
|
j'ai l'impression de faire n'importe quoi en transformant le tableau en str pour virer les caractères en trop mais je ne sais pas comment faire autrement
|