Compare commits
32 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
742924596d | ||
|
|
ba2b6db75d | ||
|
|
d2725c2fb3 | ||
|
|
b0ac9bc7eb | ||
|
|
c91d98a609 | ||
|
|
5bf93ef57c | ||
|
|
594c58065c | ||
|
|
9c764ea240 | ||
|
|
1d238f3575 | ||
|
|
9dd8e11a79 | ||
|
|
8168c06192 | ||
|
|
3a21fa23bf | ||
|
|
2f63fed30a | ||
|
|
4e93f3b93a | ||
|
|
8bf44f3ded | ||
|
|
c4072c7ac0 | ||
|
|
ade17c5f90 | ||
|
|
8007343b3a | ||
|
|
405d78fb40 | ||
|
|
9624cb8fe4 | ||
|
|
c07438837e | ||
|
|
ff0eb3cf80 | ||
|
|
0471180ee9 | ||
|
|
6e43e03b95 | ||
|
|
5eae6aa7ec | ||
|
|
09ba2a7c3c | ||
|
|
717496d58a | ||
|
|
f32bd6946c | ||
|
|
d1df2aa368 | ||
|
|
36ab26dfaf | ||
|
|
6be40fd4e3 | ||
|
|
25096dc70d |
1056 changed files with 13287 additions and 107421 deletions
4
.gitattributes
vendored
4
.gitattributes
vendored
|
|
@ -1,4 +0,0 @@
|
|||
# -*- mode: conf -*-
|
||||
|
||||
# Use DOS line endings for email message body templates.
|
||||
rattail/templates/mail/*.mako eol=crlf
|
||||
8
.gitignore
vendored
8
.gitignore
vendored
|
|
@ -1,7 +1 @@
|
|||
*~
|
||||
*.pyc
|
||||
.tox/
|
||||
build/
|
||||
dist/
|
||||
docs/_build/
|
||||
rattail.egg-info/
|
||||
rattail.egg-info
|
||||
|
|
|
|||
500
CHANGELOG.md
500
CHANGELOG.md
|
|
@ -1,500 +0,0 @@
|
|||
|
||||
# Changelog
|
||||
All notable changes to rattail will be documented in this file.
|
||||
|
||||
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
|
||||
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## v0.21.2 (2026-05-28)
|
||||
|
||||
### Fix
|
||||
|
||||
- remove reference to click package
|
||||
|
||||
## v0.21.1 (2025-10-19)
|
||||
|
||||
### Fix
|
||||
|
||||
- add Documentation link in pyproject.toml
|
||||
|
||||
## v0.21.0 (2025-10-19)
|
||||
|
||||
### Feat
|
||||
|
||||
- require latest wuttjamaican
|
||||
|
||||
## v0.20.6 (2025-10-04)
|
||||
|
||||
### Fix
|
||||
|
||||
- add dependency for SQLAlchemy-Utils
|
||||
|
||||
## v0.20.5 (2025-09-20)
|
||||
|
||||
### Fix
|
||||
|
||||
- fix config extension entry point
|
||||
|
||||
## v0.20.4 (2025-02-15)
|
||||
|
||||
### Fix
|
||||
|
||||
- add `rattail purge-reports` command
|
||||
|
||||
## v0.20.3 (2025-01-07)
|
||||
|
||||
### Fix
|
||||
|
||||
- *do* keep exit code for run-n-mail overnight luigi task
|
||||
|
||||
## v0.20.2 (2024-12-16)
|
||||
|
||||
### Fix
|
||||
|
||||
- force sorting of (sub)commands when displaying with `--help`
|
||||
- do not keep exit code for run-n-mail overnight luigi task
|
||||
|
||||
## v0.20.1 (2024-12-10)
|
||||
|
||||
### Fix
|
||||
|
||||
- use simple string instead of UUID for special role getters
|
||||
- move some logic to avoid error when no sqlalchemy
|
||||
- add custom `make_uuid()` function, app handler method
|
||||
- add custom `uuid_column()` and `uuid_fk_column()` functions
|
||||
- cleanup some code for wutta project template
|
||||
|
||||
## v0.20.0 (2024-11-24)
|
||||
|
||||
### Feat
|
||||
|
||||
- add project generator for 'wutta'
|
||||
|
||||
### Fix
|
||||
|
||||
- tweak generated output for new python/rattail projects
|
||||
- avoid error in product autocomplete for duplicated key
|
||||
- add problem report for duplicated product keys
|
||||
|
||||
## v0.19.2 (2024-11-18)
|
||||
|
||||
### Fix
|
||||
|
||||
- remove enum for sqlalchemy-continuum operation types
|
||||
- define `str()` behavior for ProductCost
|
||||
- add convenience enum for sqlalchemy-continuum operation types
|
||||
|
||||
## v0.19.1 (2024-11-12)
|
||||
|
||||
### Fix
|
||||
|
||||
- make vendor optional, for Vendor Sample Files
|
||||
|
||||
## v0.19.0 (2024-10-22)
|
||||
|
||||
### Feat
|
||||
|
||||
- add support for new ordering batch from parsed file
|
||||
|
||||
### Fix
|
||||
|
||||
- fix method call signature
|
||||
|
||||
## v0.18.12 (2024-09-15)
|
||||
|
||||
### Fix
|
||||
|
||||
- update project links, kallithea -> forgejo
|
||||
|
||||
## v0.18.11 (2024-09-03)
|
||||
|
||||
### Fix
|
||||
|
||||
- move startup workaround for trainwreck query bug
|
||||
|
||||
## v0.18.10 (2024-09-03)
|
||||
|
||||
### Fix
|
||||
|
||||
- add startup workaround for trainwreck query bug
|
||||
|
||||
## v0.18.9 (2024-08-30)
|
||||
|
||||
### Fix
|
||||
|
||||
- change import for wuttjamaican base model
|
||||
|
||||
## v0.18.8 (2024-08-28)
|
||||
|
||||
### Fix
|
||||
|
||||
- move "record changes" global hook to startup()
|
||||
- cleanup old code for "record changes" session feature
|
||||
|
||||
## v0.18.7 (2024-08-27)
|
||||
|
||||
### Fix
|
||||
|
||||
- hopefully fix startup continuum bug per 'active_history' models
|
||||
|
||||
## v0.18.6 (2024-08-26)
|
||||
|
||||
### Fix
|
||||
|
||||
- inherit from wuttjamaican for `EmailHandler`
|
||||
|
||||
## v0.18.5 (2024-08-26)
|
||||
|
||||
### Fix
|
||||
|
||||
- avoid legacy config methods within `make_config()`
|
||||
- tweak how versioning is configured and confirmed
|
||||
|
||||
## v0.18.4 (2024-08-22)
|
||||
|
||||
### Fix
|
||||
|
||||
- use app.get_title() and app.get_node_title(); avoid deprecated calls
|
||||
|
||||
## v0.18.3 (2024-08-20)
|
||||
|
||||
### Fix
|
||||
|
||||
- suppress warning when checking for legacy `app_package` config
|
||||
- partially restore previous logic for `app.get_version()`
|
||||
|
||||
## v0.18.2 (2024-08-20)
|
||||
|
||||
### Fix
|
||||
|
||||
- minor tweaks to modernize etc.
|
||||
- deprecate more methods for config object
|
||||
- deprecate `config.rattail_engines` in favor of `appdb_engines`
|
||||
- fix wrong name in deprecation warning
|
||||
|
||||
## v0.18.1 (2024-08-15)
|
||||
|
||||
### Fix
|
||||
|
||||
- move `get_class_hierarchy()` util function to wuttjamaican
|
||||
- improve logic/fallback for `str(person)`
|
||||
|
||||
## v0.18.0 (2024-08-15)
|
||||
|
||||
### Feat
|
||||
|
||||
- refactor config/extension, session logic per wuttjamaican
|
||||
|
||||
### Fix
|
||||
|
||||
- let wuttjamaican configure app db engines
|
||||
- use `ModelBase` from wuttjamaican, as our model base class
|
||||
- cascade deletions for Customer -> CustomerShopper
|
||||
|
||||
## v0.17.11 (2024-08-13)
|
||||
|
||||
### Fix
|
||||
|
||||
- grow column size for `MemberEquityPayment.amount`
|
||||
- stop logging config files read
|
||||
|
||||
## v0.17.10 (2024-08-09)
|
||||
|
||||
### Fix
|
||||
|
||||
- add `rattail.util.render_duration()` function
|
||||
- stop setting falafel theme in installer
|
||||
|
||||
## v0.17.9 (2024-08-08)
|
||||
|
||||
### Fix
|
||||
|
||||
- remove ref to missing variable
|
||||
|
||||
## v0.17.8 (2024-08-06)
|
||||
|
||||
### Fix
|
||||
|
||||
- move logic upstream for `save_setting()`, `delete_setting()`
|
||||
|
||||
## v0.17.7 (2024-08-05)
|
||||
|
||||
### Fix
|
||||
|
||||
- `AppHandler.get_version()` should use upstream logic
|
||||
|
||||
## v0.17.6 (2024-08-05)
|
||||
|
||||
### Fix
|
||||
|
||||
- method for `AuthHandler.user_is_admin()` moved upstream
|
||||
- invoke wuttjamaican logic for `rattail.util.prettify()`
|
||||
|
||||
## v0.17.5 (2024-07-18)
|
||||
|
||||
### Fix
|
||||
|
||||
- require latest wuttjamaican
|
||||
|
||||
## v0.17.4 (2024-07-17)
|
||||
|
||||
### Fix
|
||||
|
||||
- rename auth handler; avoid app in provider constructor
|
||||
|
||||
## v0.17.3 (2024-07-16)
|
||||
|
||||
### Fix
|
||||
|
||||
- fix bugs in `OrgHandler.get_subdepartment()`
|
||||
- avoid deprecated calls to `administrator_role()`
|
||||
|
||||
## v0.17.2 (2024-07-16)
|
||||
|
||||
### Fix
|
||||
|
||||
- avoid deprecated `self.model` for people handler
|
||||
|
||||
## v0.17.1 (2024-07-15)
|
||||
|
||||
### Fix
|
||||
|
||||
- avoid deprecated `self.model` within the auth handler
|
||||
|
||||
## v0.17.0 (2024-07-14)
|
||||
|
||||
### Feat
|
||||
|
||||
- move most of auth handler logic to wuttjamaican
|
||||
|
||||
### Fix
|
||||
|
||||
- rename some constraints per wutta model
|
||||
|
||||
## v0.16.1 (2024-07-12)
|
||||
|
||||
### Fix
|
||||
|
||||
- remove duplicate method for `AppHandler.load_object()`
|
||||
- remove duplicate method for `RattailConfig.production()`
|
||||
|
||||
## v0.16.0 (2024-07-11)
|
||||
|
||||
### Feat
|
||||
|
||||
- move some app model logic to wuttjamaican
|
||||
|
||||
## v0.15.0 (2024-07-09)
|
||||
|
||||
### Feat
|
||||
|
||||
- drop python 3.6 support, use pyproject.toml (again)
|
||||
|
||||
## v0.14.8 (2024-07-05)
|
||||
|
||||
### Fix
|
||||
|
||||
- fix model reference in reporting handler
|
||||
|
||||
## v0.14.7 (2024-07-04)
|
||||
|
||||
### Fix
|
||||
|
||||
- add `get_cmd()` method for import handlers
|
||||
|
||||
- specify default list for rattail mail templates
|
||||
|
||||
- add `get_role()` method for auth handler
|
||||
|
||||
## v0.14.6 (2024-07-04)
|
||||
|
||||
### Fix
|
||||
|
||||
- refactor code so most things work without sqlalchemy
|
||||
|
||||
- avoid command line errors if sqlalchemy not installed
|
||||
|
||||
- bump version for wuttjamaican
|
||||
|
||||
## v0.14.5 (2024-07-04)
|
||||
|
||||
### Fix
|
||||
|
||||
- change how we override default app handler, engine maker
|
||||
|
||||
## v0.14.4 (2024-07-02)
|
||||
|
||||
### Fix
|
||||
|
||||
- avoid `pkg_resources` for `files.resource_path()`
|
||||
|
||||
## v0.14.3 (2024-07-02)
|
||||
|
||||
### Fix
|
||||
|
||||
- include importing subcommands for discovery
|
||||
|
||||
## v0.14.2 (2024-07-02)
|
||||
|
||||
### Fix
|
||||
|
||||
- delay imports from `wuttjamaican.db`
|
||||
|
||||
## v0.14.1 (2024-07-01)
|
||||
|
||||
### Fix
|
||||
|
||||
- remove references, dependency for `six` package
|
||||
|
||||
- remove some unused imports
|
||||
|
||||
- remove duplicated / unused code for `rattail.db.config`
|
||||
|
||||
- deprecate `parse_bool()` and `parse_list()` in `rattail.config`
|
||||
|
||||
## v0.14.0 (2024-07-01)
|
||||
|
||||
### Feat
|
||||
|
||||
- remove legacy command system
|
||||
|
||||
### Fix
|
||||
|
||||
- make pyproject.toml instead of setup.cfg for generated project
|
||||
|
||||
## v0.13.5 (2024-06-28)
|
||||
|
||||
### Fix
|
||||
|
||||
- read logs from journald by default, for postfix-summary
|
||||
|
||||
- allow config override of "problems" for postfix-summary
|
||||
|
||||
## v0.13.4 (2024-06-27)
|
||||
|
||||
### Fix
|
||||
|
||||
- fix missing module import
|
||||
|
||||
## v0.13.3 (2024-06-24)
|
||||
|
||||
### Fix
|
||||
|
||||
- merge associated shopper records when merging 2 people
|
||||
|
||||
- truncate invoice item description for receiving, if needed
|
||||
|
||||
## v0.13.2 (2024-06-14)
|
||||
|
||||
### Fix
|
||||
|
||||
- revert back to setup.py + setup.cfg
|
||||
|
||||
## v0.13.1 (2024-06-10)
|
||||
|
||||
### Fix
|
||||
|
||||
- move canonical app version to pyproject.toml
|
||||
|
||||
## v0.13.0 (2024-06-10)
|
||||
|
||||
### Feat
|
||||
|
||||
- switch from setup.cfg to pyproject.toml / hatchling
|
||||
|
||||
## v0.12.9 (2024-06-10)
|
||||
|
||||
### Feat
|
||||
|
||||
- add config snippet for new projects, to define static libcache
|
||||
- define the `app_package` setting for new projects
|
||||
- add `get_pkg_version()` convenience function
|
||||
|
||||
## v0.12.8 (2024-06-06)
|
||||
|
||||
### Feat
|
||||
|
||||
- project generator should make typer commands, not old-style
|
||||
- remove old/unused project scaffold template
|
||||
- add snippet for fanstatic/libcache when generating web project
|
||||
|
||||
### Fix
|
||||
|
||||
- fix missing import for `rattail make-config` command
|
||||
- define the `-n` command flag as alias for `--no-init`
|
||||
|
||||
## v0.12.7 (2024-06-02)
|
||||
|
||||
### Fix
|
||||
|
||||
- fix datasync command args, per typer
|
||||
|
||||
## v0.12.6 (2024-06-01)
|
||||
|
||||
### Feat
|
||||
|
||||
- add setting to allow decimal quantities for ordering/receiving
|
||||
|
||||
### Fix
|
||||
|
||||
- fix `rattail datasync remove-settings` command line, per typer
|
||||
- fix `--progress-socket` arg handling for typer commands
|
||||
|
||||
## v0.12.5 (2024-05-31)
|
||||
|
||||
### Fix
|
||||
|
||||
- fix args for `rattail populate-batch` command, per typer
|
||||
|
||||
## v0.12.4 (2024-05-31)
|
||||
|
||||
### Fix
|
||||
|
||||
- fix params for generic "run purge" command logic, per typer
|
||||
|
||||
## v0.12.3 (2024-05-31)
|
||||
|
||||
### Fix
|
||||
|
||||
- fix args for `rattail purge-batches` command, per typer
|
||||
|
||||
## v0.12.2 (2024-05-30)
|
||||
|
||||
### Feat
|
||||
|
||||
- log the `pflogsumm` command before running it
|
||||
|
||||
### Fix
|
||||
|
||||
- fix some commands/arguments, per typer
|
||||
|
||||
## v0.12.1 (2024-05-29)
|
||||
|
||||
### Feat
|
||||
|
||||
- include organic flag when normalizing product
|
||||
|
||||
## v0.12.0 (2024-05-29)
|
||||
|
||||
This release begins the migration to use `typer` for all commands,
|
||||
instead of the "traditional" (now WuttJamaican-based) commands.
|
||||
|
||||
### Feat
|
||||
|
||||
- add `get_runas_user()` method for AppHandler
|
||||
- move rich and prompt_toolkit things to separate module
|
||||
- move `finalize_session()` function to `db.util` module
|
||||
- move "install" command logic to separate handler/module
|
||||
- move "import command runner" logic to separate handler
|
||||
- add basic support for `typer` command system
|
||||
- migrate all commands to use typer
|
||||
- add command logic functions for running reports, purging things
|
||||
|
||||
### Fix
|
||||
|
||||
- fix subcommand runas user when caller provides username
|
||||
|
||||
|
||||
## Older Releases
|
||||
|
||||
Please see `docs/OLDCHANGES.rst` for older release notes.
|
||||
245
CHANGES.txt
Normal file
245
CHANGES.txt
Normal file
|
|
@ -0,0 +1,245 @@
|
|||
|
||||
0.3a24
|
||||
------
|
||||
|
||||
- [feature] Added ``__eq__()`` and ``__ne__()`` methods to ``GPC`` class.
|
||||
|
||||
- [general] Moved ``GPCType`` SQLAlchemy type class to ``rattail.db`` module.
|
||||
This was necessary to make the ``GPC`` class more generally available to
|
||||
callers who don't want or need SQLAlchemy to be installed.
|
||||
|
||||
- [general] Moved enumerations from database extension to "core" ``enum``
|
||||
module. This is mostly for convenience to callers.
|
||||
|
||||
- [bug] Fixed a few bugs with label batches. These existed mostly because this
|
||||
feature hasn't been used in production...
|
||||
|
||||
- [feature] Added ``default_format`` attribute to ``LabelFormatter`` class.
|
||||
Now when a label profile is edited, this default format is used if no format
|
||||
is provided by the user.
|
||||
|
||||
- [feature] Changed ``LabelProfile.get_formatter()`` method so that it assigns
|
||||
the formatter's ``format`` attribute using the value from the profile. The
|
||||
formatter is free to use or ignore this value, at its discretion.
|
||||
|
||||
- [feature] Improved the database synchronizer so that it is *somewhat*
|
||||
tolerant of database server restarts. This likely will need further
|
||||
improvement as more testing is done. The current implementation wraps the
|
||||
entire sync loop in a ``try/catch`` block and when a disconnect is detected,
|
||||
will wait 5 seconds before re-entering the loop and trying again.
|
||||
|
||||
0.3a23
|
||||
------
|
||||
|
||||
- [general] Fixed namespace packages, per ``setuptools`` documentation.
|
||||
|
||||
- [feature] Added connection timeout support to ``CommandNetworkPrinter``.
|
||||
|
||||
0.3a22
|
||||
------
|
||||
|
||||
- [feature] Added ``LabelProfile.visible`` field.
|
||||
|
||||
- [feature] Added generic ``CommandNetworkPrinter`` label printer class. This
|
||||
class sends textual commands directly to a networked printer.
|
||||
|
||||
0.3a21
|
||||
------
|
||||
|
||||
- [feature] Refactored database synchronization logic into a proper class,
|
||||
which can be overridden based on configuration.
|
||||
|
||||
0.3a20
|
||||
------
|
||||
|
||||
- [feature] Tweaked the SIL writer so that it doesn't quote row values when
|
||||
they're of data type ``float``.
|
||||
|
||||
- [bug] Fixed database sync to properly handle ``Vendor`` deletions. Now any
|
||||
associated ``ProductCost`` records are also deleted, so no more foreign key
|
||||
violations.
|
||||
|
||||
0.3a19
|
||||
------
|
||||
|
||||
- [bug] Fixed "price toggle" bug in database sync. It was noticed that
|
||||
whenever a product's regular price did not change, yet the product instance
|
||||
itself *did* have a change, the regular price association was being removed
|
||||
in one sync, then reestablished in the next sync (then removed, etc.). The
|
||||
sync operation now ensures the relationship is removed only when it really
|
||||
should be, and that it remains intact when that is appropriate.
|
||||
|
||||
0.3a18
|
||||
------
|
||||
|
||||
- [bug] Added special delete logic to the database sync. Currently, only the
|
||||
Department and Subdepartment classes are affected. When deletions of these
|
||||
classes are to be synced between databases, some effort is made to ensure
|
||||
that associations with any dependent objects (e.g. Product) are removed
|
||||
before the primary instance (e.g. Department) is deleted.
|
||||
|
||||
0.3a17
|
||||
------
|
||||
|
||||
- [bug] Added 'delete, delete-orphan' to cascade on ``Product.costs``
|
||||
relationship. This was causing an error when syncing databases.
|
||||
|
||||
0.3a16
|
||||
------
|
||||
|
||||
- [bug] Added 'delete, delete-orphan' to cascade on ``Product.prices``
|
||||
relationship. This was causing an error when syncing databases.
|
||||
|
||||
0.3a15
|
||||
------
|
||||
|
||||
- [bug] Fixed database sync logic to ensure ``Product`` changes are processed
|
||||
before ``ProductPrice`` changes. Since the underlying tables are mutually
|
||||
dependent, the ``dependency_sort()`` call can't *quite* take care of it. Now
|
||||
a lexical sort is applied to the class names before the dependency sort
|
||||
happens. This is somewhat of a hack, merely taking advantage of the fact
|
||||
that "Product" comes before "ProductPrice" when lexically sorted. If other
|
||||
mutually-dependent tables come about in the future, this approach may need to
|
||||
be revised if their class names don't jive.
|
||||
|
||||
0.3a14
|
||||
------
|
||||
|
||||
- [bug] Fixed database synchonization logic to properly handle merging
|
||||
``Product`` instances between database sessions. Since ``Product`` is so
|
||||
interdependent on ``ProductPrice``, a pretty custom merge hack is required.
|
||||
|
||||
0.3a13
|
||||
------
|
||||
|
||||
- [bugfix] Fixed ``rattail.db.record_changes()`` so that it also ignores
|
||||
``UserRole`` instance changes if configuration dictates that ``Role`` changes
|
||||
are to be ignored.
|
||||
|
||||
0.3a12
|
||||
------
|
||||
|
||||
- [bugfix] Fixed foreign key uuid handling in ``rattail.db.record_changes()``.
|
||||
Some tables are meant to be used solely as providers of "association proxy"
|
||||
fields, the ``uuid`` column is not only a primary key, but also a *foreign
|
||||
key* to the "primary" entity table. In such cases, the uuid value was not
|
||||
present at session flush time, so a new one was being generated.
|
||||
Unfortunately this meant that the ``Change`` record would point to a
|
||||
nonexistent entity record, so the sync would not work. Now uuid fields are
|
||||
inspected to determine if a foreign key is present, in which case the
|
||||
relationship is traversed and the true uuid value is used.
|
||||
|
||||
- [feature] Added "extra classes" configuration for the ``load-host-data``
|
||||
command. This is necessary when initially populating a "store" (er,
|
||||
"non-host") database instance if custom schema extensions are in use (and
|
||||
need to be synchronized with the host).
|
||||
|
||||
0.3a11
|
||||
------
|
||||
|
||||
- Add R49 SIL column.
|
||||
|
||||
- Add ``rattail.pricing`` module.
|
||||
|
||||
0.3a10
|
||||
------
|
||||
|
||||
- Ignore batch data when recording changes.
|
||||
|
||||
0.3a9
|
||||
-----
|
||||
|
||||
- Bump edbob dependency.
|
||||
|
||||
0.3a8
|
||||
-----
|
||||
|
||||
- Tweak database sync.
|
||||
|
||||
- Tweak batch processing.
|
||||
|
||||
0.3a7
|
||||
-----
|
||||
|
||||
- Add ``Vendor.special_discount``.
|
||||
|
||||
0.3a6
|
||||
-----
|
||||
|
||||
- Bump edbob dependency.
|
||||
|
||||
0.3a5
|
||||
-----
|
||||
|
||||
- Added ``Store`` and related models.
|
||||
|
||||
- Added ``Customer.email_preference`` field.
|
||||
|
||||
- Added ``load-host-data`` command.
|
||||
|
||||
- Added database changes/synchronization framework.
|
||||
|
||||
- Fixed batch table create/drop.
|
||||
|
||||
0.3a4r1
|
||||
-------
|
||||
|
||||
- Added ``Product.cost``, ``Product.vendor``.
|
||||
|
||||
- Added basic one-up label printing support.
|
||||
|
||||
- Added initial batch support, with ``PrintLabels`` provider.
|
||||
|
||||
- Added GPC data type.
|
||||
|
||||
- Changed internal name of file monitor Windows service.
|
||||
|
||||
- Added progress support for label printing.
|
||||
|
||||
- Label profiles moved from config to database model.
|
||||
|
||||
- Removed ``rattail.db.init_database()`` function.
|
||||
|
||||
- Moved some enum values from db extension to core (``rattail.enum`` module).
|
||||
|
||||
- Improved SIL support: moved ``rattail.sil`` to subpackage, added ``Writer``
|
||||
class etc.
|
||||
|
||||
- Fixed file monitor in Linux.
|
||||
|
||||
- Added ``delete-orphan`` to ``Vendor.contacts`` relationship cascade.
|
||||
|
||||
0.3a4
|
||||
-----
|
||||
|
||||
- Update file monitor per changes in ``edbob``.
|
||||
|
||||
0.3a3
|
||||
-----
|
||||
|
||||
- Move database extension to subdir (``rattail.db.extension``).
|
||||
|
||||
- Make database extension require ``auth`` extension.
|
||||
|
||||
- Fix ``rattail.db.init()``.
|
||||
|
||||
- Add lots of classes to database extension model.
|
||||
|
||||
- Add ``rattail.labels`` module.
|
||||
|
||||
- Add ``rattail.db.cache`` module.
|
||||
|
||||
- Add SIL output functions.
|
||||
|
||||
- Remove some batch code (for now?).
|
||||
|
||||
0.3a2
|
||||
-----
|
||||
|
||||
- Added Windows file monitor service.
|
||||
|
||||
0.3a1
|
||||
-----
|
||||
|
||||
- Refactored to rely on `edbob <http://edbob.org/>`_. (Most of Rattail's
|
||||
"guts" now live there instead.)
|
||||
141
COPYING.txt
141
COPYING.txt
|
|
@ -1,5 +1,5 @@
|
|||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
GNU AFFERO GENERAL PUBLIC LICENSE
|
||||
Version 3, 19 November 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
|
|
@ -7,17 +7,15 @@
|
|||
|
||||
Preamble
|
||||
|
||||
The GNU General Public License is a free, copyleft license for
|
||||
software and other kinds of works.
|
||||
The GNU Affero General Public License is a free, copyleft license for
|
||||
software and other kinds of works, specifically designed to ensure
|
||||
cooperation with the community in the case of network server software.
|
||||
|
||||
The licenses for most software and other practical works are designed
|
||||
to take away your freedom to share and change the works. By contrast,
|
||||
the GNU General Public License is intended to guarantee your freedom to
|
||||
our General Public Licenses are intended to guarantee your freedom to
|
||||
share and change all versions of a program--to make sure it remains free
|
||||
software for all its users. We, the Free Software Foundation, use the
|
||||
GNU General Public License for most of our software; it applies also to
|
||||
any other work released this way by its authors. You can apply it to
|
||||
your programs, too.
|
||||
software for all its users.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
|
|
@ -26,44 +24,34 @@ them if you wish), that you receive source code or can get it if you
|
|||
want it, that you can change the software or use pieces of it in new
|
||||
free programs, and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to prevent others from denying you
|
||||
these rights or asking you to surrender the rights. Therefore, you have
|
||||
certain responsibilities if you distribute copies of the software, or if
|
||||
you modify it: responsibilities to respect the freedom of others.
|
||||
Developers that use our General Public Licenses protect your rights
|
||||
with two steps: (1) assert copyright on the software, and (2) offer
|
||||
you this License which gives you legal permission to copy, distribute
|
||||
and/or modify the software.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must pass on to the recipients the same
|
||||
freedoms that you received. You must make sure that they, too, receive
|
||||
or can get the source code. And you must show them these terms so they
|
||||
know their rights.
|
||||
A secondary benefit of defending all users' freedom is that
|
||||
improvements made in alternate versions of the program, if they
|
||||
receive widespread use, become available for other developers to
|
||||
incorporate. Many developers of free software are heartened and
|
||||
encouraged by the resulting cooperation. However, in the case of
|
||||
software used on network servers, this result may fail to come about.
|
||||
The GNU General Public License permits making a modified version and
|
||||
letting the public access it on a server without ever releasing its
|
||||
source code to the public.
|
||||
|
||||
Developers that use the GNU GPL protect your rights with two steps:
|
||||
(1) assert copyright on the software, and (2) offer you this License
|
||||
giving you legal permission to copy, distribute and/or modify it.
|
||||
The GNU Affero General Public License is designed specifically to
|
||||
ensure that, in such cases, the modified source code becomes available
|
||||
to the community. It requires the operator of a network server to
|
||||
provide the source code of the modified version running there to the
|
||||
users of that server. Therefore, public use of a modified version, on
|
||||
a publicly accessible server, gives the public access to the source
|
||||
code of the modified version.
|
||||
|
||||
For the developers' and authors' protection, the GPL clearly explains
|
||||
that there is no warranty for this free software. For both users' and
|
||||
authors' sake, the GPL requires that modified versions be marked as
|
||||
changed, so that their problems will not be attributed erroneously to
|
||||
authors of previous versions.
|
||||
|
||||
Some devices are designed to deny users access to install or run
|
||||
modified versions of the software inside them, although the manufacturer
|
||||
can do so. This is fundamentally incompatible with the aim of
|
||||
protecting users' freedom to change the software. The systematic
|
||||
pattern of such abuse occurs in the area of products for individuals to
|
||||
use, which is precisely where it is most unacceptable. Therefore, we
|
||||
have designed this version of the GPL to prohibit the practice for those
|
||||
products. If such problems arise substantially in other domains, we
|
||||
stand ready to extend this provision to those domains in future versions
|
||||
of the GPL, as needed to protect the freedom of users.
|
||||
|
||||
Finally, every program is threatened constantly by software patents.
|
||||
States should not allow patents to restrict development and use of
|
||||
software on general-purpose computers, but in those that do, we wish to
|
||||
avoid the special danger that patents applied to a free program could
|
||||
make it effectively proprietary. To prevent this, the GPL assures that
|
||||
patents cannot be used to render the program non-free.
|
||||
An older license, called the Affero General Public License and
|
||||
published by Affero, was designed to accomplish similar goals. This is
|
||||
a different license, not a version of the Affero GPL, but Affero has
|
||||
released a new version of the Affero GPL which permits relicensing under
|
||||
this license.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
|
@ -72,7 +60,7 @@ modification follow.
|
|||
|
||||
0. Definitions.
|
||||
|
||||
"This License" refers to version 3 of the GNU General Public License.
|
||||
"This License" refers to version 3 of the GNU Affero General Public License.
|
||||
|
||||
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||
works, such as semiconductor masks.
|
||||
|
|
@ -549,35 +537,45 @@ to collect a royalty for further conveying from those to whom you convey
|
|||
the Program, the only way you could satisfy both those terms and this
|
||||
License would be to refrain entirely from conveying the Program.
|
||||
|
||||
13. Use with the GNU Affero General Public License.
|
||||
13. Remote Network Interaction; Use with the GNU General Public License.
|
||||
|
||||
Notwithstanding any other provision of this License, if you modify the
|
||||
Program, your modified version must prominently offer all users
|
||||
interacting with it remotely through a computer network (if your version
|
||||
supports such interaction) an opportunity to receive the Corresponding
|
||||
Source of your version by providing access to the Corresponding Source
|
||||
from a network server at no charge, through some standard or customary
|
||||
means of facilitating copying of software. This Corresponding Source
|
||||
shall include the Corresponding Source for any work covered by version 3
|
||||
of the GNU General Public License that is incorporated pursuant to the
|
||||
following paragraph.
|
||||
|
||||
Notwithstanding any other provision of this License, you have
|
||||
permission to link or combine any covered work with a work licensed
|
||||
under version 3 of the GNU Affero General Public License into a single
|
||||
under version 3 of the GNU General Public License into a single
|
||||
combined work, and to convey the resulting work. The terms of this
|
||||
License will continue to apply to the part which is the covered work,
|
||||
but the special requirements of the GNU Affero General Public License,
|
||||
section 13, concerning interaction through a network will apply to the
|
||||
combination as such.
|
||||
but the work with which it is combined will remain governed by version
|
||||
3 of the GNU General Public License.
|
||||
|
||||
14. Revised Versions of this License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions of
|
||||
the GNU General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
the GNU Affero General Public License from time to time. Such new versions
|
||||
will be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the
|
||||
Program specifies that a certain numbered version of the GNU General
|
||||
Program specifies that a certain numbered version of the GNU Affero General
|
||||
Public License "or any later version" applies to it, you have the
|
||||
option of following the terms and conditions either of that numbered
|
||||
version or of any later version published by the Free Software
|
||||
Foundation. If the Program does not specify a version number of the
|
||||
GNU General Public License, you may choose any version ever published
|
||||
GNU Affero General Public License, you may choose any version ever published
|
||||
by the Free Software Foundation.
|
||||
|
||||
If the Program specifies that a proxy can decide which future
|
||||
versions of the GNU General Public License can be used, that proxy's
|
||||
versions of the GNU Affero General Public License can be used, that proxy's
|
||||
public statement of acceptance of a version permanently authorizes you
|
||||
to choose that version for the Program.
|
||||
|
||||
|
|
@ -635,40 +633,29 @@ the "copyright" line and a pointer to where the full notice is found.
|
|||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
it under the terms of the GNU Affero General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program does terminal interaction, make it output a short
|
||||
notice like this when it starts in an interactive mode:
|
||||
|
||||
<program> Copyright (C) <year> <name of author>
|
||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, your program's commands
|
||||
might be different; for a GUI interface, you would use an "about box".
|
||||
If your software can interact with users remotely through a computer
|
||||
network, you should also make sure that it provides a way for users to
|
||||
get its source. For example, if your program is a web application, its
|
||||
interface could display a "Source" link that leads users to an archive
|
||||
of the code. There are many ways you could offer source, and different
|
||||
solutions will be better for different programs; see section 13 for the
|
||||
specific requirements.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or school,
|
||||
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||
For more information on this, and how to apply and follow the GNU GPL, see
|
||||
For more information on this, and how to apply and follow the GNU AGPL, see
|
||||
<http://www.gnu.org/licenses/>.
|
||||
|
||||
The GNU General Public License does not permit incorporating your program
|
||||
into proprietary programs. If your program is a subroutine library, you
|
||||
may consider it more useful to permit linking proprietary applications with
|
||||
the library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License. But first, please read
|
||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
||||
|
|
|
|||
21
MANIFEST.in
21
MANIFEST.in
|
|
@ -1,20 +1,9 @@
|
|||
# -*- mode: conf; -*-
|
||||
|
||||
include *.cfg
|
||||
include *.txt
|
||||
include *.rst
|
||||
|
||||
# TODO: remove this first line at some point..
|
||||
recursive-include rattail/data *
|
||||
recursive-include rattail/data/config *.conf
|
||||
recursive-include rattail/data/sample *.csv
|
||||
|
||||
include rattail/db/alembic/README
|
||||
recursive-include rattail/db/alembic *.mako
|
||||
recursive-include rattail/db/alembic *.py
|
||||
|
||||
recursive-include rattail/templates *.mako
|
||||
|
||||
include rattail/trainwreck/db/alembic/README
|
||||
recursive-include rattail/trainwreck/db/alembic *.mako
|
||||
recursive-include rattail/trainwreck/db/alembic *.py
|
||||
include docs/Makefile
|
||||
include docs/make.bat
|
||||
include docs/_static/.dummy
|
||||
recursive-include docs *.rst
|
||||
prune docs/_build
|
||||
|
|
|
|||
12
README.md
12
README.md
|
|
@ -1,12 +0,0 @@
|
|||
|
||||
# Rattail
|
||||
|
||||
Rattail is a framework / tool kit for building custom apps. Originally
|
||||
intended for use in retail environments, but useful in others also.
|
||||
|
||||
It is released under the GNU General Public License.
|
||||
|
||||
This is the core `rattail` package.
|
||||
|
||||
Please see the [Rattail Project](https://rattailproject.org/) for more
|
||||
information.
|
||||
27
README.txt
Normal file
27
README.txt
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
|
||||
Rattail
|
||||
=======
|
||||
|
||||
Rattail is a retail software framework based on `edbob <http://edbob.org/>`_,
|
||||
and released under the GNU Affero General Public License.
|
||||
|
||||
This is the core ``rattail`` package.
|
||||
|
||||
Please see Rattail's `home page <http://rattail.edbob.org/>`_ for more
|
||||
information.
|
||||
|
||||
|
||||
Installation
|
||||
------------
|
||||
|
||||
Install the software with::
|
||||
|
||||
$ pip install rattail
|
||||
|
||||
|
||||
Usage
|
||||
-----
|
||||
|
||||
Built-in help can be seen with::
|
||||
|
||||
$ rattail help
|
||||
|
|
@ -7,11 +7,6 @@ SPHINXBUILD = sphinx-build
|
|||
PAPER =
|
||||
BUILDDIR = _build
|
||||
|
||||
# User-friendly check for sphinx-build
|
||||
ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1)
|
||||
$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/)
|
||||
endif
|
||||
|
||||
# Internal variables.
|
||||
PAPEROPT_a4 = -D latex_paper_size=a4
|
||||
PAPEROPT_letter = -D latex_paper_size=letter
|
||||
|
|
@ -34,20 +29,17 @@ help:
|
|||
@echo " epub to make an epub"
|
||||
@echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
|
||||
@echo " latexpdf to make LaTeX files and run them through pdflatex"
|
||||
@echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx"
|
||||
@echo " text to make text files"
|
||||
@echo " man to make manual pages"
|
||||
@echo " texinfo to make Texinfo files"
|
||||
@echo " info to make Texinfo files and run them through makeinfo"
|
||||
@echo " gettext to make PO message catalogs"
|
||||
@echo " changes to make an overview of all changed/added/deprecated items"
|
||||
@echo " xml to make Docutils-native XML files"
|
||||
@echo " pseudoxml to make pseudoxml-XML files for display purposes"
|
||||
@echo " linkcheck to check all external links for integrity"
|
||||
@echo " doctest to run all doctests embedded in the documentation (if enabled)"
|
||||
|
||||
clean:
|
||||
rm -rf $(BUILDDIR)/*
|
||||
-rm -rf $(BUILDDIR)/*
|
||||
|
||||
html:
|
||||
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
|
||||
|
|
@ -116,12 +108,6 @@ latexpdf:
|
|||
$(MAKE) -C $(BUILDDIR)/latex all-pdf
|
||||
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
|
||||
|
||||
latexpdfja:
|
||||
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
|
||||
@echo "Running LaTeX files through platex and dvipdfmx..."
|
||||
$(MAKE) -C $(BUILDDIR)/latex all-pdf-ja
|
||||
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
|
||||
|
||||
text:
|
||||
$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
|
||||
@echo
|
||||
|
|
@ -165,13 +151,3 @@ doctest:
|
|||
$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
|
||||
@echo "Testing of doctests in the sources finished, look at the " \
|
||||
"results in $(BUILDDIR)/doctest/output.txt."
|
||||
|
||||
xml:
|
||||
$(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml
|
||||
@echo
|
||||
@echo "Build finished. The XML files are in $(BUILDDIR)/xml."
|
||||
|
||||
pseudoxml:
|
||||
$(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml
|
||||
@echo
|
||||
@echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml."
|
||||
|
|
|
|||
7687
docs/OLDCHANGES.rst
7687
docs/OLDCHANGES.rst
File diff suppressed because it is too large
Load diff
|
|
@ -1,78 +0,0 @@
|
|||
|
||||
Package API
|
||||
===========
|
||||
|
||||
This is the "raw" API documentation for the ``rattail`` package. It hopefully
|
||||
contains all pertinent info regarding available functions, classes and their
|
||||
attributes and method signatures etc.
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
rattail
|
||||
rattail/app
|
||||
rattail/auth
|
||||
rattail/autocomplete/base
|
||||
rattail/autocomplete/customers
|
||||
rattail/batch/custorder
|
||||
rattail/batch/handheld
|
||||
rattail/batch/handlers
|
||||
rattail/batch/labels
|
||||
rattail/batch/pricing
|
||||
rattail/batch/product
|
||||
rattail/batch/purchase
|
||||
rattail/batch/vendorcatalog
|
||||
rattail/board
|
||||
rattail/bouncer/index
|
||||
rattail/cleanup
|
||||
rattail/clientele
|
||||
rattail/commands.base
|
||||
rattail/commands.batch
|
||||
rattail/commands.make_appdir
|
||||
rattail/commands.typer
|
||||
rattail/config
|
||||
rattail/core
|
||||
rattail/csvutil
|
||||
rattail/custorders
|
||||
rattail/datasync/index
|
||||
rattail/db/index
|
||||
rattail/employment
|
||||
rattail/enum
|
||||
rattail/excel
|
||||
rattail/exceptions
|
||||
rattail/features/index
|
||||
rattail/filemon/index
|
||||
rattail/filemon/actions
|
||||
rattail/filemon/config
|
||||
rattail/filemon/linux
|
||||
rattail/filemon/util
|
||||
rattail/filemon/win32
|
||||
rattail/files
|
||||
rattail/gpc
|
||||
rattail/importing/index
|
||||
rattail/importing/handlers
|
||||
rattail/importing/importers
|
||||
rattail/importing/model
|
||||
rattail/importing/postgresql
|
||||
rattail/importing/rattail
|
||||
rattail/importing/sqlalchemy
|
||||
rattail/reporting/index
|
||||
rattail/reporting/handlers
|
||||
rattail/labels
|
||||
rattail/logging
|
||||
rattail/mail
|
||||
rattail/membership
|
||||
rattail/people
|
||||
rattail/problems/index
|
||||
rattail/products
|
||||
rattail/progress
|
||||
rattail/projects/index
|
||||
rattail/tailbone
|
||||
rattail/time
|
||||
rattail/trainwreck/index
|
||||
rattail/upgrades
|
||||
rattail/util
|
||||
rattail/vendors.catalogs
|
||||
rattail/vendors.handler
|
||||
rattail/vendors.orders
|
||||
rattail/win32
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
|
||||
``rattail``
|
||||
===========
|
||||
|
||||
.. automodule:: rattail
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
|
||||
``rattail.app``
|
||||
===============
|
||||
|
||||
.. automodule:: rattail.app
|
||||
:members:
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
|
||||
``rattail.auth``
|
||||
================
|
||||
|
||||
.. automodule:: rattail.auth
|
||||
:members:
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
|
||||
``rattail.autocomplete.base``
|
||||
=============================
|
||||
|
||||
.. automodule:: rattail.autocomplete.base
|
||||
:members:
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
|
||||
``rattail.autocomplete.customers``
|
||||
==================================
|
||||
|
||||
.. automodule:: rattail.autocomplete.customers
|
||||
:members:
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
|
||||
``rattail.batch.custorder``
|
||||
===========================
|
||||
|
||||
.. automodule:: rattail.batch.custorder
|
||||
:members:
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
|
||||
``rattail.batch.handheld``
|
||||
==========================
|
||||
|
||||
.. automodule:: rattail.batch.handheld
|
||||
:members:
|
||||
|
|
@ -1,166 +0,0 @@
|
|||
|
||||
``rattail.batch.handlers``
|
||||
==========================
|
||||
|
||||
.. automodule:: rattail.batch.handlers
|
||||
|
||||
.. autofunction:: get_batch_handler
|
||||
|
||||
.. autoclass:: BatchHandler
|
||||
|
||||
We'll try to list the various attributes and methods below, in an order
|
||||
which somewhat follows the life cycle of a batch.
|
||||
|
||||
.. autoattribute:: batch_key
|
||||
|
||||
.. autoattribute:: batch_model_class
|
||||
|
||||
.. automethod:: consume_batch_id
|
||||
|
||||
.. automethod:: make_batch
|
||||
|
||||
.. automethod:: make_basic_batch
|
||||
|
||||
.. automethod:: init_batch
|
||||
|
||||
.. attribute:: populate_batches
|
||||
|
||||
Simple flag to indicate whether any/all batches will require initial
|
||||
population from a relevant data source. Note that this flag should be
|
||||
set to ``True`` if *any* batches may need population (its default value
|
||||
is ``False``). Whether or not a given batch actually needs to be
|
||||
populated, is ultimately determined by the :meth:`should_populate()`
|
||||
method.
|
||||
|
||||
Default value is ``False`` which means no batches will be populated.
|
||||
|
||||
Set this to ``True`` and do *not* override :meth:`should_populate()` if
|
||||
you need all batches to be populated.
|
||||
|
||||
Set this to ``True`` and *do* override :meth:`should_populate()` if you
|
||||
need more fine-grained control, e.g. by inspecting the given batch.
|
||||
|
||||
.. automethod:: should_populate
|
||||
|
||||
.. attribute:: populate_with_versioning
|
||||
|
||||
This flag indicates whether it's okay for data versioning to be enabled
|
||||
during initial batch population.
|
||||
|
||||
If set to ``True`` (the default), then versioning is allowed and
|
||||
therefore the caller need take no special precautions when populating
|
||||
the batch.
|
||||
|
||||
If set to ``False`` then versioning is *not* allowed; if versioning is
|
||||
not enabled for the current process, the caller may populate the batch
|
||||
with no special precautions. However if versioning *is* enabled, the
|
||||
caller must launch a separate process with versioning disabled, in order
|
||||
to populate the batch.
|
||||
|
||||
.. automethod:: setup_populate
|
||||
|
||||
.. automethod:: do_populate
|
||||
|
||||
.. automethod:: populate
|
||||
|
||||
.. automethod:: make_row
|
||||
|
||||
.. automethod:: add_row
|
||||
|
||||
.. automethod:: after_add_row
|
||||
|
||||
.. automethod:: teardown_populate
|
||||
|
||||
.. attribute:: repopulate_when_refresh
|
||||
|
||||
Flag to indicate that when a batch is refreshed, the first step of that
|
||||
should be to delete all data rows for, and then re-populate the batch.
|
||||
The flag is ``False`` by default, in which case the batch is *not*
|
||||
repopulated, i.e. the refresh will work with existing batch rows.
|
||||
|
||||
.. automethod:: refreshable
|
||||
|
||||
.. attribute:: refresh_with_versioning
|
||||
|
||||
This flag indicates whether it's okay for data versioning to be enabled
|
||||
during batch refresh.
|
||||
|
||||
If set to ``True`` (the default), then versioning is allowed and
|
||||
therefore the caller need take no special precautions when populating the
|
||||
batch.
|
||||
|
||||
If set to ``False`` then versioning is *not* allowed; if versioning is
|
||||
not enabled for the current process, the caller may populate the batch
|
||||
with no special precautions. However if versioning *is* enabled, the
|
||||
caller must launch a separate process with versioning disabled, in order
|
||||
to refresh the batch.
|
||||
|
||||
.. automethod:: setup_refresh
|
||||
|
||||
.. automethod:: do_refresh
|
||||
|
||||
.. automethod:: refresh
|
||||
|
||||
.. automethod:: refresh_many
|
||||
|
||||
.. automethod:: refresh_row
|
||||
|
||||
.. automethod:: locate_product_for_entry
|
||||
|
||||
.. automethod:: refresh_batch_status
|
||||
|
||||
.. automethod:: teardown_refresh
|
||||
|
||||
.. automethod:: do_remove_row
|
||||
|
||||
.. automethod:: remove_row
|
||||
|
||||
.. automethod:: get_effective_rows
|
||||
|
||||
.. automethod:: executable
|
||||
|
||||
.. automethod:: why_not_execute
|
||||
|
||||
.. automethod:: auto_executable
|
||||
|
||||
.. attribute:: execute_with_versioning
|
||||
|
||||
This flag indicates whether it's okay for data versioning to be enabled
|
||||
during batch execution.
|
||||
|
||||
If set to ``True`` (the default), then versioning is allowed and
|
||||
therefore the caller need take no special precautions when populating
|
||||
the batch.
|
||||
|
||||
If set to ``False`` then versioning is *not* allowed; if versioning is
|
||||
not enabled for the current process, the caller may populate the batch
|
||||
with no special precautions. However if versioning *is* enabled, the
|
||||
caller must launch a separate process with versioning disabled, in order
|
||||
to execute the batch.
|
||||
|
||||
.. automethod:: do_execute
|
||||
|
||||
.. automethod:: execute
|
||||
|
||||
.. automethod:: execute_many
|
||||
|
||||
.. automethod:: setup_clone
|
||||
|
||||
.. automethod:: clone
|
||||
|
||||
.. automethod:: teardown_clone
|
||||
|
||||
.. automethod:: delete
|
||||
|
||||
.. automethod:: purge_batches
|
||||
|
||||
..
|
||||
.. autoattribute:: root_datadir
|
||||
|
||||
.. automethod:: datadir
|
||||
|
||||
.. automethod:: make_datadir
|
||||
|
||||
.. automethod:: set_input_file
|
||||
|
||||
.. automethod:: clone
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
|
||||
``rattail.batch.labels``
|
||||
========================
|
||||
|
||||
.. automodule:: rattail.batch.labels
|
||||
:members:
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
|
||||
``rattail.batch.pricing``
|
||||
=========================
|
||||
|
||||
.. automodule:: rattail.batch.pricing
|
||||
:members:
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
|
||||
``rattail.batch.product``
|
||||
=========================
|
||||
|
||||
.. automodule:: rattail.batch.product
|
||||
:members:
|
||||
|
|
@ -1,99 +0,0 @@
|
|||
|
||||
``rattail.batch.purchase``
|
||||
==========================
|
||||
|
||||
.. automodule:: rattail.batch.purchase
|
||||
|
||||
.. autoclass:: PurchaseBatchHandler
|
||||
|
||||
Most of the interface can be seen in the documentation for the
|
||||
:class:`~rattail.batch.handlers.BatchHandler` class. Additional or
|
||||
overridden attributes and methods provided by this ``PurchaseBatchHandler``
|
||||
class are listed below.
|
||||
|
||||
.. automethod:: after_add_row
|
||||
|
||||
.. automethod:: assign_purchase_order
|
||||
|
||||
.. automethod:: execute
|
||||
|
||||
.. automethod:: execute_truck_dump
|
||||
|
||||
.. automethod:: get_purchase_order
|
||||
|
||||
.. automethod:: init_batch
|
||||
|
||||
.. automethod:: make_purchase
|
||||
|
||||
.. automethod:: order_row
|
||||
|
||||
.. automethod:: populate
|
||||
|
||||
.. automethod:: receive_purchase
|
||||
|
||||
.. automethod:: receive_row
|
||||
|
||||
.. automethod:: receiving_find_best_child_row
|
||||
|
||||
.. automethod:: receiving_update_row_attrs
|
||||
|
||||
.. automethod:: receiving_update_row_child
|
||||
|
||||
.. automethod:: receiving_update_row_children
|
||||
|
||||
.. automethod:: receiving_update_row_credits
|
||||
|
||||
.. automethod:: refresh
|
||||
|
||||
.. automethod:: refresh_batch_status
|
||||
|
||||
.. automethod:: refresh_row
|
||||
|
||||
.. automethod:: remove_row
|
||||
|
||||
.. automethod:: should_populate
|
||||
|
||||
.. automethod:: update_order_counts
|
||||
|
||||
.. automethod:: update_row_cost
|
||||
|
||||
.. automethod:: update_row_quantity
|
||||
|
||||
.. automethod:: why_not_execute
|
||||
|
||||
..
|
||||
.. automethod:: allow_cases
|
||||
|
||||
.. automethod:: allow_expired_credits
|
||||
|
||||
.. automethod:: get_eligible_purchases
|
||||
|
||||
.. automethod:: populate_from_truck_dump_invoice
|
||||
|
||||
.. automethod:: make_row_from_invoice
|
||||
|
||||
.. automethod:: quick_entry
|
||||
|
||||
.. automethod:: quick_locate_product
|
||||
|
||||
.. automethod:: quick_locate_rows
|
||||
|
||||
.. automethod:: locate_parent_row_for_child
|
||||
|
||||
.. automethod:: locate_product
|
||||
|
||||
.. automethod:: remove_row
|
||||
|
||||
.. automethod:: transform_pack_to_unit
|
||||
|
||||
.. automethod:: can_declare_credit
|
||||
|
||||
.. automethod:: declare_credit
|
||||
|
||||
.. automethod:: make_credits
|
||||
|
||||
.. automethod:: populate_credit
|
||||
|
||||
.. automethod:: calculate_pending
|
||||
|
||||
.. automethod:: auto_receive_all_items
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
|
||||
``rattail.batch.vendorcatalog``
|
||||
===============================
|
||||
|
||||
.. automodule:: rattail.batch.vendorcatalog
|
||||
:members:
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
|
||||
``rattail.board``
|
||||
=================
|
||||
|
||||
.. automodule:: rattail.board
|
||||
:members:
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
|
||||
``rattail.bouncer.handler``
|
||||
===========================
|
||||
|
||||
.. automodule:: rattail.bouncer.handler
|
||||
:members:
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
|
||||
``rattail.bouncer``
|
||||
===================
|
||||
|
||||
.. automodule:: rattail.bouncer
|
||||
:members:
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
handler
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
|
||||
``rattail.cleanup``
|
||||
===================
|
||||
|
||||
.. automodule:: rattail.cleanup
|
||||
:members:
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
|
||||
``rattail.clientele``
|
||||
=====================
|
||||
|
||||
.. automodule:: rattail.clientele
|
||||
:members:
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
|
||||
``rattail.commands.base``
|
||||
=========================
|
||||
|
||||
.. automodule:: rattail.commands.base
|
||||
|
||||
.. data:: rattail_typer
|
||||
|
||||
This is a ``typer.Typer`` instance representing the top-level
|
||||
``rattail`` command. See the `Typer docs`_ for more info.
|
||||
|
||||
.. _Typer docs: https://typer.tiangolo.com/
|
||||
|
|
@ -1,37 +0,0 @@
|
|||
|
||||
``rattail.commands.batch``
|
||||
==========================
|
||||
|
||||
.. automodule:: rattail.commands.batch
|
||||
|
||||
**Helper Functions**
|
||||
|
||||
.. autofunction:: batch_action_command
|
||||
|
||||
.. autofunction:: batch_action_command_template
|
||||
|
||||
**Subcommands**
|
||||
|
||||
.. autofunction:: auto_receive
|
||||
|
||||
.. program-output:: rattail auto-receive --help
|
||||
|
||||
.. autofunction:: execute_batch
|
||||
|
||||
.. program-output:: rattail execute-batch --help
|
||||
|
||||
.. autofunction:: make_batch
|
||||
|
||||
.. program-output:: rattail make-batch --help
|
||||
|
||||
.. autofunction:: populate_batch
|
||||
|
||||
.. program-output:: rattail populate-batch --help
|
||||
|
||||
.. autofunction:: purge_batches
|
||||
|
||||
.. program-output:: rattail purge-batches --help
|
||||
|
||||
.. autofunction:: refresh_batch
|
||||
|
||||
.. program-output:: rattail refresh-batch --help
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
|
||||
``rattail.commands.make_appdir``
|
||||
================================
|
||||
|
||||
.. automodule:: rattail.commands.make_appdir
|
||||
|
||||
.. autofunction:: make_appdir
|
||||
|
||||
.. program-output:: rattail make-appdir --help
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
|
||||
``rattail.commands.typer``
|
||||
==========================
|
||||
|
||||
.. automodule:: rattail.commands.typer
|
||||
:members:
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
|
||||
``rattail.config``
|
||||
==================
|
||||
|
||||
.. automodule:: rattail.config
|
||||
:members:
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
|
||||
``rattail.core``
|
||||
================
|
||||
|
||||
.. automodule:: rattail.core
|
||||
:members:
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
.. -*- coding: utf-8 -*-
|
||||
|
||||
``rattail.csvutil``
|
||||
===================
|
||||
|
||||
.. automodule:: rattail.csvutil
|
||||
:members:
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
|
||||
``rattail.custorders``
|
||||
======================
|
||||
|
||||
.. automodule:: rattail.custorders
|
||||
:members:
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
|
||||
``rattail.datasync.config``
|
||||
===========================
|
||||
|
||||
.. automodule:: rattail.datasync.config
|
||||
:members:
|
||||
|
|
@ -1,17 +0,0 @@
|
|||
|
||||
``rattail.datasync.consumers``
|
||||
==============================
|
||||
|
||||
.. automodule:: rattail.datasync.consumers
|
||||
|
||||
.. autoclass:: DataSyncConsumer
|
||||
:members:
|
||||
|
||||
.. autoclass:: DataSyncImportConsumer
|
||||
:members:
|
||||
|
||||
.. autoclass:: FromRattailConsumer
|
||||
|
||||
.. autoclass:: NullTestConsumer
|
||||
|
||||
.. autoclass:: ErrorTestConsumer
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
|
||||
``rattail.datasync.daemon``
|
||||
===========================
|
||||
|
||||
.. automodule:: rattail.datasync.daemon
|
||||
:members:
|
||||
|
|
@ -1,14 +0,0 @@
|
|||
|
||||
``rattail.datasync``
|
||||
====================
|
||||
|
||||
.. automodule:: rattail.datasync
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
config
|
||||
consumers
|
||||
daemon
|
||||
rattail
|
||||
watchers
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
|
||||
``rattail.datasync.rattail``
|
||||
============================
|
||||
|
||||
.. automodule:: rattail.datasync.rattail
|
||||
:members:
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
|
||||
``rattail.datasync.watchers``
|
||||
=============================
|
||||
|
||||
.. automodule:: rattail.datasync.watchers
|
||||
:members:
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
|
||||
``rattail.db.cache``
|
||||
====================
|
||||
|
||||
.. automodule:: rattail.db.cache
|
||||
|
||||
.. autofunction:: cache_model
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
.. -*- coding: utf-8 -*-
|
||||
|
||||
``rattail.db.changes``
|
||||
======================
|
||||
|
||||
.. automodule:: rattail.db.changes
|
||||
:members:
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
|
||||
``rattail.db.config``
|
||||
=====================
|
||||
|
||||
.. automodule:: rattail.db.config
|
||||
:members:
|
||||
|
|
@ -1,35 +0,0 @@
|
|||
|
||||
``rattail.db``
|
||||
==============
|
||||
|
||||
.. automodule:: rattail.db
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
:caption: Contents:
|
||||
|
||||
cache
|
||||
changes
|
||||
config
|
||||
model
|
||||
model.batch
|
||||
model.batch.handheld
|
||||
model.batch.inventory
|
||||
model.batch.labels
|
||||
model.batch.pricing
|
||||
model.batch.product
|
||||
model.batch.purchase
|
||||
model.batch.vendorcatalog
|
||||
model.core
|
||||
model.customers
|
||||
model.datasync
|
||||
model.labels
|
||||
model.org
|
||||
model.people
|
||||
model.products
|
||||
model.purchase
|
||||
model.stores
|
||||
model.users
|
||||
model.vendors
|
||||
sess
|
||||
util
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
|
||||
``rattail.db.model.batch.handheld``
|
||||
===================================
|
||||
|
||||
.. automodule:: rattail.db.model.batch.handheld
|
||||
:members:
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
|
||||
``rattail.db.model.batch.inventory``
|
||||
====================================
|
||||
|
||||
.. automodule:: rattail.db.model.batch.inventory
|
||||
:members:
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
|
||||
``rattail.db.model.batch.labels``
|
||||
=================================
|
||||
|
||||
.. automodule:: rattail.db.model.batch.labels
|
||||
:members:
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
|
||||
``rattail.db.model.batch.pricing``
|
||||
==================================
|
||||
|
||||
.. automodule:: rattail.db.model.batch.pricing
|
||||
:members:
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
|
||||
``rattail.db.model.batch.product``
|
||||
==================================
|
||||
|
||||
.. automodule:: rattail.db.model.batch.product
|
||||
:members:
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
|
||||
``rattail.db.model.batch.purchase``
|
||||
===================================
|
||||
|
||||
.. automodule:: rattail.db.model.batch.purchase
|
||||
:members:
|
||||
|
|
@ -1,22 +0,0 @@
|
|||
|
||||
``rattail.db.model.batch``
|
||||
==========================
|
||||
|
||||
.. .. automodule:: rattail.db.model.batch
|
||||
|
||||
.. automodule:: rattail.db.model.batch.core
|
||||
|
||||
.. autoclass:: BatchMixin
|
||||
:members:
|
||||
|
||||
.. autoclass:: BaseFileBatchMixin
|
||||
:members:
|
||||
|
||||
.. autoclass:: FileBatchMixin
|
||||
:members:
|
||||
|
||||
.. autoclass:: BatchRowMixin
|
||||
:members:
|
||||
|
||||
.. autoclass:: ProductBatchRowMixin
|
||||
:members:
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
|
||||
``rattail.db.model.batch.vendorcatalog``
|
||||
========================================
|
||||
|
||||
.. automodule:: rattail.db.model.batch.vendorcatalog
|
||||
:members:
|
||||
|
|
@ -1,33 +0,0 @@
|
|||
|
||||
``rattail.db.model.core``
|
||||
=========================
|
||||
|
||||
.. automodule:: rattail.db.model.core
|
||||
|
||||
.. autoclass:: ModelBase
|
||||
|
||||
.. attribute:: model_title
|
||||
|
||||
Optionally set this to a "humanized" version of the model name, for
|
||||
display in templates etc. Default value will be guessed from the model
|
||||
class name, e.g. 'Product' => "Products" and 'CustomerOrder' => "Customer
|
||||
Order".
|
||||
|
||||
.. attribute:: model_title_plural
|
||||
|
||||
Optionally set this to a "humanized" version of the *plural* model name,
|
||||
for display in templates etc. Default value will be guessed from the
|
||||
model class name, e.g. 'Product' => "Products" and 'CustomerOrder' =>
|
||||
"Customer Orders".
|
||||
|
||||
.. autoclass:: Setting
|
||||
:members:
|
||||
|
||||
.. autoclass:: Change
|
||||
:members:
|
||||
|
||||
.. automodule:: rattail.db.model.contact
|
||||
:members:
|
||||
|
||||
.. todo::
|
||||
Geez a lot of work left here...
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
|
||||
``rattail.db.model.customers``
|
||||
==============================
|
||||
|
||||
.. automodule:: rattail.db.model.customers
|
||||
:members:
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
|
||||
``rattail.db.model.datasync``
|
||||
=============================
|
||||
|
||||
.. automodule:: rattail.db.model.datasync
|
||||
:members:
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
|
||||
``rattail.db.model.labels``
|
||||
===========================
|
||||
|
||||
.. automodule:: rattail.db.model.labels
|
||||
:members:
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
|
||||
``rattail.db.model.org``
|
||||
========================
|
||||
|
||||
.. automodule:: rattail.db.model.org
|
||||
:members:
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
|
||||
``rattail.db.model.people``
|
||||
===========================
|
||||
|
||||
.. automodule:: rattail.db.model.people
|
||||
:members:
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
|
||||
``rattail.db.model.products``
|
||||
=============================
|
||||
|
||||
.. automodule:: rattail.db.model.products
|
||||
:members:
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
|
||||
``rattail.db.model.purchase``
|
||||
=============================
|
||||
|
||||
.. automodule:: rattail.db.model.purchase
|
||||
:members:
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
|
||||
``rattail.db.model``
|
||||
====================
|
||||
|
||||
.. automodule:: rattail.db.model
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
|
||||
``rattail.db.model.stores``
|
||||
===========================
|
||||
|
||||
.. automodule:: rattail.db.model.stores
|
||||
:members:
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
|
||||
``rattail.db.model.users``
|
||||
==========================
|
||||
|
||||
.. automodule:: rattail.db.model.users
|
||||
:members:
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
|
||||
``rattail.db.model.vendors``
|
||||
============================
|
||||
|
||||
.. automodule:: rattail.db.model.vendors
|
||||
:members:
|
||||
|
|
@ -1,22 +0,0 @@
|
|||
|
||||
``rattail.db.sess``
|
||||
===================
|
||||
|
||||
.. automodule:: rattail.db.sess
|
||||
:members:
|
||||
|
||||
.. class:: Session
|
||||
|
||||
SQLAlchemy session class used for all (normal) :term:`app database`
|
||||
connections.
|
||||
|
||||
This is a subclass of :class:`SessionBase`.
|
||||
|
||||
See the :class:`sqlalchemy:sqlalchemy.orm.Session` docs for more
|
||||
info.
|
||||
|
||||
.. note::
|
||||
|
||||
WuttJamaican also provides a
|
||||
:class:`~wuttjamaican:wuttjamaican.db.sess.Session` class,
|
||||
however for now Rattail still must define/use its own.
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
|
||||
``rattail.employment``
|
||||
======================
|
||||
|
||||
.. automodule:: rattail.employment
|
||||
:members:
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
|
||||
``rattail.enum``
|
||||
================
|
||||
|
||||
.. automodule:: rattail.enum
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
|
||||
``rattail.excel``
|
||||
=================
|
||||
|
||||
.. automodule:: rattail.excel
|
||||
:members:
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
|
||||
``rattail.exceptions``
|
||||
======================
|
||||
|
||||
.. automodule:: rattail.exceptions
|
||||
|
||||
.. autoclass:: RattailError
|
||||
|
||||
.. .. autoclass:: LabelPrintingError
|
||||
..
|
||||
.. .. autoclass:: PalmError
|
||||
..
|
||||
.. .. autoclass:: PalmClassicDatabaseTypelibNotFound
|
||||
..
|
||||
.. .. autoclass:: PalmConduitManagerNotFound
|
||||
..
|
||||
.. .. autoclass:: PalmConduitAlreadyRegistered
|
||||
..
|
||||
.. .. autoclass:: PalmConduitNotRegistered
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
|
||||
``rattail.features.handlers``
|
||||
=============================
|
||||
|
||||
.. automodule:: rattail.features.handlers
|
||||
:members:
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
|
||||
``rattail.features``
|
||||
====================
|
||||
|
||||
.. automodule:: rattail.features
|
||||
:members:
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
handlers
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
.. -*- coding: utf-8 -*-
|
||||
|
||||
``rattail.filemon.actions``
|
||||
===========================
|
||||
|
||||
.. automodule:: rattail.filemon.actions
|
||||
:members:
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
|
||||
``rattail.filemon.config_``
|
||||
===========================
|
||||
|
||||
.. automodule:: rattail.filemon.config_
|
||||
:members:
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
.. -*- coding: utf-8 -*-
|
||||
|
||||
``rattail.filemon``
|
||||
===================
|
||||
|
||||
.. automodule:: rattail.filemon
|
||||
|
||||
.. autoclass:: Action
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
.. -*- coding: utf-8 -*-
|
||||
|
||||
``rattail.filemon.linux``
|
||||
=========================
|
||||
|
||||
.. automodule:: rattail.filemon.linux
|
||||
:members:
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
.. -*- coding: utf-8 -*-
|
||||
|
||||
``rattail.filemon.util``
|
||||
========================
|
||||
|
||||
.. automodule:: rattail.filemon.util
|
||||
:members:
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
.. -*- coding: utf-8 -*-
|
||||
|
||||
``rattail.filemon.win32``
|
||||
=========================
|
||||
|
||||
.. automodule:: rattail.filemon.win32
|
||||
:members:
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
.. -*- coding: utf-8 -*-
|
||||
|
||||
``rattail.files``
|
||||
=================
|
||||
|
||||
.. automodule:: rattail.files
|
||||
:members:
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
|
||||
``rattail.gpc``
|
||||
===============
|
||||
|
||||
.. automodule:: rattail.gpc
|
||||
:members:
|
||||
|
|
@ -1,17 +0,0 @@
|
|||
|
||||
``rattail.importing.handlers``
|
||||
==============================
|
||||
|
||||
.. automodule:: rattail.importing.handlers
|
||||
|
||||
.. autoclass:: ImportHandler
|
||||
:members:
|
||||
|
||||
.. autoclass:: BulkImportHandler
|
||||
:members:
|
||||
|
||||
.. autoclass:: FromSQLAlchemyHandler
|
||||
:members:
|
||||
|
||||
.. autoclass:: ToSQLAlchemyHandler
|
||||
:members:
|
||||
|
|
@ -1,14 +0,0 @@
|
|||
|
||||
``rattail.importing.importers``
|
||||
===============================
|
||||
|
||||
.. automodule:: rattail.importing.importers
|
||||
|
||||
.. autoclass:: Importer
|
||||
:members:
|
||||
|
||||
.. autoclass:: FromQuery
|
||||
:members:
|
||||
|
||||
.. autoclass:: BulkImporter
|
||||
:members:
|
||||
|
|
@ -1,61 +0,0 @@
|
|||
|
||||
``rattail.importing``
|
||||
=====================
|
||||
|
||||
.. automodule:: rattail.importing
|
||||
|
||||
There are a handful of importers and import handlers made available within this
|
||||
namespace, i.e. not just the base classes but some variations thereof etc. You
|
||||
may import each of these directly from this namespace, e.g.::
|
||||
|
||||
from rattail.importing import Importer
|
||||
|
||||
However it's more typical to do this instead::
|
||||
|
||||
from rattail import importing
|
||||
|
||||
That way you can reference ``importing.Importer`` as well as
|
||||
``importing.model.ProductImporter`` etc. The full list of what's available in
|
||||
this ``rattail.importing`` namespace follows.
|
||||
|
||||
Please also see :doc:`/narr/importers` for some of the general concepts
|
||||
involved here.
|
||||
|
||||
Importers
|
||||
---------
|
||||
|
||||
* :class:`rattail.importing.importers.Importer`
|
||||
* :class:`rattail.importing.importers.FromQuery`
|
||||
* :class:`rattail.importing.importers.BulkImporter`
|
||||
* :class:`rattail.importing.sqlalchemy.FromSQLAlchemy`
|
||||
* :class:`rattail.importing.sqlalchemy.ToSQLAlchemy`
|
||||
* :class:`rattail.importing.postgresql.BulkToPostgreSQL`
|
||||
|
||||
Import Handlers
|
||||
---------------
|
||||
|
||||
* :class:`rattail.importing.handlers.ImportHandler`
|
||||
* :class:`rattail.importing.handlers.BulkImportHandler`
|
||||
* :class:`rattail.importing.handlers.FromSQLAlchemyHandler`
|
||||
* :class:`rattail.importing.handlers.ToSQLAlchemyHandler`
|
||||
* :class:`rattail.importing.rattail.FromRattailHandler`
|
||||
* :class:`rattail.importing.rattail.ToRattailHandler`
|
||||
|
||||
Rattail Model Importers
|
||||
-----------------------
|
||||
|
||||
This is a little different but worth a mention. If you do::
|
||||
|
||||
from rattail import importing
|
||||
|
||||
then you will have access to the full set of Rattail data importers (i.e. the
|
||||
"local" side of an import which targets a Rattail database) via
|
||||
``importing.model`` - in other words you can then do this:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
class ProductImporter(importing.model.ProductImporter):
|
||||
""" Custom product importer. """
|
||||
|
||||
Of course that's only helpful if you're importing data to Rattail. See
|
||||
:mod:`rattail.importing.model` for what's available in that namespace.
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
|
||||
``rattail.importing.model``
|
||||
===========================
|
||||
|
||||
.. automodule:: rattail.importing.model
|
||||
:members:
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
|
||||
``rattail.importing.postgresql``
|
||||
================================
|
||||
|
||||
.. automodule:: rattail.importing.postgresql
|
||||
|
||||
.. autoclass:: BulkToPostgreSQL
|
||||
:members:
|
||||
|
|
@ -1,23 +0,0 @@
|
|||
|
||||
``rattail.importing.rattail``
|
||||
=============================
|
||||
|
||||
.. automodule:: rattail.importing.rattail
|
||||
|
||||
.. autoclass:: FromRattailHandler
|
||||
:members:
|
||||
|
||||
.. autoclass:: ToRattailHandler
|
||||
:members:
|
||||
|
||||
.. autoclass:: FromRattailToRattailImport
|
||||
:members:
|
||||
|
||||
.. autoclass:: FromRattailToRattailExport
|
||||
:members:
|
||||
|
||||
.. autoclass:: RoleImporter
|
||||
:members:
|
||||
|
||||
.. autoclass:: GlobalRoleImporter
|
||||
:members:
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
|
||||
``rattail.importing.sqlalchemy``
|
||||
================================
|
||||
|
||||
.. automodule:: rattail.importing.sqlalchemy
|
||||
|
||||
.. autoclass:: FromSQLAlchemy
|
||||
:members:
|
||||
|
||||
.. autoclass:: ToSQLAlchemy
|
||||
:members:
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
|
||||
``rattail.labels``
|
||||
==================
|
||||
|
||||
.. automodule:: rattail.labels
|
||||
:members:
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
|
||||
``rattail.logging``
|
||||
===================
|
||||
|
||||
.. automodule:: rattail.logging
|
||||
:members:
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
|
||||
``rattail.mail``
|
||||
================
|
||||
|
||||
.. automodule:: rattail.mail
|
||||
|
||||
.. autoclass:: EmailHandler
|
||||
:members:
|
||||
|
||||
.. autofunction:: send_email
|
||||
|
||||
.. class:: Email
|
||||
|
||||
Represents an email message, of a particular type. Various aspects of the
|
||||
message may be defined by a subclass and/or configuration.
|
||||
|
||||
:attribute key:
|
||||
Unique key for a particular type of email. This is used to determine
|
||||
which template(s) will be used to generate the email body, as well as
|
||||
the email sender and recipients (via config/settings), etc.
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
|
||||
``rattail.membership``
|
||||
======================
|
||||
|
||||
.. automodule:: rattail.membership
|
||||
:members:
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
|
||||
``rattail.people``
|
||||
==================
|
||||
|
||||
.. automodule:: rattail.people
|
||||
:members:
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
|
||||
``rattail.problems.handlers``
|
||||
=============================
|
||||
|
||||
.. automodule:: rattail.problems.handlers
|
||||
:members:
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
|
||||
``rattail.problems``
|
||||
====================
|
||||
|
||||
.. automodule:: rattail.problems
|
||||
:members:
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
handlers
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
|
||||
``rattail.products``
|
||||
====================
|
||||
|
||||
.. automodule:: rattail.products
|
||||
:members:
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
|
||||
``rattail.progress``
|
||||
====================
|
||||
|
||||
.. automodule:: rattail.progress
|
||||
:members:
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
|
||||
``rattail.projects.base``
|
||||
=========================
|
||||
|
||||
.. automodule:: rattail.projects.base
|
||||
:members:
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
|
||||
``rattail.projects.handler``
|
||||
============================
|
||||
|
||||
.. automodule:: rattail.projects.handler
|
||||
:members:
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue