Source code for extools

"""
extools - Python tools for Orchid Extender

This package provides a number of utility functions designed to make working
with Extender for Sage 300 easier.

A View-like object is any object which responds to .put, .get, .recordClear,
.browse, .fetch, .update, .insert.
"""
try:
    from accpac import *
except ImportError as e:
    # This happens when the tools are imported outside of the Extender env.
    # We can pass to let the tool do its work (likely sphinx making docs).
    pass

[docs]def lines_in(ds): """Generator that yields all records in a datasource. :param ds: an instance of an accpac.UIDataSource """ ds.recordClear() ds.browse("") while ds.fetch() == 0: yield ds
[docs]def lines_in_view(viewid): """Generator that yields all records in a view. :param viewid: The identifier of the datastore (i.e. dsOEORDH) """ view = openView(viewid) view.recordClear() view.browse("") while view.fetch() == 0: yield view
[docs]def success(*args): """Check if the return values from view actions indicate success. Extender view calls return 0 on success and non-zero on failure. Use this function to check whether a collection of view calls have been successful. :param \*args: any number of return values. :rtype: bool .. code-block:: python view = openView("EX0001") rc = view.recordClear() br = view.browse("") fe = view.fetch() if not success(rc, br, fe): showMessage("Failed to open EX0001 and seek to the first record.") """ if sum(args) > 0: return False return True
[docs]def open_and_fetch_row(viewid): """Open the view and fetch the first row. :param view: RotoID of the view to open and fetch from :rtype: accpack.View or None """ view = openView(viewid) browsed = view.browse('') fetched = view.fetch() if not success(browsed, fetched): return None return view