From: alexander s. <a1...@us...> - 2010-12-14 11:10:25
|
Update of /cvsroot/dbfpy/dbfpy/dbfpy In directory sfp-cvsdas-3.v30.ch3.sourceforge.com:/tmp/cvs-serv18204 Modified Files: dbf.py Log Message: added Memo file support Index: dbf.py =================================================================== RCS file: /cvsroot/dbfpy/dbfpy/dbfpy/dbf.py,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** dbf.py 11 Feb 2007 09:23:13 -0000 1.7 --- dbf.py 14 Dec 2010 11:10:17 -0000 1.8 *************** *** 39,42 **** --- 39,43 ---- """ """History (most recent first): + 14-dec-2010 [als] added Memo file support 11-feb-2007 [als] export INVALID_VALUE; Dbf: added .ignoreErrors, .INVALID_VALUE *************** *** 64,67 **** --- 65,69 ---- import header + import memo import record from utils import INVALID_VALUE *************** *** 82,86 **** """ ! __slots__ = ("name", "header", "stream", "_changed", "_new", "_ignore_errors") --- 84,88 ---- """ ! __slots__ = ("name", "header", "stream", "memo", "_changed", "_new", "_ignore_errors") *************** *** 91,95 **** ## initialization and creation helpers ! def __init__(self, f, readOnly=False, new=False, ignoreErrors=False): """Initialize instance. --- 93,98 ---- ## initialization and creation helpers ! def __init__(self, f, readOnly=False, new=False, ignoreErrors=False, ! memoFile=None): """Initialize instance. *************** *** 97,103 **** f: Filename or file-like object. - new: - True if new data table must be created. Assume - data table exists if this argument is False. readOnly: if ``f`` argument is a string file will --- 100,103 ---- *************** *** 105,115 **** this argument is ignored. This argument is ignored even if ``new`` argument is True. ! headerObj: ! `header.DbfHeader` instance or None. If this argument ! is None, new empty header will be used with the ! all fields set by default. ignoreErrors: if set, failing field value conversion will return ``INVALID_VALUE`` instead of raising conversion error. """ --- 105,117 ---- this argument is ignored. This argument is ignored even if ``new`` argument is True. ! new: ! True if new data table must be created. Assume ! data table exists if this argument is False. ignoreErrors: if set, failing field value conversion will return ``INVALID_VALUE`` instead of raising conversion error. + memoFile: + optional path to the FPT (memo fields) file. + Default is generated from the DBF file name. """ *************** *** 122,126 **** self.stream = file(f, "w+b") else: ! # tabe file must exist self.stream = file(f, ("r+b", "rb")[bool(readOnly)]) else: --- 124,128 ---- self.stream = file(f, "w+b") else: ! # table file must exist self.stream = file(f, ("r+b", "rb")[bool(readOnly)]) else: *************** *** 137,140 **** --- 139,150 ---- self._new = bool(new) self._changed = False + if memoFile: + self.memo = memo.MemoFile(memoFile, readOnly=readOnly, new=new) + elif self.header.hasMemoField: + self.memo = memo.MemoFile(memo.MemoFile.memoFileName(self.name), + readOnly=readOnly, new=new) + else: + self.memo = None + self.header.setMemoFile(self.memo) ## properties *************** *** 198,201 **** --- 208,212 ---- self.header.write(self.stream) self.stream.flush() + self.memo.flush() self._changed = False *************** *** 225,228 **** --- 236,244 ---- if self._new: self.header.addField(*defs) + if self.header.hasMemoField: + if not self.memo: + self.memo = memo.MemoFile( + memo.MemoFile.memoFileName(self.name), new=True) + self.header.setMemoFile(self.memo) else: raise TypeError("At least one record was added, " |