Projet

Général

Profil

Paste
Télécharger (2,32 ko) Statistiques
| Branche: | Révision:

root / scripts_divers / migrer_taches_vers_redmine / goto_redmine.py @ 35c29fad

1
import node_parser
2
import comments_parser
3
import submiters_parser
4
import url_parser
5
import httplib2
6
import json
7
import re
8

    
9
SUBMITERS = {'jenselme': 'auieeui'}
10
Headers = {'content-type': 'application/json', 'X-Redmine-API-Key': ''}
11
MY_API_KEY = '4a36554437feef722e82a206de1bc1c1250df973'
12
URL = 'http://localhost/redmine/issues'
13

    
14
def give_api_key(submiter):
15
    if submiter in SUBMITERS:
16
        return SUBMITERS[submiter]
17
    else:
18
        return  SUBMITERS['jenselme']
19

    
20
nids = url_parser.give_nids()
21
urls = url_parser.give_urls(nids)
22

    
23
h = httplib2.Http()
24

    
25
for post_url in urls:
26
    nid = nids[urls.index(post_url)]
27
    resp, page = h.request(post_url, 'GET')
28
    page = page.decode('utf-8')
29
    txt = page.read()
30
    #tout les scripts fonctionnent en lisant ligne à ligne le fichier.
31
    #la liste input permet de mimer ce comportement
32
    input = txt.split('\n')
33

    
34
    submiters = submiters_parser.parse_submiters(input)
35
    node = node_parser.parse_node(input)
36
    comments = comments_parser.parse_comment(input)
37

    
38
    #on a besoin de drupal_done_ratio pour fermer/rejeter une tache
39
    drupal_done_ratio = node['done_ratio']
40

    
41
    issue = {}
42
    issue['issue'] = node
43
    data = json.dumps(issue)
44

    
45
    Headers['X-Redmine-API-Key'] = give_api_key(submiters[0])
46

    
47
    resp, content = h.request(URL + '.json', 'POST', body=data, headers=Headers)
48

    
49
    iid = re.findall(r',"id":([0-9]*),', content.decode('utf-8'))[0]
50

    
51
    #on a besoin de l’url à laquelle on met les commentaires, pour changer le status
52
    put_url = ''
53
    for index, comment in enumerate(comments):
54
        submiter = submiters[index + 1]  #le premier est celui qui a soumis le node
55
        Headers['X-Redmine-API-Key'] = give_api_key(submiter)
56
        #si la personne n’a pas sa clé, on modifie le commentaire
57
        if not submiter in SUBMITERS:
58
            comment = "{} a dit que {}".format(submiter, comment)
59
        update = {}
60
        update['issue'] = {'notes': comment}
61
        data = json.dumps(update)
62
        put_url = URL + '/' + iid + '.json'
63
        h.request(put_url, 'PUT', body=data, headers=Headers)
64

    
65
    #Les taches sont crées avec le status nouveau peu importe ce qu’il y a dans le json
66
    #on modifie le status après coup
67
    update_status = {'issue': {'status_id': node['status_id']}}
68
    data = json.dumps(update_status)
69
    h.request(put_url, 'PUT', body=data, headers=Headers)