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 @@
|
||||||
*~
|
rattail.egg-info
|
||||||
*.pyc
|
|
||||||
.tox/
|
|
||||||
build/
|
|
||||||
dist/
|
|
||||||
docs/_build/
|
|
||||||
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
|
GNU AFFERO GENERAL PUBLIC LICENSE
|
||||||
Version 3, 29 June 2007
|
Version 3, 19 November 2007
|
||||||
|
|
||||||
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||||
Everyone is permitted to copy and distribute verbatim copies
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
|
|
@ -7,17 +7,15 @@
|
||||||
|
|
||||||
Preamble
|
Preamble
|
||||||
|
|
||||||
The GNU General Public License is a free, copyleft license for
|
The GNU Affero General Public License is a free, copyleft license for
|
||||||
software and other kinds of works.
|
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
|
The licenses for most software and other practical works are designed
|
||||||
to take away your freedom to share and change the works. By contrast,
|
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
|
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
|
software for all its users.
|
||||||
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.
|
|
||||||
|
|
||||||
When we speak of free software, we are referring to freedom, not
|
When we speak of free software, we are referring to freedom, not
|
||||||
price. Our General Public Licenses are designed to make sure that you
|
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
|
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.
|
free programs, and that you know you can do these things.
|
||||||
|
|
||||||
To protect your rights, we need to prevent others from denying you
|
Developers that use our General Public Licenses protect your rights
|
||||||
these rights or asking you to surrender the rights. Therefore, you have
|
with two steps: (1) assert copyright on the software, and (2) offer
|
||||||
certain responsibilities if you distribute copies of the software, or if
|
you this License which gives you legal permission to copy, distribute
|
||||||
you modify it: responsibilities to respect the freedom of others.
|
and/or modify the software.
|
||||||
|
|
||||||
For example, if you distribute copies of such a program, whether
|
A secondary benefit of defending all users' freedom is that
|
||||||
gratis or for a fee, you must pass on to the recipients the same
|
improvements made in alternate versions of the program, if they
|
||||||
freedoms that you received. You must make sure that they, too, receive
|
receive widespread use, become available for other developers to
|
||||||
or can get the source code. And you must show them these terms so they
|
incorporate. Many developers of free software are heartened and
|
||||||
know their rights.
|
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:
|
The GNU Affero General Public License is designed specifically to
|
||||||
(1) assert copyright on the software, and (2) offer you this License
|
ensure that, in such cases, the modified source code becomes available
|
||||||
giving you legal permission to copy, distribute and/or modify it.
|
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
|
An older license, called the Affero General Public License and
|
||||||
that there is no warranty for this free software. For both users' and
|
published by Affero, was designed to accomplish similar goals. This is
|
||||||
authors' sake, the GPL requires that modified versions be marked as
|
a different license, not a version of the Affero GPL, but Affero has
|
||||||
changed, so that their problems will not be attributed erroneously to
|
released a new version of the Affero GPL which permits relicensing under
|
||||||
authors of previous versions.
|
this license.
|
||||||
|
|
||||||
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.
|
|
||||||
|
|
||||||
The precise terms and conditions for copying, distribution and
|
The precise terms and conditions for copying, distribution and
|
||||||
modification follow.
|
modification follow.
|
||||||
|
|
@ -72,7 +60,7 @@ modification follow.
|
||||||
|
|
||||||
0. Definitions.
|
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
|
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||||
works, such as semiconductor masks.
|
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
|
the Program, the only way you could satisfy both those terms and this
|
||||||
License would be to refrain entirely from conveying the Program.
|
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
|
Notwithstanding any other provision of this License, you have
|
||||||
permission to link or combine any covered work with a work licensed
|
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
|
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,
|
License will continue to apply to the part which is the covered work,
|
||||||
but the special requirements of the GNU Affero General Public License,
|
but the work with which it is combined will remain governed by version
|
||||||
section 13, concerning interaction through a network will apply to the
|
3 of the GNU General Public License.
|
||||||
combination as such.
|
|
||||||
|
|
||||||
14. Revised Versions of this License.
|
14. Revised Versions of this License.
|
||||||
|
|
||||||
The Free Software Foundation may publish revised and/or new versions of
|
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
|
the GNU Affero General Public License from time to time. Such new versions
|
||||||
be similar in spirit to the present version, but may differ in detail to
|
will be similar in spirit to the present version, but may differ in detail to
|
||||||
address new problems or concerns.
|
address new problems or concerns.
|
||||||
|
|
||||||
Each version is given a distinguishing version number. If the
|
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
|
Public License "or any later version" applies to it, you have the
|
||||||
option of following the terms and conditions either of that numbered
|
option of following the terms and conditions either of that numbered
|
||||||
version or of any later version published by the Free Software
|
version or of any later version published by the Free Software
|
||||||
Foundation. If the Program does not specify a version number of the
|
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.
|
by the Free Software Foundation.
|
||||||
|
|
||||||
If the Program specifies that a proxy can decide which future
|
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
|
public statement of acceptance of a version permanently authorizes you
|
||||||
to choose that version for the Program.
|
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>
|
Copyright (C) <year> <name of author>
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
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
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
(at your option) any later version.
|
(at your option) any later version.
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
This program is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
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/>.
|
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.
|
Also add information on how to contact you by electronic and paper mail.
|
||||||
|
|
||||||
If the program does terminal interaction, make it output a short
|
If your software can interact with users remotely through a computer
|
||||||
notice like this when it starts in an interactive mode:
|
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
|
||||||
<program> Copyright (C) <year> <name of author>
|
interface could display a "Source" link that leads users to an archive
|
||||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
of the code. There are many ways you could offer source, and different
|
||||||
This is free software, and you are welcome to redistribute it
|
solutions will be better for different programs; see section 13 for the
|
||||||
under certain conditions; type `show c' for details.
|
specific requirements.
|
||||||
|
|
||||||
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".
|
|
||||||
|
|
||||||
You should also get your employer (if you work as a programmer) or school,
|
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.
|
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/>.
|
<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 *.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
|
recursive-include rattail/templates *.mako
|
||||||
|
|
||||||
include rattail/trainwreck/db/alembic/README
|
include docs/Makefile
|
||||||
recursive-include rattail/trainwreck/db/alembic *.mako
|
include docs/make.bat
|
||||||
recursive-include rattail/trainwreck/db/alembic *.py
|
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 =
|
PAPER =
|
||||||
BUILDDIR = _build
|
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.
|
# Internal variables.
|
||||||
PAPEROPT_a4 = -D latex_paper_size=a4
|
PAPEROPT_a4 = -D latex_paper_size=a4
|
||||||
PAPEROPT_letter = -D latex_paper_size=letter
|
PAPEROPT_letter = -D latex_paper_size=letter
|
||||||
|
|
@ -34,20 +29,17 @@ help:
|
||||||
@echo " epub to make an epub"
|
@echo " epub to make an epub"
|
||||||
@echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
|
@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 " 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 " text to make text files"
|
||||||
@echo " man to make manual pages"
|
@echo " man to make manual pages"
|
||||||
@echo " texinfo to make Texinfo files"
|
@echo " texinfo to make Texinfo files"
|
||||||
@echo " info to make Texinfo files and run them through makeinfo"
|
@echo " info to make Texinfo files and run them through makeinfo"
|
||||||
@echo " gettext to make PO message catalogs"
|
@echo " gettext to make PO message catalogs"
|
||||||
@echo " changes to make an overview of all changed/added/deprecated items"
|
@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 " linkcheck to check all external links for integrity"
|
||||||
@echo " doctest to run all doctests embedded in the documentation (if enabled)"
|
@echo " doctest to run all doctests embedded in the documentation (if enabled)"
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -rf $(BUILDDIR)/*
|
-rm -rf $(BUILDDIR)/*
|
||||||
|
|
||||||
html:
|
html:
|
||||||
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
|
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
|
||||||
|
|
@ -116,12 +108,6 @@ latexpdf:
|
||||||
$(MAKE) -C $(BUILDDIR)/latex all-pdf
|
$(MAKE) -C $(BUILDDIR)/latex all-pdf
|
||||||
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
|
@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:
|
text:
|
||||||
$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
|
$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
|
||||||
@echo
|
@echo
|
||||||
|
|
@ -165,13 +151,3 @@ doctest:
|
||||||
$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
|
$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
|
||||||
@echo "Testing of doctests in the sources finished, look at the " \
|
@echo "Testing of doctests in the sources finished, look at the " \
|
||||||
"results in $(BUILDDIR)/doctest/output.txt."
|
"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