[Pymoul-svn] SF.net SVN: pymoul: [115] pymoul/trunk/src/moul
Status: Alpha
Brought to you by:
tiran
|
From: <ti...@us...> - 2007-02-02 00:49:50
|
Revision: 115
http://pymoul.svn.sourceforge.net/pymoul/?rev=115&view=rev
Author: tiran
Date: 2007-02-01 16:49:08 -0800 (Thu, 01 Feb 2007)
Log Message:
-----------
Lot's of fixed. The moul.file.* don't break with an OSError/IOError when the files do not exist
Modified Paths:
--------------
pymoul/trunk/src/moul/config/__init__.py
pymoul/trunk/src/moul/file/chatlog.py
pymoul/trunk/src/moul/file/directory.py
pymoul/trunk/src/moul/file/kiimage.py
pymoul/trunk/src/moul/file/plasmalog.py
pymoul/trunk/src/moul/file/tests/test_directory.py
pymoul/trunk/src/moul/file/tests/utils.py
pymoul/trunk/src/moul/file/wdysini.py
pymoul/trunk/src/moul/qt/localization.py
Modified: pymoul/trunk/src/moul/config/__init__.py
===================================================================
--- pymoul/trunk/src/moul/config/__init__.py 2007-02-01 13:47:36 UTC (rev 114)
+++ pymoul/trunk/src/moul/config/__init__.py 2007-02-02 00:49:08 UTC (rev 115)
@@ -111,7 +111,8 @@
listConfig = _configuration.listConfig
# hard coded for my system
-setOption('moul', 'installdir', 'D:\\games\\MystOnline')
+#setOption('moul', 'installdir', 'D:\\games\\MystOnline')
+setOption('moul', 'installdir', '/home/heimes/dev/pymoul/MystOnline')
## directories
class Directories(object):
@@ -136,6 +137,7 @@
map = {'install' : self.getMoulInstallDir,
'userdata' : self.getMoulUserDataDir,
'pymouldir' : self.getPyMoulDataDir,
+ 'ini' : self.getPyMoulDataDir,
}
return map[name]()
Modified: pymoul/trunk/src/moul/file/chatlog.py
===================================================================
--- pymoul/trunk/src/moul/file/chatlog.py 2007-02-01 13:47:36 UTC (rev 114)
+++ pymoul/trunk/src/moul/file/chatlog.py 2007-02-02 00:49:08 UTC (rev 115)
@@ -94,7 +94,7 @@
self._dest = destdir
self._logs = []
if not os.path.isdir(srcdir):
- LOG.critical("%s is not a directory" % srcdir)
+ LOG.warning("%s is not a directory" % srcdir)
if not os.path.isdir(destdir):
LOG.info("Creating chatlog directory %s" % destdir)
os.mkdir(destdir)
@@ -185,7 +185,7 @@
self._logfiles = [] # list of ChatlogViews
if not os.path.isdir(logdir):
- LOG.critical("%s is not a directory" % logdir)
+ LOG.warning("%s is not a directory" % logdir)
self._findChatlogs()
def _findChatlogs(self):
@@ -220,7 +220,7 @@
self._date = None
if not os.path.isfile(fname):
- LOG.critical("%s is not a file" % fname)
+ LOG.warning("%s is not a file" % fname)
@property
def name(self):
Modified: pymoul/trunk/src/moul/file/directory.py
===================================================================
--- pymoul/trunk/src/moul/file/directory.py 2007-02-01 13:47:36 UTC (rev 114)
+++ pymoul/trunk/src/moul/file/directory.py 2007-02-02 00:49:08 UTC (rev 115)
@@ -78,8 +78,11 @@
@param basepath: absolute path to folder
@type basepath: str
"""
-
self._basepath = basepath
+ for key in self._factories:
+ if key in self.__class__.__dict__:
+ raise AttributeError("Name %s is reserved and can't be used "
+ "as a factory name" % name)
def exists(self, name=None):
"""Check if directory with name exists.
@@ -99,7 +102,7 @@
@rtype: str
"""
if name and name != '.':
- path = self._dirmapping(name)
+ path = self._dirmapping[name]
else:
path = ''
return os.path.join(self._basepath, path)
@@ -111,14 +114,24 @@
@type name: str
@return: Factory instance
"""
+ try:
+ return getattr(self, name)
+ except AttributeError:
+ pass
args = []
factory, argnames = self._factories[name]
- if not self.exists(argnames[0]):
- return None
for name in argnames:
args.append(self.get(name))
return factory(*args)
+ def initializeFactories(self):
+ """Create instance attributes with factory instances
+ """
+ for key in self._factories:
+ fac = self.factory(key)
+ if fac is not None:
+ setattr(self, key, fac)
+
class UruGameDataDirectory(AbstractUruDirectory):
"""Uru game directory handler
@@ -144,7 +157,7 @@
data.
"""
_dirmapping = {
- 'log' : 'Log',
+ 'logs' : 'Logs',
'kiimages' : 'KIimages',
'avatars' : 'Avatars',
'ini' : 'init',
@@ -154,8 +167,8 @@
}
_factories = {
- 'logchat' : (ChatlogMover, ('log', 'chatlogs')),
- 'logzip' : (PlasmalogZipper, ('log', 'zipped')),
+ 'logchat' : (ChatlogMover, ('logs', 'chatlogs')),
+ 'logzip' : (PlasmalogZipper, ('logs', 'zipped')),
'kiimages' : (KIImageFixer, ('kiimages', 'fixed')),
'avatars' : (KIImageFixer, ('avatars', 'fixed')),
'graphicsini' : (GraphicsIni, ('ini',)),
@@ -165,6 +178,11 @@
'fixed' : (DirectoryCount, ('fixed',)),
}
+ def __init__(self, basepath):
+ AbstractUruDirectory.__init__(self, basepath)
+ if self.exists():
+ self.initializeFactories()
+
def create(self, name):
"""Create a directory
@@ -175,6 +193,7 @@
raise ValueError("Cannot create() basedir")
path = self.get(name)
os.makedirs(path)
+ return path
def createTree(self):
"""Create the directory tree
@@ -188,6 +207,6 @@
created.append(self._basepath)
for key in self._dirmapping:
if not self.exists(key):
- self.create(key)
+ path = self.create(key)
created.append(path)
return created
Modified: pymoul/trunk/src/moul/file/kiimage.py
===================================================================
--- pymoul/trunk/src/moul/file/kiimage.py 2007-02-01 13:47:36 UTC (rev 114)
+++ pymoul/trunk/src/moul/file/kiimage.py 2007-02-02 00:49:08 UTC (rev 115)
@@ -224,8 +224,7 @@
self._fixed = [] # fixed files
if not os.path.isdir(srcdir):
- LOG.critical("%s is not a directory" % srcdir)
- return False
+ LOG.warning("%s is not a directory" % srcdir)
if not os.path.isdir(destdir):
LOG.info("Creating chatlog directory %s" % destdir)
os.mkdir(destdir)
Modified: pymoul/trunk/src/moul/file/plasmalog.py
===================================================================
--- pymoul/trunk/src/moul/file/plasmalog.py 2007-02-01 13:47:36 UTC (rev 114)
+++ pymoul/trunk/src/moul/file/plasmalog.py 2007-02-02 00:49:08 UTC (rev 115)
@@ -47,10 +47,10 @@
self._not_removed = [] # files with full path
if not os.path.isdir(srcdir):
- LOG.critical("%s is not a directory" % srcdir)
+ LOG.warning("%s is not a directory" % srcdir)
if not self.isPlasmaLogDir():
self._ispldir = False
- LOG.critical("%s is not a plasma log directory" % srcdir)
+ LOG.warning("%s is not a plasma log directory" % srcdir)
else:
self._ispldir = True
if not os.path.isdir(destdir):
Modified: pymoul/trunk/src/moul/file/tests/test_directory.py
===================================================================
--- pymoul/trunk/src/moul/file/tests/test_directory.py 2007-02-01 13:47:36 UTC (rev 114)
+++ pymoul/trunk/src/moul/file/tests/test_directory.py 2007-02-02 00:49:08 UTC (rev 115)
@@ -21,6 +21,7 @@
__version__ = "$Id$"
__revision__ = "$Revision$"
+import os
import unittest
from doctest import DocTestSuite
@@ -34,27 +35,67 @@
from moul.file.tests.utils import base
class AbstractTest(unittest.TestCase):
+ klass = None
+
+ def setUp(self):
+ self._tmpdir = mkTempdir()
+ fakeUruGameDir(self._tmpdir)
+ self.urudir = self.klass(self._tmpdir)
+
def tearDown(self):
rmTempdir(self._tmpdir)
def test_exists(self):
- self.failUnless(self.urudir.exists)
+ self.failUnless(self.urudir.exists())
+ for d in self.urudir._dirmapping:
+ self.urudir.exists(d)
+ def test_dumbfactorycreate(self):
+ for name in self.urudir._factories:
+ f = self.urudir.factory(name)
+ self.failUnless(f, str((type(f), repr(f), name)))
+
class UruPersonalDirTest(AbstractTest):
- def setUp(self):
+ klass = UruPersonalDataDirectory
+
+ def test_nodir(self):
+ # setup a new, empty testing direcotry
+ rmTempdir(self._tmpdir)
self._tmpdir = mkTempdir()
- fakeUruPersonalDataDir(self._tmpdir)
- self.urudir = UruPersonalDataDirectory(self._tmpdir)
+ tmpdir = os.path.join(self._tmpdir, 'UruLive')
-class UruGameDirTest(AbstractTest):
- def setUp(self):
+ self.urudir = self.klass(tmpdir)
+ self.failIf(self.urudir.exists())
+ self.failIf(self.urudir.factory('audioini').exists())
+ self.failIf(self.urudir.factory('graphicsini').exists())
+
+ self.urudir.createTree()
+ self.failUnless(self.urudir.exists())
+ self.urudir.initializeFactories()
+ self.failIf(self.urudir.audioini.exists())
+ self.failIf(self.urudir.graphicsini.exists())
+
+ def test_create(self):
+ # setup a new, empty testing direcotry
+ rmTempdir(self._tmpdir)
self._tmpdir = mkTempdir()
- fakeUruGameDir(self._tmpdir)
- self.urudir = UruGameDataDirectory(self._tmpdir)
- def test_foo(self):
- pass
+ self.urudir = self.klass(self._tmpdir)
+ #self.urudir.createTree()
+ self.failUnless(self.urudir.exists())
+ self.urudir.initializeFactories()
+ self.failIf(self.urudir.audioini.exists())
+ self.urudir.audioini.create()
+ self.failUnless(self.urudir.audioini.exists())
+
+ self.failIf(self.urudir.graphicsini.exists())
+ self.urudir.graphicsini.create()
+ self.failUnless(self.urudir.graphicsini.exists())
+
+class UruGameDirTest(AbstractTest):
+ klass = UruGameDataDirectory
+
def test_suite():
return unittest.TestSuite((
unittest.makeSuite(UruPersonalDirTest),
Modified: pymoul/trunk/src/moul/file/tests/utils.py
===================================================================
--- pymoul/trunk/src/moul/file/tests/utils.py 2007-02-01 13:47:36 UTC (rev 114)
+++ pymoul/trunk/src/moul/file/tests/utils.py 2007-02-02 00:49:08 UTC (rev 115)
@@ -74,7 +74,7 @@
def fakeUruGameDir(path):
"""Create a fake Uru Live game directory
"""
- for dname in ('dat', 'sfx', 'avi'):
+ for dname in ('dat', 'sfx', 'avi', 'sfx' + os.sep + 'streamingCache'):
os.mkdir(os.path.join(path, dname))
for fname in ('UruLauncher.exe', 'UruExplorer.exe'): # XXX: win32
fd = open(os.path.join(path, fname), 'wb')
Modified: pymoul/trunk/src/moul/file/wdysini.py
===================================================================
--- pymoul/trunk/src/moul/file/wdysini.py 2007-02-01 13:47:36 UTC (rev 114)
+++ pymoul/trunk/src/moul/file/wdysini.py 2007-02-02 00:49:08 UTC (rev 115)
@@ -312,13 +312,18 @@
def __init__(self, path):
if not os.path.isdir(path):
- raise OSError("Directory not found %s" % path)
+ LOG.warning("Directory not found %s" % path)
self._fpath = os.path.join(path, self._filename)
self._filedata = {}
self._newdata = {}
self._order = []
self._opened = False
+ def exists(self):
+ """Check if file exists
+ """
+ return os.path.isfile(self._fpath)
+
def clear(self):
"""Clear all informations
"""
@@ -360,6 +365,10 @@
"""
if self._opened:
raise ValueError("File already open")
+ dirname = os.path.dirname(self._fpath)
+ if not os.path.isdir(dirname):
+ LOG.info("Creating directory %s" % dirname)
+ os.mkdir(dirname)
# Create a dummy file
fd = open(self._fpath, 'w')
fd.write("Created by pyMoul")
Modified: pymoul/trunk/src/moul/qt/localization.py
===================================================================
--- pymoul/trunk/src/moul/qt/localization.py 2007-02-01 13:47:36 UTC (rev 114)
+++ pymoul/trunk/src/moul/qt/localization.py 2007-02-02 00:49:08 UTC (rev 115)
@@ -48,7 +48,8 @@
Mixin for documentation tab
"""
def _documents_init(self):
- locDir = lookupDir('loc')
+ return
+ locDir = lookupDir('loc')
if not os.path.isdir(locDir):
return
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|