edbob
=====
edbob is a Pythonic software framework, released under the GNU Affero General
Public License.
It aims to be "environment-neutral" in that it can assist with development for
console, web, or GUI applications. Pay only for what you eat; however all of
its functionality combined may be considered a "full stack" of sorts.
For more information, please see `edbob.org <http://edbob.org/>`_ or send email
to `Lance Edgar <mailto:lance@edbob.org>`_.
Installation
------------
Install the software with::
$ pip install edbob
Usage
-----
Built-in help can be seen with::
$ edbob help
0.1.2
-----
* Allow config file to prevent logging configuration from happening.
0.1.1
-----
* Some random things required in production at MaMa Jean's...
Specifically this is known to replace occurrences of e.g. ``edbob.User`` with
a more standard (properly imported) reference to ``User``.
0.1a29
------
* Removed ``setup.cfg`` file.
* Changed some logging instances from ``INFO`` to ``DEBUG``.
* Updated ``repr()`` output for model classes.
0.1a28
------
- [bug] Secured daemon PID files. They are no longer readable or writeable
(whoops) by anyone other than the user who owns the process.
- [feature] Added ``--progress`` argument to command system.
- [general] Added initial Fabric script.
0.1a27
------
- [feature] Overhauled file monitors. Added the "process existing" (defaults
to true) and "stop on error" (defaults to false) features to both Linux and
Win32 file monitors. Both features may be overridden in config. The Linux
file monitor was rewritten as an ``edbob.daemon.Daemon`` class.
0.1a26
------
- [feature] Added ``StrippingFieldRenderer``.
- [general] Some style tweaks.
- [bug] Fixed ``graft()`` function when called with module reference.
0.1a25
------
- [feature] Added "sqlerror" tween which, in combination with ``pyramid_tm``,
can allow Pyramid apps to gracefully handle database server restarts. Any
transaction which fails due to a disconnection from the server may be
attempted more than once. The assumption is that the second attempt will
succeed, since the underlying connection pool will have been invalidated upon
the first failure.
- [feature] Added ``PHONE_TYPE`` enumeration.
- [general] Added some ``__unicode__()`` methods to database models.
- [bug] Fixed CSS in the ``progress.mako`` template.
- [feature] Improved the ``load_spec()`` function so that it raises an
``InvalidSpec`` exception if the spec doesn't contain exactly one colon.
0.1a24
------
- [bug] Fixed bug where creating a new ``Role`` with the UI would use default
permissions of the Guest role. Now the default permissions are empty.
- [bug] Fixed ``User.roles`` UI so that the Guest role is never shown.
0.1a23
------
- [feature] Added ``capture_output()`` function to ``win32`` module. This is a
convenience function which works around an issue when attempting to capture
output from a command when the calling application is a Windows GUI app which
was launched via the Windows console (DOS terminal).
- [feature] Updated ``User`` and ``Role`` management views for Pyramid apps.
0.1a22
------
- [feature] Added a view which allows a user to change his/her password from
within Pyramid web apps.
- [general] Tweaked styles for form validation errors.
- [general] Added convenience subclass of ``formencode.Schema``.
- [general] Split CSS styles into ``base.css`` and ``layout.css``, since really
they serve different purposes.
- [feature] Added ``overwriting_move()`` convenience function.
0.1a21
------
- [feature] Added the ability to specify a Mako template for use when
generating error emails. Templates may be referenced in the config file
using either a resource path or an absolute file path. If no template is
specified, the plain text fallback will be used. The ``content_type`` of the
email is also configurable (defaults to ``'text/html'`` if a Mako template is
used; ``'text/plain'`` otherwise).
0.1a20
------
- [feature] Added ability to configure path to the PID file used by file
monitor daemons running on Linux. This was necessary to allow multiple
daemons to run on the same machine.
0.1a19
------
- [general] Added ``active_extensions`` stubs to alembic migration script
template.
- [general] Updated pyramid user views and templates. These were sorely out of
date.
0.1a18
------
- [feature] Added ``engine_from_config()`` function to ``edbob.sqlalchemy``
module. This was done to provide awareness of the ``poolclass`` parameter to
engine configuration.
0.1a17
------
- [feature] Added ``display()`` method to ``AutocompleteView``. This allows
overriding the display text for autocomplete results, in the event that
``str(result)`` isn't good enough.
- [bug] Fixed ``request.has_perm()`` function so that it can check for
permissions on the "guest" role, in the event a user is not logged in.
0.1a16
------
- Add ``alembic/*.py`` to ``MANIFEST.in``.
- Various progress tweaks.
- Add ``OrderedDict`` import to ``util`` module.
0.1a15
------
- Add ``alembic`` to ``db`` dependencies.
- Fix alembic ``env.py`` template.
0.1a14
------
- Slight overhaul of init() system; added ``edbob.init_modules()`` function.
- Added ``read_service()`` method to ``AppConfigParser`` class, for use with
Windows services.
- Added generic ``Service`` class to ``edbob.win32`` module. (File monitor now
inherits from it.)
- Tweaked ``edbob.db`` initialization somewhat. (``Base.metadata`` no longer
binds to ``edbob.db.engine``.)
- Fixed guest role bug in ``edbob.db.auth.has_permission()`` function.
- Added "automagical" enumeration support for database extensions.
- Added ``EMAIL_PREFERENCE`` enum to ``contact`` database extension.
- Tweaked ``edbob.pyramid.includeme()``.
- Tweaked ``people`` Pyramid views.
- Added ``edbob.daemon`` module.
0.1a13
------
- ``edbob.pyramid.Session`` uses ``sessionmaker()`` instead of
``edbob.db.Session``.
- ``edbob.pyramid.includeme()`` now configures ``pyramid_beaker`` directly.
- ``edbob.pyramid.includeme()`` now configures auth/auth policies directly.
- Pyramid progress indicator added.
- ``edbob.pyramid.Session`` added to global template render context.
- ``request.get_referrer()`` method added (removed ``edbob.pyramid.util``
module).
- ``request.get_setting()`` and ``request.save_setting()`` methods added.
- ``Grid.column_header()`` now supports ``title`` attribute.
- ``Grid.editable`` support added.
- Template / style tweaks.
- ``text`` argument to ``disable_button()`` JS function is now optional.
- Forbidden view flash message no longer duplicated when multiple redirects
occur.
- ``CrudView`` class improved to support various workflow needs
(e.g. post-delete procesing).
- Extra renderer keyword args support added to ``GridView`` class.
- ``SearchableAlchemyGridView`` class improved to support various workflow
needs (e.g. obtaining an unsorted query).
- Fixed file monitor on Linux.
- Added ``pyramid_exclog`` dependency for Pyramid apps.
- Added ``beaker`` and ``pyramid_exclog`` settings to scaffold INI files.
- Added ``edbob.files.locking_copy()`` function.
- Added file lock support to Linux file monitor.
0.1a12
------
- Fix ``MANIFEST.in`` to include jQuery UI theme.
0.1a11
------
- Add ``alembic`` stuff to scaffold.
- Overhaul Pyramid templates and styles.
- Fix ``current_time()`` in ``sqlalchemy`` module.
- Improve web redirection on user logout.
- Move database extension to subdir in scaffold.
- Add ``BooleanSearchFilter`` class.
- Overhaul CRUD form (create ``CrudView`` class).
- Add ``get_referer()`` in ``pyramid.util`` module.
- Overhaul file monitor Windows service.
0.1a10
------
- Fix reStructuredText in changelog.
0.1a9
-----
- Clean up ``edbob.init()``; fix call in Pyramid app scaffold.
- Add ``grant_permission()`` function to ``edbob.db.auth``.
- Overhaul ``Grid``, ``GridView`` classes in ``edbob.pyramid``.
- Restructure ``edbob.pyramid.forms.formalchemy``.
- Tweak Pyramid templates.
- Add ``core_schema_installed()`` function to ``edbob.db.util``.
- Add generic autocomplete template.
- Overhaul ``edbob.time``.
- Add ``contact`` database extension; moved ``Person`` to it.
- Improve ``CrudView`` class.
- Add ``get_user_dir()``, ``get_user_file()`` methods to ``AppConfigParser``.
- Add ``DosFile`` class (for writing DOS files) to ``edbob.files``.
- Add jQuery ``smoothness`` CSS to static folder.
- Add ``edbob.errors`` (overrides ``sys.excepthook``).
- Add debug logging to ``edbob.filemon.win32_server``; made it call
``sys.excepthook()`` when actions fail.
0.1a8
-----
- Changed ``py-bcrypt`` requirement to ``py-bcrypt-w32`` when running on Win32.
- Removed explicit ``INFO`` level from ``basic_logging()`` function.
0.1a7
-----
- Tweaked logging and initialization semantics for shell command.
- Added "foo" views and templates to Pyramid scaffold.
- Added ``edbob.pyramid.forms.FieldSet.allow_continue`` attribute.
- Made ``sort`` keyword optional for grids.
- Added ``edbob.pyramid.views.Crud`` class.
- Added ``edbob.pyramid.views.GridView`` class.
- Added "Guest" role to auth / permissions framework.
- Added ``edbob.pyramid.forms.formalchemy.AutocompleteFieldRenderer`` class.
- Added ``edbob.Object.__str__()`` method.
- Added ``edbob.sqlalchemy.current_time()`` function to provide UTC timestamp
as a default field value.
- Added ``pyramid_tm`` tween to Pyramid apps.
- Tweaked login, object index and CRUD templates.
- Added file monitor for Linux.
0.1a6
-----
- Fixed MANIFEST.in file.
0.1a5
-----
- Added ``edbob.csv`` module.
- Tweaked logging configuration and initialization semantics.
0.1a4
-----
- Fixed call to sleep() in filemon service.
0.1a3
-----
- Various tweaks to Pyramid code.
0.1a2
-----
- Add ``win32.send_data_to_printer()`` function.
- Various tweaks to Pyramid code.
0.1a1
-----
- Initial version