3 |
3 |
"""
|
4 |
4 |
|
5 |
5 |
import url_parser #permet de connaître les id des taches
|
6 |
|
import urllib.request
|
7 |
|
import httplib2
|
|
6 |
import urllib.request #permet de récupérer une page web
|
|
7 |
import httplib2 #pour faire des requêtes http
|
8 |
8 |
import json
|
9 |
|
import re
|
10 |
|
import os
|
|
9 |
import re #pour les expressions régulières
|
|
10 |
import os #pour pouvoir faire appel à pandoc (commande system)
|
11 |
11 |
|
|
12 |
######## NB : cid : comment id, nid : node id, urls : urls des tâches
|
|
13 |
|
|
14 |
#Dictionnaire des gens dont on a la clé API
|
|
15 |
#id: clé
|
12 |
16 |
SUBMITERS = {'jenselme': '464c7c05b9bb53fb136092f1b9807ad91ec51321'}
|
|
17 |
|
|
18 |
#les entêtes des requêtes POST et PUT
|
13 |
19 |
Headers = {'content-type': 'application/json', 'X-Redmine-API-Key': ''}
|
|
20 |
|
|
21 |
#là où on poste les tâches
|
14 |
22 |
URL = 'https://forge.centrale-marseille.fr/issues'
|
|
23 |
|
|
24 |
#là où sont les tâches
|
15 |
25 |
LIST_TODO = 'http://localhost/portail/liste-tache'
|
|
26 |
|
|
27 |
#url de base de l’emplacement du contenu
|
16 |
28 |
BASE_URL = 'http://localhost/portail'
|
17 |
29 |
PROJECT_ID = 30
|
18 |
30 |
TRACKER_ID = 2
|
|
31 |
|
|
32 |
|
|
33 |
########## dictionnaires de correspondance
|
19 |
34 |
DONE_RATIO = {'En pause': 50, 'À commencer': 0, 'Entamée': 20, 'Bien avancée': 80, 'Terminée (success)': 100, 'Fermée (won\'t fix)': 100}
|
20 |
35 |
PRIORITY = {'5 - Très basse': 3, '4 - Basse': 3, '3 - Moyenne': 4, '2 - Haute': 5, '1 - Très haute': 6,\
|
21 |
36 |
'Très basse': 3, 'Basse': 3, 'Moyenne': 4, 'Haute': 5, 'Très haute':6,\
|
22 |
37 |
'0': 3, '1': 3, '2': 4, '3': 5, '4': 6}
|
23 |
38 |
STATUS = {'En cours': 2, 'Fermée': 5, 'Rejetée': 6, 'En pause': 7}
|
24 |
|
#NB : 17 : drupal6, 18 : drupal7
|
|
39 |
#NB sur le portail, on a les équivalences suivantes
|
|
40 |
#pour le champ version de drupal : 17 : drupal6, 18 : drupal7
|
25 |
41 |
DRUPAL_VERSION = {'17': 2, '18': 1}
|
26 |
42 |
|
27 |
43 |
def give_api_key(submiter):
|
|
44 |
"Donne la clé API de submiter ou celle de jenselme si c’est la seule"
|
28 |
45 |
if submiter in SUBMITERS:
|
29 |
46 |
return SUBMITERS[submiter]
|
30 |
47 |
else:
|
... | ... | |
32 |
49 |
|
33 |
50 |
|
34 |
51 |
def give_comments_ids(nid):
|
|
52 |
"permet de récupérer les id des commentaires de la tâche nid"
|
35 |
53 |
page = urllib.request.urlopen(BASE_URL + '/entity_json/node/' + nid).read()
|
36 |
54 |
page_json = json.loads(page.decode('utf-8'))
|
37 |
55 |
comments_json = page_json['comments']
|
... | ... | |
45 |
63 |
|
46 |
64 |
|
47 |
65 |
def give_comments(cids):
|
|
66 |
"Donne la liste du texte des commentaires pour chaque cid in cids"
|
48 |
67 |
comments = list()
|
49 |
68 |
for cid in cids:
|
50 |
69 |
comment = urllib.request.urlopen(BASE_URL + '/comment/' + cid + '.json').read()
|
... | ... | |
53 |
72 |
|
54 |
73 |
|
55 |
74 |
def format(txt):
|
|
75 |
"prend le texte en html et le renvoie en textile"
|
56 |
76 |
txt.replace('\n', '')
|
57 |
77 |
txt.replace('\t', '')
|
58 |
78 |
with open('tmp.html', 'w') as f:
|
... | ... | |
101 |
121 |
return issue
|
102 |
122 |
|
103 |
123 |
|
|
124 |
######### Main
|
|
125 |
|
104 |
126 |
nids, urls = url_parser.give_json_urls(LIST_TODO, BASE_URL)
|
105 |
127 |
|
106 |
128 |
h = httplib2.Http()
|
Ajout de commentaires dans les scripts goto_redmine et urls_parser