-
Notifications
You must be signed in to change notification settings - Fork 2
/
otrs_backlog.py
121 lines (101 loc) · 2.78 KB
/
otrs_backlog.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#!/usr/bin/python
# -*- coding: utf-8 -*-
#Autor: Antoine "0x010C" Lamielle
#Date: 10 décembre 2015
#License: GNU GPL v3
import re
import requests
import json
import sys
import os
import pywiki
queues = [
{"page":u"Wikipédia:OTRS/backlog-info-fr", "id":u"19"},
{"page":u"Wikipédia:OTRS/backlog-permissions-fr", "id":u"35"},
{"page":u"Wikipédia:OTRS/backlog-photosubmission-fr", "id":u"129"},
]
url_otrs = u"https://ticket.wikimedia.org/otrs/index.pl"
user_otrs = u""
password_otrs = u""
regex_token = re.compile(u"name=\"ChallengeToken\" value=\"([0-9a-zA-Z]+)\"")
regex_age = re.compile(u"<div title=\"([0-9]+ [jhm](?: [0-9]+ [hm])*) *\">")
session_otrs = requests.Session()
"""
Login into the OTRS website
"""
def login_otrs():
r = session_otrs.post(url_otrs,data={
"User":user_otrs,
"Password":password_otrs,
"Action":"Login",
"RequestedURL":"",
"Lang":"fr",
"TimeOffset":"-60",
})
return regex_token.findall(r.text.encode("utf-8"))[0];
"""
Get the higher age of the current queue
"""
def get_ages(token, queue_id):
r = session_otrs.post(url_otrs, data={
"ChallengeToken":token,
"Action":"AgentTicketSearch",
"Subaction":"Search",
"EmptySearch":"1",
"ShownAttributes":"%3BLabelFulltext%3BLabelStateIDs%3BLabelQueueIDs",
"StateIDs":"1",
"QueueIDs":queue_id,
"Attribute":"TicketNumber",
"ResultForm":"Normal",
"SortBy":"Age",
"OrderBy":"Up",
})
return regex_age.findall(r.text.encode("utf-8"));
"""
Search for users and passwords in the config file
"""
def parse_config_file():
global user_otrs, password_otrs
if(os.path.isfile(os.path.dirname(os.path.realpath(__file__))+"/conf/otrs_backlog.conf") == False):
return;
fichier = open(os.path.dirname(os.path.realpath(__file__))+"/conf/otrs_backlog.conf", "r");
contenu = fichier.read();
fichier.close();
for line in contenu.split("\n"):
if re.search("^user_otrs:", line):
user_otrs = line[10:];
if re.search("^password_otrs:", line):
password_otrs = line[14:];
"""
Get all missing parameters (users and passwords)
"""
def get_args():
global user_otrs, password_otrs
parse_config_file()
if user_otrs == "":
print "user_otrs";
print "> ",;user_otrs = sys.stdin.readline().split("\n")[0];
if password_otrs == "":
print "password_otrs";
print "> ",;password_otrs = sys.stdin.readline().split("\n")[0];
"""
Main function
"""
def main():
get_args()
token = login_otrs()
pw = pywiki.Pywiki("frwiki-NeoBOT")
pw.login()
for i in range(0,len(queues)):
ages = get_ages(token, queues[i]['id'])
if len(ages) > 0:
age = ages[0].split(" ")
if age[1] == "j":
age = age[0]
else:
age = "0"
else:
age = "0"
pw.replace(queues[i]['page'], age, u"Mise à jour du backlog des files OTRS francophones", nocreate=True)
print queues[i]['page'].encode("utf-8") + " : " + age + " jours"
main()