aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--src/wikipediafs/article.py9
-rw-r--r--src/wikipediafs/fs.py13
-rw-r--r--src/wikipediafs/user.py17
4 files changed, 36 insertions, 8 deletions
diff --git a/ChangeLog b/ChangeLog
index 4c08881..fba661f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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