Dalba has uploaded a new change for review.
https://gerrit.wikimedia.org/r/323518
Change subject: login.py: Support specifying '*' for 'family' in user-config.py
......................................................................
login.py: Support specifying '*' for 'family' in user-config.py
In addition to a few minor changes in LoginManager.__init__,
readPassword was also changed to support '@' in usernames.
Now users should be able to add the following lines to their
user-config.py file:
```
usernames['*']['fa'] = 'USERNAME'
password_file = r"secretsfile"
```
where `secretsfile` is a file containing:
```
("USERNAME@BotName", "Password obtained from Special:BotPasswords")
```
and login should work as expected.
Bug: T120334
Change-Id: I23749a4035c7d27186a92e67c6d6206e10326ff0
---
M pywikibot/login.py
1 file changed, 22 insertions(+), 14 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/pywikibot/core
refs/changes/18/323518/1
diff --git a/pywikibot/login.py b/pywikibot/login.py
index e110c47..6842e08 100644
--- a/pywikibot/login.py
+++ b/pywikibot/login.py
@@ -91,8 +91,11 @@
if user:
self.username = user
elif sysop:
+ config_names = config.sysopnames
try:
- family_sysopnames = config.sysopnames[self.site.family.name]
+ family_sysopnames = (
+ config_names[self.site.family.name] or config_names['*']
+ )
self.username = family_sysopnames.get(self.site.code, None)
self.username = self.username or family_sysopnames['*']
except KeyError:
@@ -104,11 +107,14 @@
% {'fam_name': self.site.family.name,
'wiki_code': self.site.code})
else:
+ config_names = config.usernames
try:
- family_usernames = config.usernames[self.site.family.name]
+ family_usernames = (
+ config_names[self.site.family.name] or config_names['*']
+ )
self.username = family_usernames.get(self.site.code, None)
self.username = self.username or family_usernames['*']
- except:
+ except KeyError:
raise NoUsername(u"""\
ERROR: Username for %(fam_name)s:%(wiki_code)s is undefined.
If you have an account for that site, please add a line to user-config.py:
@@ -262,17 +268,19 @@
# When the tuple is inverted the default family and code can be
# easily appended which makes the next condition easier as it does
# not need to know if it's using the default value or not.
- entry = list(entry[::-1]) + [self.site.family.name,
- self.site.code][len(entry) - 2:]
-
- if (normalize_username(entry[1]) == self.username and
- entry[2] == self.site.family.name and
- entry[3] == self.site.code):
- if isinstance(entry[0], basestring):
- self.password = entry[0]
- elif isinstance(entry[0], BotPassword):
- self.password = entry[0].password
- self.login_name = entry[0].login_name(self.username)
+ entry_pass, entry_user, entry_family, entry_code = entry[::-1] +\
+ (self.site.family.name, self.site.code)[len(entry) - 2:]
+ normal_username = normalize_username(entry_user.partition('@')[0])
+ if (
+ normal_username == self.username and
+ entry_family == self.site.family.name and
+ entry_code == self.site.code
+ ):
+ self.login_name = entry_user
+ if isinstance(entry_pass, basestring):
+ self.password = entry_pass
+ elif isinstance(entry_pass, BotPassword):
+ self.password = entry_pass.password
else:
warn('Invalid password format', _PasswordFileWarning)
password_f.close()
--
To view, visit https://gerrit.wikimedia.org/r/323518
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I23749a4035c7d27186a92e67c6d6206e10326ff0
Gerrit-PatchSet: 1
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Owner: Dalba <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits