|
def | __init__ (self, book_uri=None, mode=None, instance=None, book=None) |
| A convenient constructor that allows you to specify a book URI, begin the session, and load the book. More...
|
|
def | __enter__ (self) |
|
def | __exit__ (self, exc_type, exc_value, traceback) |
|
def | raise_backend_errors (self, called_function="qof_session function") |
|
def | generate_errors (self) |
|
def | pop_all_errors (self) |
|
def | do_lookup_create_oo_instance (self, lookup_function, cls, args) |
|
A GnuCash book editing session
To commit changes to the session you may need to call save,
(this is always the case with the file backend).
When you're down with a session you may need to call end()
Every Session has a Book in the book attribute, which you'll definitely
be interested in, as every GnuCash entity (Transaction, Split, Vendor,
Invoice..) is associated with a particular book where it is stored.
Definition at line 149 of file gnucash_core.py.
def python.gnucash_core.Session.__init__ |
( |
|
self, |
|
|
|
book_uri = None , |
|
|
|
mode = None , |
|
|
|
instance = None , |
|
|
|
book = None |
|
) |
| |
A convenient constructor that allows you to specify a book URI, begin the session, and load the book.
This can give you the power of calling qof_session_new, qof_session_begin, and qof_session_load all in one!
qof_session_load is only called if url scheme is "xml" and mode is SESSION_NEW_STORE or SESSION_NEW_OVERWRITE
- Parameters
-
book_uri | must be a string in the form of a URI/URL. The access method specified depends on the loaded backends. Paths may be relative or absolute. If the path is relative, that is if the argument is "file://somefile.xml", then the current working directory is assumed. Customized backends can choose to search other application-specific directories or URI schemes as well. It be None to skip the calls to qof_session_begin and qof_session_load. |
instance | argument can be passed if new Session is used as a wrapper for an existing session instance |
mode | The SessionOpenMode. |
- Note
- SessionOpenMode replaces deprecated ignore_lock, is_new and force_new.
- SessionOpenMode
SESSION_NORMAL_OPEN
: Find an existing file or database at the provided uri and open it if it is unlocked. If it is locked post a QOF_BACKEND_LOCKED error.
SESSION_NEW_STORE
: Check for an existing file or database at the provided uri and if none is found, create it. If the file or database exists post a QOF_BACKED_STORE_EXISTS and return.
SESSION_NEW_OVERWRITE
: Create a new file or database at the provided uri, deleting any existing file or database.
SESSION_READ_ONLY
: Find an existing file or database and open it without disturbing the lock if it exists or setting one if not. This will also set a flag on the book that will prevent many elements from being edited and will prevent the backend from saving any edits.
SESSION_BREAK_LOCK
: Find an existing file or database, lock it, and open it. If there is already a lock replace it with a new one for this session.
- Errors
- qof_session_begin() signals failure by queuing errors. After it completes use qof_session_get_error() and test that the value is
ERROR_BACKEND_NONE
to determine that the session began successfully.
- Exceptions
-
Definition at line 163 of file gnucash_core.py.
163 def __init__(self, book_uri=None, mode=None, instance=None, book=None):
165 A convenient constructor that allows you to specify a book URI, 166 begin the session, and load the book. 168 This can give you the power of calling 169 qof_session_new, qof_session_begin, and qof_session_load all in one! 171 qof_session_load is only called if url scheme is "xml" and 172 mode is SESSION_NEW_STORE or SESSION_NEW_OVERWRITE 174 @param book_uri must be a string in the form of a URI/URL. The access 175 method specified depends on the loaded backends. Paths may be relative 176 or absolute. If the path is relative, that is if the argument is 177 "file://somefile.xml", then the current working directory is 178 assumed. Customized backends can choose to search other 179 application-specific directories or URI schemes as well. 180 It be None to skip the calls to qof_session_begin and 183 @param instance argument can be passed if new Session is used as a 184 wrapper for an existing session instance 186 @param mode The SessionOpenMode. 187 @note SessionOpenMode replaces deprecated ignore_lock, is_new and force_new. 190 `SESSION_NORMAL_OPEN`: Find an existing file or database at the provided uri and 191 open it if it is unlocked. If it is locked post a QOF_BACKEND_LOCKED error. 193 `SESSION_NEW_STORE`: Check for an existing file or database at the provided 194 uri and if none is found, create it. If the file or database exists post a 195 QOF_BACKED_STORE_EXISTS and return. 197 `SESSION_NEW_OVERWRITE`: Create a new file or database at the provided uri, 198 deleting any existing file or database. 200 `SESSION_READ_ONLY`: Find an existing file or database and open it without 201 disturbing the lock if it exists or setting one if not. This will also set a 202 flag on the book that will prevent many elements from being edited and will 203 prevent the backend from saving any edits. 205 `SESSION_BREAK_LOCK`: Find an existing file or database, lock it, and open 206 it. If there is already a lock replace it with a new one for this session. 209 qof_session_begin() signals failure by queuing errors. After it completes use 210 qof_session_get_error() and test that the value is `ERROR_BACKEND_NONE` to 211 determine that the session began successfully. 213 @exception as begin() and load() are wrapped with raise_backend_errors_after_call() 214 this function can raise a GnuCashBackendException. If it does, 215 you don't need to cleanup and call end() and destroy(), that is handled 216 for you, and the exception is raised. 218 if instance
is not None:
219 GnuCashCoreClass.__init__(self, instance=instance)
223 GnuCashCoreClass.__init__(self, book)
225 if book_uri
is not None:
228 mode = SessionOpenMode.SESSION_NORMAL_OPEN
229 self.begin(book_uri, mode)
235 is_new = mode
in (SessionOpenMode.SESSION_NEW_STORE, SessionOpenMode.SESSION_NEW_OVERWRITE)
236 scheme = urlparse(book_uri).scheme
237 if not (is_new
and scheme ==
'xml'):
239 except GnuCashBackendException
as backend_exception: