Line 0
Link Here
|
|
|
1 |
--- ./bugz/cli.py.orig 2012-05-06 20:37:35.000000000 +0000 |
2 |
+++ ./bugz/cli.py 2014-08-02 20:38:22.976386635 +0000 |
3 |
@@ -29,6 +29,7 @@ |
4 |
""" |
5 |
|
6 |
DEFAULT_COOKIE_FILE = '.bugz_cookie' |
7 |
+DEFAULT_TOKEN_FILE = '.bugz_token' |
8 |
DEFAULT_NUM_COLS = 80 |
9 |
|
10 |
# |
11 |
@@ -143,6 +144,12 @@ |
12 |
except IOError: |
13 |
pass |
14 |
|
15 |
+ self.token_file = os.path.join(os.environ['HOME'], DEFAULT_TOKEN_FILE) |
16 |
+ try: |
17 |
+ self.token = open(self.token_file).read().strip() |
18 |
+ except IOError: |
19 |
+ self.token = None |
20 |
+ |
21 |
if getattr(args, 'encoding'): |
22 |
self.enc = args.encoding |
23 |
else: |
24 |
@@ -170,16 +177,21 @@ |
25 |
def get_input(self, prompt): |
26 |
return raw_input(prompt) |
27 |
|
28 |
+ def set_token(self, *args): |
29 |
+ if args and self.token: |
30 |
+ args[0]['Bugzilla_token'] = self.token |
31 |
+ return args |
32 |
+ |
33 |
def bzcall(self, method, *args): |
34 |
"""Attempt to call method with args. Log in if authentication is required. |
35 |
""" |
36 |
try: |
37 |
- return method(*args) |
38 |
+ return method(*self.set_token(*args)) |
39 |
except xmlrpclib.Fault, fault: |
40 |
# Fault code 410 means login required |
41 |
if fault.faultCode == 410 and not self.skip_auth: |
42 |
self.login() |
43 |
- return method(*args) |
44 |
+ return method(*self.set_token(*args)) |
45 |
raise |
46 |
|
47 |
def login(self, args=None): |
48 |
@@ -208,10 +220,21 @@ |
49 |
params['remember'] = True |
50 |
self.log('Logging in') |
51 |
self.bz.User.login(params) |
52 |
+ log_info('Logging in') |
53 |
+ result = self.bz.User.login(params) |
54 |
+ if 'token' in result: |
55 |
+ self.token = result['token'] |
56 |
|
57 |
if args is not None: |
58 |
- self.cookiejar.save() |
59 |
- os.chmod(self.cookiejar.filename, 0600) |
60 |
+ if self.token: |
61 |
+ fd = open(self.token_file, 'w') |
62 |
+ fd.write(self.token) |
63 |
+ fd.write('\n') |
64 |
+ fd.close() |
65 |
+ os.chmod(self.token_file, 0600) |
66 |
+ else: |
67 |
+ self.cookiejar.save() |
68 |
+ os.chmod(self.cookiejar.filename, 0600) |
69 |
|
70 |
def logout(self, args): |
71 |
self.log('logging out') |