diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | src/wikipediafs/article.py | 9 | ||||
-rw-r--r-- | src/wikipediafs/fs.py | 13 | ||||
-rw-r--r-- | src/wikipediafs/user.py | 17 |
4 files changed, 36 insertions, 8 deletions
@@ -20,7 +20,10 @@ time may cause edit conflicts with people editing the same article. mkdir wikipedia-fr) automatically sets a working directory for the concerned site from the wikimedia foundation. -- Added subfolder support (yay !). +- Added subfolder support (yay !). Files must have .mw extension in order to +distinguish them from directories. + +- Readded edit with login support. 2007-05-19 Mathieu Blondel <mblondel@users.sourceforge.net> diff --git a/src/wikipediafs/article.py b/src/wikipediafs/article.py index 1fd9e95..9389fe1 100644 --- a/src/wikipediafs/article.py +++ b/src/wikipediafs/article.py @@ -34,15 +34,16 @@ class Article(SGMLParser): cookie_str=None, https=False, port=None, - dirname=None, - username=None, - password=None, httpauth_username=None, httpauth_password=None, cache_time = 30, # logger is passed as an argument so that Article remains # an independant class - logger = None + logger = None, + # Not actually needed, just here for compatibility + dirname=None, + username=None, + password=None, ): SGMLParser.__init__(self) diff --git a/src/wikipediafs/fs.py b/src/wikipediafs/fs.py index fdc50c9..658859e 100644 --- a/src/wikipediafs/fs.py +++ b/src/wikipediafs/fs.py @@ -22,12 +22,13 @@ import os.path, re from metadir import MetaDir from config import CONFIG from article import Article +from user import User from logger import LOGGER class ArticleDir: def __init__(self, fs, config): self.fs = fs - self.config = config + self.config = config self.files = {} self.dirs = {} @@ -68,12 +69,22 @@ class ArticleDir: else: return False + def set_cookie_string(self): + if not self.config.has_key("cookie_str"): + if self.config["username"] is not None and \ + self.config["password"] is not None: + user = User(logger=LOGGER, **self.config) + cookie_str = user.getCookieString() + self.config["cookie_str"] = cookie_str + def read_file(self, path): file_name = self.get_article_file_name(path) full_name = self.get_article_full_name(path) if self.files.has_key(file_name): art = self.files[file_name] else: + self.set_cookie_string() + art = Article(full_name[0:-3], # removes .mw from the name cache_time=CONFIG.cache_time, logger = LOGGER, diff --git a/src/wikipediafs/user.py b/src/wikipediafs/user.py index 2fae77c..dc3b68e 100644 --- a/src/wikipediafs/user.py +++ b/src/wikipediafs/user.py @@ -34,8 +34,14 @@ class User: https=False, port=None, httpauth_username=None, - httpauth_password=None + httpauth_password=None, + logger = None, + # Not actually needed, just here for compatibility + name=None, + cookie_str=None, + dirname=None ): + logger.info("%s %s" % (username, password)) self.username = username self.password = password @@ -45,6 +51,7 @@ class User: self.port = port self.httpauth_username = httpauth_username self.httpauth_password = httpauth_password + self.logger = logger # url pattern self.login_page = "%s?title=Special:Userlogin" % self.basename @@ -87,9 +94,15 @@ class User: if len(cookie_list) == 4: cookie_list.pop() - #logger.info("; ".join(cookie_list)) + if self.logger: + self.logger.info("Logged in successfully with username %s" % \ + self.username) + #self.logger.info("; ".join(cookie_list)) return "; ".join(cookie_list) else: + if self.logger: + self.logger.warning("Could not log in with username %s" % \ + self.username) return None |