aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMathieu Blondel <mathieu@mblondel.org>2007-05-21 21:31:28 +0000
committerMathieu BlondelMathieu Blondel <mathieu@mblondel.orgmathieu@mblondel.org>2007-05-21 21:31:28 +0000
commit7e5fbeb7b5bdb699605c89b77fa46f881e283347 (patch)
tree2c76d69ece5af51a6304f82d800959e7ffa980c4
parent79d8fbb8e5f0b06dcfe41d47501969518576a3b2 (diff)
downloadwikipediafs-7e5fbeb7b5bdb699605c89b77fa46f881e283347.tar.gz
- mkdir (wikipedia|wiktionary|wikiquote|wikibooks|wikisource)-lang (e.g.
mkdir wikipedia-fr) automatically sets a working directory for the concerned site from the wikimedia foundation. - Added subfolder support (yay !). git-svn-id: http://svn.code.sf.net/p/wikipediafs/code/branches/fuse-python-new-api@31 59acd704-e115-0410-a914-e735a229ed7c
-rw-r--r--src/wikipediafs/fs.py55
-rw-r--r--src/wikipediafs/metadir.py2
2 files changed, 35 insertions, 22 deletions
diff --git a/src/wikipediafs/fs.py b/src/wikipediafs/fs.py
index 414f2a9..fdc50c9 100644
--- a/src/wikipediafs/fs.py
+++ b/src/wikipediafs/fs.py
@@ -32,26 +32,31 @@ class ArticleDir:
self.files = {}
self.dirs = {}
- def get_article_name(self, path):
+ def get_article_full_name(self, path):
# Returns article name. This can include subpages.
return '/'.join(path.split("/")[2:])
+ def get_article_file_name(self, path):
+ # File name as used in the directory i.e. without the subpages.
+ return os.path.basename(path)
+
def is_valid_file(self, path):
- name = self.get_article_name(path)
- if name[-3:] == ".mw":
+ file_name = self.get_article_file_name(path)
+ if file_name[-3:] == ".mw":
return True
else:
return False
def contents(self, path):
- arr = []
+ arr = self.dirs.keys()
for k in self.files.keys():
if not self.files[k].is_empty:
arr.append(k)
return arr
def is_directory(self, path):
- return False
+ name = self.get_article_file_name(path)
+ return self.dirs.has_key(name)
def is_file(self, path):
if self.is_valid_file(path):
@@ -64,28 +69,30 @@ class ArticleDir:
return False
def read_file(self, path):
- name = self.get_article_name(path)
- if self.files.has_key(name):
- art = self.files[name]
+ 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:
- art = Article(name[0:-3], # removes .mw from the name
+ art = Article(full_name[0:-3], # removes .mw from the name
cache_time=CONFIG.cache_time,
logger = LOGGER,
**self.config)
txt = art.get()
- self.files[name] = art
+ self.files[file_name] = art
return art.get()
- def write_to(self, path, txt):
- name = self.get_article_name(path)
- if self.files.has_key(name):
- art = self.files[name]
+ def write_to(self, path, txt):
+ 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:
- art = Article(name[0:-3],
+ art = Article(full_name[0:-3],
cache_time=CONFIG.cache_time,
logger = LOGGER,
**self.config)
- self.files[name] = art
+ self.files[file_name] = art
art.set(txt)
def size(self, path):
@@ -95,12 +102,18 @@ class ArticleDir:
return 0755
def unlink(self, path):
- name = self.get_article_name(path)
- if self.files.has_key(name):
- self.files.pop(name)
+ file_name = self.get_article_file_name(path)
+ if self.files.has_key(file_name):
+ self.files.pop(file_name)
return True # succeeded
else:
- return False
+ return False
+
+ def mkdir(self, path):
+ name = self.get_article_file_name(path)
+ self.dirs[name] = True
+ self.fs.set_dir(path, ArticleDir(self.fs, self.config))
+ return True
class Root:
def __init__(self, fs):
@@ -134,7 +147,7 @@ class Root:
def mode(self, path):
return 0755
- def mkdir(self, path, mode):
+ def mkdir(self, path):
# add a site from the wikimedia foundation
basename = os.path.basename(path)
match = self.regexp.match(basename)
diff --git a/src/wikipediafs/metadir.py b/src/wikipediafs/metadir.py
index 0587493..b6ebe03 100644
--- a/src/wikipediafs/metadir.py
+++ b/src/wikipediafs/metadir.py
@@ -243,7 +243,7 @@ class MetaDir(Fuse):
if dir(d).count("mkdir") == 0:
return -errno.EACCES # Permission denied
else:
- res = d.mkdir(path, mode)
+ res = d.mkdir(path)
if res != True:
return -errno.EACCES # Permission denied