Compare commits

...

3900 commits

Author SHA1 Message Date
e150453801 fix: add startup hack for tempmon DB model 2025-03-05 10:34:52 -06:00
e2582ffec5 bump: version 0.22.6 → 0.22.7 2025-02-19 10:33:39 -06:00
a6508154cb docs: update intersphinx doc links per server migration 2025-02-18 12:13:28 -06:00
7348eec671 fix: stop using old config for logo image url on login page 2025-02-18 11:16:23 -06:00
4221fa50dd fix: fix warning msg for deprecated Grid param 2025-02-14 11:37:21 -06:00
e0ebd43e7a bump: version 0.22.5 → 0.22.6 2025-02-01 15:18:12 -06:00
c7ee9de9eb fix: register vue3 form component for products -> make batch 2024-12-28 16:43:22 -06:00
950db697a0 bump: version 0.22.4 → 0.22.5 2024-12-16 12:46:45 -06:00
358b3b75a5 fix: whoops this is latest rattail 2024-12-10 13:05:32 -06:00
7e559a01b3 fix: require newer rattail lib 2024-12-10 12:52:49 -06:00
23bdde245a fix: require newer wuttaweb 2024-12-10 12:34:34 -06:00
2c269b640b fix: let caller request safe HTML literal for rendered grid table
mostly just for convenience
2024-12-01 18:12:30 -06:00
Lance Edgar
f1c8ffedda bump: version 0.22.3 → 0.22.4 2024-11-22 12:57:04 -06:00
Lance Edgar
aace6033c5 fix: avoid error in product search for duplicated key 2024-11-20 20:17:21 -06:00
Lance Edgar
7171c7fb06 fix: use vmodel for confirm password widget input
since previously this did not work at all for butterball (vue3 +
oruga) - although it was never clear why per se..

Refs: #1
2024-11-19 20:53:23 -06:00
Lance Edgar
993f066f2c bump: version 0.22.2 → 0.22.3 2024-11-19 15:45:37 -06:00
Lance Edgar
980031f524 fix: avoid error for trainwreck query when not a customer
when viewing a person's profile, who does not have a customer record,
the trainwreck query can't really return anything since it normally
should be matching on the customer ID
2024-11-18 14:59:50 -06:00
Lance Edgar
bcaf0d08bc bump: version 0.22.1 → 0.22.2 2024-11-18 14:08:10 -06:00
Lance Edgar
ac439c949b fix: use local/custom enum for continuum operations
since we can't rely on that existing in rattail proper, due to it not
always having sqlalchemy
2024-11-12 19:45:24 -06:00
Lance Edgar
20b3f87dbe fix: add basic master view for Product Costs 2024-11-12 18:30:50 -06:00
Lance Edgar
9e55717041 fix: show continuum operation type when viewing version history 2024-11-12 18:28:41 -06:00
Lance Edgar
772b6610cb fix: always define app attr for ViewSupplement 2024-11-12 18:26:36 -06:00
Lance Edgar
3f27f626df fix: avoid deprecated import 2024-11-10 19:16:45 -06:00
Lance Edgar
29743e70b7 bump: version 0.22.0 → 0.22.1 2024-11-02 16:56:28 -05:00
Lance Edgar
54220601ed fix: fix submit button for running problem report
esp. on Chrome(-based) browsers
2024-11-01 17:47:46 -05:00
Lance Edgar
9a6f8970ae fix: avoid deprecated grid method 2024-10-23 09:46:14 -05:00
Lance Edgar
28f90ad6b5 bump: version 0.21.11 → 0.22.0 2024-10-22 17:09:29 -05:00
Lance Edgar
535317e4f7 fix: avoid deprecated method to suggest username 2024-10-22 15:04:40 -05:00
Lance Edgar
072db39233 feat: add support for new ordering batch from parsed file 2024-10-22 14:26:10 -05:00
Lance Edgar
c6365f2631 bump: version 0.21.10 → 0.21.11 2024-10-03 09:05:46 -05:00
Lance Edgar
d520f64fee fix: custom method for adding grid action
since for now, we are using custom grid action class
2024-10-03 08:56:52 -05:00
Lance Edgar
2308d2e240 fix: become/stop root should redirect to previous url
for default theme; butterball already did that
2024-09-16 12:55:58 -05:00
Lance Edgar
0b4efae392 bump: version 0.21.9 → 0.21.10 2024-09-15 10:56:01 -05:00
Lance Edgar
0b646d2d18 fix: update project repo links, kallithea -> forgejo 2024-09-14 12:49:37 -05:00
Lance Edgar
a4d81a6e3c docs: use markdown for readme file 2024-09-13 18:16:07 -05:00
Lance Edgar
5e742eab17 fix: use better icon for submit button on login page 2024-09-09 08:32:28 -05:00
Lance Edgar
b9b8bbd2ea fix: wrap notes text for batch view 2024-08-29 17:18:32 -05:00
Lance Edgar
8df52bf2a2 fix: expose datasync consumer batch size via configure page 2024-08-29 17:01:49 -05:00
Lance Edgar
55f45ae8a0 bump: version 0.21.8 → 0.21.9 2024-08-28 17:38:33 -05:00
Lance Edgar
2219cf8198 fix: render custom attrs in form component tag 2024-08-28 17:38:05 -05:00
Lance Edgar
9be2f63475 bump: version 0.21.7 → 0.21.8 2024-08-28 14:37:40 -05:00
Lance Edgar
812d8d2349 fix: ignore session kwarg for MasterView.make_row_grid() 2024-08-28 14:37:18 -05:00
Lance Edgar
20dcdd8b86 bump: version 0.21.6 → 0.21.7 2024-08-28 14:20:51 -05:00
Lance Edgar
bc399182ba fix: avoid error when form value cannot be obtained 2024-08-28 14:20:17 -05:00
Lance Edgar
71d63f6b93 bump: version 0.21.5 → 0.21.6 2024-08-28 09:53:37 -05:00
Lance Edgar
0b6cfaa9c5 fix: avoid error when grid value cannot be obtained 2024-08-28 09:53:14 -05:00
Lance Edgar
b81914fbf5 test: fix broken test 2024-08-28 00:35:15 -05:00
Lance Edgar
b30f066c41 bump: version 0.21.4 → 0.21.5 2024-08-28 00:30:15 -05:00
Lance Edgar
2e20fc5b75 fix: set empty string for "-new-" file configure option
otherwise the "-new-" option is not properly auto-selected
2024-08-27 13:50:30 -05:00
Lance Edgar
ca05e68890 bump: version 0.21.3 → 0.21.4 2024-08-26 16:12:14 -05:00
Lance Edgar
7a9d5772db fix: handle differing email profile keys for appinfo/configure
hopefully this all can improve some day soon..
2024-08-26 16:11:32 -05:00
Lance Edgar
dffd951369 bump: version 0.21.2 → 0.21.3 2024-08-26 15:25:56 -05:00
Lance Edgar
d67eb2f1cc fix: show non-standard config values for app info configure email
this page is currently showing some basic email sender/recips etc. but
the config keys traditionally used by rattail are different than
wuttjamaican..so for now we must "translate"
2024-08-26 15:24:40 -05:00
Lance Edgar
3a9bf69aa7 bump: version 0.21.1 → 0.21.2 2024-08-26 14:56:15 -05:00
Lance Edgar
d1f4c0f150 fix: refactor waterpark base template to use wutta feedback component
although for now we still provide the template and add reply-to
2024-08-26 14:54:45 -05:00
Lance Edgar
b7991b5dc6 fix: fix input/output file upload feature for configure pages, per oruga 2024-08-23 16:18:17 -05:00
Lance Edgar
c1a2c9cc70 fix: tweak how grid data translates to Vue template context
per wuttaweb changes
2024-08-23 14:14:17 -05:00
Lance Edgar
37f760959d fix: merge filters into main grid template
to better match wuttaweb
2024-08-22 19:58:27 -05:00
Lance Edgar
cea3e4b927 fix: add basic wutta view for users
just proving concepts still at this point..nothing reliable
2024-08-22 19:40:21 -05:00
Lance Edgar
29531c83c4 fix: some fixes for wutta people view 2024-08-22 19:21:48 -05:00
Lance Edgar
4c3e3aeb6a fix: various fixes for waterpark theme 2024-08-22 17:09:58 -05:00
Lance Edgar
c176d97870 fix: avoid deprecated component form kwarg 2024-08-22 15:54:15 -05:00
Lance Edgar
7d6f75bb05 bump: version 0.21.0 → 0.21.1 2024-08-22 15:33:28 -05:00
Lance Edgar
7b40c527c8 fix: misc. bugfixes per recent changes 2024-08-22 15:31:09 -05:00
Lance Edgar
f292850d05 test: fix some tests 2024-08-22 14:59:18 -05:00
Lance Edgar
8d5427e92f bump: version 0.20.1 → 0.21.0 2024-08-22 14:53:59 -05:00
Lance Edgar
b8131c8393 fix: change grid reset-view param name to match wuttaweb 2024-08-22 13:49:57 -05:00
Lance Edgar
e52a83751e feat: move "most" filtering logic for grid class to wuttaweb
we still define all filters, and the "most important" grid methods for
filtering
2024-08-21 20:16:03 -05:00
Lance Edgar
ffa724ef37 fix: move "searchable columns" grid feature to wuttaweb 2024-08-21 15:52:30 -05:00
Lance Edgar
1d00fe994a fix: use wuttaweb to get/render csrf token 2024-08-21 09:44:32 -05:00
Lance Edgar
71abbe06da feat: inherit from wuttaweb templates for home, login pages 2024-08-21 00:49:26 -05:00
Lance Edgar
f755460242 feat: inherit from wuttaweb for AppInfoView, appinfo/configure template 2024-08-21 00:49:23 -05:00
Lance Edgar
2ffc067097 fix: inherit from wuttaweb for appinfo/index template
although for now, still must override for some link buttons
2024-08-20 22:27:46 -05:00
Lance Edgar
b6a8e508bf fix: prefer wuttaweb config for "home redirect to login" feature 2024-08-20 22:16:01 -05:00
Lance Edgar
1def26a35b feat: add "has output file templates" config option for master view
this is a bit hacky, a quick copy/paste job from the equivalent
feature for input file templates.

i assume this will get cleaned up when moved to wuttaweb..
2024-08-20 19:09:56 -05:00
Lance Edgar
07871188aa fix: fix master/index template rendering for waterpark theme 2024-08-20 17:03:57 -05:00
Lance Edgar
c8dc60cb68 fix: fix spacing for navbar logo/title in waterpark theme 2024-08-20 16:49:34 -05:00
Lance Edgar
526c84dfa6 bump: version 0.20.0 → 0.20.1 2024-08-20 16:05:52 -05:00
Lance Edgar
21f90f3f32 fix: fix default filter verbs logic for workorder status 2024-08-20 16:02:35 -05:00
Lance Edgar
83586ef90f bump: version 0.19.3 → 0.20.0 2024-08-20 15:06:09 -05:00
Lance Edgar
59bd58aca7 feat: add new 'waterpark' theme, based on wuttaweb w/ vue2 + buefy
hoping to eventually replace the 'default' view with this one, if all
goes well.  definitely needs more testing and is not exposed as an
option yet, unless configured
2024-08-20 15:03:25 -05:00
Lance Edgar
1ec1eba496 feat: refactor templates to simplify base/page/form structure
to mimic what has been done in wuttaweb
2024-08-19 23:20:59 -05:00
Lance Edgar
d29b840343 fix: avoid deprecated reference to app db engine 2024-08-19 14:38:41 -05:00
Lance Edgar
b762a0782a bump: version 0.19.2 → 0.19.3 2024-08-19 13:57:36 -05:00
Lance Edgar
15ab0c9592 fix: add pager stats to all grid vue data (fixes view history)
also various other tweaks to modernize
2024-08-19 13:48:18 -05:00
Lance Edgar
41945c5e37 bump: version 0.19.1 → 0.19.2 2024-08-19 12:01:42 -05:00
Lance Edgar
f5661fe349 fix: sort on frontend for appinfo package listing grid 2024-08-19 11:56:46 -05:00
Lance Edgar
0eeeb4bd35 fix: prefer attr over key lookup when getting model values
applies to both forms and grids.

the base model class can still handle `obj[key]` but now it is limited
to the column fields only, no association proxies.

so, better to just try `getattr(obj, key)` first and only fall back to
the other if it fails.

unless the obj is clearly a dict in which case try `obj[key]` only
2024-08-19 11:49:52 -05:00
Lance Edgar
1d56a4c0d0 fix: replace all occurrences of component_studly => vue_component 2024-08-19 09:53:10 -05:00
Lance Edgar
b642c98d40 bump: version 0.19.0 → 0.19.1 2024-08-19 09:23:55 -05:00
Lance Edgar
0fb3c0f3d2 fix: fix broken user auth for web API app 2024-08-19 09:23:31 -05:00
Lance Edgar
b7955a5871 bump: version 0.18.0 → 0.19.0 2024-08-18 19:58:50 -05:00
Lance Edgar
290f8fd51e feat: move multi-column grid sorting logic to wuttaweb
tailbone grid template still duplicates much for Vue, and will until
we can port the filters and anything else remaining..
2024-08-18 19:52:21 -05:00
Lance Edgar
ec36df4a34 feat: move single-column grid sorting logic to wuttaweb 2024-08-18 14:05:52 -05:00
Lance Edgar
c95e42bf82 fix: fix misc. errors in grid template per wuttaweb 2024-08-18 10:20:48 -05:00
Lance Edgar
5e82fe3946 fix: fix broken permission directives in web api startup 2024-08-18 10:20:48 -05:00
Lance Edgar
f4c8176d83 bump: version 0.17.0 → 0.18.0 2024-08-16 22:54:22 -05:00
Lance Edgar
9da2a148c6 feat: move "basic" grid pagination logic to wuttaweb
so far only "simple" pagination is supported by wuttaweb, so basically
the main feature flag, page size, current page.  in this
scenario *all* data is written to client-side JSON and Buefy handles
the actual pagination.

backend pagination coming soon for wuttaweb but for now tailbone still
handles all that.
2024-08-16 18:45:04 -05:00
Lance Edgar
2a0b6da2f9 feat: inherit from wutta base class for Grid 2024-08-16 14:34:50 -05:00
Lance Edgar
f7641218cb fix: avoid route error in user view, when using wutta people view
kind of a temporary edge case here, can eventually change it back
2024-08-16 11:56:54 -05:00
Lance Edgar
1b78bd617c feat: inherit most logic from wuttaweb, for GridAction 2024-08-16 11:56:12 -05:00
Lance Edgar
09612b1921 fix: fix some more wutta compat for base template
missed those earlier
2024-08-15 23:46:58 -05:00
Lance Edgar
bbd98e7b2f bump: version 0.16.1 → 0.17.0 2024-08-15 23:15:25 -05:00
Lance Edgar
da0f6bd5e1 feat: use wuttaweb for get_liburl() logic
thankfully this is already handled and we can remove from tailbone.
although this adds some new cruft as well, to handle auto-migrating
any existing liburl config for apps.

eventually once all apps have migrated to new settings we can remove
the prefix from our calls here but also in wuttaweb signature
2024-08-15 23:12:02 -05:00
Lance Edgar
bbc2c584ec bump: version 0.16.0 → 0.16.1 2024-08-15 21:16:53 -05:00
Lance Edgar
7f0c571a44 fix: improve wutta People view a bit
try to behave more like traditional tailbone, for the few things
supported so far.  taking a conservative approach here for now since
probably other things are more pressing.
2024-08-15 21:12:34 -05:00
Lance Edgar
53040dc6be fix: update references to get_class_hierarchy()
per upstream changes
2024-08-15 20:29:36 -05:00
Lance Edgar
1cacfab2a6 fix: tweak template for people/view_profile per wutta compat
wutta has the view defined but it returns minimal context
2024-08-15 18:44:14 -05:00
Lance Edgar
bab09e3fe7 bump: version 0.15.6 → 0.16.0 2024-08-15 16:22:35 -05:00
Lance Edgar
dd176a5e9e feat: add first wutta-based master, for PersonView
still opt-in-only at this point, the traditional tailbone-native
master is used by default.

new wutta master is not feature complete yet.  but at least things
seem to render and form posts work okay..

when enabled, this uses a "completely" wutta-based stack for the view,
grid and forms.  but the underlying DB is of course rattail, and the
templates are still traditional/tailbone.
2024-08-15 16:05:53 -05:00
Lance Edgar
a6ce5eb21d feat: refactor forms/grids/views/templates per wuttaweb compat
this starts to get things more aligned between wuttaweb and tailbone.
the use case in mind so far is for a wuttaweb view to be included in a
tailbone app.

form and grid classes now have some new methods to match wuttaweb, so
templates call the shared method names where possible.

templates can no longer assume they have tailbone-native master view,
form, grid etc. so must inspect context more closely in some cases.
2024-08-15 15:49:54 -05:00
Lance Edgar
b53479f8e4 bump: version 0.15.5 → 0.15.6 2024-08-13 11:21:38 -05:00
Lance Edgar
1f752530d2 fix: avoid before_render subscriber hook for web API
the purpose of that function is to setup extra template context, but
API views always render as 'json' with no template
2024-08-10 13:49:41 -05:00
Lance Edgar
2c46fde742 fix: simplify verbiage for batch execution panel 2024-08-10 08:43:54 -05:00
Lance Edgar
d57efba381 bump: version 0.15.4 → 0.15.5 2024-08-09 19:48:51 -05:00
Lance Edgar
f2fce2e305 fix: assign convenience attrs for all views (config, app, enum, model) 2024-08-09 19:22:26 -05:00
Lance Edgar
b5f0ecb165 bump: version 0.15.3 → 0.15.4 2024-08-09 10:13:00 -05:00
Lance Edgar
7e683dfc4a fix: avoid bug when checking current theme
this check is happening not only for classic views but API as well,
which doesn't really have a theme..  probably need a proper fix in
wuttaweb but this should be okay for now
2024-08-09 10:11:38 -05:00
Lance Edgar
0b8315fc78 bump: version 0.15.2 → 0.15.3 2024-08-08 19:39:36 -05:00
Lance Edgar
ffd694e7b7 fix: fix timepicker parseTime() when value is null 2024-08-08 19:39:01 -05:00
Lance Edgar
80dc4eb7a9 bump: version 0.15.1 → 0.15.2 2024-08-06 23:19:14 -05:00
Lance Edgar
518c108c88 fix: use auth handler, avoid legacy calls for role/perm checks 2024-08-06 10:36:20 -05:00
Lance Edgar
bd1993f440 bump: version 0.15.0 → 0.15.1 2024-08-05 22:57:02 -05:00
Lance Edgar
91ea9021d7 fix: move magic b template context var to wuttaweb 2024-08-05 21:50:22 -05:00
Lance Edgar
2903b376b5 bump: version 0.14.5 → 0.15.0 2024-08-05 15:35:06 -05:00
Lance Edgar
9d2684046f feat: move more subscriber logic to wuttaweb 2024-08-05 15:00:11 -05:00
Lance Edgar
3b92bb3a9e fix: use wuttaweb logic for util.get_form_data() 2024-08-05 09:11:19 -05:00
Lance Edgar
5ec899cf08 bump: version 0.14.4 → 0.14.5 2024-08-03 17:43:46 -05:00
Lance Edgar
458c95696a fix: use auth handler instead of deprecated auth functions 2024-08-03 14:13:16 -05:00
Lance Edgar
08a89c490a fix: avoid duplicate partial param when grid reloads data 2024-07-21 20:20:43 -05:00
Lance Edgar
a9495b6a70 bump: version 0.14.3 → 0.14.4 2024-07-18 17:59:55 -05:00
Lance Edgar
1bba6d9947 fix: fix more settings persistence bug(s) for datasync/configure
esp. for the profile consumers info
2024-07-18 17:58:59 -05:00
Lance Edgar
f4f79f170a fix: fix modals for luigi tasks page, per oruga 2024-07-17 19:45:47 -05:00
Lance Edgar
9c466796da bump: version 0.14.2 → 0.14.3 2024-07-17 18:24:21 -05:00
Lance Edgar
e88b8fc9bc fix: fix auto-collapse title for viewing trainwreck txn 2024-07-16 21:21:43 -05:00
Lance Edgar
3aafe578f0 fix: allow auto-collapse of header when viewing trainwreck txn 2024-07-16 18:59:35 -05:00
Lance Edgar
af0f84762c bump: version 0.14.1 → 0.14.2 2024-07-15 21:52:05 -05:00
Lance Edgar
be6eb5f815 fix: add null menu handler, for use with API apps 2024-07-15 21:51:45 -05:00
Lance Edgar
57fdacdb83 bump: version 0.14.0 → 0.14.1 2024-07-14 23:29:35 -05:00
Lance Edgar
ece29d7b6c fix: update usage of auth handler, per rattail changes 2024-07-14 23:29:17 -05:00
Lance Edgar
5e1c0a5187 fix: fix model reference in menu handler 2024-07-14 12:41:08 -05:00
Lance Edgar
25e62fe6ef fix: fix bug when making "integration" menus
per recent refactor
2024-07-14 11:47:15 -05:00
Lance Edgar
d70bac74f0 bump: version 0.13.2 → 0.14.0 2024-07-14 11:12:32 -05:00
Lance Edgar
fd1ec01128 feat: move core menu logic to wuttaweb
tailbone still defines the default menus, and allows for making dynamic
menus from config (which wuttaweb does not).

also remove some even older logic for "v1" menu functions
2024-07-14 11:05:01 -05:00
Lance Edgar
0b4629ea29 bump: version 0.13.1 → 0.13.2 2024-07-13 15:28:59 -05:00
Lance Edgar
27214cc62f fix: fix logic bug for datasync/config settings save
dang it
2024-07-13 15:28:28 -05:00
Lance Edgar
d2d0206b45 build: run pytest but avoid tox when preparing release
buildbot can let us know if something goes wrong with an atypical
python version etc.
2024-07-13 15:16:45 -05:00
Lance Edgar
eede274529 bump: version 0.13.0 → 0.13.1 2024-07-13 15:15:51 -05:00
Lance Edgar
ee781ec489 fix: fix settings persistence bug(s) for datasync/configure page
also hide the Changes context menu link, within the Configure page
2024-07-13 15:14:04 -05:00
Lance Edgar
ca660f4087 bump: version 0.12.1 → 0.13.0 2024-07-12 09:38:12 -05:00
Lance Edgar
ce156d6278 feat: begin integrating WuttaWeb as upstream dependency
the bare minimum, just to get the relationship established.  mostly
it's calling upstream subscriber / event hooks where applicable.

this also overhauls the docs config to use furo theme etc.
2024-07-12 09:35:34 -05:00
Lance Edgar
e531f98079 fix: cast enum as list to satisfy deform widget
seems to only be an issue for deform 2.0.15+
2024-07-11 13:54:37 -05:00
Lance Edgar
09ce2d5a40 bump: version 0.12.0 → 0.12.1 2024-07-11 13:16:36 -05:00
Lance Edgar
ae8212069c fix: refactor config.get_model() => app.model
per rattail changes
2024-07-11 13:16:27 -05:00
Lance Edgar
4eb5866379 bump: version 0.11.10 → 0.12.0 2024-07-09 16:45:45 -05:00
Lance Edgar
a86a33445e feat: drop python 3.6 support, use pyproject.toml (again) 2024-07-09 16:45:36 -05:00
Lance Edgar
12f8b7bdf7 bump: version 0.11.9 → 0.11.10 2024-07-05 14:58:02 -05:00
Lance Edgar
2f2ebd0f07 fix: make the Members tab optional, for profile view
and hidden by default
2024-07-05 14:57:19 -05:00
Lance Edgar
2917463bb6 bump: version 0.11.8 → 0.11.9 2024-07-05 14:49:59 -05:00
Lance Edgar
16bf13787d fix: add optional Transactions tab for profile view
showing Trainwreck data by default
2024-07-05 14:45:35 -05:00
Lance Edgar
b7d26b6b8c fix: add xref button to customer profile, for trainwreck txn view 2024-07-05 14:30:52 -05:00
Lance Edgar
19e65f5bb9 fix: expand input for butterball theme 2024-07-05 13:07:08 -05:00
Lance Edgar
735327e46b fix: improve collapse panels for butterball theme 2024-07-05 12:53:14 -05:00
Lance Edgar
2988ff3ee9 fix: do not show flash message when changing app theme
it is just distracting esp. when testing different themes
2024-07-05 12:50:45 -05:00
Lance Edgar
431a4d7433 bump: version 0.11.7 → 0.11.8 2024-07-04 23:59:06 -05:00
Lance Edgar
58be7e9d5b fix: add tool to make user account from profile view 2024-07-04 21:32:46 -05:00
Lance Edgar
ddec77c37f fix: leverage import handler method to determine command/subcommand
just moved previous logic to rattail/handler
2024-07-04 20:35:14 -05:00
Lance Edgar
89d7009a18 fix: allow view supplements to add extra links for profile employee tab 2024-07-04 18:21:06 -05:00
Lance Edgar
793a15883e fix: fix grid action icons for datasync/configure, per oruga 2024-07-04 15:59:05 -05:00
Lance Edgar
76897c24de bump: version 0.11.6 → 0.11.7 2024-07-04 08:20:31 -05:00
Lance Edgar
5e11a2ecf6 fix: expand POD image URL setting input 2024-07-02 22:47:03 -05:00
Lance Edgar
e23193b730 fix: cast enum as list to satisfy deform widget
seems to only be an issue for deform 2.0.15+
2024-07-02 16:45:10 -05:00
Lance Edgar
9146cdc835 fix: allow view supplements to add to profile member context 2024-07-02 14:20:48 -05:00
Lance Edgar
1f38894f02 fix: include edit profile email/phone dialogs only if user has perms
otherwise we get JS errors when page loads
2024-07-02 14:14:15 -05:00
Lance Edgar
d72d6f8c7c fix: require zope.sqlalchemy >= 1.5
so we can do away with some old cruft, since latest zope.sqlalchemy is
3.1 from 2023-09-12
2024-07-02 11:14:03 -05:00
Lance Edgar
aab4dec27e fix: add stacklevel to deprecation warnings 2024-07-02 09:05:51 -05:00
Lance Edgar
db67630363 bump: version 0.11.5 → 0.11.6 2024-07-01 23:20:09 -05:00
Lance Edgar
c887412825 fix: fix syntax bug 2024-07-01 19:06:04 -05:00
Lance Edgar
2feb07e1d3 fix: remove references, dependency for six package 2024-07-01 17:01:01 -05:00
Lance Edgar
6f8b825b0b fix: set explicit referrer when changing dbkey
since for some reason HTTP_REFERER is not always set now??
2024-07-01 15:23:56 -05:00
Lance Edgar
cad50c9149 bump: version 0.11.4 → 0.11.5 2024-06-30 21:28:56 -05:00
Lance Edgar
d6939e52b4 fix: use vue 3.4.31 and oruga 0.8.12 by default
i.e. for butterball theme

cf. https://github.com/oruga-ui/oruga/issues/974#issuecomment-2198573369
2024-06-30 18:25:01 -05:00
Lance Edgar
3f7de5872e fix: add custom url prefix if needed, for fanstatic 2024-06-30 12:40:03 -05:00
Lance Edgar
1dc632174e fix: allow comma in numeric filter input
just remove them and run with the remainder, on the SQL side
2024-06-30 11:44:33 -05:00
Lance Edgar
eff5341335 bump: version 0.11.3 → 0.11.4 2024-06-30 10:49:54 -05:00
Lance Edgar
83e4d95741 fix: don't escape each address for email attempts grid
now that we are properly escaping the full cell value, no need
2024-06-30 10:32:05 -05:00
Lance Edgar
9b6447c4cb fix: require vendor when making new ordering batch via api
pretty sure this pattern needs to be expanded and probably improved,
but wanted to fix this one scenario for now, per error email
2024-06-28 17:58:27 -05:00
Lance Edgar
ec5ed490d9 fix: start/stop being root should submit POST instead of GET
obviously it's access-restricted anyway but this just seems more correct

but more importantly this makes the referrer explicit, since for some
unknown reason i am suddenly seeing that be blank for certain installs
where that wasn't the case before (?) - and the result was that every
time you start/stop being root you would be redirected to home page
instead of remaining on current page
2024-06-28 17:35:54 -05:00
Lance Edgar
d17bd35909 bump: version 0.11.2 → 0.11.3 2024-06-28 15:39:59 -05:00
Lance Edgar
3b7cc19faa fix: handle error when merging 2 records fails
should give the user some idea of the problem instead of just sending
error email to admins
2024-06-28 15:36:08 -05:00
Lance Edgar
067ca5bd43 fix: add link to "resolved by" user for pending products 2024-06-27 23:11:13 -05:00
Lance Edgar
525a28f3fe bump: version 0.11.1 → 0.11.2 2024-06-18 18:05:05 -05:00
Lance Edgar
a0cd8835e0 fix: show flash error message if resolve pending product fails 2024-06-18 16:12:24 -05:00
Lance Edgar
231ca0363a fix: product records should be touchable 2024-06-18 16:06:55 -05:00
Lance Edgar
88e7d86087 fix: use different logic for buefy/oruga for product lookup keydown
i could have swore the new logic worked with buefy..but today it didn't
2024-06-18 15:04:05 -05:00
Lance Edgar
0212e52b66 fix: hide certain custorder settings if not applicable 2024-06-14 19:59:52 -05:00
Lance Edgar
da4450b574 build: avoid version parse when uploading release 2024-06-14 18:02:39 -05:00
Lance Edgar
ab4dbbedf0 bump: version 0.11.0 → 0.11.1 2024-06-14 18:01:40 -05:00
Lance Edgar
6e741f6156 fix: revert back to setup.py + setup.cfg
apparently with python 3.6 things "mostly" work but then they break if
any specified dependencies have a dot in the name.  which in this
project, is the case for `zope.sqlalchemy`

so until we drop python 3.6 support, we cannot use pyproject.toml here
2024-06-14 17:57:01 -05:00
Lance Edgar
fb0c538a2b test: skip running tests for py36
we should soon require python 3.8 anyway
2024-06-10 17:42:29 -05:00
Lance Edgar
f9cb6cb59b bump: version 0.10.16 → 0.11.0 2024-06-10 16:40:55 -05:00
Lance Edgar
1402d437b5 feat: switch from setup.cfg to pyproject.toml + hatchling 2024-06-10 16:23:38 -05:00
Lance Edgar
dd58c640fa Update changelog 2024-06-10 11:11:06 -05:00
Lance Edgar
2c2727bf66 feat: standardize how app, package versions are determined 2024-06-10 09:14:20 -05:00
Lance Edgar
b8ace1eb98 fix: avoid deprecated config methods for app/node title 2024-06-09 23:07:52 -05:00
Lance Edgar
7c3d5b46f3 Update changelog 2024-06-07 10:25:48 -05:00
Lance Edgar
a849d8452b Update changelog 2024-06-07 10:25:14 -05:00
Lance Edgar
610e1666c0 Revert "Use pkg_resources to determine package versions"
This reverts commit f6f2a53a0c.
2024-06-07 10:07:31 -05:00
Lance Edgar
94d7836321 Ignore dist folder 2024-06-06 23:05:40 -05:00
Lance Edgar
0491d8517c Update changelog 2024-06-06 23:04:47 -05:00
Lance Edgar
f6f2a53a0c Use pkg_resources to determine package versions
and always add `app_version` to global template context.  this was for
sake of "About This App v1.0.0" style links in custom page footers
2024-06-06 20:34:31 -05:00
Lance Edgar
ce290f5f8b Update changelog 2024-06-06 15:30:48 -05:00
Lance Edgar
d9911cf23d Add 'fanstatic' support for sake of libcache assets
for vue.js and oruga etc.

we don't want to include files in tailbone since they are apt to
change over time, and probably need to use different versions for
different apps etc.

much may need to change yet, this is a first attempt but so far it
seems quite promising
2024-06-05 23:04:45 -05:00
Lance Edgar
1afc70e788 Remove old/unused scaffold for use with pcreate
we now have a better Generate Project feature
2024-06-04 22:11:51 -05:00
Lance Edgar
c189273471 Update changelog 2024-06-04 21:12:44 -05:00
Lance Edgar
22aceb4d67 Include butterball theme by default for new apps
but it is not "the" default yet..
2024-06-04 17:28:07 -05:00
Lance Edgar
da6ccf4425 Fix product lookup component, per butterball 2024-06-04 17:16:57 -05:00
Lance Edgar
d02bf0e5c7 Include extra styles from base_meta template for butterball 2024-06-04 17:15:42 -05:00
Lance Edgar
10aac388f0 Add <b-tooltip> component shim 2024-06-04 17:15:29 -05:00
Lance Edgar
00e2af1561 Set explicit referrer when changing app theme
to include url #hash value if there is one, so switching theme is more
seamless from the view profile page
2024-06-04 01:07:38 -05:00
Lance Edgar
6a7c06d26e Remove version cap for deform
see also commit 95dd8d83dc where i first
added the version cap; it mentions an error that i am not sure how to
reproduce.  so we'll see if there really is still an error..or if it
has since fixed itself
2024-06-03 23:16:00 -05:00
Lance Edgar
efe477d0db Require pyramid 2.x; remove 1.x-style auth policies 2024-06-03 23:13:25 -05:00
Lance Edgar
e17ef2edd8 Update changelog 2024-06-03 21:16:42 -05:00
Lance Edgar
30a8b8e5e4 Fix inventory worksheet generator, per butterball 2024-06-03 20:07:42 -05:00
Lance Edgar
2498da3909 Fix ordering worksheet generator, per butterball 2024-06-03 20:04:01 -05:00
Lance Edgar
2791e1c385 Fix grid bug for tempmon appliance view, per oruga 2024-06-03 19:51:16 -05:00
Lance Edgar
0303014acb Fix vue3 refresh for employee tab of profile view
and misc. related cleanup
2024-06-03 17:37:11 -05:00
Lance Edgar
9243edf7af Fix vue3 refresh for name, address cards in profile view 2024-06-03 16:51:29 -05:00
Lance Edgar
ab523719a6 Update changelog 2024-06-03 11:16:33 -05:00
Lance Edgar
b27987f1d1 More butterball fixes for "view profile" template 2024-06-03 11:15:22 -05:00
Lance Edgar
30238528fe Fix focus for <b-select> shim component 2024-06-03 10:48:59 -05:00
Lance Edgar
29c9ea1a2b Update changelog 2024-06-03 10:28:42 -05:00
Lance Edgar
58f9588261 Fix the "new custorder" page for butterball
reasonably confident this one is complete, and didn't break buefy theme..
2024-06-02 19:56:42 -05:00
Lance Edgar
3dc8deef67 Fix panel style for PO vs. Invoice breakdown in receiving batch 2024-06-02 15:58:10 -05:00
Lance Edgar
fa25857680 Let master view control context menu items for page
that really does not belong in the template if we can help it.  some
templates still define context menu items but can hopefully phase
those out over time
2024-06-02 15:54:42 -05:00
Lance Edgar
254df6d6f2 Update changelog 2024-06-02 14:55:18 -05:00
Lance Edgar
40edde2694 Use oruga 0.8.9 by default 2024-06-01 23:06:19 -05:00
Lance Edgar
9258237b85 Allow per-user custom styles for butterball 2024-06-01 21:37:38 -05:00
Lance Edgar
1bf28eb286 Fix product view template for oruga/butterball 2024-06-01 19:07:07 -05:00
Lance Edgar
77eeb63b62 Add styling for checked grid rows, per oruga/butterball 2024-06-01 17:46:35 -05:00
Lance Edgar
43db60bbee Update changelog 2024-06-01 14:26:17 -05:00
Lance Edgar
6b1c313efd Fix file upload widget for oruga 2024-06-01 14:23:35 -05:00
Lance Edgar
d05458c7fb Add speedbumps for delete, set preferred email/phone in profile view 2024-06-01 13:40:50 -05:00
Lance Edgar
b87b1a3801 Escape all unsafe html for grid data 2024-05-31 21:20:45 -05:00
Lance Edgar
ba519334d1 Fix overflow when instance header title is too long 2024-05-31 18:01:56 -05:00
Lance Edgar
3ac131cb51 Add column filters for import/export main grid 2024-05-31 14:51:01 -05:00
Lance Edgar
9b88f01378 Log error if registry has no rattail config
not clear if this is even possible, but if so i want to know about it

trying to figure out the occasional error email we get, latest being
from collectd/curl pinging the /login page, but request.has_perm()
call fails with missing attr?!

seems like either the rattail config is empty, or else the subscriber
events aren't firing (in the correct order) ?
2024-05-31 12:06:31 -05:00
Lance Edgar
49cd050272 Add setting to allow decimal quantities for receiving 2024-05-31 10:57:28 -05:00
Lance Edgar
0d8928bdf5 Update changelog 2024-05-29 22:15:39 -05:00
Lance Edgar
54b75dbe1a Fix basic problems with people profile view, per butterball
plenty more tweaks needed yet i'm sure, but page looks reasonable now
at least
2024-05-29 20:47:10 -05:00
Lance Edgar
b98d651144 Expose quickie lookup for butterball theme 2024-05-29 16:55:42 -05:00
Lance Edgar
9a841ba5e2 Expose db picker for butterball theme 2024-05-29 16:33:30 -05:00
Lance Edgar
4ccdf99a43 Add way to flag organic products within lookup dialog 2024-05-29 15:47:04 -05:00
Lance Edgar
f8ab8d462c Update changelog 2024-05-29 09:40:50 -05:00
Lance Edgar
fb9bc01939 Add <tailbone-timepicker> component for oruga 2024-05-14 12:17:50 -05:00
Lance Edgar
ec61444b3d Update changelog 2024-05-12 17:41:09 -05:00
Lance Edgar
66304a418e Fix styles for grid actions, per butterball 2024-05-10 15:50:33 -05:00
Lance Edgar
6bb6c16bc7 Update changelogo 2024-05-10 15:00:21 -05:00
Lance Edgar
c43deb1307 Fix bug with grid date filters 2024-05-08 20:50:54 -05:00
Lance Edgar
b65b514270 Update changelog 2024-05-08 11:17:58 -05:00
Lance Edgar
9b65e18261 Tweak styles for grid action links, per butterball 2024-05-08 11:16:16 -05:00
Lance Edgar
b40423fc2d Fix "view receiving row" page, per oruga
all the buttons and tools *should* work correctly for Vue 2 and 3 now
2024-05-07 20:44:26 -05:00
Lance Edgar
28fb3f44a7 More data type fixes for <tailbone-datepicker>
traditionally the caller has always dealt with string values only, so
the component should never emit events with date values, etc.
2024-05-07 18:20:26 -05:00
Lance Edgar
d607ab2981 Fix display for "view receiving row" page, per oruga
this page still needs help; "Account for Product" is broken for oruga
2024-05-07 12:43:07 -05:00
Lance Edgar
9cd648f78f Fix button text for autocomplete
whoops i think that was a debug thing i forgot to remove
2024-05-07 11:57:00 -05:00
Lance Edgar
703d583f6f Fix "tools" helper for receiving batch view, per oruga 2024-05-07 11:56:57 -05:00
Lance Edgar
f0d694cfe5 Rename some attrs etc. for buefy components used with oruga 2024-05-06 22:56:47 -05:00
Lance Edgar
3d319cbd09 Fix login "enter" key behavior, per oruga 2024-05-06 22:13:43 -05:00
Lance Edgar
e4c4259674 Remove version restriction for pyramid_beaker dependency
latest version is 0.9, so this wasn't all that relevant
2024-05-06 21:53:11 -05:00
Lance Edgar
15fedf5976 Fix employees grid when viewing department (per oruga) 2024-05-06 21:52:53 -05:00
Lance Edgar
68384a00dc Update changelog 2024-04-28 20:25:55 -05:00
Lance Edgar
e9ddd6dc36 Stop including 'falafel' as available theme 2024-04-28 20:21:20 -05:00
Lance Edgar
6ce65badeb Show "View This" button when cloning a record 2024-04-28 20:12:49 -05:00
Lance Edgar
9ee6521d6a Fix upgrade execution logic/UI per oruga 2024-04-28 20:12:06 -05:00
Lance Edgar
72f48fa963 Fix vertical alignment in main menu bar, for butterball 2024-04-28 19:30:35 -05:00
Lance Edgar
b3784dcc4a Update various icon names for oruga compatibility 2024-04-28 18:49:11 -05:00
Lance Edgar
34878f9293 Sort list of available themes
and add `computed` attr for WholePage; needed by some customizations
2024-04-28 18:37:00 -05:00
Lance Edgar
adaa39f572 Update changelog 2024-04-28 17:33:06 -05:00
Lance Edgar
1d5a0630ef Change default URL for some vue3+oruga libs
apparently the first ones were not ideal / optimized, but these are
2024-04-28 16:16:38 -05:00
Lance Edgar
855fa7e1e2 Fix centering for "Show Totals" grid tool 2024-04-28 02:41:45 -05:00
Lance Edgar
f2f023e7b3 Fix v-model handling for grid-filter-numeric-value 2024-04-28 02:39:40 -05:00
Lance Edgar
33251e880e Fix oruga styles for batch view
also use typical panels, for row status breakdown etc.
2024-04-28 01:58:19 -05:00
Lance Edgar
358816d9e7 Add oruga overhead for "classic" app only, not API 2024-04-28 00:51:07 -05:00
Lance Edgar
362d545f34 Fix modal state for appinfo/configure page 2024-04-28 00:25:03 -05:00
Lance Edgar
fb81a8302c Use oruga 0.8.7 by default instead of latest 0.8.8
until the new bug is fixed, https://github.com/oruga-ui/oruga/issues/913
2024-04-28 00:20:43 -05:00
Lance Edgar
e7a44d9979 Let caller use string data for <tailbone-datepicker>
don't require a Date object, since callers thus far have not expected that
2024-04-27 21:54:55 -05:00
Lance Edgar
2eaeb1891d Add initial support for Vue 3 + Oruga, via "butterball" theme
just a savepoint, still have lots to do and test before this really works
2024-04-27 21:06:20 -05:00
Lance Edgar
5aa8d1f9a3 Use buefy table for "find principal by perm" results
this should work for oruga as well
2024-04-27 19:17:30 -05:00
Lance Edgar
098ed5b1cf Improve keydown handling for grid Add Filter autocomplete
should work the same, but this way also works with oruga
2024-04-27 19:17:30 -05:00
Lance Edgar
890ec64f3c Misc. template cleanup per oruga effort 2024-04-27 19:17:27 -05:00
Lance Edgar
ba32422059 Fix bug when saving user preferences theme
it was being saved even when it should have been empty value
2024-04-25 23:56:21 -05:00
Lance Edgar
8b3a9c9dad Use simple field labels when possible
only use template if it must include icons etc.
2024-04-25 22:49:37 -05:00
Lance Edgar
2a22e8939c Add index title to Change Password page 2024-04-25 22:17:59 -05:00
Lance Edgar
6bee65780c Improve logic for Add Filter grid button/autocomplete
this should work for oruga as well as buefy
2024-04-25 22:00:01 -05:00
Lance Edgar
e030dc841d Expand some modal fields, per oruga styles 2024-04-25 21:31:26 -05:00
Lance Edgar
25a27af29c Use explicit flex styles instead of "level" for grid filters etc.
just to be more precise, and consistent
2024-04-25 20:45:03 -05:00
Lance Edgar
daf68cad01 Fix data type handling for datepicker and grid filter components
here is what's up now:

- <b-datepicker> expects v-model to be a Date
- <tailbone-datepicker> also expects a Date
- <grid-filter-date-value> uses String for its v-model

latter is so the value can represent a date range, e.g. 'YYYY-MM-DD|YYYY-MM-DD'

anyway there was previously confusion about data type among these
components, and hopefully they are straight now per the above outline
2024-04-25 18:52:34 -05:00
Lance Edgar
ab57fb3f0f Tweak flex styles for grid filters 2024-04-25 18:16:39 -05:00
Lance Edgar
f43259fbc1 Use proper flex styles for grid pagination footer 2024-04-25 16:04:30 -05:00
Lance Edgar
bfe6b5bc25 Use explicit flex styles for grid-tools element
and so, must ensure children of grid-tools are atomic elements
2024-04-25 15:41:06 -05:00
Lance Edgar
23e6eef604 Update changelog 2024-04-25 14:05:10 -05:00
Lance Edgar
d2aa91502a Allow deleting rows from executed batches
requires a view to explicitly opt-in.  and a separate permission is
required for the user
2024-04-25 14:02:45 -05:00
Lance Edgar
4f6ee1fb22 Use v-model to track selection etc. for download results fields 2024-04-24 22:10:56 -05:00
Lance Edgar
ddafa9ed97 Tweak icon for Download Results button
make it more portable for oruga
2024-04-24 20:19:15 -05:00
Lance Edgar
0ca3b31b2e Use normal button for grid filters
since that's more portable (for oruga) than "checkbox button"
2024-04-24 18:20:16 -05:00
Lance Edgar
9f984241c4 Cleanup grid/filters logic a bit
get rid of grids.js file, remove filter templates from complete.mako

move all that instead to filter-components.mako

for now, base template does import + setup for the latter, "just in
case" a given view has any grids.  each grid should (still) be
isolated but no code should be duplicated now.  whereas before the
grid filter templates were in comlete.mako and hence could be declared
more than once if multiple grids are on a page
2024-04-24 17:43:22 -05:00
Lance Edgar
d6fa83cd87 Fix permission checks for root user with pyramid 2.x 2024-04-19 22:27:30 -05:00
Lance Edgar
8781e34c98 Rename setting for custom user css (remove "buefy")
but have to keep support for older setting name for now
2024-04-19 21:18:57 -05:00
Lance Edgar
49da9776e7 Remove unused test fixtures 2024-04-19 20:25:07 -05:00
Lance Edgar
36b9e00dc9 Remove unused code for webhelpers2_grid 2024-04-19 20:15:44 -05:00
Lance Edgar
5cb643a32a Update changelog 2024-04-19 19:47:41 -05:00
Lance Edgar
1fa6e35663 Remove config "style" from appinfo page
there is only one style now (finally)
2024-04-19 17:45:58 -05:00
Lance Edgar
e82f0f37d8 Fix raw query to avoid SQLAlchemy 2.x warnings 2024-04-16 23:29:56 -05:00
Lance Edgar
7fa39d42e2 Fix ASGI websockets when serving on sub-path under site root 2024-04-16 23:27:50 -05:00
Lance Edgar
a95cc2b9e8 Update changelog 2024-04-16 21:14:23 -05:00
Lance Edgar
e7b8b6e818 Fix master template bug when no form in context 2024-04-16 21:13:53 -05:00
Lance Edgar
5a7deadba2 Update changelog 2024-04-16 20:11:15 -05:00
Lance Edgar
9065f42195 Fix typo when getting app instance 2024-04-16 20:10:10 -05:00
Lance Edgar
b37981e83f Prevent multi-click for grid filters "Save Defaults" button 2024-04-16 20:09:39 -05:00
Lance Edgar
0d9c5a078b Improve form support for view supplements
this seems a bit hacky yet but works for now..

cf. field logic for Vendor -> Quickbooks Bank Accounts, which requires this
2024-04-16 18:21:59 -05:00
Lance Edgar
c35c0f8b61 Update changelog 2024-04-16 10:44:33 -05:00
Lance Edgar
8b4b3de336 Add support for Pyramid 2.x; new security policy
custom apps are still free to use pyramid 1.x

new security policy is only used if config file says so
2024-04-16 09:48:29 -05:00
Lance Edgar
85d62a8e38 Reminder to improve css hack for datepicker in modal 2024-04-15 13:31:42 -05:00
Lance Edgar
52c8f3e12c Rename custom user_css context
and stop checking an older deprecated setting
2024-04-15 13:31:35 -05:00
Lance Edgar
d0d568b3a5 Escape underscore char for "contains" query filter
since underscore has special meaning for LIKE clause
2024-04-15 12:44:46 -05:00
Lance Edgar
666c16b74e Fix default dist filename for release task
not sure why this fix was needed, did setuptools behavior change?
2024-04-15 10:58:16 -05:00
Lance Edgar
2f115c0717 Update changelog 2024-04-15 10:56:49 -05:00
Lance Edgar
d4089fbc6e Some more tweaks to remove "buefy" references
mostly just docstring / comments but there were some code changes too
2024-04-14 20:56:11 -05:00
Lance Edgar
ba521abf4f Remove some references to "buefy" name within docstrings, comments 2024-04-14 20:30:52 -05:00
Lance Edgar
c036932ce4 Remove several references to "buefy" name
class methods, template filenames, etc.

also made various edits per newer conventions
2024-04-14 19:54:29 -05:00
Lance Edgar
96ba039299 Rename grids/complete template (avoid buefy name)
and rename grid methods accordingly
2024-04-13 10:13:51 -05:00
Lance Edgar
1103b09a76 Rename forms/deform template (drop buefy suffix)
for now, deprecate `form.render()` method and just use
`render_deform()` - but probably should change that to something
else eventually..?
2024-04-13 09:45:10 -05:00
Lance Edgar
cd7c1bba21 Rename template for grid filters (drop buefy suffix)
also remove some deprecated functions
2024-04-13 09:21:48 -05:00
Lance Edgar
1973614840 Rename people "view_profile" template (drop buefy suffix) 2024-04-13 09:09:23 -05:00
Lance Edgar
cbbd77c49c Show toast msg instead of silent error, when grid fetch fails
specifically, if a user clicks "Save defaults" for the grid filters,
but they aren't currently logged in, error will ensue.

this is a bit of an edge case which IIUC would require multiple tabs
etc. but still is worth avoiding an error email from it.
2024-04-11 16:58:12 -05:00
Lance Edgar
aa500351ed Avoid error for tax field when creating new department
someday should fix that for real..
2024-04-11 16:37:55 -05:00
Lance Edgar
de8751b86c Try to return JSON error when receiving API call fails
although in my testing, the error still got raised somehow in the
tweens or something?  client then sees it as a 500 response and gets
no JSON
2024-04-11 14:14:27 -05:00
Lance Edgar
a1b05540be Avoid uncaught error when updating order batch row quantities 2024-04-10 12:24:13 -05:00
Lance Edgar
e0dc858451 Update changelog 2024-04-01 18:28:39 -05:00
Lance Edgar
1889f7d269 Add basic CRUD for Person "preferred first name"
only shown if config flag says so
2024-04-01 18:26:18 -05:00
Lance Edgar
cdc857065b Update changelog 2024-03-27 13:14:23 -05:00
Lance Edgar
dfdb7a9b59 Fix bulk-delete rows for import/export batch
per changes in SQLAlchemy 1.4
2024-03-27 13:13:33 -05:00
Lance Edgar
4363b7c5d7 Update changelog 2024-03-26 12:53:20 -05:00
Lance Edgar
27fce173ce Fix how row grid values are fetched, for row proxy objects
per changes coming in SQLAlchemy 2.0
2024-03-26 11:48:52 -05:00
Lance Edgar
0b7d2f5aed Fix how metadata/bind is used for importer batch table
per changes coming in SQLAlchemy 2.0
2024-03-26 11:47:37 -05:00
Lance Edgar
25c48a97c5 Update changelog 2023-12-26 20:17:05 -06:00
Lance Edgar
a40add8f41 Expose default custorder discount for Departments 2023-12-22 11:50:05 -06:00
Lance Edgar
3bdc7175a3 Use common logic to render invoice total for receiving
and avoid error if total is none
2023-12-20 11:56:24 -06:00
Lance Edgar
90e35ee3db Hide single invoice file field for multi-invoice receiving batch 2023-12-19 12:49:33 -06:00
Lance Edgar
90630fe852 Auto-disable submit button for login form
not sure why i had explicitly disabled that before..?
2023-12-13 12:05:54 -06:00
Lance Edgar
b6618c8ee5 Update changelog 2023-12-12 11:46:28 -06:00
Lance Edgar
98fc82acfd Use ltrim(rtrim()) instead of just trim() in grid filters
apparently this is needed for older SQL Server compatibility, per
https://stackoverflow.com/questions/54340470/trim-is-not-a-recognized-built-in-function-name
2023-12-11 13:50:02 -06:00
Lance Edgar
91e7001963 Overhaul tox config for more python versions 2023-12-04 10:15:12 -06:00
Lance Edgar
d154986128 Update changelog 2023-12-01 21:57:20 -06:00
Lance Edgar
3e4bbf7092 Use clientele handler to populate customer dropdown widget 2023-12-01 19:50:07 -06:00
Lance Edgar
faeb2cb7e2 Update changelog 2023-11-30 18:25:01 -06:00
Lance Edgar
35131c8732 Provide a way to show enum display text for some version diff fields
master view must explicitly declare which enums for which fields
2023-11-30 18:23:47 -06:00
Lance Edgar
2a9d5f74ce Update changelog 2023-11-30 15:17:01 -06:00
Lance Edgar
f4cb1cb097 Avoid error when editing a department
just a temp hack, need to fix proper yet
2023-11-29 15:03:08 -06:00
Lance Edgar
e23998a88b Update changelog 2023-11-19 22:24:15 -06:00
Lance Edgar
e39581695f Fix DB picker, theme picker per Buefy conventions 2023-11-17 17:00:50 -06:00
Lance Edgar
dd9e41f651 Update changelog 2023-11-15 11:42:07 -06:00
Lance Edgar
97e7026cc9 Avoid outright error if user scans barcode for inventory count 2023-11-15 09:46:23 -06:00
Lance Edgar
853cc871f7 Remove reference to pytz library 2023-11-11 21:26:11 -06:00
Lance Edgar
fc96fb40fb Log warning instead of error for batch population error
this is most typically caused by bad user input; a warning is shown on
screen so they hopefully can guess what the problem is.  no need to
loop in the admins via email
2023-11-05 18:31:43 -06:00
Lance Edgar
172fe6c49c Update changelog 2023-11-05 17:10:32 -06:00
Lance Edgar
9fa592c5d6 Expose status code for equity payments 2023-11-05 16:57:14 -06:00
Lance Edgar
bbffe1dc82 Update changelog 2023-11-01 20:54:39 -05:00
Lance Edgar
55a115e57a Add button to confirm all costs for receiving 2023-11-01 20:53:11 -05:00
Lance Edgar
7ab3d2b635 Update changelog 2023-11-01 19:45:35 -05:00
Lance Edgar
51d7c10bc5 Fix config key for default themes list 2023-11-01 19:44:44 -05:00
Lance Edgar
b13fc99e95 Use shared logic to get batch handler 2023-11-01 19:43:46 -05:00
Lance Edgar
b231c194a4 Update changelog 2023-11-01 17:48:28 -05:00
Lance Edgar
b5da5a46de Avoid error when rendering version diff
can't always assume relationship entities are versioned
2023-11-01 17:47:07 -05:00
Lance Edgar
8522123cd3 Encode values for "between" query filter 2023-11-01 14:54:30 -05:00
Lance Edgar
bae6bc2133 Update changelog 2023-11-01 09:20:26 -05:00
Lance Edgar
2f70ce2d5c Fix missing import 2023-11-01 09:20:03 -05:00
Lance Edgar
7ac505f1f4 Update changelog 2023-11-01 08:14:09 -05:00
Lance Edgar
f47e45a928 Add deprecation warnings for ambgiguous config keys 2023-11-01 08:13:36 -05:00
Lance Edgar
a9ab59eb92 Update changelog 2023-10-30 01:06:41 -05:00
Lance Edgar
a0075f6f78 Log warning / avoid error if email profile can't be normalized
e.g. if some import error happens
2023-10-29 22:22:16 -05:00
Lance Edgar
8b07289452 Update changelog 2023-10-29 15:59:17 -05:00
Lance Edgar
c1f2f84c7f Remove unused "simple menus" module approach
now we always use a handler instead
2023-10-29 15:46:18 -05:00
Lance Edgar
da13254caa Tweak param docs for Form.set_validator() 2023-10-29 15:10:56 -05:00
Lance Edgar
fe4a178d43 Add way to "ignore" a pending product
and some related tweaks for sake of grid
2023-10-26 20:43:12 -05:00
Lance Edgar
1fc17658ff Update changelog 2023-10-26 18:44:38 -05:00
Lance Edgar
a5c1cba81b Use product lookup component for "resolve pending product" tool 2023-10-26 10:06:00 -05:00
Lance Edgar
4809cf039e Update changelog 2023-10-25 20:22:48 -05:00
Lance Edgar
a812181466 Expand the "product lookup" component to include autocomplete 2023-10-25 20:10:21 -05:00
Lance Edgar
441a6e5e0c Add separate perm for making new custorder for unknown product 2023-10-25 14:06:40 -05:00
Lance Edgar
b5c68831b5 Do not show profile buttons for inactive customer shoppers 2023-10-25 12:20:04 -05:00
Lance Edgar
cf1ef23996 Add column_only kwarg for Grid.set_label() method
pass True to affect only the column label and not the filter
2023-10-25 11:40:52 -05:00
Lance Edgar
70cc754f3e Use <b-select> for theme picker
instead of webhelpers2.html.tags.select() which seems to break for me
in dev now with python 3.10
2023-10-25 10:45:33 -05:00
Lance Edgar
72dda3771e Add price confirm prompt when adding unknown item to custorder
optional, per config
2023-10-24 19:51:27 -05:00
Lance Edgar
4247804707 Allow pending product fields to be required, for new custorder 2023-10-24 19:17:36 -05:00
Lance Edgar
e308108bf7 Show user warning if "add item to custorder" fails
specifically, if user enters alpha chars for cost/price fields
2023-10-24 17:48:08 -05:00
Lance Edgar
f708cb0b25 Fix bug when editing vendor 2023-10-24 17:44:02 -05:00
Lance Edgar
1f3877b7cb Update changelog 2023-10-24 09:54:31 -05:00
Lance Edgar
72e4daafc1 Fix config file priority for display, and batch subprocess commands 2023-10-24 09:53:40 -05:00
Lance Edgar
549976dcfb Update changelog 2023-10-24 09:27:12 -05:00
Lance Edgar
756b4b9d18 No need to configure logging
since the rattail config object will do that when first made
2023-10-23 20:35:43 -05:00
Lance Edgar
f70772fabc Allow override of version diff for master views
and misc. other tweaks
2023-10-23 15:48:48 -05:00
Lance Edgar
ec8a8d5ddc Update changelog 2023-10-23 13:06:38 -05:00
Lance Edgar
6d79766b24 Stop using sa-filters for basic grid sorting
this just breaks if we need to use "aliased" models e.g. when sorting
and/or filtering by Product "regular price" column and similar.  so
now sorting more like we always used to, except for multi-column.

nb. this still assumes callers use `Grid.make_sorter()` when declaring
the sorters.  if caller must specify more custom/explicit sort logic
then it likely will not work and we'll have to add a workaround to
allow avoiding the common logic..but that's another day
2023-10-21 16:10:36 -05:00
Lance Edgar
421266e70c Show more customer attrs for POS batch 2023-10-20 14:29:45 -05:00
Lance Edgar
d87de1dc4f Expose permission for POS batch, toggle training mode 2023-10-19 20:48:52 -05:00
Lance Edgar
dc99828b66 Show food stamp tender info for POS batch 2023-10-19 19:12:28 -05:00
Lance Edgar
5e8ea67773 Include invoice number for receiving batch row API 2023-10-19 14:57:06 -05:00
Lance Edgar
0d30247353 Add validtion to prevent duplicate files for multi-invoice receiving
by comparing sha256 hash values for each file
2023-10-19 14:03:25 -05:00
Lance Edgar
aaf6f05820 Remove sorter for "Credits?" column in purchasing batch row grid
too convoluted, and broken per recent sort overhaul
2023-10-19 13:02:17 -05:00
Lance Edgar
954a2b78be Expose new price fields for POS batch row 2023-10-18 21:25:32 -05:00
Lance Edgar
230a54cb99 Fix default grid filter when "local" date times are involved 2023-10-18 21:25:13 -05:00
Lance Edgar
13565d1c45 Avoid "None" when rendering product UOM field 2023-10-18 21:24:37 -05:00
Lance Edgar
919d8d109f Use Grid.make_sorter() instead of legacy code
b/c multi-column sorting relies on this
2023-10-18 18:18:55 -05:00
Lance Edgar
659f5a8fe1 Replace dropdowns with autocomplete, for "find principals by perm" 2023-10-18 17:35:14 -05:00
Lance Edgar
f86cc83996 Fix order xlsx download if missing order date 2023-10-17 15:26:22 -05:00
Lance Edgar
7525aaaa87 Expose more permissions for POS 2023-10-12 16:31:44 -05:00
Lance Edgar
115e95b9a8 Update changelog 2023-10-12 10:37:12 -05:00
Lance Edgar
5940778189 Fix version child classes for Customers view
must be sure to include any supplements
2023-10-12 10:33:56 -05:00
Lance Edgar
1a15d70568 Add some awareness of suspend/resume for POS batch 2023-10-11 23:11:23 -05:00
Lance Edgar
d66dd5f199 Add permission for testing error handling at POS 2023-10-11 19:55:51 -05:00
Lance Edgar
507a9ffc71 Expose department tax, FS flag 2023-10-11 18:35:35 -05:00
Lance Edgar
cd82f8927b Fix grid sorting when column key/name differ 2023-10-11 16:13:20 -05:00
Lance Edgar
cddec51582 Update changelog 2023-10-11 15:56:16 -05:00
Lance Edgar
78deb5d09a Use autocomplete instead of dropdown for grid "add filter" 2023-10-10 22:10:01 -05:00
Lance Edgar
4328b9e385 Show full version history within the "view" page
avoid full page loads when navigating version history
2023-10-10 11:02:02 -05:00
Lance Edgar
44112a3a4b Allow null for FalafelDateTime form fields 2023-10-09 15:50:41 -05:00
Lance Edgar
9efe767654 Add smarts to show display text for some version diff fields
e.g. show `str(customer)` along with `customer_uuid` since almost
nobody will "care" about the uuid so much, they just want the name
2023-10-09 00:19:29 -05:00
Lance Edgar
edb5393cdc Add front-end support for multi-column grid sorting
user must ctrl-click column header to engage multi-sort
2023-10-08 16:38:24 -05:00
Lance Edgar
6d7754cf2a Add back-end support for multi-column grid sorting
or very nearly, anyway.  front-end still just supports 1 column yet
2023-10-08 14:29:01 -05:00
Lance Edgar
4beca7af20 Make grid JS loadAsyncData() method truly async
not sure what this does but it seems to work, we'll see
2023-10-07 20:13:41 -05:00
Lance Edgar
a201072a9d Update changelog 2023-10-07 18:57:03 -05:00
Lance Edgar
07b1d0841e Improve views for taxes, esp. in POS batches 2023-10-07 16:26:33 -05:00
Lance Edgar
eccb855d09 Expose tender ref in POS batch rows; new tender flags 2023-10-06 20:34:14 -05:00
Lance Edgar
2f4877a264 Add "mark complete" button for inventory batch row entry page 2023-10-06 15:53:17 -05:00
Lance Edgar
d84b98041f Avoid deprecated logic for fetching vendor contact email/phone 2023-10-06 15:03:17 -05:00
Lance Edgar
2ae2cdc4bd Update changelog 2023-10-06 10:13:18 -05:00
Lance Edgar
d1d781966f Fix bug for param helptext in New Report page 2023-10-06 10:12:38 -05:00
Lance Edgar
53cf771c81 Update changelog 2023-10-06 10:00:37 -05:00
Lance Edgar
d45ee34b0c Expose permissions for POS, if so configured 2023-10-06 09:16:25 -05:00
Lance Edgar
e1a64de205 Fix bug in POS batch view 2023-10-05 19:59:57 -05:00
Lance Edgar
b30f6cdf3a Fix CRUD pages for tempmon clients, probes
for some reason if helptext had embedded newlines, it would now fail
to render the form altogether.  guess that is a result of recent
change to e.g. `<b-field :message="['foo', 'bar']">` logic,
somehow.. anyway hopefully this fixes and no more surprises
2023-10-05 13:11:05 -05:00
Lance Edgar
3dfab8e42d Update changelog 2023-10-04 13:56:22 -05:00
Lance Edgar
7bae01f03c Improve master view oneoff_import() method
be more flexible about what caller must provide
2023-10-04 13:07:26 -05:00
Lance Edgar
f3dddf0e40 Avoid deprecated pretty_hours() function 2023-10-04 11:56:50 -05:00
Lance Edgar
0b7791070f Update changelog 2023-10-04 10:59:54 -05:00
Lance Edgar
4125be7e8d Re-work FalafelDateTime logic a bit
need to be more "standard" in how (de)serialize works etc.

also be sure to show error messages if present, not just field helptext
2023-10-02 09:54:34 -05:00
Lance Edgar
746e13d134 Expose cash-back flags for tenders 2023-10-01 18:54:56 -05:00
Lance Edgar
b7ccc6ea07 Use enum to display POS_ROW_TYPE 2023-10-01 17:31:33 -05:00
Lance Edgar
a6bc3fb793 Update changelog 2023-10-01 12:09:32 -05:00
Lance Edgar
9f7e70f240 Add support for void rows in POS batch 2023-09-30 21:08:01 -05:00
Lance Edgar
0ee6725188 Tidy up logic for vendor filtering in products grid
was hoping to "fix" count issue but alas..

refs #23
2023-09-28 10:56:15 -05:00
Lance Edgar
f572757f00 Expose views for tenders, more columns for POS batch/rows 2023-09-27 17:13:49 -05:00
Lance Edgar
abcf1e1895 Add clone support for POS batches
just for testing of course..
2023-09-26 17:52:17 -05:00
Lance Edgar
a9e9474f5c Do not allow executing custorder if no customer is set
or really any reason, as defined by handler
2023-09-26 09:32:57 -05:00
Lance Edgar
a11be5a1e1 Update changelog 2023-09-25 19:41:59 -05:00
Lance Edgar
e23b2f8711 Add custom form type/widget for time fields
ugh this still isn't that great, but making progress overall
2023-09-25 19:22:02 -05:00
Lance Edgar
032d37194f Update changelog 2023-09-25 18:06:16 -05:00
Lance Edgar
3e56950872 Expose POS batch views as "typical" 2023-09-24 19:30:59 -05:00
Lance Edgar
5a2612acab Update changelog 2023-09-24 14:47:54 -05:00
Lance Edgar
bda05aed86 Use header button instead of link for "touch" instance 2023-09-24 08:37:50 -05:00
Lance Edgar
91ac1a9031 Show customer for POS batches 2023-09-23 20:08:40 -05:00
Lance Edgar
53e8c15267 Add basic views for POS batches 2023-09-23 11:14:43 -05:00
Lance Edgar
d329b2945c Show "true" (calculated) equity total in members grid
pretty sure will need to tweak this but wanted something in place at least
2023-09-21 14:39:18 -05:00
Lance Edgar
abca0115a6 Add remove_sorter() method for grids 2023-09-21 14:37:33 -05:00
Lance Edgar
3d6cc8a490 Show yesterday by default for Trainwreck if so configured 2023-09-20 18:13:52 -05:00
Lance Edgar
836fc0bf5b Update changelog 2023-09-19 16:37:05 -05:00
Lance Edgar
510b8383a4 Show catalog/invoice costs as 2-decimal currency in receiving 2023-09-19 15:03:16 -05:00
Lance Edgar
8b15f1304f Use small text input for receiving cost editor fields 2023-09-19 14:45:48 -05:00
Lance Edgar
6274e33a8c Prevent catalog/invoice cost edits if receiving batch is complete 2023-09-19 14:41:15 -05:00
Lance Edgar
1f97d4f5e5 Add link to vendor name for receiving batches grid 2023-09-19 14:40:58 -05:00
Lance Edgar
b566549d15 Update changelog 2023-09-18 18:40:51 -05:00
Lance Edgar
4d8c8b199c Fix bug for new receiving from scratch via API 2023-09-18 18:37:41 -05:00
Lance Edgar
d1d69e9488 Show user warning if receive quick lookup fails
just b/c a UPC doesn't exist yet doesn't prevent the batch from (in
some cases) adding a row for "unknown product" - but if the UPC is
sufficiently invalid, that can't happen
2023-09-18 18:28:11 -05:00
Lance Edgar
a01fd62899 Update changelog 2023-09-17 21:21:10 -05:00
Lance Edgar
70956a2c47 Tweaks to improve handling of "missing" items for receiving 2023-09-17 18:30:38 -05:00
Lance Edgar
e894d1d1f4 Include PO number for receiving batch details via API 2023-09-17 18:03:30 -05:00
Lance Edgar
cc7b9ccb86 Avoid error when history has blanks for ordering worksheet 2023-09-17 17:23:59 -05:00
Lance Edgar
a807a0f50c Add "falafel" custom date/time field type and widget
finally able to edit datetime fields, but feels like a lot of
assumptions to make, just to determine time zone..so keeping naive UTC
on the backend still, and naive local on the frontend

in general this needs more polish, but is a start..
2023-09-16 20:01:32 -05:00
Lance Edgar
99065548ff Update changelog 2023-09-16 13:06:54 -05:00
Lance Edgar
df897aef13 Make member key field readonly when viewing equity payment 2023-09-16 13:06:26 -05:00
Lance Edgar
1cfc275eae Update changelog 2023-09-15 19:30:27 -05:00
Lance Edgar
3968e40a0b Add basic feature for "grid totals" 2023-09-15 19:19:20 -05:00
Lance Edgar
ac6106ca69 Update changelog 2023-09-15 10:34:25 -05:00
Lance Edgar
eed73eca81 Add get_rattail_app() method for view supplements 2023-09-14 12:56:15 -05:00
Lance Edgar
608da824d9 Tweak default field list for batch views 2023-09-13 13:14:00 -05:00
Lance Edgar
03fc301dec Update changelog 2023-09-12 18:31:18 -05:00
Lance Edgar
1cad8b2481 Show events instead of notes, in field subgrid for custorder item 2023-09-12 12:39:23 -05:00
Lance Edgar
e930199f83 Avoid legacy logic for Customer.people schema 2023-09-11 17:13:07 -05:00
Lance Edgar
60044d5cdf Update changelog 2023-09-11 15:58:35 -05:00
Lance Edgar
e793ba6630 Improve grids for custorder items
main grid as well as rows grid for Pending Product
2023-09-11 15:24:00 -05:00
Lance Edgar
67ec6f7773 Add support for "mark received" when viewing custorder item 2023-09-10 19:55:48 -05:00
Lance Edgar
ddb8e3656f Add support for toggling custorder item "flagged" 2023-09-10 17:49:29 -05:00
Lance Edgar
e49e0edc57 Misc. improvements for Customer Orders view 2023-09-10 17:34:54 -05:00
Lance Edgar
e255c35e86 Set stacklevel for all deprecation warnings 2023-09-10 13:51:11 -05:00
Lance Edgar
48daa042d1 Show related customer orders for Pending Product view
and similar tweaks
2023-09-10 09:34:56 -05:00
Lance Edgar
64c58a3cf8 Optionally configure SQLAlchemy Session with future=True
this avoids the need for setting `cascade_backrefs=False` everywhere

https://docs.sqlalchemy.org/en/14/errors.html#error-s9r1

https://docs.sqlalchemy.org/en/14/orm/session_api.html#sqlalchemy.orm.Session.params.future
2023-09-10 07:44:13 -05:00
Lance Edgar
a9fbf48053 Use common POST logic for submitting new customer order 2023-09-09 16:21:57 -05:00
Lance Edgar
ccb4661b39 Add custom hook for grid "apply filters"
so a page can know when the data set changes..

this seems a bit hacky, may need a better solution some day
2023-09-09 14:14:23 -05:00
Lance Edgar
c5344d2df6 Update changelog 2023-09-08 19:55:14 -05:00
Lance Edgar
669e50e406 Fix member key display for equity payment form 2023-09-08 19:53:10 -05:00
Lance Edgar
7221400b88 Fix msg body display, download link for email bounces 2023-09-08 10:56:25 -05:00
Lance Edgar
6e50288bd4 Add grid link for equity payment description 2023-09-08 08:49:43 -05:00
Lance Edgar
84de5e09a2 Update changelog 2023-09-07 21:00:40 -05:00
Lance Edgar
f717bc47e5 Fallback to None when getting values for merge preview 2023-09-07 20:57:33 -05:00
Lance Edgar
f732e04f49 Update changelog 2023-09-07 18:36:02 -05:00
Lance Edgar
ecf46fa6fe Improve display for member equity payments 2023-09-07 18:19:46 -05:00
Lance Edgar
b1ec1b8817 Update changelog 2023-09-02 13:56:10 -05:00
Lance Edgar
bd7e6f9f8a Tweaks for cost editing within a receiving batch
never show PO Cost column in row grid, since Invoice Cost is what
receiving is most concerned with

add "zig-zag" entry behavior when both catalog and invoice costs are editable
2023-09-02 11:39:49 -05:00
Lance Edgar
75caface6b Add products API route to fetch label profiles for use w/ printing 2023-09-02 10:56:06 -05:00
Lance Edgar
de373a683b Add grid filter type for BigInteger columns
so we can filter by larger values
2023-09-01 11:20:30 -05:00
Lance Edgar
5ab47aeead Update changelog 2023-08-31 10:08:20 -05:00
Lance Edgar
62aa0c5965 Preserve URL hash when redirecting in grid "reset to defaults" 2023-08-30 23:51:18 -05:00
Lance Edgar
625982d639 Avoid deprecated User.email_address property 2023-08-30 23:32:09 -05:00
Lance Edgar
9f65de2ba6 Update changelog 2023-08-30 22:08:50 -05:00
Lance Edgar
f4267737c3 Let "new product" batch override type-2 UPC lookup behavior 2023-08-30 20:10:10 -05:00
Lance Edgar
74678882ee Update changelog 2023-08-29 22:21:20 -05:00
Lance Edgar
4e2125d613 Add support for "missing" credit in mobile receiving 2023-08-29 16:10:14 -05:00
Lance Edgar
12e4779093 Fairly massive overhaul of the Profile view; standardize tabs etc.
much cleaner and more consistent interface now, between the main
ProfileInfo component, and various *Tab components

also cleaner interface between client-side JS and server view methods

to my knowledge this is complete and breaks nothing..we'll see!
2023-08-28 20:43:31 -05:00
Lance Edgar
844c629a6a Fix profile history to show when a CustomerShopperHistory is deleted 2023-08-25 13:59:58 -05:00
Lance Edgar
a40b44b6e3 Fix profile history to show when a CustomerShopperHistory is deleted 2023-08-25 10:41:20 -05:00
Lance Edgar
bc8b5a8d32 Link to product record, for New Product batch row
also fix a typo
2023-08-25 09:08:33 -05:00
Lance Edgar
8be7dac33b Include shopper history from parent customer account perspective
..right?  or should this be hidden? configurable etc.?
2023-08-24 22:00:11 -05:00
Lance Edgar
b2aea57da6 Auto-select text when editing costs for receiving 2023-08-18 15:04:52 -05:00
Lance Edgar
a007606863 Declare "from PO" receiving workflow if applicable, in API 2023-08-17 18:12:42 -05:00
Lance Edgar
90075b3b65 When bulk-deleting, skip objects which are not "deletable"
whatever that means in context
2023-08-09 18:04:51 -05:00
Lance Edgar
4ecea891b3 Update changelog 2023-08-08 18:42:50 -05:00
Lance Edgar
845b5cda1a Fix custom cell click handlers in main buefy grid tables
just used for editing catalog/invoice cost in receiving thus far..
2023-08-08 18:06:22 -05:00
Lance Edgar
f2915afda4 Fix HTML rendering for UOM choice options
also avoid deprecated config methods
2023-08-08 14:11:54 -05:00
Lance Edgar
d504da19c5 Add common logic to validate employee reference field 2023-08-07 12:36:07 -05:00
Lance Edgar
ec7b0cdda1 Update changelog 2023-08-03 22:42:34 -05:00
Lance Edgar
9f0cfc68c1 Make system key searchable for problem report grid 2023-08-02 21:59:52 -05:00
Lance Edgar
1f3b5a49c4 Update changelog 2023-07-15 19:32:04 -05:00
Lance Edgar
a84bcf688b Tweak display options for tempmon probe readings graph 2023-07-07 17:56:45 -05:00
Lance Edgar
4729785b05 Show invoice number for each row in receiving 2023-07-07 17:19:08 -05:00
Lance Edgar
6b6e358dbe Update changelog 2023-07-07 15:38:08 -05:00
Lance Edgar
58f9b3ce2a Optimize "auto-receive" batch process
disable versioning when doing "auto-receive" for a receiving batch
2023-07-06 21:23:44 -05:00
Lance Edgar
8742a03e18 Update changelog 2023-07-03 09:52:42 -05:00
Lance Edgar
1be26b7f33 Allow "arbitrary" PO attachment to purchase batch
for sake of other POS integration etc.
2023-06-27 18:18:35 -05:00
Lance Edgar
08a75f6e9f Avoid deprecated product key field getter 2023-06-27 12:37:00 -05:00
Lance Edgar
8cc6def93e Update changelog 2023-06-20 17:06:54 -05:00
Lance Edgar
70ee784818 Include user "active" flag in profile view context
whoops, missed that one..
2023-06-20 17:06:20 -05:00
Lance Edgar
8932b51216 Update changelog 2023-06-20 11:54:09 -05:00
Lance Edgar
69bda79baf Turn on quickie person search for CustomerShopper views
also set default sort for that grid
2023-06-18 21:20:45 -05:00
Lance Edgar
214f3d9b1e Improve merge support for records with no uuid
for now we "pretend" they have a uuid still, custom view is
responsible for determining the value for each row if needed
2023-06-18 21:20:45 -05:00
Lance Edgar
58354e7adf Add views etc. for member equity payments 2023-06-18 21:20:40 -05:00
Lance Edgar
aa5e44efb5 Update changelog 2023-06-17 18:12:30 -05:00
Lance Edgar
9572fbf584 Fix some things for viewing a member 2023-06-17 16:56:40 -05:00
Lance Edgar
b6cb119e89 Remove unwanted revisions for CustomerPerson etc. 2023-06-17 16:50:39 -05:00
Lance Edgar
12eeb5df97 Add basic support for Person quickie lookup
shows profile view if person is found
2023-06-17 16:09:24 -05:00
Lance Edgar
d77de76c97 Add support for Notes tab in profile view 2023-06-17 14:24:08 -05:00
Lance Edgar
105dab7a3d Tweak SimpleRequestMixin to not rely on response.data.ok
instead just assume ok unless `response.data.error` is set
2023-06-17 14:13:37 -05:00
Lance Edgar
ba2b4bf12c Cleanup some wording in profile view template 2023-06-17 02:27:17 -05:00
Lance Edgar
b1489c56e2 Add basic Shopper tab for profile view 2023-06-17 02:22:18 -05:00
Lance Edgar
c601d46970 Update changelog 2023-06-16 22:22:03 -05:00
Lance Edgar
51cad13f5a Update usage of app handler per upstream changes 2023-06-16 22:15:52 -05:00
Lance Edgar
17ae06f9c1 Update changelog 2023-06-16 20:43:00 -05:00
Lance Edgar
5a03f5c23e Join the Person model for Customers grid differently based on config 2023-06-16 20:08:27 -05:00
Lance Edgar
bf1726a52b Add users context data for profile view
instead of using server-side data/logic for users tab
2023-06-16 17:04:39 -05:00
Lance Edgar
c1f72e0d11 Fix grid filter bug when switching from 'equal' to 'between' verbs
and vice versa
2023-06-16 12:21:51 -05:00
Lance Edgar
c2227b306b Update changelog 2023-06-15 10:47:38 -05:00
Lance Edgar
961cf803f2 Prefer account holder, shoppers over legacy Customers.people
but until all are migrated, support both
2023-06-14 23:33:05 -05:00
Lance Edgar
eab3b75ae5 Update changelog 2023-06-12 20:35:00 -05:00
Lance Edgar
92538b87ad Add master view for CustomerShopper 2023-06-11 20:52:24 -05:00
Lance Edgar
5f4d393db3 Change label for Member.person to "Account Holder"
probably should rename table column etc. too but that can wait
2023-06-11 15:42:14 -05:00
Lance Edgar
edd5d49e36 Improve shoppers/people display for Customer tab in profile view
also expose settings for people/clientele handlers
2023-06-11 14:52:07 -05:00
Lance Edgar
0d52d554e7 Add options for grid results to link straight to Profile view
probably should have done this a long time ago...
2023-06-10 23:19:52 -05:00
Lance Edgar
f1a8b8df7f Include version history for CustomerShopper, in profile view 2023-06-10 21:09:35 -05:00
Lance Edgar
9e1b83cbbe Let external customer link buttons be more dynamic, for profile view
need to copy this pattern elsewhere yet i'm sure..
2023-06-10 20:12:33 -05:00
Lance Edgar
40ae14bd7a Consider vendor catalog batch views "typical" 2023-06-10 18:59:53 -05:00
Lance Edgar
e2b91dca23 Move "view history" and related buttons, for person profile view
need those to be more front-and-center
2023-06-10 14:22:21 -05:00
Lance Edgar
3fde80f991 Add basic support for exposing Customer.shoppers
now there is a Shoppers field when viewing a Customer, unless
configured otherwise

also tweaked some logic for navigating Customer/Person relationships,
to handle implications of Shoppers being (maybe) present
2023-06-07 20:57:30 -05:00
Lance Edgar
afd5c3a5fd Update changelog 2023-06-06 19:29:47 -05:00
Lance Edgar
cfdb492349 Add support for version history in person profile view
yay, finally
2023-06-06 16:37:58 -05:00
Lance Edgar
816e652357 Add basic support for membership types 2023-06-06 13:13:19 -05:00
Lance Edgar
027d44e04a Remove old/unused feedback templates 2023-06-06 11:57:20 -05:00
Lance Edgar
c38dc8b842 Use *actual* current URL for user feedback msg
was using current URL as of page load, but #hash can change after
that, e.g. on profile view
2023-06-06 11:54:58 -05:00
Lance Edgar
0d97ff2936 Add support for "configured customer/member key"
also improve product key support, same patterns
2023-06-06 11:36:19 -05:00
Lance Edgar
9b59b44609 Add "touch" support for Members 2023-06-06 09:40:14 -05:00
Lance Edgar
6f02e1b18e Tweak logic for MasterView.get_action_route_kwargs()
hopefully this improves default handling when model keys are
composite, and if we can confirm the "secondary" (previous) logic no
longer happens, then can remove that altogether..?
2023-06-06 09:39:02 -05:00
Lance Edgar
488126b92c Add customer number filter for People grid 2023-06-05 20:18:57 -05:00
Lance Edgar
4318f03bd6 Add "typical" view config, for e.g. Theo and the like
bring in all normal views for backoffice retail
2023-06-05 20:18:40 -05:00
Lance Edgar
13ac33bb27 Update changelog 2023-06-02 14:19:53 -05:00
Lance Edgar
93b03c9562 Expose mail handler and template paths in email config page 2023-06-02 14:14:33 -05:00
Lance Edgar
e1685231c2 Update changelog 2023-06-01 12:17:19 -05:00
Lance Edgar
90cb25446b Fix datasync consumer setting save logic 2023-06-01 11:37:26 -05:00
Lance Edgar
fd2b290fd0 Save datasync config with new keys, per RattailConfiguration 2023-06-01 11:12:31 -05:00
Lance Edgar
b4816c6289 Share some code for validating vendor field
and add validation for new Ordering batch
2023-05-30 13:25:20 -05:00
Lance Edgar
0d9a502801 Fix test for config object 2023-05-25 14:55:41 -05:00
Lance Edgar
b840ae7513 Update changelog 2023-05-25 12:21:04 -05:00
Lance Edgar
29767dfcfb Define essential views for API 2023-05-19 19:46:18 -05:00
Lance Edgar
dd3f91cf0c Tweak byjove project generator form 2023-05-19 19:45:41 -05:00
Lance Edgar
ae38e09d1b Avoid error when filter params not valid 2023-05-19 17:43:31 -05:00
Lance Edgar
de13e48aa5 Expose basic way to send test email
most of the mechanics of sending email could already be tested by
sending a "preview" email of any type, or e.g. via Feedback.  but it
seemed like the Configure Email Settings page should have a dedicated
way to test sending
2023-05-19 17:16:19 -05:00
Lance Edgar
05bb3849a2 Prevent bug in upgrade diff for empty new version
apparently this is quite the rare case..but can happen
2023-05-18 19:57:05 -05:00
Lance Edgar
af405cfd10 Update changelog 2023-05-18 13:51:59 -05:00
Lance Edgar
8d880fc9dd Add workaround for "share grid link" on insecure sites 2023-05-18 13:48:22 -05:00
Lance Edgar
c18367739f Add initial swagger.json endpoint for API
probably this needs more, but good enough to test with
2023-05-16 23:34:48 -05:00
Lance Edgar
26a6a4d991 Update changelog 2023-05-16 17:33:55 -05:00
Lance Edgar
93bce57888 Prevent error in old product search logic
when no POD image URL is configured
2023-05-16 17:33:07 -05:00
Lance Edgar
5f6b389556 Replace setup.py contents with setup.cfg 2023-05-16 15:02:39 -05:00
Lance Edgar
d90cab40a6 Update changelog 2023-05-15 08:49:01 -05:00
Lance Edgar
c002d3d182 Add basic support for managing, and accepting API tokens
also various other changes in pursuit of that.  so far tokens are only
accepted by web API and not traditional web app
2023-05-15 08:10:42 -05:00
Lance Edgar
85947878c4 Get rid of newstyle flag for Form.validate() method
we always/only use "new style" now
2023-05-15 08:10:42 -05:00
Lance Edgar
a991dc0684 Update changelog 2023-05-13 16:57:36 -05:00
Lance Edgar
29817653ed Warn user if DB not up to date, in new table wizard
also start adding 'dirty' page behavior, to warn user if navigating
away that changes will be lost

also improve steps in wizard, so page header is scrolled into view
when prev/next buttons are clicked.  unfortunately it still does not
work right if user clicks the step number on left of screen..
2023-05-12 21:27:15 -05:00
Lance Edgar
f5f973dc3a Tweak button wording in "find role by perm" form 2023-05-12 19:21:48 -05:00
Lance Edgar
f49b4d1b8b Update changelog 2023-05-10 20:20:30 -05:00
Lance Edgar
82656f263d Move row delete check logic for receiving to batch handler 2023-05-10 18:47:11 -05:00
Lance Edgar
f942716bf9 Update changelog 2023-05-09 20:31:43 -05:00
Lance Edgar
dcc7819466 Misc. tweaks for "run import job" form 2023-05-09 20:25:05 -05:00
Lance Edgar
8fcef1fb4d Add form config for generating 'shopfoo' projects 2023-05-09 15:30:23 -05:00
Lance Edgar
2f5e01c9e9 Update changelog 2023-05-05 19:10:54 -05:00
Lance Edgar
50d1bbbe4d Add "rattail-adjacent" logic for generating projects 2023-05-05 13:30:32 -05:00
Lance Edgar
62bdf82627 Include project views by default, in "essential" views 2023-05-05 10:39:29 -05:00
Lance Edgar
2ed63b1c1a Massive overhaul of "generate project" feature
previous incarnation was woefully lacking.  new feature is much more
extensible.  still need to remove old POS integration specifics in
some places.

and a couple of unrelated things that snuck in..

- deprecate `rattail.util.OrderedDict`
- deprecate `rattail.util.import_module_path()`
- deprecate `rattail.util.import_reload()`
2023-05-05 00:18:16 -05:00
Lance Edgar
026d98551c Update changelog 2023-05-03 10:55:15 -05:00
Lance Edgar
f913ed8332 Expose, honor the prevent_password_change flag for Users 2023-05-02 19:13:28 -05:00
Lance Edgar
2863ff7a5c Remove references to deprecated extra in tox.ini 2023-04-27 09:22:48 -05:00
Lance Edgar
4993b349ef Avoid error if tempmon probe has invalid status 2023-04-21 12:04:36 -05:00
Lance Edgar
eb31fa9ab7 Update changelog 2023-04-17 16:10:37 -05:00
Lance Edgar
18f8577005 Improve global menu search behavior for multiple terms 2023-03-31 14:02:09 -05:00
Lance Edgar
6ab3898f27 Allow bulk-delete for products grid 2023-03-31 12:55:05 -05:00
Lance Edgar
efb8f8f315 Update changelog 2023-03-27 12:53:16 -05:00
Lance Edgar
e96f8844e2 Overhaul the "find by perm" feature a bit
use GET instead of POST on form submit, so can more easily share URL
for a particular result

also get rid of WTForms dependency!  sheesh

results table is still not pretty but..feeling lazy
2023-03-25 13:03:47 -05:00
Lance Edgar
45b8d9fb84 Fix table sorting for FK reference column in new table wizard
also add LargeBinary data type option
2023-03-25 11:34:30 -05:00
Lance Edgar
2f8411ba2f Add has_perm() etc. to request during the NewRequest event
still get the occasional server error when handling what should be a
simple 404 request e.g. for /wp-login.php

error indicates there is no `request.has_perm()` at the time, so
hoping this moves it earlier in the life cycle so it *will* exist..
2023-03-25 01:03:49 -05:00
Lance Edgar
714c0a6cfd Avoid accidental auto-submit of new msg form, for subject field 2023-03-23 10:23:19 -05:00
Lance Edgar
9125d7ef74 Update changelog 2023-03-15 09:43:21 -05:00
Lance Edgar
1ce67953df Let providers do DB connection setup for web API 2023-03-15 09:33:20 -05:00
Lance Edgar
e19adf8907 Remove version workaround for sphinx
no longer needed
2023-03-09 15:26:34 -06:00
Lance Edgar
9ee46107d2 Update changelog 2023-03-09 14:10:31 -06:00
Lance Edgar
2ebe0401c3 Fix JSON rendering for Cornice API views
also make sure we use Cornice for all API views
2023-03-09 14:07:10 -06:00
Lance Edgar
5aa982c95f Update changelog 2023-03-08 20:39:39 -06:00
Lance Edgar
46c7ef42de Remove version cap for cornice, now that we require python3 2023-03-08 20:38:16 -06:00
Lance Edgar
a9c4d37819 Update changelog 2023-03-02 11:05:20 -06:00
Lance Edgar
e8f235e4f7 Allow download results for Trainwreck
just basic transaction headers so far..
2023-02-28 15:05:38 -06:00
Lance Edgar
ad311e9e7e Add "equal to any of" verb for string-type grid filters 2023-02-28 14:30:25 -06:00
Lance Edgar
01af73502a Update changelog 2023-02-24 20:04:14 -06:00
Lance Edgar
a81e121ffd Allow sort/filter by vendor for sample files grid 2023-02-22 22:41:12 -06:00
Lance Edgar
cf7e3c2302 Update changelog 2023-02-22 22:00:36 -06:00
Lance Edgar
743a2ccd07 Add views for sample vendor files 2023-02-22 22:00:05 -06:00
Lance Edgar
e77650c997 Update changelog 2023-02-21 19:14:19 -06:00
Lance Edgar
d1fc5d5c38 Validate vendor for catalog batch upload 2023-02-21 17:35:47 -06:00
Lance Edgar
2fa62acbbd Update changelog 2023-02-20 21:50:44 -06:00
Lance Edgar
ad4ec41e15 Make config param more explicit, for GridFilter constructor
i.e. the rattail config object
2023-02-14 17:32:04 -06:00
Lance Edgar
539f4a5c31 Update changelog 2023-02-14 16:07:23 -06:00
Lance Edgar
7b2faf90f2 Add dedicated view config methods for "view" and "edit help"
so they can be invoked explicitly from elsewhere, keeping same logic

cf. Catapult Worksheets
2023-02-13 20:29:59 -06:00
Lance Edgar
ac57ddbb16 Update changelog 2023-02-12 10:04:27 -06:00
Lance Edgar
b434fa108d More refactoring, Query.get() => Session.get() 2023-02-12 09:34:38 -06:00
Lance Edgar
f1496c771e Stop running tests for python 3.5; do run for 3.6, 3.9 2023-02-12 09:29:30 -06:00
Lance Edgar
f611a5a521 Refactor Query.get() => Session.get() per SQLAlchemy 1.4 2023-02-11 22:05:45 -06:00
Lance Edgar
81aa0ae109 Update changelog 2023-02-11 11:55:43 -06:00
Lance Edgar
5736faf24c Use sa-filters instead of sqlalchemy-filters for API queries
latter was abandoned it seems; former has support for SQLAlchemy 1.4
and looks to be a drop-in replacement

another option, if needed at some point, though i like the looks of it
less, is https://sqlalchemy-filters-plus.readthedocs.io/

see also:

https://github.com/juliotrigo/sqlalchemy-filters/pull/69
https://github.com/juliotrigo/sqlalchemy-filters/issues/72
2023-02-11 11:53:47 -06:00
Lance Edgar
c87c50bfb9 Update changelog 2023-02-11 09:59:45 -06:00
Lance Edgar
10162b378a Remove legacy grid for alt codes in product view
whoops missed this in jquery purge
2023-02-10 21:23:57 -06:00
Lance Edgar
e879102768 Remove python2 stuff from tox.ini 2023-02-10 20:42:36 -06:00
Lance Edgar
de4667cc71 Update changelog 2023-02-10 20:25:02 -06:00
Lance Edgar
8fc3a71e0f Fix multi-file upload widget bug
happened when only one file was being uploaded
2023-02-10 12:40:23 -06:00
Lance Edgar
2d2c94e4d7 Expose setting for POD image URL 2023-02-10 12:21:55 -06:00
Lance Edgar
21669b5f4a Remove legacy vendor sources grid for product view
whoops, missed that when purging jquery theme
2023-02-10 11:39:10 -06:00
Lance Edgar
ad5dec3dc6 Use label handler to avoid deprecated logic 2023-02-08 20:19:15 -06:00
Lance Edgar
32fc0415da Fix auto-advance on ENTER for login form
if user hits ENTER while focused on username field, just set focus to
password field but do not submit form.  if user hits ENTER on while
the password field is focused, then submit form

this has long been the behavior but it was broken when removing jquery
2023-02-07 16:13:07 -06:00
Lance Edgar
5f70a524e9 Use latest zope.sqlalchemy package
session / transaction registration modified per upstream changes, but
previous logic kept to support older versions of zope.sqlalchemy - for
now, although probably should require minimum version soon?
2023-02-07 12:20:22 -06:00
Lance Edgar
9263dd4ddb Add dependency for pyramid_retry 2023-02-04 19:03:05 -06:00
Lance Edgar
f17ff59ba6 Update changelog 2023-02-03 19:52:26 -06:00
Lance Edgar
15fb7f45b8 Fix auto-focus username for login form 2023-02-03 19:51:50 -06:00
Lance Edgar
f71eadd409 Update changelog 2023-02-03 18:07:50 -06:00
Lance Edgar
49122d940d Stop including deform JS static files
although maybe we *should* be using that method, for some things?  can
revisit later if desired
2023-02-03 18:06:40 -06:00
Lance Edgar
eb1351d108 Update changelog 2023-02-03 17:39:28 -06:00
Lance Edgar
b67df1328b Remove liburl logic, config for jquery 2023-02-03 17:32:39 -06:00
Lance Edgar
976a5836a9 Purge even more jquery stuff
and related static files etc. from old themes

this might be the end of it..??
2023-02-03 17:08:33 -06:00
Lance Edgar
2ebae17839 Refactor the Ordering Worksheet generator, per Buefy 2023-02-03 16:10:08 -06:00
Lance Edgar
eddbfcab36 Allow editing the Department field for a Subdepartment 2023-02-03 16:10:08 -06:00
Lance Edgar
320aaab4b3 Replace 'default' theme to match 'falafel'
falafel is now an empty wrapper around default

hell yeah
2023-02-03 16:10:08 -06:00
Lance Edgar
f0880785a9 Add new Buefy-specific upgrade template
since that was broken..
2023-02-03 16:10:08 -06:00
Lance Edgar
9faaea881d Remove all deprecated use_buefy logic
also remove some static files no longer used, etc.
2023-02-03 16:10:04 -06:00
Lance Edgar
01e5eee981 Officially drop support for python2 2023-02-02 23:21:45 -06:00
Lance Edgar
94a0a57cfe Update changelog 2023-02-02 22:45:58 -06:00
Lance Edgar
265c7ad76f Always assume use_buefy=True within main page template
so can start removing from context for various views
2023-02-02 21:18:00 -06:00
Lance Edgar
36a902398a Update changelog 2023-02-02 20:24:19 -06:00
Lance Edgar
506de0383f Form constructor assumes use_buefy=True by default
until we get rid of it altogether
2023-02-02 20:21:19 -06:00
Lance Edgar
9b67010f2c Fix checkbox behavior for Inventory Worksheet 2023-02-02 19:26:47 -06:00
Lance Edgar
f7f8f8dabf Update changelog 2023-02-02 16:51:12 -06:00
Lance Edgar
01182ef752 Add progress bar page for Buefy theme 2023-02-01 23:09:33 -06:00
Lance Edgar
8410419717 Remove support for Buefy 0.8
only Buefy 0.9 and greater are supported now
2023-02-01 18:44:55 -06:00
Lance Edgar
5f7fa33eb2 Update changelog 2023-01-30 21:06:08 -06:00
Lance Edgar
a1d88a5e6b Refactor the Inventory Worksheet generator, per Buefy 2023-01-30 11:56:09 -06:00
Lance Edgar
a3723e4879 Tweak the Ordering Worksheet generator, per Buefy 2023-01-30 11:46:07 -06:00
Lance Edgar
b7f3a67cd0 Add basic API support for printing product labels 2023-01-29 18:46:49 -06:00
Lance Edgar
c880065da8 Tweak customer panel header style for new custorder 2023-01-29 13:02:39 -06:00
Lance Edgar
86af4baef5 Fix icon for multi-file upload widget 2023-01-29 12:45:14 -06:00
Lance Edgar
8cdfe4a22c Update changelog 2023-01-28 16:22:54 -06:00
Lance Edgar
d6f05684be Tweak styles for Quantity panel when viewing Receiving row
when no buttons were visible in panel, right-hand side looked "cut off"
2023-01-28 16:12:03 -06:00
Lance Edgar
17251b2c88 Tweak import handler form, some fields not required
those particular fields are for read-only display, not meant for user
to provide values.  so must provide defaults, else form missing those
will not validate.
2023-01-28 15:54:53 -06:00
Lance Edgar
64acfbcb4e Update changelog 2023-01-26 13:36:14 -06:00
Lance Edgar
55a3f9669b Fix click event for right-aligned buttons on profile view
for some reason when `is-pulled-right` was used, buttons were not
clickable?!  never did figure out precisely why, but this fixes
anyway.  was not an issue w/ buefy 0.8 fwiw, but using 0.9 now
2023-01-26 13:34:13 -06:00
Lance Edgar
884f136e99 Update changelog 2023-01-18 22:04:35 -06:00
Lance Edgar
dc6bd4d4a7 Rename frontend request handler logic to SimpleRequestMixin 2023-01-18 21:56:29 -06:00
Lance Edgar
1e5b7e7ee7 Add a couple more menu items to default set 2023-01-18 21:54:24 -06:00
Lance Edgar
c874d97507 Add default view config for Trainwreck 2023-01-18 20:11:46 -06:00
Lance Edgar
3f61c9ee18 Add some more menu items to default set 2023-01-18 19:21:34 -06:00
Lance Edgar
eece358e20 Update changelog 2023-01-18 18:58:32 -06:00
Lance Edgar
2b1fd9e986 Add way to override particular 'essential' views 2023-01-18 18:41:23 -06:00
Lance Edgar
79e4e596e8 Include permission views by default 2023-01-18 17:58:04 -06:00
Lance Edgar
23dea7bced Add more views, menus to default set 2023-01-18 16:55:30 -06:00
Lance Edgar
e4c2336659 Add specific data type options for new table entry form
including basic FK / relationship support
2023-01-17 00:00:06 -06:00
Lance Edgar
98fa6eea05 Misc. tweaks for App Details / Configure Menus 2023-01-16 21:55:52 -06:00
Lance Edgar
9b21d52206 Update changelog 2023-01-16 18:44:54 -06:00
Lance Edgar
00548a259b Add basic "new model view" wizard 2023-01-16 13:50:27 -06:00
Lance Edgar
f4bc280da7 Wrap up steps for new table wizard
it actually works.. :)  needs more polish, but will let usage drive that
2023-01-15 22:52:01 -06:00
Lance Edgar
68ed5942e6 Add basic "Review Model" step for new table wizard 2023-01-14 23:23:21 -06:00
Lance Edgar
9d2bcff96b Add full set of default menus
plus dynamic set of integration menus, from providers
2023-01-14 18:48:56 -06:00
Lance Edgar
39d53617bd Add new handlers, TailboneHandler and MenuHandler 2023-01-14 16:01:26 -06:00
Lance Edgar
cfdaa1e927 Add default logic to get merge data for object 2023-01-14 12:17:05 -06:00
Lance Edgar
aef679c030 Fix bug when adding new profile via datasync configure 2023-01-14 11:51:22 -06:00
Lance Edgar
dec0ebba30 Let the API "rawbytes" response be just that, w/ no file 2023-01-14 10:31:31 -06:00
Lance Edgar
e82e27acd7 Update changelog 2023-01-14 08:40:08 -06:00
Lance Edgar
23358d9c5d Tweak how backfill task is launched
per upstream changes
2023-01-14 02:20:21 -06:00
Lance Edgar
80989cc84f Update changelog 2023-01-13 20:53:26 -06:00
Lance Edgar
d8bd4bd847 Prevent listing for top-level Messages view
user must access inbox, archive etc. directly instead
2023-01-13 20:28:00 -06:00
Lance Edgar
f18f24962e Refactor tempmon dashboard view, for buefy themes 2023-01-13 20:18:42 -06:00
Lance Edgar
0753e956f9 Revert logic that assumes all themes use buefy
that just isn't a safe assumption yet..alas
2023-01-13 18:10:28 -06:00
Lance Edgar
83f9a3faa7 Fix "toggle batch complete" for Chrome browser 2023-01-13 16:49:16 -06:00
Lance Edgar
cac005f993 Semi-finish logic for writing new table model class to file
definitely needs more polish and features, but the gist..
2023-01-13 03:51:12 -06:00
Lance Edgar
fb7368993c Show basic column info as row grid when viewing Table 2023-01-12 22:56:12 -06:00
Lance Edgar
38f88407ff Update changelog 2023-01-12 15:33:56 -06:00
Lance Edgar
d842a3d8e0 Add new views for App Info, and Configure App
and a way to specify version/url overrides for buefy, vue etc.

also, begin logic for "standard" admin menu
2023-01-12 15:30:10 -06:00
Lance Edgar
2163522e7c Update changelog 2023-01-11 23:31:09 -06:00
Lance Edgar
225e13f43b Allow all external dependency URLs to be set in config
so can host all files locally if needed.

we also now assume all themes support buefy unless otherwise
configured
2023-01-11 23:29:28 -06:00
Lance Edgar
fa1cf353b8 Update changelog 2023-01-11 19:55:52 -06:00
Lance Edgar
4746b6fae9 Refactor inventory batch "add row" page, per new theme 2023-01-11 19:31:14 -06:00
Lance Edgar
2c7f2c0fcd Fix panel header icon behavior for new custorder
had to work around a buefy bug..?
2023-01-11 16:41:11 -06:00
Lance Edgar
b8389c72bb Add support for per-item default discount, for new custorder 2023-01-11 16:41:07 -06:00
Lance Edgar
dfa4178204 Add basic support for receiving from multiple invoice files 2023-01-10 16:46:21 -06:00
Lance Edgar
2b7ebedb22 Update changelog 2023-01-08 11:36:42 -06:00
Lance Edgar
33ffd7e855 Improve "download rows as XLSX" for importer batch
still could be better, but at least this avoids error
2023-01-07 22:46:35 -06:00
Lance Edgar
b11f9f62b7 Update changelog 2023-01-07 11:53:10 -06:00
Lance Edgar
c6765fd9a9 Expose, start to honor "units only" setting for products 2023-01-07 11:52:37 -06:00
Lance Edgar
8c201dced7 Update changelog 2023-01-05 13:43:38 -06:00
Lance Edgar
71851e1a05 Use product handler to normalize data for products API
at least, as much as possible
2023-01-04 21:23:57 -06:00
Lance Edgar
db62bd20b3 Show help link when generating or viewing report, if applicable 2023-01-04 16:39:37 -06:00
Lance Edgar
31b213610f Fix template bug for generating report 2023-01-04 15:31:51 -06:00
Lance Edgar
d0881cbd09 Keep aspect ratio for product images in new custorder 2023-01-04 12:38:04 -06:00
Lance Edgar
7e4bd851f1 Update changelog 2023-01-04 10:57:14 -06:00
Lance Edgar
ab80aedb63 Allow xref buttons to have "internal" links
still assume external (open in new tab) by default
2023-01-04 00:09:35 -06:00
Lance Edgar
c7537e7994 Update changelog 2023-01-02 16:55:39 -06:00
Lance Edgar
9f763b46eb Expose some settings for Trainwreck DB rotation 2023-01-02 13:12:01 -06:00
Lance Edgar
d21826c70d Make invalid email more obvious, in profile view 2023-01-02 11:11:01 -06:00
Lance Edgar
a061e362c3 Add beginnings of "New Table" feature
nowhere near complete yet, but skeleton is more or less in place
2023-01-02 09:44:05 -06:00
Lance Edgar
7e852c1836 Allow buefy version to be 'latest' 2023-01-01 13:17:55 -06:00
Lance Edgar
a01982ae55 Show only "core" app settings by default 2022-12-31 17:57:22 -06:00
Lance Edgar
884f960d3b Update changelog 2022-12-28 16:12:33 -06:00
Lance Edgar
0c6bfcbee6 Use minified version of vue.js by default, in falafel theme 2022-12-28 14:40:50 -06:00
Lance Edgar
03639d73fa Show global search as button instead of link 2022-12-27 22:51:42 -06:00
Lance Edgar
cfc92ac9e7 Hide the "configure field help" icons until user requests access
user can technically "request access" on "any page" and not just those
with configurable fields..but who cares for now i think..
2022-12-27 22:30:25 -06:00
Lance Edgar
dc90abcf09 Add "global searchbox" for quicker access to main views 2022-12-26 17:31:37 -06:00
Lance Edgar
b985124bef Fix product image view for python3 2022-12-26 10:33:12 -06:00
Lance Edgar
b653351f71 Avoid error when no form present 2022-12-25 23:05:53 -06:00
Lance Edgar
0a0b471a03 Add support for websockets over HTTP
in addition to HTTPS
2022-12-25 15:37:54 -06:00
Lance Edgar
c389ebabd0 Show *correct* system title when upgrading
may not be the same as primary app title
2022-12-25 15:13:59 -06:00
Lance Edgar
8264a69cec Add "direct link" support for master grids 2022-12-25 14:42:29 -06:00
Lance Edgar
cd466a64e5 Filter by person instead of user, for Generated Reports "Created by" 2022-12-25 12:45:23 -06:00
Lance Edgar
b04c1054fc Override document title when upgrading
when using websockets, to mimic old behavior without them
2022-12-25 12:25:55 -06:00
Lance Edgar
3befdc09e3 Add basic support for editing field help info 2022-12-24 21:46:02 -06:00
Lance Edgar
9fe9983bf9 Add basic support for editing page help info
site admin should be able to point help wherever they want
2022-12-24 16:08:09 -06:00
Lance Edgar
ed54092268 Add cleanup logic for old Beaker session data
pretty basic, but good enough for now
2022-12-23 23:30:45 -06:00
Lance Edgar
50dafc91d4 Preserve current tab for page reload in profile view
also makes sharing links better etc.
2022-12-23 20:58:27 -06:00
Lance Edgar
d409e1d088 Make static files optional, for new tailbone-integration project 2022-12-23 20:18:49 -06:00
Lance Edgar
64c8768314 Fix checkbox values when re-running a report 2022-12-23 19:43:31 -06:00
Lance Edgar
c5bd40793b Fix HUD display when toggling employee status in profile view 2022-12-23 19:06:05 -06:00
Lance Edgar
8a6fdb5ea5 Warn user when luigi is not installed, for relevant view
better than getting a server error
2022-12-23 18:55:53 -06:00
Lance Edgar
6fbc79fe5e Add support for Buefy 0.9.x
or: add hacks to continue supporting Buefy 0.8.x

..depending on your perspective
2022-12-22 20:49:20 -06:00
Lance Edgar
7ccd9ad896 Update changelog 2022-12-21 20:01:31 -06:00
Lance Edgar
ef9dc9ff6d Expose the terms field for Vendor CRUD 2022-12-21 18:05:38 -06:00
Lance Edgar
ed0a1f2740 Add make_status_renderer() to MasterView
batches aren't the only table/view where a status code/text combo may
be in use
2022-12-20 19:15:31 -06:00
Lance Edgar
871ea84f96 Add support for "is row checkable" in grids
i.e. when grid has checkboxes, some rows maybe shouldn't get one
2022-12-20 19:14:54 -06:00
Lance Edgar
e427e50d67 Update changelog 2022-12-15 13:32:27 -06:00
Lance Edgar
99a5615e91 Add configure_execute_form() hook for batch views
also enable bulk-delete of row results by default for batch views
2022-12-15 09:12:26 -06:00
Lance Edgar
c8201de2ff Update changelog 2022-12-10 12:41:41 -06:00
Lance Edgar
3c54960612 Fix error if no view supplements defined 2022-12-10 12:41:10 -06:00
Lance Edgar
5045df0b57 Update changelog 2022-12-10 11:35:02 -06:00
Lance Edgar
f388f84b07 Suppress error if menu entry has bad route name 2022-12-10 10:09:39 -06:00
Lance Edgar
f8f6b76657 Add xref buttons for Customer, Member tabs in profile view 2022-12-10 09:48:22 -06:00
Lance Edgar
cb6c25f829 Let view supps give data instead of actual xref button 2022-12-10 09:48:22 -06:00
Lance Edgar
05a3e3f805 Add common logic to determine panel fields for product view
so we don't have to override templates, but just the view logic

more needed, but this proves the concept
2022-12-10 09:48:22 -06:00
Lance Edgar
273fa7eb55 Add common logic for xref buttons, links when viewing object
about dang time for this..probaby needs improvement but a good start
2022-12-10 09:48:22 -06:00
Lance Edgar
2278082a4d Cleanup employees view per new supplements
also add permission for "view employee secrets" (where applicable)
2022-12-10 09:48:22 -06:00
Lance Edgar
d5d9c644a2 Add the ViewSupplement concept
also fix cell-class for grid columns.  cannot use "raw" fieldname
because in some cases (e.g. 'number', 'rate') Bulma may interpret that
as actually meaning something, and affect the display
2022-12-10 09:46:54 -06:00
Lance Edgar
1a51f3d854 Fix ordering worksheet API for date objects 2022-12-08 14:54:36 -06:00
Lance Edgar
f80d3cd530 Show simple error string, when subprocess batch actions fail
logs still have more info, can't show user the whole traceback..but
this is better than we had before..
2022-12-08 14:15:38 -06:00
Lance Edgar
cea06c9673 Update changelog 2022-12-07 14:20:04 -06:00
Lance Edgar
22176e89dd Add support for Beaker >= 1.12.0
but still support previous versions too, for now
2022-12-07 14:00:32 -06:00
Lance Edgar
2b220459c7 Temporary cap version for Beaker, per broken web apps! 2022-12-07 12:33:32 -06:00
Lance Edgar
c1b2b7e177 Update changelog 2022-12-06 19:32:10 -06:00
Lance Edgar
6ac07e1255 Fix bug when viewing certain receiving batches 2022-12-06 19:31:22 -06:00
Lance Edgar
1509b6fce5 Update changelog 2022-12-06 10:33:57 -06:00
Lance Edgar
ebe2013849 Add helptext for "Admin-ish" field when editing Role 2022-12-06 10:30:30 -06:00
Lance Edgar
cceb66e500 Add support for editing invoice cost in receiving batch, per new theme 2022-12-05 16:25:55 -06:00
Lance Edgar
36a5f2ab49 Show invoice cost in receiving batch, if "from scratch" 2022-12-05 16:05:27 -06:00
Lance Edgar
9c54a4ada1 Add receiving workflow as param when making receiving batch 2022-12-05 15:26:43 -06:00
Lance Edgar
2e3823364c Add support for editing catalog cost in receiving batch, per new theme
had to add several "under the hood" features to make this work, to
embed a Vue component within grid `<td>` cells, etc.
2022-12-05 14:03:03 -06:00
Lance Edgar
ec71f532a1 Include email address for current API user info 2022-12-04 09:39:08 -06:00
Lance Edgar
4030904d40 Add simple template hook for "before object helpers"
not sure how useful, but needed in one place, and hook makes for
cleaner template inheritance
2022-12-02 12:16:51 -06:00
Lance Edgar
9f62c280de Update changelog 2022-12-01 13:14:17 -06:00
Lance Edgar
94fa0380ba Avoid web config when launching overnight task 2022-12-01 09:37:30 -06:00
Lance Edgar
b3bdee60bb Add way to quickly re-run "any" report 2022-11-28 17:55:08 -06:00
Lance Edgar
434633924a Update changelog 2022-11-28 10:54:37 -06:00
Lance Edgar
88aeaf31c2 Show "next date" when launching overnight task
just to make things a bit more clear
2022-11-27 14:55:49 -06:00
Lance Edgar
604420c7d4 Auto-format phone number when saving for contact records 2022-11-23 12:27:09 -06:00
Lance Edgar
b64f6c7884 Use newer config strategy for all views
to make inheritance easier
2022-11-23 12:20:58 -06:00
Lance Edgar
db9b3617a4 Fix page title for datasync status 2022-11-23 11:52:44 -06:00
Lance Edgar
42888c0983 Add prompt dialog when launching overnight task 2022-11-23 11:40:03 -06:00
Lance Edgar
9abbc001b3 Update changelog 2022-11-21 14:31:49 -06:00
Lance Edgar
4741ee0a7b Let the Luigi handler take care of removing some DB settings
so that command line can also remove them via same logic
2022-11-21 14:01:22 -06:00
Lance Edgar
de5a8fae7c Update 'testing' watermark for dev background
for some reason Firefox suddenly would not display the old one.  so i
opened it in gimp, then re-exported to same filename.  apparently
something changed, this one worked in FF.

obviously not much care was taken in the migration here.  so maybe see
the previous file as starting point in case this needs revisiting
2022-11-20 21:01:15 -06:00
Lance Edgar
a63d7e9b64 Update changelog 2022-11-20 20:26:48 -06:00
Lance Edgar
194f49c561 Add luigi module/class awareness for overnight tasks 2022-11-20 19:37:29 -06:00
Lance Edgar
922b550c17 Update changelog 2022-11-20 16:00:03 -06:00
Lance Edgar
7f0305fb7a Fix how keys are stored for luigi overnight/backfill tasks 2022-11-20 13:58:39 -06:00
Lance Edgar
d4801f58e3 Make sure Grid class is included in package API docs 2022-11-19 21:45:23 -06:00
Lance Edgar
e4392cd00a Allow disabling, or per-day scheduling, of problem reports 2022-11-19 17:44:09 -06:00
Lance Edgar
163c65600d Update changelog 2022-11-18 11:22:08 -06:00
Lance Edgar
3c740549e2 Turn on download results feature for Employees 2022-11-18 11:20:29 -06:00
Lance Edgar
3178894e4f Update changelog 2022-11-17 19:23:44 -06:00
Lance Edgar
deed2111fb Add "between" verb for numeric grid filters 2022-11-15 16:29:15 -06:00
Lance Edgar
3e8924e7cc Update changelog 2022-11-15 13:39:17 -06:00
Lance Edgar
fec259629e Let the auth handler manage user merge 2022-11-15 13:37:37 -06:00
Lance Edgar
3b64950a38 Update changelog 2022-11-03 11:34:32 -05:00
Lance Edgar
be533922a2 Show UPC for receiving line item if no product reference
to help with troubleshooting invoice file parsing etc.
2022-11-03 11:28:38 -05:00
Lance Edgar
38e6441b61 Log a warning to troubleshoot luigi restart failure 2022-10-31 21:41:01 -05:00
Lance Edgar
c2b2d11141 Use shared logic for rendering percentage values 2022-10-29 13:40:35 -05:00
Lance Edgar
22c33b58c7 Fix start_date param for pricing batch upload 2022-10-19 16:26:05 -05:00
Lance Edgar
9b101963e5 Use people handler to update address 2022-10-18 10:55:47 -05:00
Lance Edgar
620447f029 Add version workaround for sphinx-rtd-theme bug 2022-09-25 09:18:34 -05:00
Lance Edgar
733e7ee00c Add template method for rendering row grid component
so custom event hooks can be added more easily, when needed
2022-09-24 10:34:32 -05:00
Lance Edgar
3877346b3a Update changelog 2022-09-09 14:53:47 -05:00
Lance Edgar
e67cde4255 Avoid use of self.handler within batch API views 2022-09-07 20:46:18 -05:00
Lance Edgar
e46f4bf01e Do not convert date if already a date 2022-09-06 22:19:01 -05:00
Lance Edgar
f7a019ed83 Make past item lookup optional for custorders 2022-09-06 16:44:26 -05:00
Lance Edgar
2950827c63 Add basic per-item discount support for custorders 2022-09-06 16:31:59 -05:00
Lance Edgar
b37f63a231 Update changelog 2022-09-06 13:21:29 -05:00
Lance Edgar
365e4a4194 Convert value for more date filters; only add condition if valid
missed these in 187fea6d1b
2022-09-06 13:09:14 -05:00
Lance Edgar
c43a4edec7 Move logic for "bulk-delete row objects" into MasterView
i guess so far it has only been needed for batch, but some day surely
it will be needed for something else..?

some of the template logic is still batch only i think..
2022-08-31 20:55:03 -05:00
Lance Edgar
b5a519d132 Disable "Delete Results" button if no results, for row grid 2022-08-31 16:41:58 -05:00
Lance Edgar
35728e20be Add default normalize logic for API views
and use common logic for getting field list in traditional Form class
2022-08-30 21:56:46 -05:00
Lance Edgar
960d6279a9 Include WorkOrder.estimated_total for API 2022-08-30 21:14:01 -05:00
Lance Edgar
9ea103c0eb Update changelog 2022-08-30 14:18:57 -05:00
Lance Edgar
12e4b0a139 Expose more attrs for new product batch rows 2022-08-30 13:57:18 -05:00
Lance Edgar
731c2168b0 Improve parsing of purchase order quantities 2022-08-30 11:28:48 -05:00
Lance Edgar
ef045607d9 Update changelog 2022-08-30 11:04:26 -05:00
Lance Edgar
bb4e98af8d Add uom fields, configurable template for newproduct batch 2022-08-30 10:58:13 -05:00
Lance Edgar
6ea8a02b57 Add 'warning' flash messages to old jquery base template 2022-08-27 23:36:09 -05:00
Lance Edgar
187fea6d1b Convert value for date filter; only add condition if valid 2022-08-27 22:45:52 -05:00
Lance Edgar
36ba6f1463 Update changelog 2022-08-25 22:18:33 -05:00
Lance Edgar
f005ef4d52 Add max lengths when editing person name via profile view 2022-08-25 22:15:56 -05:00
Lance Edgar
6a0a4627b4 Avoid error when no datasync profiles configured
at least, according to the web app none are configured..but they may
be in another config file
2022-08-24 20:06:38 -05:00
Lance Edgar
2dbba970b9 Only run tests if requested, for release task 2022-08-24 18:29:46 -05:00
Lance Edgar
bcedc58d9f Update changelog 2022-08-24 18:24:42 -05:00
Lance Edgar
78500770d9 Add basic support for backfill Luigi tasks
idea being, sometimes you must import many days worth of data into
Trainwreck or what-not, and it must be split up b/c e.g. it would take
too long to import all at once (i.e. might interfere with overnight
tasks)
2022-08-23 23:27:47 -05:00
Lance Edgar
488696cb39 Fix index title for datasync configure page 2022-08-22 01:07:58 -05:00
Lance Edgar
6dfda20116 Update changelog 2022-08-21 20:41:55 -05:00
Lance Edgar
e50356d276 Expose, honor "admin-ish" flag for roles
prevent user (un)assignment etc. unless admin is doing it
2022-08-21 19:36:48 -05:00
Lance Edgar
7b2fef5f09 Allow configuring datasync watcher kwargs 2022-08-21 15:22:29 -05:00
Lance Edgar
87cced1637 Fix perm check 2022-08-21 11:32:39 -05:00
Lance Edgar
2ce242ba42 Make textout scrolling "smooth" for upgrade progress 2022-08-20 23:33:46 -05:00
Lance Edgar
bdbbe990dd Add global context from handler, for email previews 2022-08-20 23:07:19 -05:00
Lance Edgar
2ca93a07e9 Make separate tasks for collect vs. transmit of upgrade progress data 2022-08-20 22:40:16 -05:00
Lance Edgar
0a113611e8 Let just one "task" handle collect/transmit of progress for websocket
first client to connect, will cause task to start; subsequent clients
are just added to running set, for broadcast messaging
2022-08-20 21:19:20 -05:00
Lance Edgar
e93063a344 Refactor upgrade websocket progress, so "anyone" can join in to see
now while an upgrade is executing, anyone with permission can "view"
the upgrade and see the same progress the executor is seeing
2022-08-20 18:56:35 -05:00
Lance Edgar
18cec49a86 Add websockets progress, "multi-system" support for upgrades
and related things to better support that
2022-08-20 17:39:33 -05:00
Lance Edgar
db3f215ebe Add way to declare failure for an upgrade
doesn't really cancel it, since Tailbone isn't actually tracking the
subprocess etc.  but saves a step when something goes off the rails
2022-08-19 17:20:01 -05:00
Lance Edgar
8470126918 Add render_person_profile() method to MasterView 2022-08-18 19:22:04 -05:00
Lance Edgar
9566a882b5 Install dependencies when running tests etc. via tox 2022-08-18 18:23:30 -05:00
Lance Edgar
7d72a43ecd Use pytest instead of nosetests, for tox runs 2022-08-18 18:19:54 -05:00
Lance Edgar
8afc376636 Update changelog 2022-08-18 17:29:13 -05:00
Lance Edgar
89da6ae501 Expose setting for auto-correct when receiving from invoice 2022-08-18 17:27:30 -05:00
Lance Edgar
d23e5d169a Add basic views for Luigi / overnight tasks 2022-08-18 15:11:09 -05:00
Lance Edgar
9de35a6e8b Add brief delay before declaring websocket broken 2022-08-17 22:59:50 -05:00
Lance Edgar
d8de36b5ac Update changelog 2022-08-17 21:30:39 -05:00
Lance Edgar
2fde1db83c Allow user feedback to request email reply back 2022-08-17 21:08:54 -05:00
Lance Edgar
5fb99c54c9 Fix initial datasync status display when supervisor error occurs 2022-08-17 19:06:02 -05:00
Lance Edgar
ed55fbca9e Log a warning if can't get supervisor process info 2022-08-17 18:44:10 -05:00
Lance Edgar
2375733d0f Add first experiment with websockets, for datasync status page 2022-08-17 18:24:55 -05:00
Lance Edgar
065f845707 Add proper status page for datasync
or rather, it's a good start..  plenty more could be added
2022-08-15 21:06:19 -05:00
Lance Edgar
839c4e0c28 Add get_next_url_after_submit_new_order() for customer orders
after new custorder batch is executed, where do we send user?
2022-08-14 17:33:12 -05:00
Lance Edgar
a20eb468df Redirect to custom index URL when user cancels new custorder entry 2022-08-14 15:53:43 -05:00
Lance Edgar
303eba6bca Update changelog 2022-08-14 10:17:52 -05:00
Lance Edgar
bc51a868ce Consolidate master API view logic
also let all API views use new config defaults convention
2022-08-14 00:59:35 -05:00
Lance Edgar
f2c73acd3b Refactor usage of get_vendor() lookup 2022-08-13 23:59:09 -05:00
Lance Edgar
2f5de67ee7 Move handheld batch view module to appropriate location 2022-08-13 23:23:30 -05:00
Lance Edgar
db3ea2e34a Fix default help URLs for ordering, receiving 2022-08-13 23:12:39 -05:00
Lance Edgar
2388ab88b6 Add the FormPosterMixin to ProfileInfo component 2022-08-12 20:47:32 -05:00
Lance Edgar
e49a31df6a Avoid double-quotes in field error messages JS code 2022-08-12 19:47:25 -05:00
Lance Edgar
d5a9aa6925 Update changelog 2022-08-12 18:29:46 -05:00
Lance Edgar
409a49ba20 Standardize merge logic when a handler is defined for it
also adds basic merge support for products view
2022-08-12 14:27:26 -05:00
Lance Edgar
4c29a667cb Couple of API tweaks for work orders
made a change to sorting such that it assumes the primary model is
being sorted, if caller does not specify
2022-08-11 00:15:12 -05:00
Lance Edgar
8d70107b5d Update changelog 2022-08-10 18:58:18 -05:00
Lance Edgar
51aeb50d39 Allow download results for Customers grid 2022-08-10 18:55:59 -05:00
Lance Edgar
0e8f383c14 Fix sequence of events re: grid component creation
somehow if the master view template had rows, the Delete Results
button was not working.  not clear when that problem started?! but
this seemed to be the correct fix
2022-08-09 23:26:41 -05:00
Lance Edgar
ca5e2c1ff9 Add initial views for work orders
at least a head start maybe
2022-08-09 22:57:26 -05:00
Lance Edgar
a6d5b262f9 Log traceback output when batch action subprocess fails 2022-08-09 16:35:48 -05:00
Lance Edgar
5952df82ff Tweak flash msg, logging when batch population fails 2022-08-09 15:05:03 -05:00
Lance Edgar
8f1f8abf42 Fix HTML literal for hidden form field 2022-08-09 14:48:23 -05:00
Lance Edgar
3edbe96968 Some API tweaks to support a byjove app 2022-08-09 14:37:41 -05:00
Lance Edgar
d6aeb1d10f Add convenience wrapper to make customer field widget, etc.
customer widget is either autocomplete or dropdown, per config

also added a way to pass arbitrary kwargs to the chameleon template
rendering for a field

also moved the logic for rendering a <b-field> out of the template and
into the Form class

also start to prefer `input_handler` over `input_callback` when
specifying client-side JS hook
2022-08-09 14:37:29 -05:00
Lance Edgar
5334cf1871 Update changelog 2022-08-08 18:13:34 -05:00
Lance Edgar
a999b996fb Add separate product grid filters for Category Code, Category Name
this also fixes a join bug in some edge cases
2022-08-08 14:39:26 -05:00
Lance Edgar
903afc111e Update changelog 2022-08-08 09:42:54 -05:00
Lance Edgar
3413d7c6f6 Expose setting for sendmail failure alerts 2022-08-07 18:45:45 -05:00
Lance Edgar
fe4c3d4942 Make sure "configure" pages use AppHandler to save/delete settings
so that beaker config cache is invalidated, if in use
2022-08-07 18:23:15 -05:00
Lance Edgar
6352a6dc9a Add button to raise bogus error, for testing email alerts 2022-08-07 12:58:49 -05:00
Lance Edgar
172dbba8aa Update changelog 2022-08-07 10:10:17 -05:00
Lance Edgar
1152fba067 Always show "all" email settings if user has config perm
also tweak view config, per newer convention
2022-08-06 22:57:10 -05:00
Lance Edgar
d74025318e Update changelog 2022-08-06 20:48:34 -05:00
Lance Edgar
dd2631d27c Only show "all" emails if config says to use the entry points
otherwise traditional behavior needs to be preserved as the default,
for now...
2022-08-06 19:18:49 -05:00
Lance Edgar
d52a186e12 Add support for toggling visibility of email profile settings 2022-08-06 18:38:17 -05:00
Lance Edgar
7d3f2e6bdf Update changelog 2022-08-05 13:28:47 -05:00
Lance Edgar
8776cd19dd Clean up URL routes for row CRUD 2022-08-05 12:09:32 -05:00
Lance Edgar
9c31e92c01 Update changelog 2022-08-04 09:08:56 -05:00
Lance Edgar
cd9004b32b Invalidate config cache when raw setting is deleted 2022-08-04 08:14:04 -05:00
Lance Edgar
ba8faacbd0 Update changelog 2022-08-03 16:58:06 -05:00
Lance Edgar
927470db72 Force cache invalidation when Raw Setting is edited
only applies if caching is actually in use
2022-08-03 15:15:49 -05:00
Lance Edgar
4ff0450632 Stop using the old rattail.db.api.settings module 2022-08-03 14:50:45 -05:00
Lance Edgar
862198cf82 Improve "touch" logic for employees
also use app handler for default touch logic
2022-08-03 11:13:43 -05:00
Lance Edgar
3726a2685a Update changelog 2022-07-27 10:21:08 -05:00
Lance Edgar
17810d9cae Misc. improvements for desktop receiving views
- don't expose "cases" if config says not to
- don't expose "expired" if config says not to
- use `numeric-input` for quantity fields
- add `product_key_field` to global-ish template context
2022-07-26 16:30:04 -05:00
Lance Edgar
92a52133de Add some more views to potentially include via poser 2022-07-26 14:25:20 -05:00
Lance Edgar
9589606fb5 Update changelog 2022-07-25 11:42:46 -05:00
Lance Edgar
ad7b347e16 Add "auto-receive all items" support for receiving batch API 2022-07-24 22:29:55 -05:00
Lance Edgar
f33d7b7f90 Add iter(Form) logic, to loop through fields 2022-07-24 21:11:36 -05:00
Lance Edgar
36d4f0a5f7 Add basic edit support for Purchases 2022-07-24 21:10:52 -05:00
Lance Edgar
0dc344b821 Assume default vendor for new receiving batch
i.e. if there is only one vendor
2022-07-24 15:05:51 -05:00
Lance Edgar
25f39f4173 Add basic/minimal merge support for customers 2022-07-24 13:21:47 -05:00
Lance Edgar
e656f769b1 Allow optional row grid title for master view 2022-07-23 22:18:17 -05:00
Lance Edgar
28238c6fb5 Add setting to expose/hide "active in POS" customer flag 2022-07-23 22:09:47 -05:00
Lance Edgar
e77ca93d80 Update changelog 2022-07-22 12:41:54 -05:00
Lance Edgar
da3aaafbcd Misc deform template improvements
for sake of a custom form
2022-07-20 21:36:52 -05:00
Lance Edgar
10628eeb91 Add template_kwargs_clone() stub for master view 2022-07-20 11:01:22 -05:00
Lance Edgar
20aa6a3fbb Expose the complete flag for pricing batch
also update view config defaults per new convention
2022-07-19 16:36:21 -05:00
Lance Edgar
e9edf205d9 Make caching products optional, when creating vendor catalog batch 2022-07-19 15:50:57 -05:00
Lance Edgar
6397a93f97 Allow download of results for common product-related tables 2022-07-19 14:52:31 -05:00
Lance Edgar
9c5f3a3b64 Split out rendering of this-page component in falafel theme
it's possible a template may need to override that
2022-07-19 11:45:52 -05:00
Lance Edgar
5e0253927c Update changelog 2022-07-18 12:41:27 -05:00
Lance Edgar
d16290cb70 Add new-style config defaults for BrandView 2022-07-18 12:31:54 -05:00
Lance Edgar
c6df827311 Add basic "download results" for Subdepartments grid 2022-07-08 12:57:57 -05:00
Lance Edgar
496e03a3ec Honor default pagesize for all grids, per setting 2022-07-01 12:00:17 -05:00
Lance Edgar
7e0e881017 Fix form validation for app settings page w/ buefy theme 2022-07-01 12:00:06 -05:00
Lance Edgar
11cda10ca5 Update changelog 2022-06-24 14:20:17 -05:00
Lance Edgar
a289216eac Add autocomplete support for subdepartments 2022-06-14 17:52:59 -05:00
Lance Edgar
c79ecab719 Add minimal buefy support for 'percentinput' field widget
this isn't complete but seems to work well enough so far..
2022-06-14 17:40:06 -05:00
Lance Edgar
4fb226ad98 Update changelog 2022-06-14 14:03:42 -05:00
Lance Edgar
a28d9b9748 Use build module instead of invoking setup.py for release 2022-06-14 14:03:10 -05:00
Lance Edgar
6b466bb90f Add start date support for "future" pricing batch 2022-06-14 13:51:00 -05:00
Lance Edgar
cb6499522e Let default grid page size correspond to first option 2022-06-14 11:25:29 -05:00
Lance Edgar
78a9ba5084 Update changelog 2022-05-15 16:47:31 -05:00
Lance Edgar
cff4942769 Allow restricting to supported vendors only, for Receiving 2022-05-15 16:45:31 -05:00
Lance Edgar
e3b1be5835 Expose config for identifying supported vendors
unfortunately must identify vendors at each app node separately, but
this is definitely still an improvement..
2022-05-15 16:04:22 -05:00
Lance Edgar
983a06abe3 Update changelog 2022-05-10 20:08:06 -05:00
Lance Edgar
75319c0d6a Add grid workarounds when data is list instead of query
ugh, this is not very intuitive.  pretty sure all that needs an
overhaul someday
2022-05-10 20:06:21 -05:00
Lance Edgar
18c3c57930 Sort roles list when viewing a user 2022-05-03 14:13:47 -05:00
Lance Edgar
c371db3534 Update changelog 2022-05-03 13:43:57 -05:00
Lance Edgar
a49aa77ec0 Tweak how family data is displayed 2022-05-03 13:36:14 -05:00
Lance Edgar
129455a31f Update changelog 2022-04-13 20:19:00 -05:00
Lance Edgar
10a801aa10 Flush early when populating batch, to ensure error is shown 2022-04-13 16:42:47 -05:00
Lance Edgar
aea7f01047 Fix quotes for field helptext 2022-04-07 12:57:40 -05:00
Lance Edgar
56c5c4e540 Update changelog 2022-04-04 13:57:31 -05:00
Lance Edgar
d48a92c88d Fix "touch" url for non-standard record types 2022-04-04 13:56:27 -05:00
Lance Edgar
aa37fc3add Tweak where description field is shown for receiving batch 2022-04-03 14:42:40 -05:00
Lance Edgar
1bb41b21af Honor case vs. unit restrictions for new custorder
and expose them in config view
2022-03-29 18:19:14 -05:00
Lance Edgar
4e25e87bfb Log error when failing to submit new custorder batch 2022-03-29 17:43:42 -05:00
Lance Edgar
80b9593651 Add template kwargs stub for view_row() 2022-03-29 17:30:37 -05:00
Lance Edgar
edef084121 Raise 404 if report not found 2022-03-29 17:19:23 -05:00
Lance Edgar
fc32542f55 Add touch for report codes 2022-03-29 17:19:14 -05:00
Lance Edgar
efcfd787af Update changelog 2022-03-29 11:49:24 -05:00
Lance Edgar
700b5f0b91 Let errors raise when showing poser reports 2022-03-29 11:39:32 -05:00
Lance Edgar
dfc88193b2 Update changelog 2022-03-29 10:32:03 -05:00
Lance Edgar
b4d5d70e4c Force session flush within try/catch, for batch refresh 2022-03-26 15:29:28 -05:00
Lance Edgar
1bad1cd3e7 Update changelog 2022-03-25 22:18:01 -05:00
Lance Edgar
f0b6b62791 Use common logic for fetching batch handler 2022-03-25 13:49:39 -05:00
Lance Edgar
ae1e9dba0f Improve vendor validation for new receiving batch 2022-03-25 12:33:37 -05:00
Lance Edgar
777a7afd46 Update changelog 2022-03-21 17:33:26 -05:00
Lance Edgar
ab3a66542d Show link to txn as field when viewing trainwreck item 2022-03-17 21:19:05 -05:00
Lance Edgar
c72d99794e Update changelog 2022-03-17 17:35:00 -05:00
Lance Edgar
fc5b931007 Expose custorder xref markers for trainwreck 2022-03-17 16:59:50 -05:00
Lance Edgar
cdae4bf8da Update changelog 2022-03-16 21:28:47 -05:00
Lance Edgar
71d8d5a70d Make problem report titles searchable in grid
at least if buefy version is new enough
2022-03-16 21:27:59 -05:00
Lance Edgar
322335f4ab Show helptext when applicable for "new batch from product query" 2022-03-15 22:58:19 -05:00
Lance Edgar
0904cda2c6 Always show batch params by default when viewing 2022-03-15 22:53:24 -05:00
Lance Edgar
fad8b44be2 Update changelog 2022-03-15 19:55:55 -05:00
Lance Edgar
da910b1414 Add default help link for Receiving feature
also stop showing "buyer" filter by default
2022-03-11 20:55:01 -06:00
Lance Edgar
6037519fbe Log error instead of warning, when batch population fails
user experience does not change but should help the admin to track
down the problem quicker..
2022-03-11 12:37:43 -06:00
Lance Edgar
7e15f75d44 Update changelog 2022-03-10 10:19:55 -06:00
Lance Edgar
25ecade1e6 Add "batch" to model title for new customer order batch
just to make things a bit more clear..
2022-03-10 10:18:43 -06:00
Lance Edgar
69161b7037 Default behavior for report chooser should *not* be form/dropdown 2022-03-10 09:55:42 -06:00
Lance Edgar
4e892d09ec Add line break for report chooser page 2022-03-10 09:53:15 -06:00
Lance Edgar
e284370c4b Add Form.insert() method, to insert field based on index 2022-03-09 19:41:46 -06:00
Lance Edgar
01b78d7513 Add workaround when inserting new fields to form field list
i.e. if inserting "before" or "after" a field which does not exist
2022-03-09 18:39:12 -06:00
Lance Edgar
b9fa324bb4 Cleanup view config syntax for vendor catalog batch
also make sure vendor autocomplete url exists, before using that
widget.  this can be an issue when app deals "directly" with POS when
making the batch etc.
2022-03-09 18:26:27 -06:00
Lance Edgar
0a42ec77b2 Cleanup grid filters for vendor catalog batches 2022-03-08 16:35:11 -06:00
Lance Edgar
a9e64e931e Update changelog 2022-03-08 14:49:00 -06:00
Lance Edgar
caa13f5a75 Bump the default Buefy version to 0.8.13
0.8.6 seemed to be causing some problems.  probably need to bump it
even further but 0.8.13 has been the "soft default" for a while..
2022-03-08 14:47:00 -06:00
Lance Edgar
9d5adf7793 Fix gotcha when defining new provider views
UI should show the key if label is missing
2022-03-07 17:40:48 -06:00
Lance Edgar
8f4b223125 Log warning/traceback when failing to include a configured view 2022-03-07 17:12:06 -06:00
Lance Edgar
e38cfda076 Update changelog 2022-03-07 11:16:25 -06:00
Lance Edgar
511e185f33 Link to email settings profile when viewing email attempt 2022-03-07 10:53:12 -06:00
Lance Edgar
7c4e9b56c7 Let tailbone providers include static views
also add more native (batch) views to default list
2022-03-06 22:06:57 -06:00
Lance Edgar
d18bade951 Let providers add extra views, options for includes config 2022-03-06 19:03:08 -06:00
Lance Edgar
c4e872c94c Add the "provider" concept, let them configure db sessions
more to come...
2022-03-06 18:49:09 -06:00
Lance Edgar
57f3b942e5 Update changelog 2022-03-05 14:53:09 -06:00
Lance Edgar
37d4ef751c Add flash message when upgrade execution completes (pass or fail) 2022-03-05 14:31:43 -06:00
Lance Edgar
b5effaa01b Add tailbone.views.essentials to include common / "core" views 2022-03-05 10:50:33 -06:00
Lance Edgar
66a15fb9a1 Add initial/basic support for configuring "included views"
also stub for managing "poser views"
2022-03-05 09:26:25 -06:00
Lance Edgar
33abeb1aca Improve the Poser Setup page; allow poser dir refresh 2022-03-05 09:12:01 -06:00
Lance Edgar
128657810b Add PoserMasterView, rename route for poser_reports
must use e.g. `poser_reports` and `poser_views` for the "meta" stuff,
i.e. maintenance of actual poser things, b/c it will be possible to
define poser views, and those routes should be `poser.*` probably..
2022-03-05 09:10:05 -06:00
Lance Edgar
f5d24133f7 Make common web view a bit more common
i.e. avoid the need to subclass it in derived projects
2022-03-04 17:44:34 -06:00
Lance Edgar
a28a801a62 Update some more view config syntax
some common ones used by a particular app..
2022-03-04 12:32:28 -06:00
Lance Edgar
738d5d94e0 Always include app_title in global template rendering context 2022-03-03 19:14:21 -06:00
Lance Edgar
3fae9e6270 Show link back to Poser Report when viewing Generated Report
i.e. where applicable / possible.  also allow bulk-delete of generated
reports, and show name filter by default for that grid
2022-03-03 18:47:26 -06:00
Lance Edgar
691a5e84f9 Show list of generated reports when viewing Poser Report 2022-03-03 18:36:35 -06:00
Lance Edgar
18625efa87 Update changelog 2022-03-02 21:33:21 -06:00
Lance Edgar
d99f2541df Add dedicated perm for replacing poser report module 2022-03-02 18:52:28 -06:00
Lance Edgar
72177aef0a Add basic support for Poser reports, list/create 2022-03-02 17:21:38 -06:00
Lance Edgar
a3195267c9 Show toast msg instead of alert after sending feedback 2022-03-01 19:51:30 -06:00
Lance Edgar
8104657ae9 Update changelog 2022-03-01 16:14:18 -06:00
Lance Edgar
78fb38e072 Tweak styles for links in object helper panel 2022-03-01 15:18:47 -06:00
Lance Edgar
206d51f59b Params should be readonly when editing batch 2022-03-01 15:03:48 -06:00
Lance Edgar
2e0bc63e20 Update changelog 2022-03-01 13:31:50 -06:00
Lance Edgar
031d97aea3 Avoid making discounts data if missing field, for trainwreck item view 2022-03-01 13:01:59 -06:00
Lance Edgar
59a9d2cf86 Pass query along for download results, so subclass can modify 2022-03-01 12:17:06 -06:00
Lance Edgar
ee961edf94 Fix stdout/stderr fields for upgrade view
whoops..missed that one
2022-02-28 22:16:52 -06:00
Lance Edgar
7b485d5ad2 Remove some duplicated code
in fact it wasn't exactly duplicate..it had a bug which the shared
function code does not have
2022-02-28 12:05:16 -06:00
Lance Edgar
ec2600ddf7 Add simple searchable column support for non-AJAX grids
idk maybe even AJAX grids can use?  not gonna try at the moment
2022-02-26 21:00:05 -06:00
Lance Edgar
63fef16c37 Update changelog 2022-02-26 20:09:30 -06:00
Lance Edgar
74fecf553e Add page/way to configure main menus
just the basics so far, index page routes and separators should be
supported but nothing else.  also "menus from config" is all or
nothing, no way to mix config + code at this point
2022-02-26 17:22:54 -06:00
Lance Edgar
587a4daf7a Update changelog 2022-02-25 14:30:02 -06:00
Lance Edgar
2290d9f990 Expose "discount type" for Trainwrewck line items 2022-02-24 10:39:11 -06:00
Lance Edgar
3553f23eab Use dict instead of custom object to represent menus
as prep for editing menu config directly in app
2022-02-23 00:26:14 -06:00
Lance Edgar
0c5992ad75 Add grid hyperlinks for trainwreck transaction line items 2022-02-22 20:39:06 -06:00
Lance Edgar
8ae1b87a1e Auto-filter hyperlinks for PO vs. invoice breakdown in Receiving 2022-02-20 19:52:24 -06:00
Lance Edgar
4d404cb20b Add auto-filter hyperlinks for batch row status breakdown 2022-02-20 19:40:32 -06:00
Lance Edgar
5b697cdf26 Add view template stub for trainwreck transaction 2022-02-20 17:06:51 -06:00
Lance Edgar
ceceb3f030 Update changelog 2022-02-20 15:25:17 -06:00
Lance Edgar
66fd2ff5e6 Show SRP as currency for vendor catalog batch 2022-02-19 21:00:54 -06:00
Lance Edgar
7f06b3e53b Expose per-item discounts for Trainwreck 2022-02-19 17:31:14 -06:00
Lance Edgar
e990be3570 Expose some new trainwreck fields 2022-02-19 14:39:40 -06:00
Lance Edgar
57e22c9ff5 Only show DB picker for permissioned users 2022-02-18 15:39:12 -06:00
Lance Edgar
b6bd095d8e Update changelog 2022-02-16 16:33:49 -06:00
Lance Edgar
778578292f Fix progress bar when running problem report 2022-02-16 16:16:40 -06:00
Lance Edgar
8744ee74b3 Update changelog 2022-02-15 17:34:28 -06:00
Lance Edgar
47bfcc23cb Add FormPosterMixin to WholePage class 2022-02-15 10:15:08 -06:00
Lance Edgar
962d31c4c2 Add initial support for editing user preferences
by default this exposes just one setting which has only one possible
value, so not very useful.  but can override as needed
2022-02-14 20:30:15 -06:00
Lance Edgar
6093be43c9 Allow override of navbar-end element in falafel theme header 2022-02-13 21:51:42 -06:00
Lance Edgar
753daa55e8 Update changelog 2022-02-13 21:41:47 -06:00
Lance Edgar
09227fa30a New upgrades should be enabled by default 2022-02-13 16:27:24 -06:00
Lance Edgar
4e3aa1af83 Tweak how "duration" fields are rendered for grids, forms 2022-02-12 19:16:16 -06:00
Lance Edgar
a6d97538af Use new-style config defaults for customer views 2022-02-11 19:15:39 -06:00
Lance Edgar
85ef73dcb9 Tell browser not to cache certain pages, by default
main grid/index pages, and any view page which contains a row grid
2022-02-11 16:55:25 -06:00
Lance Edgar
0ead06106c Add config for showing ordered vs. shipped amounts when receiving 2022-02-11 16:48:46 -06:00
Lance Edgar
86a42064ea Cleanup labels for Vendor/Code "preferred" vs. "any" in products grid 2022-02-11 15:35:12 -06:00
Lance Edgar
9584fb57b0 Only prevent cache for index pages if so configured
there is a performance hit for this, depending on your perspective, so
let's make it opt-in only for now
2022-02-10 20:31:03 -06:00
Lance Edgar
e852613567 Add highlight for non-active customers in grid 2022-02-10 11:16:39 -06:00
Lance Edgar
065ad9e422 Add highlight for non-active users in grid 2022-02-10 10:55:41 -06:00
Lance Edgar
f1c2fd399e Try out new config defaults function for user views
pretty sure this is a good idea but we'll see
2022-02-09 18:02:09 -06:00
Lance Edgar
8cc54b6106 Update changelog 2022-02-08 12:23:12 -06:00
Lance Edgar
072f5da69d Add "full lookup" product search modal for new custorder page 2022-02-08 12:21:24 -06:00
Lance Edgar
025cabd1ad Update changelog 2022-02-05 21:52:30 -06:00
Lance Edgar
b261e8bb9b Add some autocomplete workarounds for new vendor catalog batch
when user selects a parser, it may auto-select the vendor, but keeping
that all in sync is complicated.  this seems to be an improvement but
it could likely use more..
2022-02-05 21:41:05 -06:00
Lance Edgar
a36f775752 Tweak how product key field is handled for product views 2022-02-05 15:59:36 -06:00
Lance Edgar
091b479a02 Update changelog 2022-02-04 14:56:18 -06:00
Lance Edgar
9c75d7b560 Add CustomerGroupAssignment to customer version history 2022-02-04 14:42:11 -06:00
Lance Edgar
ceb70eec4c Update changelog 2022-02-01 20:03:09 -06:00
Lance Edgar
ea180ca107 Expose batch params for vendor catalogs 2022-02-01 19:14:16 -06:00
Lance Edgar
1117893900 Update changelog 2022-01-31 21:18:01 -06:00
Lance Edgar
b22e7fd077 Make "generate report" the same as "create new generated report"
no reason to reinvent that wheel
2022-01-31 19:34:24 -06:00
Lance Edgar
d677cb1bc8 Update changelog 2022-01-31 17:53:37 -06:00
Lance Edgar
15fc82fc34 Tweak handling of empty params when generating report
not sure there was a compelling reason to use `colander.null` other
than that is what pyramid generally does?  but `None` seems to work
fine for me so far..  (used w/ optional date param)
2022-01-31 17:51:03 -06:00
Lance Edgar
4716545b7e Show helptext for params when generating new report 2022-01-31 16:52:16 -06:00
Lance Edgar
16a4fe1a4f Update changelog 2022-01-31 14:52:55 -06:00
Lance Edgar
8a08b3f7c7 Add support for tailbone-integration project generator 2022-01-29 14:42:52 -06:00
Lance Edgar
999bb29499 Add support for rattail-integration project generator 2022-01-29 12:37:05 -06:00
Lance Edgar
1575cad447 Improve profile link helper for buefy themes 2022-01-29 08:57:03 -06:00
Lance Edgar
cdcb106f2d Update changelog 2022-01-26 13:14:25 -06:00
Lance Edgar
af14216eea Tweak the "auto-receive all" tool for Chrome browser
also split out each helper section
2022-01-26 13:13:00 -06:00
Lance Edgar
b9c5f6a869 Update changelog 2022-01-25 11:10:23 -06:00
Lance Edgar
7e071a7daf Hopefully fix tox tests for python 2.7 2022-01-24 20:06:02 -06:00
Lance Edgar
db3cd4ec6e Only expose "product" departments within product view dropdowns 2022-01-24 15:32:24 -06:00
Lance Edgar
ae27c110ab Update changelog 2022-01-19 12:19:15 -06:00
Lance Edgar
f83fc18ebc Use buefy input for quickie search
not sure why this suddenly has poor style / formatting, but this fixes
2022-01-18 12:29:23 -06:00
Lance Edgar
23fb5e09d1 Update changelog 2022-01-15 12:47:08 -06:00
Lance Edgar
fe7612c885 Use the new label handler
also, move "print one-off labels" logic into product master view
2022-01-13 21:25:17 -06:00
Lance Edgar
517dd4ad9e Update changelog 2022-01-13 14:36:04 -06:00
Lance Edgar
e672e9670f Strip whitespace for new customer fields, in new custorder page 2022-01-13 14:21:40 -06:00
Lance Edgar
0b25469f33 Update changelog 2022-01-12 18:24:27 -06:00
Lance Edgar
765b7b4957 Update usage of app.get_email_handler() to avoid warnings 2022-01-12 18:20:25 -06:00
Lance Edgar
9eeb921915 Include all static files in manifest 2022-01-12 18:20:01 -06:00
Lance Edgar
9045505153 Update changelog 2022-01-10 16:34:06 -06:00
Lance Edgar
eb221417e5 Expose the Sale, TPR, Current price fields for label batch
still need to figure out how execution can print e.g. TPR prices...
2022-01-10 14:54:49 -06:00
Lance Edgar
cabe422508 Add progress support when deleting a batch
b/c we must delete all rows individually, and some batches can be
several thousand rows each
2022-01-09 19:25:18 -06:00
Lance Edgar
8579b89002 Add way to set form-wide schema validator
was needed to enforce rule where one field is required only in some
cases, depending on value of another field
2022-01-09 18:13:12 -06:00
Lance Edgar
0545099a2b Add buefy support for quick-printing product labels; also speed bump 2022-01-09 15:20:35 -06:00
Lance Edgar
94fc5c1859 Update changelog 2022-01-08 20:08:32 -06:00
Lance Edgar
6af5157b4e Update some method calls to avoid deprecation warnings 2022-01-08 19:48:14 -06:00
Lance Edgar
dc28b1337d Add config for supported vendor catalog parsers
also explicitly set "native value" for all configuration checkbox
fields, since apparently it will send `'false'` by default...
2022-01-08 13:35:59 -06:00
Lance Edgar
2ce7c93aeb Expose, honor "allow future" setting for vendor catalog batch 2022-01-08 12:19:35 -06:00
Lance Edgar
88b3279e63 Several disparate changes needed for vendor catalog improvements
- invoke vendor handler where appropriate, e.g. for parsers
- reverse "polarity" of dropdown chooser setting; rename it
- tweak autocomplete behavior yet again, for dynamic values
- auto-select vendor upon parser selection, when possible
2022-01-07 19:27:10 -06:00
Lance Edgar
ab61778d35 Some aesthetic improvements for vendor catalog batch
hopefully they're improvements...
2022-01-07 15:03:56 -06:00
Lance Edgar
f89dc88c0e Add configurable template file for vendor catalog batch 2022-01-06 12:53:01 -06:00
Lance Edgar
ad110c2ce2 Remove unused import 2022-01-03 21:10:34 -06:00
Lance Edgar
5e0ba81b21 Update changelog 2022-01-03 16:17:00 -06:00
Lance Edgar
a0bb481a43 Use AuthHandler.get_permissions()
instead of deprecated `cache_permissions()`
2022-01-03 15:34:00 -06:00
Lance Edgar
3aac855fa1 Add basic configure page for Trainwreck
also the beginnings of a "yearly rollover" page which hopefully will
prove useful for helping to automate that, once i figure out how best
to go about it...
2022-01-01 19:12:46 -06:00
Lance Edgar
94883c1433 Remove usage of app.get_designated_import_handler() 2021-12-31 13:46:36 -06:00
Lance Edgar
7b7eee92cd Fix permission check for input file template links 2021-12-30 11:04:59 -06:00
Lance Edgar
c2d76966a3 Update changelog 2021-12-29 11:14:40 -06:00
Lance Edgar
82dfce6f81 Add basic "resolve" support for person, product from new custorder 2021-12-23 20:24:43 -06:00
Lance Edgar
1b0d6581db Bugfix 2021-12-23 16:18:06 -06:00
Lance Edgar
819ae22b0e Expose products setting for type 2 UPC lookup
also expose Configure button for most master view pages
2021-12-23 15:18:30 -06:00
Lance Edgar
33af2e6fa1 Show create button on "most" pages for a master view 2021-12-23 14:46:28 -06:00
Lance Edgar
4396c4c628 Update changelog 2021-12-23 12:42:12 -06:00
Lance Edgar
daa5126c21 Improve email bounce view per buefy theme 2021-12-23 12:34:57 -06:00
Lance Edgar
494b1384c4 Bugfix 2021-12-22 16:45:56 -06:00
Lance Edgar
c0db03bc28 Add basic "pending product" support for new custorder batch 2021-12-22 16:34:17 -06:00
Lance Edgar
408bffb775 Update changelog 2021-12-20 14:58:01 -06:00
Lance Edgar
a6f608e8cc Flag discontinued items for main Products grid
no styling is applied but custom app can do so
2021-12-20 14:56:25 -06:00
Lance Edgar
e97b8a9f7e Update changelog 2021-12-20 14:27:47 -06:00
Lance Edgar
31dff0d353 Add some standard CRUD buttons for buefy themes
finally!

also disable the permalink "feature" since it seems not useful
2021-12-17 22:08:37 -06:00
Lance Edgar
30f95e2f08 Add common configuration logic for "input file templates"
just used in one batch so far but should be useful for many more..once
can get around to migrating them

had to rework the configuration logic to use HTML form instead of
JSON, to allow for the file uploads
2021-12-17 20:25:17 -06:00
Lance Edgar
099b6915f4 Update changelog 2021-12-17 09:17:35 -06:00
Lance Edgar
da6c782ac3 Fix how fallback/default buefy and vue.js versions are used 2021-12-16 20:05:56 -06:00
Lance Edgar
e99c001673 Let config decide which versions of vue.js and buefy to use 2021-12-16 14:58:25 -06:00
Lance Edgar
c7d587b4cb Tweak wording on base configure template 2021-12-16 14:16:21 -06:00
Lance Edgar
ff348a2aa0 Add some minimal docs for Diff constructor 2021-12-15 18:07:22 -06:00
Lance Edgar
bc7ccb6a9f Render "pretty" UPC by default, for batch row form fields 2021-12-15 18:06:53 -06:00
Lance Edgar
40d36f9808 Update changelog 2021-12-15 15:19:36 -06:00
Lance Edgar
f49fdebd98 Add some smarts when making batch execution form schema
in some cases `has_execution_options()` may return True but the base
view class may not need to provide any options itself (i.e. subclass
is responsible for declaring the view has options).
2021-12-15 15:02:28 -06:00
Lance Edgar
ca57bd3572 Auto-register all config pages, for dropdown in App Settings 2021-12-15 00:00:46 -06:00
Lance Edgar
6f62f141d2 Fix params field when deleting a report 2021-12-14 19:08:32 -06:00
Lance Edgar
197d3de74a Add "jump to" chooser in App Settings, for various "configure" pages 2021-12-13 22:32:10 -06:00
Lance Edgar
1244659064 Add more basic config views, obviating some App Settings 2021-12-13 21:33:10 -06:00
Lance Edgar
16bc3076ad Add basic config page for Products 2021-12-13 21:06:47 -06:00
Lance Edgar
1fbe429a08 Add basic "config" view for Receiving 2021-12-13 20:35:23 -06:00
Lance Edgar
340a177a29 Overhaul desktop views for receiving, for efficiency
still could use even more i'm sure, but this takes advantage of buefy
to add dialogs etc. from the "view receiving batch row" page.  this
batch no longer allows direct edit of rows but that's hopefully for
the better.
2021-12-13 18:37:47 -06:00
Lance Edgar
2f676774e9 Bugfix 2021-12-11 15:40:46 -06:00
Lance Edgar
a2032a7be2 Allow for null price when showing price history 2021-12-10 16:33:53 -06:00
Lance Edgar
f549858c5d Update changelog 2021-12-09 12:13:59 -06:00
Lance Edgar
9d02180c92 Add buttons to edit, confirm cost for receiving batch row view
not yet fully implemented
2021-12-08 22:31:54 -06:00
Lance Edgar
e906c01e64 Make "view row" prettier for receiving batch, for buefy themes
this seems like a good direction; should make "receive product" and
"declare item" use b-modal on same page probably
2021-12-08 21:59:41 -06:00
Lance Edgar
be92075abb Allow "auto-receive all items" batch feature in production
but require a dedicated permission
2021-12-08 20:26:31 -06:00
Lance Edgar
10e34b83ed Refactor "receive row" and "declare credit" tools per buefy theme 2021-12-08 19:44:50 -06:00
Lance Edgar
ae76ceea04 Update changelog 2021-12-08 15:54:23 -06:00
Lance Edgar
6f60387f30 Fix bug when report has no params dict 2021-12-08 12:21:23 -06:00
Lance Edgar
60222c4977 Assume default receiving workflow if there is only one 2021-12-07 19:58:11 -06:00
Lance Edgar
ff588b6a5c Only include --runas arg if we have a value 2021-12-07 19:57:26 -06:00
Lance Edgar
871dd35a3a Add basic views to expose Problem Reports, and run them
not very sophisticated yet but heck better than we had yesterday
2021-12-07 18:01:07 -06:00
Lance Edgar
f687078bbf Update changelog 2021-12-07 16:19:32 -06:00
Lance Edgar
6fc666e221 Fix form ref bug, for batch execution 2021-12-07 16:18:56 -06:00
Lance Edgar
095afcde24 Update changelog 2021-12-07 13:19:18 -06:00
Lance Edgar
1353f6ed3c Bugfix 2021-12-07 12:09:43 -06:00
Lance Edgar
a7c6380a3a Update changelog 2021-12-07 11:36:46 -06:00
Lance Edgar
5a4abbb163 When viewing report output, show params as proper buefy table
plus couple of other random tweaks
2021-12-07 11:28:23 -06:00
Lance Edgar
092f1cda0c Honor "safe for web app" flags for import/export handlers 2021-12-06 21:29:33 -06:00
Lance Edgar
cc4b2278e7 OMG a ridiculous commit to overhaul import handler config etc.
- add `MasterView.configurable` concept, `/configure.mako` template
- add new master view for DataSync Threads (needs content)
- tweak view config for DataSync Changes accordingly
- update the Configure DataSync page per `configurable` concept
- add new Configure Import/Export page, per `configurable`
- add basic views for Raw Permissions
2021-12-06 20:04:34 -06:00
Lance Edgar
282185c5af Add basic import/export handler views, tool to run jobs 2021-12-05 17:23:11 -06:00
Lance Edgar
95da490f9a Update changelog 2021-12-03 09:44:20 -06:00
Lance Edgar
760fbc57bc Expose the Sale Price and TPR Price for product views
in addition to Current Price
2021-12-02 14:40:51 -06:00
Lance Edgar
47f6c941ec Update changelog 2021-11-29 21:03:20 -06:00
Lance Edgar
4229798c7b Add button to remove all datasync settings from DB
seems useful for someone testing, as prep to make the switch
2021-11-29 19:28:07 -06:00
Lance Edgar
8aff5d519d Add page for configuring datasync
experimental! until proven worthy..
2021-11-29 17:23:01 -06:00
Lance Edgar
bb0666b77d Update changelog 2021-11-28 10:59:55 -06:00
Lance Edgar
dbd00291b3 Add simple search filters for past items dialog in new custorder 2021-11-27 19:47:02 -06:00
Lance Edgar
c1f9190613 Show current/sale pricing for products in new custorder page 2021-11-27 19:08:15 -06:00
Lance Edgar
ce354d5bc3 Update changelog 2021-11-25 19:01:35 -06:00
Lance Edgar
b9037111a4 Don't use multi-select for new report in buefy themes
also let app handler fetch the report handler
2021-11-25 18:56:28 -06:00
Lance Edgar
03dad82663 Add basic support for receiving from PO with invoice 2021-11-25 16:50:13 -06:00
Lance Edgar
e8828efae3 Update changelog 2021-11-17 15:12:54 -06:00
Lance Edgar
b8f1b7bd84 Show ordered quantity when viewing costing batch row 2021-11-17 14:57:10 -06:00
Lance Edgar
0fa888efaf Fix bug when product has empty suggested price 2021-11-16 17:23:56 -06:00
Lance Edgar
f385aab44a Update changelog 2021-11-14 13:27:13 -06:00
Lance Edgar
a7b91b5b31 Expose the "sync users" flag for Roles 2021-11-13 15:05:45 -06:00
Lance Edgar
901dacf038 Update changelog 2021-11-11 18:38:44 -06:00
Lance Edgar
426ba0ea34 Fix "download results" support for Products
it is not enabled by default, but still should work when it is
2021-11-11 17:42:59 -06:00
Lance Edgar
3a10a4bcb7 Improve error handling when executing a custorder batch 2021-11-11 13:37:10 -06:00
Lance Edgar
6e15d59a84 Update changelog 2021-11-11 12:31:42 -06:00
Lance Edgar
f1fd003dca Add permission for viewing "all" employees
previously we showed all if user had "edit" perm
2021-11-11 12:30:00 -06:00
Lance Edgar
1ceb1e4434 Update changelog 2021-11-11 12:11:24 -06:00
Lance Edgar
5f9d311cdb Add views for PendingProduct model; also DepartmentWidget 2021-11-10 12:39:51 -06:00
Lance Edgar
7630f504b0 Add initial VersionMasterView
for those times when you just need to expose a version table directly
2021-11-09 17:20:53 -06:00
Lance Edgar
e7871380a9 Add "true margin" to products XLSX export 2021-11-09 15:49:42 -06:00
Lance Edgar
85166d5beb Update changelog 2021-11-09 11:51:21 -06:00
Lance Edgar
90cc8e5370 Fix dynamic content title for "view profile" page 2021-11-08 20:17:07 -06:00
Lance Edgar
a12318246f Update changelog 2021-11-08 18:33:19 -06:00
Lance Edgar
eb28fc2e3c Fall back to empty string for product regular price
i think this avoids a bug when a product has no regular price but does
have a current price
2021-11-08 13:15:10 -06:00
Lance Edgar
fec7c3b3ee Cleanup grid columns for receiving batches 2021-11-07 18:10:28 -06:00
Lance Edgar
23d38604c4 Let handler restrict available invoice parser options 2021-11-07 17:10:33 -06:00
Lance Edgar
67c1adcc75 Tweak how we fetch invoice parser
per changes in rattail
2021-11-07 14:12:06 -06:00
Lance Edgar
3990854d42 Fix product URL for a new custorder scenario 2021-11-06 20:31:55 -05:00
Lance Edgar
5d875bc731 Let user "add past product" when making new custorder 2021-11-06 20:00:54 -05:00
Lance Edgar
ddb05afe6b Auto-select Quantity tab when editing item for new custorder
also be a little smarter on error when user selects an item
2021-11-06 17:56:35 -05:00
Lance Edgar
43bbc2a29e Show some more product attributes in custorder item selection popup 2021-11-06 17:37:05 -05:00
Lance Edgar
7a5ba0503a Use products handler to get image URL 2021-11-06 17:36:19 -05:00
Lance Edgar
28e9085249 Update changelog 2021-11-05 18:45:45 -05:00
Lance Edgar
5ff57ae7d2 Add link to download generic template for vendor catalog batch
also let config restrict which parsers are "supported"

and auto-choose parser if there is only one
2021-11-05 18:40:46 -05:00
Lance Edgar
df8778f85d Add render_brand() method for MasterView 2021-11-05 15:11:30 -05:00
Lance Edgar
2be1d12116 Make separate method for writing results XLSX file
so subclass can customize
2021-11-05 15:11:07 -05:00
Lance Edgar
eb76d868ca Update changelog 2021-11-04 21:25:32 -05:00
Lance Edgar
b34d88d704 Avoid exposing batch params when creating a batch
not sure how this never came up until now..?
2021-11-04 21:20:42 -05:00
Lance Edgar
0758ca09e6 Show unit price in line items grid for new custorder
maybe should change this to show "base price" (unit *or* case
depending on the row uom) ?
2021-11-03 20:54:46 -05:00
Lance Edgar
1bdb845032 Honor the "product price may be questionable" flag for new custorder
i.e. don't expose the per-item flag unless *that* flag is set
2021-11-03 20:20:22 -05:00
Lance Edgar
4d33e3dcbe Move some custorder logic to handler; allow force-swap of product selection 2021-11-03 19:19:20 -05:00
Lance Edgar
b0fa559760 Fix product view page when user cannot view version history 2021-11-03 18:30:16 -05:00
Lance Edgar
8a378317c0 Try to prevent caching for any /index (grid) page
if this works, maybe also should do it for /view since that can have a
rows grid?
2021-11-03 18:15:13 -05:00
Lance Edgar
a6b7056f2a Update changelog 2021-11-03 16:49:04 -05:00
Lance Edgar
9fef4c2601 Fix the Department filter for Products grid, for jquery themes
ugh jquery
2021-11-03 16:47:55 -05:00
Lance Edgar
209b4b4de3 Update changelog 2021-11-02 11:15:44 -05:00
Lance Edgar
7651efff9d Highlight "cannot calculate price" rows for new product batch 2021-10-31 11:56:46 -05:00
Lance Edgar
7b5e2d17f3 Omit "edit" link unless user has perm, for Customer "people" subgrid 2021-10-28 19:00:56 -05:00
Lance Edgar
4dfc29768c Improve validation for Person field of User form
otherwise if user enters e.g. "John Doe" but does *not* select an
autocomplete result, then "John Doe" will be submitted as-is to the
server, which then tried to write that directly to
``users.person_uuid`` column in the DB, resulting in error
2021-10-28 18:55:28 -05:00
Lance Edgar
2d87ce5c29 Highlight the "did not receive" rows for purchase batch
also add some row grid links
2021-10-22 21:53:46 -05:00
Lance Edgar
2d0a922cff Show case qty by default for costing batch rows 2021-10-22 21:24:08 -05:00
Lance Edgar
a553a26644 Optionally set the sticky-header attribute for main buefy grids
should affect the 'index' and 'view' (with rows) but i don't think any
other pages will get this..?
2021-10-22 21:04:39 -05:00
Lance Edgar
4a383709bd Update changelog 2021-10-20 16:15:19 -05:00
Lance Edgar
8d16a5f110 Clean up the product selection UI for new custorder
still needs some work but this is much better, more like the customer
selection now w/ "multi-faceted" autocomplete
2021-10-20 07:26:05 -05:00
Lance Edgar
8b044dbb22 Add basic "price needs confirmation" support for custorder 2021-10-18 18:28:28 -05:00
Lance Edgar
93b752f436 Invoke handler when adding new item to custorder batch 2021-10-17 18:07:57 -04:00
Lance Edgar
87374d5647 Fix auth handler reference bug 2021-10-17 17:29:26 -04:00
Lance Edgar
ab33b49218 Improve "refresh contact", show new fields in green for custorder
only showing new "customer" fields in green so far
2021-10-17 17:28:28 -04:00
Lance Edgar
52fbe73893 Overhaul the autocomplete component, for sake of new custorder
turns out we had some issues with our understanding of how that all
was supposed to work.  this seems to be much cleaner and even
semi-documented :)
2021-10-16 15:37:23 -04:00
Lance Edgar
232a02b944 Refactor to leverage all existing methods of auth handler
instead of importing and calling functions from core rattail
2021-10-14 23:30:26 -04:00
Lance Edgar
53fc1508f3 Give custorder batch handler a couple ways to affect adding new items 2021-10-14 17:49:12 -04:00
Lance Edgar
1b33c8a2b7 Update changelog 2021-10-14 14:22:07 -04:00
Lance Edgar
dd6c9cc8ce Misc. tweaks for users, roles 2021-10-14 14:18:36 -04:00
Lance Edgar
d61fa7b6b9 Update changelog 2021-10-14 12:12:10 -04:00
Lance Edgar
22aa55c24b Invoke the auth handler to cache user permissions etc.
various changes for sake of "synced" roles feature
2021-10-14 10:39:54 -04:00
Lance Edgar
80589cde2f Cleanup form display a bit, for App Settings 2021-10-13 17:29:41 -04:00
Lance Edgar
1463c09385 Update changelog 2021-10-13 12:19:49 -04:00
Lance Edgar
e3cad91be0 Leverage the auth handler for main user login 2021-10-12 18:22:04 -04:00
Lance Edgar
aeace0c7cf Add debounce() wrapper for buefy autocomplete
per docs, although was not very clear "which" debounce i needed, this
one at least works without errors..

hoping this fixes some page performance issues when tailbone
autocomplete component is present
2021-10-12 14:17:10 -04:00
Lance Edgar
20492410ad Update changelog 2021-10-11 21:58:18 -04:00
Lance Edgar
66bc775e14 Improve display, handling for "add contact info to customer record"
for new custorders page.  in particular, show this flag in main screen
2021-10-10 20:43:27 -04:00
Lance Edgar
3e796e9164 Fix bug when making context for mailing address
sometimes those belong to a non-person, e.g. customer
2021-10-10 20:24:26 -04:00
Lance Edgar
ffb33d00c8 Fix some phone/email bugs for new custorder page 2021-10-10 20:21:41 -04:00
Lance Edgar
7fabef6004 Stop rounding case/unit cost fields to 2 places for purchase batch 2021-10-10 20:08:52 -04:00
Lance Edgar
ce969306f7 Update changelog 2021-10-10 18:42:46 -04:00
Lance Edgar
a919bfb6c5 Simplify template context customization for view_profile_buefy 2021-10-07 21:13:59 -04:00
Lance Edgar
b9b5a0e79b Update changelog 2021-10-07 19:36:17 -04:00
Lance Edgar
284078ff71 Delete pending customer if deleting custorder batch
also invoke handler to update pending customer info for batch, so the
handler can add validation, e.g. unique email address check
2021-10-07 13:08:48 -04:00
Lance Edgar
5e339bb7ea Improve contact name handling for new custorder 2021-10-07 12:33:52 -04:00
Lance Edgar
c611eb3787 Clear out contact for custorder if user clicks "customer is unknown"
also show pending customer reference when viewing proper custorder
2021-10-06 18:43:52 -04:00
Lance Edgar
d933dd2723 Add support for "new customer" when creating new custorder 2021-10-06 18:22:29 -04:00
Lance Edgar
25a019cc12 Update changelog 2021-10-06 14:55:19 -04:00
Lance Edgar
9b40096bb7 Add "contact update request" workflow for new custorder batch
if user checks "please add phone to customer record" etc. then this
preference is stored in the batch params, and when batch is executed
that will "happen" (which may just mean someone gets email about it)
2021-10-06 14:49:13 -04:00
Lance Edgar
2fa7857daf Add "allow contact info choice" support for new custorder batch 2021-10-06 12:43:38 -04:00
Lance Edgar
0237d8c31a Add "restrict contact info" feature for new custorder batch
also add support for choosing from existing emails
2021-10-06 12:32:13 -04:00
Lance Edgar
9b6113a4c8 Show shipped quantities when viewing costing batch row
for lines which came from invoice, we should know those quantities,
but possibly *not* the received quantities, if e.g. the line item
wasn't matched w/ PO
2021-10-05 16:20:08 -04:00
Lance Edgar
def8ea7c15 Some tweaks for invoice costing batch views 2021-10-05 16:12:48 -04:00
Lance Edgar
d7c145ce39 Update changelog 2021-10-05 10:43:17 -04:00
Lance Edgar
e7fb1559f5 Refactor the Employee tab of profile view, per better patterns
learned some things from the Personal tab overhaul
2021-10-05 08:25:33 -04:00
Lance Edgar
6386b34516 Overhaul the "Personal" tab of profile view
should be much more useful now.. er, at least for those who track
contact info on the Person record, but not those who track on the
Customer record..
2021-10-04 21:21:34 -04:00
Lance Edgar
48864ab611 Put the View Profile button above Refresh 2021-10-04 12:40:35 -04:00
Lance Edgar
8e4079224f Add button to refresh contact info for new custorder
e.g. click that after changes are made in other screen / system
2021-10-04 12:39:30 -04:00
Lance Edgar
d4aef9ceac Fix contact phones data when new contact is assigned 2021-10-04 12:29:27 -04:00
Lance Edgar
1884edb334 Improve phone editing for new custorder
let user choose from existing phones, or add a new one.  not yet
implemented, they can check a box to add new phone to customer proper
in addition to setting it for the order
2021-10-04 12:25:41 -04:00
Lance Edgar
711e526822 Show "contact notes" when creating new custorder 2021-10-03 19:26:25 -04:00
Lance Edgar
272b0fd071 Update changelog 2021-10-01 18:38:24 -04:00
Lance Edgar
a7f4b2e6ef Refactor autocomplete view logic to leverage new "autocompleters"
finally!  this cleans up some view config and AFAIK there is no loss
in functionality etc.
2021-10-01 10:28:06 -04:00
Lance Edgar
e0dff55ffa Update changelog 2021-09-30 16:34:56 -04:00
Lance Edgar
b2e2b2e85e Fix one broken test; remove another
ugh what are these tests even accomplishing..
2021-09-30 16:17:55 -04:00
Lance Edgar
bbfffd45fc Initial (basic) views for invoice costing batches
still a bit of feature preview at the moment, but maybe is mostly done?
2021-09-29 17:27:20 -04:00
Lance Edgar
ed705ff867 Update changelog 2021-09-28 16:15:38 -04:00
Lance Edgar
03a569d9a3 Avoid "detach person" logic if not supported by view class 2021-09-28 16:12:33 -04:00
Lance Edgar
a6c89d7998 Show "missing" msg if no email, for new custorder 2021-09-28 16:10:04 -04:00
Lance Edgar
ad6562558d Improve phone/email handling when making new custorder
still needs more improvement, but this is a start
2021-09-27 18:04:07 -04:00
Lance Edgar
82074a37ba Update changelog 2021-09-27 13:28:26 -04:00
Lance Edgar
ab517d1199 Allow changing status, adding notes for customer order items 2021-09-27 13:25:02 -04:00
Lance Edgar
7c6c2f7ded Update changelog 2021-09-27 09:54:34 -04:00
Lance Edgar
65ac7e0c15 Add a dropdown of choices to the Department filter for Products grid 2021-09-27 09:46:31 -04:00
Lance Edgar
a52b5ec380 Overhaul new custorder so contact may be either Person or Customer
also make the handler responsible for (un)assigning contact
2021-09-27 09:22:06 -04:00
Lance Edgar
12310da09e Update changelog 2021-09-26 17:26:11 -04:00
Lance Edgar
8095f2c9ea Display the Store field for Customer Orders 2021-09-25 18:55:53 -04:00
Lance Edgar
3ece3303db Refactor several "field grids" per Buefy theme
e.g. the Users field when viewing a Role, and Vendor Sources panel
when viewing a Product
2021-09-25 18:54:33 -04:00
Lance Edgar
9fe1d4c596 Update changelog 2021-09-25 15:34:29 -04:00
Lance Edgar
0dc9793772 Add products row grid for misc. org table views 2021-09-25 15:27:43 -04:00
Lance Edgar
ec5ff8a788 Improve "employees" list when viewing a department, for buefy themes 2021-09-24 19:16:23 -04:00
Lance Edgar
3b6b1aa5b6 Invoke handler for customer autocomplete when making new custorder 2021-09-24 18:28:39 -04:00
Lance Edgar
57cb787b30 Add placeholder to customer lookup for new order
also hide phone field unless customer is identified
2021-09-24 17:28:14 -04:00
Lance Edgar
fbd12c7dfc Improve default autocomplete query logic, w/ multiple ILIKE
e.g. to search for customer first and/or last name
2021-09-24 17:17:19 -04:00
Lance Edgar
e6a92c5667 Update changelog 2021-09-22 18:30:39 -05:00
Lance Edgar
9365dd7b1a Add way to update Employee ID from profile view 2021-09-22 18:29:30 -05:00
Lance Edgar
af8bd246a9 Update changelog 2021-09-22 16:50:17 -05:00
Lance Edgar
87d8322b85 Add way to override grid action label rendering
so that custom HTML can be embedded in there somehow..
2021-09-22 16:42:49 -05:00
Lance Edgar
b229b409b0 Update changelog 2021-09-21 13:52:49 -05:00
Lance Edgar
d0a7a241b4 Misc. improvements for customer order views 2021-09-21 13:49:51 -05:00
Lance Edgar
8af247a7f6 Update changelog 2021-09-19 19:08:53 -05:00
Lance Edgar
d295cf04af Allow setting the "exclusive" sequence of grid filters
i.e. let caller specify that any not included, should be omitted
2021-09-19 18:36:25 -05:00
Lance Edgar
2188e91fae Update changelog 2021-09-16 11:10:21 -05:00
Lance Edgar
884b1e02a7 Invoke handler when request is made to merge 2 people 2021-09-15 19:01:53 -05:00
Lance Edgar
7e0713e22b Update changelog 2021-09-12 19:14:52 -05:00
Lance Edgar
25c1ae3c41 Add way to customize product autocomplete for new custorder 2021-09-09 19:15:08 -05:00
Lance Edgar
177286533d Update changelog 2021-09-09 17:22:00 -05:00
Lance Edgar
83c354b983 Set quantity type when viewing vendor lead times, order intervals 2021-09-09 17:07:46 -05:00
Lance Edgar
1ce60821bd Update changelog 2021-09-09 16:23:27 -05:00
Lance Edgar
97bdc3f785 Improve error handling for purchase batch
so error will display in browser when applicable
2021-09-09 12:00:13 -05:00
Lance Edgar
82e730c18e Add the Grid.remove() method, deprecate hide_column() etc.
this is more clear, and aligns with how Form works
2021-09-08 14:33:40 -05:00
Lance Edgar
4474f30718 Allow override of "create" permission in API 2021-09-03 18:26:55 -05:00
Lance Edgar
fa700d53ad Add /people API endpoint; allow for "native sort" 2021-09-03 16:26:15 -05:00
Lance Edgar
d671b18215 Update changelog 2021-09-01 12:20:45 -05:00
Lance Edgar
8169160b57 Allow "touch" action for employees 2021-08-31 22:05:02 -05:00
Lance Edgar
560575e53f Fix size of roles multi-select when editing user
i.e. for buefy themes
2021-08-31 22:04:37 -05:00
Lance Edgar
54f1a52ed0 Add hover text for vendor ID column of pricing batch row grid 2021-08-29 19:52:44 -05:00
Lance Edgar
c2ea1be83f Improve UI, customization hooks for new custorder batch
still not done yet, but a savepoint
2021-08-29 16:38:30 -05:00
Lance Edgar
4d742bacb1 Allow grid columns to be *invisible* (but still present in grid)
this can be useful when you need contextual data for a given row, for
sake of front-end UI features, but do not want to actually show the
extra data column(s)
2021-08-29 10:28:36 -05:00
Lance Edgar
fe584f193f Always show all grid actions...for now
we don't have a great way to accommodate too many actions; ideally
could hide some in a drawer, but for now we just show them all for
simplicity...
2021-08-28 18:45:31 -05:00
Lance Edgar
897bb177bc Make it easier to override rendering grid component in master/index
was needed so i could pass extra event handlers to it
2021-08-28 14:24:56 -05:00
Lance Edgar
445862d48d Update changelog 2021-08-26 11:55:09 -05:00
Lance Edgar
c3079fe899 Add before_render_index() customization hook for MasterView 2021-08-24 09:39:45 -05:00
Lance Edgar
3cf4c0f8e4 Require explicit opt-in for "clicking grid row checks box" feature
sometimes it makes sense *not* to enable that, in which case disabled
probably should be the default
2021-08-23 19:26:50 -05:00
Lance Edgar
a881b310bc Allow customization of row 'view' action url 2021-08-23 14:25:08 -05:00
Lance Edgar
ac133ce830 Expose "merge request tracking" feature for People data
more to come i'm sure, but this covers the basics
2021-08-19 18:11:15 -05:00
Lance Edgar
cf32d4235e Move "merge 2 people" logic into People Handler
view now delegates to handler, which lives in the rattail package
2021-08-18 19:21:21 -05:00
Lance Edgar
5836099746 Tweak how email preview is sent, and attempt "to" is displayed
latter only have been changed for the grid view.  preview now is sent
"properly" via the configured mail handler, which also means that an
attempt may be recorded (whereas previously it would not be)
2021-08-16 19:29:48 -05:00
Lance Edgar
a10de791a1 Update changelog 2021-08-04 13:01:09 -05:00
Lance Edgar
90af8f91b8 Let feedback forms define their own email key
so multiple recipient options may be presented to user, e.g. in public
frontend
2021-08-02 18:26:15 -05:00
Lance Edgar
8884d28306 Update changelog 2021-07-15 14:15:19 -05:00
Lance Edgar
4addedef6e Expose pack_size for delproduct batch 2021-07-15 14:13:01 -05:00
Lance Edgar
8eee4a1cf0 Set UPC renderer for delproduct batch row 2021-07-15 13:29:31 -05:00
Lance Edgar
fb156d2e29 Update changelog 2021-06-18 17:53:27 -05:00
Lance Edgar
35aab87fdc Include "is/not null" filters for GPC fields 2021-06-18 17:39:14 -05:00
Lance Edgar
5cdd09020d Update changelog 2021-06-15 21:35:58 -05:00
Lance Edgar
2e561f1a4a Add 'v' prefix for release package diff links
at least i think that is needed...
2021-06-15 21:34:22 -05:00
Lance Edgar
a1d6403b1b Update changelog 2021-06-15 15:51:57 -05:00
Lance Edgar
b2bda5e31d Allow config to set favicon and header image
it already could set "main" image, shown in home and login pages
2021-06-15 15:51:11 -05:00
Lance Edgar
add4337d11 Update changelog 2021-06-11 13:34:40 -05:00
Lance Edgar
31941c00bf Allow generating project which integrates w/ LOC SMS 2021-05-24 16:21:08 -05:00
Lance Edgar
d1a35a4d58 Allow direct creation of new label batches
now technically this is allowed on desktop, but probably makes more
sense on mobile via api
2021-05-18 12:46:45 -05:00
Lance Edgar
949b9d64bf Allow customization of rendering version diff values 2021-05-14 12:13:23 -05:00
Lance Edgar
00615bea97 Update changelog 2021-05-03 12:36:41 -05:00
Lance Edgar
91db10b10c Tweak tox config a bit per broken tests 2021-04-28 19:07:42 -05:00
Lance Edgar
eede391be8 Freeze pyramid version at 1.x
we need to get to python3 before can get latest cornice, and until then we
can't get latest pyramid either
2021-04-28 19:07:15 -05:00
Lance Edgar
544f05a5a8 Add csrftoken to TailboneForm js
ugh..for now at least
2021-04-28 14:07:24 -05:00
Lance Edgar
661d536e9d Highlight "has inventory" rows for delete item batch
also pass list of such rows to template context
2021-04-28 14:06:35 -05:00
Lance Edgar
60fe7cf29c Update changelog 2021-04-12 11:52:54 -05:00
Lance Edgar
2d75409757 Accept any decimal numbers for API inventory batch counts
i.e. don't assume integer values
2021-04-12 11:36:24 -05:00
Lance Edgar
c48371ca2a Make it easier to extend "common" API views 2021-04-07 17:04:52 -05:00
Lance Edgar
6c5377fadc Show current price date range as hover text, for products grid 2021-04-07 12:29:33 -05:00
Lance Edgar
4cf61a92cf Update changelog 2021-03-30 11:50:20 -05:00
Lance Edgar
2332cae09b Expose the new Store.archived flag 2021-03-19 10:39:25 -05:00
Lance Edgar
ee65d08d81 Catch and show error, if one happens when making batch from product query 2021-03-19 10:38:56 -05:00
Lance Edgar
e19119194d Update changelog 2021-03-11 11:49:18 -06:00
Lance Edgar
e4e0d81f6e Fix enum display for customer order status 2021-03-11 08:47:27 -06:00
Lance Edgar
70c5e36ccb Expose new fields for Trainwreck 2021-03-10 07:25:25 -06:00
Lance Edgar
7532dc5117 Add support for inactivity_months field for delete product batch 2021-03-09 11:44:56 -06:00
Lance Edgar
059b24fac7 Update changelog 2021-03-05 12:51:55 -06:00
Lance Edgar
97e1700cf9 Expose date_created for delete product batches 2021-03-05 12:51:55 -06:00
Lance Edgar
241747b967 Allow per-user stylesheet for Buefy themes
there is not yet a way for user to select from available options though
2021-03-05 12:02:32 -06:00
Lance Edgar
a933fc836f Update changelog 2021-03-02 09:30:41 -06:00
Lance Edgar
492546d0f6 Add hover text for subdepartment name, in pricing batch row grid 2021-03-02 09:26:36 -06:00
Lance Edgar
ba790823ed Highlight delete product batch rows with "pending customer orders" status 2021-03-01 17:34:24 -06:00
Lance Edgar
637c249c36 Handle row click as if checkbox was clicked, for checkable grid
should be more convenient since the checkbox is a rather small target as
compared to the row itself.

this also brings in newer Buefy 0.8.6 b/c it includes "shift+click" behavior
for the checkbox:

- https://github.com/buefy/buefy/issues/535
- https://github.com/buefy/buefy/pull/1894
2021-02-26 21:49:58 -06:00
Lance Edgar
abfe8bc648 Fix message recipients for Reply / Reply-All, with Buefy themes 2021-02-24 17:53:48 -06:00
Lance Edgar
216807503a Avoid encoding values as string, for integer grid filters
grid filter for Catapult Transaction "Status" was not working right b/c that is
an integer in the db, but we were passing encoded string value to SA / query
2021-02-20 08:45:15 -06:00
Lance Edgar
89bb0aa56d Use end time as default filter, sort for Trainwreck 2021-02-18 20:02:53 -06:00
Lance Edgar
26d7ab080f Update changelog 2021-02-18 11:51:05 -06:00
Lance Edgar
9ad64ba5e1 Add support for "default" trainwreck model
per rattail changes
2021-02-17 20:18:45 -06:00
Lance Edgar
793022b92f Misc. tweaks for vendor catalog batch
per rattail changes, in particular for sake of Corporal, to allow for
non-native vendor and product associations
2021-02-15 12:57:35 -06:00
Lance Edgar
ff904d840f Tweaks per "delete products" batch 2021-02-13 12:29:43 -06:00
Lance Edgar
34623a7307 Add special "equal to any of" verb for UPC-related grid filters 2021-02-12 14:05:44 -06:00
Lance Edgar
89f0336af9 Add special "contains any of" verb for string-based grid filters 2021-02-12 13:57:54 -06:00
Lance Edgar
1420a33649 Allow customization of main Buefy CSS styles, for falafel theme 2021-02-11 15:57:18 -06:00
Lance Edgar
a23eb3f32d Update changelog 2021-02-10 11:53:40 -06:00
Lance Edgar
eaf929474f Add styles for field labels in profile view 2021-02-10 11:35:05 -06:00
Lance Edgar
f58b065316 Make errors more obvious, when running batch commands as subprocess
admin still must consult logs to determine cause, but at least UI won't hang
2021-02-09 14:24:05 -06:00
Lance Edgar
e462e41ae1 Cleanup default display for vendor catalog batches
expose description, notes etc.
2021-02-09 14:22:07 -06:00
Lance Edgar
5969515f25 Render batch execution description as markdown 2021-02-09 14:21:07 -06:00
Lance Edgar
cc2308c399 Fix some permission bugs when showing batch tools etc. 2021-02-09 12:19:26 -06:00
Lance Edgar
85403dfa5e Update changelog 2021-02-04 16:45:24 -06:00
Lance Edgar
8f69b07ee2 Fix bug when editing a Person 2021-02-04 16:44:47 -06:00
Lance Edgar
562d7b48bc Update changelog 2021-02-04 11:04:00 -06:00
Lance Edgar
63350469d0 Prevent updates to batch rows, if batch is immutable
probably need a lot more support for this elsewhere; this is all i needed for
the moment though..
2021-02-02 18:58:46 -06:00
Lance Edgar
f93fd7aefa Fix display of handheld batch links, when viewing label batch 2021-02-02 14:48:34 -06:00
Lance Edgar
0128690da8 Update references to vendor invoice batches
per table/model rename
2021-02-02 13:49:10 -06:00
Lance Edgar
9b76e23354 Update references to vendor catalog batches
per table/model rename
2021-02-02 13:28:56 -06:00
Lance Edgar
e3bf7f2bb2 Add stub methods for MasterView.template_kwargs_view() etc.
otherwise subclass has to consider, can i call super() or not?  it still does
for some other views, but at least create/view/edit are common enough that it
should always be able to call super() without concern for those
2021-02-02 10:57:58 -06:00
Lance Edgar
0209957def Fix config defaults for PurchaseView
so can customize that more easily
2021-02-01 17:15:39 -06:00
Lance Edgar
1cdb11c88c Update changelog 2021-02-01 13:59:37 -06:00
Lance Edgar
8e9c66c0ea Add icon for Help button 2021-02-01 13:58:10 -06:00
Lance Edgar
fe80028c07 Add support for "nested" menu items
some menus were just getting too long, so this gives us a way to collapse
certain items, which user can expand as needed
2021-02-01 13:58:08 -06:00
Lance Edgar
329e75ee82 Add initial "scanning" feature for Ordering Batches 2021-01-31 21:51:46 -06:00
Lance Edgar
801c56f06e More tweaks for receiving batch workflows
now first step requires choice of vendor and workflow.  supports receiving from
PO at least for native use case.
2021-01-31 12:10:44 -06:00
Lance Edgar
a2b7f882bc Split "new receiving batch" process into 2 steps: choose, create
so that the form used to create the batch can be made custom per-workflow, and
it won't have to think about any other workflows since we just use one form at
a time for that
2021-01-30 19:54:38 -06:00
Lance Edgar
ff2e39f67a Make handler responsible for possible receiving modes 2021-01-30 16:56:30 -06:00
Lance Edgar
708641a8f1 Purge things for legacy (jquery) mobile, and unused template themes
gosh it feels good to get rid of this stuff...  fingers crossed that nothing
was broken, but am thinking it's safe
2021-01-30 15:52:47 -06:00
Lance Edgar
fac00e6ecd Misc. improvements for ordering batches, purchases
also we now show handler's description when executing batch
2021-01-30 13:17:08 -06:00
Lance Edgar
e1e3301fc1 Undo recent base.css changes for <p> tags
turns out i should be doing `<p class="block">` when i want spacing
2021-01-30 13:12:04 -06:00
Lance Edgar
1a18147971 Normalize naming of all traditional master views
whoops, missed one..
2021-01-28 17:18:45 -06:00
Lance Edgar
719e7c8441 Normalize naming of all traditional master views
such names should never use plural forms.  for now what plural forms were
previously in use, should still work.  ideally can remove those at some point
2021-01-28 16:32:25 -06:00
Lance Edgar
3ad19d05e5 Update changelog 2021-01-28 14:56:13 -06:00
Lance Edgar
fb7a572519 Use "People Handler" to update names, when editing person or user 2021-01-28 14:34:18 -06:00
Lance Edgar
b3867d9c89 Tweak how vendor link is rendered for readonly field 2021-01-27 22:24:23 -06:00
Lance Edgar
797a65e9c8 Update changelog 2021-01-27 14:16:11 -06:00
Lance Edgar
40b4596df4 Hopefully fix package links for upgrade diff
why in the F doesn't a hyphen work for this?
2021-01-27 09:01:42 -06:00
Lance Edgar
5e27ceedce Hide "collect from wild" button for UOMs unless user has permission 2021-01-27 08:56:38 -06:00
Lance Edgar
a927827e33 Add changelog link for Theo, in upgrade package diff 2021-01-27 08:52:38 -06:00
Lance Edgar
d1d64ec96c Fix some UOM bugs for new customer order 2021-01-27 08:50:20 -06:00
Lance Edgar
480d878db8 Initial support for adding items to, executing customer order batch 2021-01-26 20:10:05 -06:00
Lance Edgar
475ab3013f Update changelog 2021-01-25 11:43:35 -06:00
Lance Edgar
b55ecc3898 Tweak label style, per recent base.css change 2021-01-23 21:08:00 -06:00
Lance Edgar
a327dfab7c Add basic web API app, for simple use cases
plus some functions which make it easier to customize
2021-01-23 14:11:05 -06:00
Lance Edgar
649ac12cdd Add woocommerce package links for sake of upgrade diff view 2021-01-21 17:48:09 -06:00
Lance Edgar
dde6195f38 Add master view for Units of Measure mapping table
w/ support for "collect from wild" tool
2021-01-21 17:39:16 -06:00
Lance Edgar
0035a4129a Add custom base.css for falafel theme
this copies from bobcat/base.css and just adds margin-bottom for p tag.

this was done b/c in certain Buefy dialogs etc. the p tags are too close
together.  not sure if this change breaks anything else yet...
2021-01-21 17:37:17 -06:00
Lance Edgar
523ea6e0df Add some generic render methods to MasterView 2021-01-20 21:56:20 -06:00
Lance Edgar
59167278d4 Set self.model when constructing new View 2021-01-20 20:29:07 -06:00
Lance Edgar
f480c046f6 Add views for "delete product" batch 2021-01-19 12:18:56 -06:00
Lance Edgar
af99ca7905 Make 'new-report' the default feature to be generated 2021-01-19 11:25:02 -06:00
Lance Edgar
850b6f71dd Add basic support for defining columns when generating new table feature 2021-01-18 00:32:30 -06:00
Lance Edgar
ca602ff845 Add feature to generate new features...
at least that's the idea.  guess we'll see where this goes
2021-01-17 12:08:33 -06:00
Lance Edgar
ce629c91bb Add CSS styles for 'codehilite' a la Pygments
this is in anticipation for displaying syntax-highlighted code snippets from
markdown source.  this CSS file was generated according to instructions at
https://python-markdown.github.io/extensions/code_hilite/
2021-01-17 11:15:24 -06:00
Lance Edgar
a3cbb24892 Add variant transaction logic per zope.sqlalchemy 1.1 changes
without this we can't use zope.sqlalchemy 1.1 due to error
2021-01-16 14:13:34 -06:00
Lance Edgar
db7d021133 Allow newer zope.sqlalchemy package
not sure of any real benefit, but could not find any reason to cap at such an
old version, so let's relax it
2021-01-14 12:47:37 -06:00
Lance Edgar
5e9264bbef Don't create new person for new user, if one was selected 2021-01-14 12:10:35 -06:00
Lance Edgar
758d5e6f4c Update changelog 2021-01-10 21:24:59 -06:00
Lance Edgar
4d8e29c892 Add basic support for "download" and "rawbytes" API views 2021-01-06 13:12:27 -06:00
Lance Edgar
fd1342c605 Try to show existing filename, for upload widget 2021-01-05 18:53:00 -06:00
Lance Edgar
e548b72323 Fix some deform template comments 2021-01-05 18:19:27 -06:00
Lance Edgar
ad859d4bef Allow specifying the size of a file, for readable_size() method
sometimes the file bytes are stored in DB instead of on disk
2021-01-04 13:22:44 -06:00
Lance Edgar
483a47ed43 Allow changing protected user password when acting as root 2021-01-02 18:49:20 -06:00
Lance Edgar
9c026c1dd9 Show node title in header for Login, About pages 2021-01-02 18:48:45 -06:00
Lance Edgar
6a0bcdaa82 Update changelog 2020-12-16 14:53:17 -06:00
Lance Edgar
cc833c52b6 Add common "form poster" logic, to make CSRF token/header names configurable
also refactor the Feedback logic to use it
2020-12-16 14:28:41 -06:00
Lance Edgar
a801672821 Improve error handling for feedback form
also make sure the message doesn't self-destruct when closing the dialog
2020-12-16 12:47:45 -06:00
Lance Edgar
20f3d001c4 Update changelog 2020-12-15 20:08:02 -06:00
Lance Edgar
058677adec Tweak spacing for header logo + title, in falafel theme
those were just too close together, this should fix.

nb. i am unclear if everything in layout.css is actually being used..?
2020-12-15 19:09:17 -06:00
Lance Edgar
95dd8d83dc Hopefully temporary version cap for deform
getting the following error w/ v2.0.15:

```
  File "/srv/envs/XXX/lib/python3.7/site-packages/deform/field.py", line 452, in get_widget_requirements
    requirements = [req for req in self.widget.requirements] + [
TypeError: 'NoneType' object is not iterable
```
2020-12-14 15:13:17 -06:00
Lance Edgar
8ff590e43f Expose "commodity" filter by default, for IFPS PLU codes 2020-12-07 19:01:43 -06:00
Lance Edgar
42eb72422d Add very basic support for merging 2 People
this is not very complete, but was enough for what i needed at the moment.
almost seems like incomplete feature may be worse than none at all?  but then
again some sort of default starting point is nice i guess...
2020-12-07 11:40:26 -06:00
Lance Edgar
ac5139b7c4 Add basic views for IFPS PLU Codes 2020-12-06 19:36:32 -06:00
Lance Edgar
3250347df1 Add sqlalchemy version cap for tox coverage, docs
this is of course just kicking the can down the road a bit for now...really
need to get the latest zope.sqlalchemy instead...
2020-12-04 18:46:58 -06:00
Lance Edgar
2d8d4659b3 Use python3 when building coverage, docs targest via tox
at least i think that's what this does..hopefully it works
2020-12-04 18:27:47 -06:00
Lance Edgar
efbc6df199 Tweak tox test config for py27
to make buildbot happy...
2020-12-04 18:06:53 -06:00
Lance Edgar
3ae47ba1e5 Update changelog 2020-12-04 17:50:56 -06:00
Lance Edgar
a204e78e3a Assume composite PK when fetching instance for master view
i.e. stop trying a simple get() which would assume not only a simple PK, but
also assumes the PK is same as defined by the class mapper.  in some cases it
may be helpful to use a different PK from what mapper defines
2020-12-04 15:26:50 -06:00
Lance Edgar
0220e401cd Add "is empty" and related verbs, for "string" type grid filters 2020-12-04 15:26:21 -06:00
Lance Edgar
2ad0223e9a Add the "Employee Status" filter to People grid 2020-12-02 14:03:19 -06:00
Lance Edgar
04ba14fcd7 Update changelog 2020-12-01 20:05:19 -06:00
Lance Edgar
e5d5850327 Add "generic" Employee tab feature, for profile view
i.e. this now exposes a way to begin/end employment status for a person, and
invokes the "employment handler" accordingly
2020-11-30 18:56:06 -06:00
Lance Edgar
c87a452471 Tweak how an "enum" grid filter is initialized
wasn't working quite right for Buefy theme
2020-11-25 18:49:02 -06:00
Lance Edgar
3cd5fa7f4a Misc. tweaks to vendor catalog views
for sake of titeship
2020-10-23 22:08:43 -05:00
Lance Edgar
ee3d32d60a Update changelog 2020-10-13 16:59:54 -05:00
Lance Edgar
d80844c1ed Tweak how global DB session is created
no need to specify "record changes" flag here
2020-10-13 16:59:51 -05:00
Lance Edgar
9af7e38219 Update changelog 2020-09-29 18:07:10 -05:00
Lance Edgar
dc1f613bc2 Fix "refresh results" for batches, in Buefy theme 2020-09-28 13:23:01 -05:00
Lance Edgar
e0d1e39824 Add feature to "download rows for results" in master index view 2020-09-28 12:45:46 -05:00
Lance Edgar
bcb4bda7e6 Fix bug in App Settings when list value is "missing" 2020-09-26 15:00:42 -05:00
Lance Edgar
37a05155e5 Add support for "list" type of app settings (w/ textarea) 2020-09-25 23:23:01 -05:00
Lance Edgar
18b9f43eaa Update changelog 2020-09-25 17:55:39 -05:00
Lance Edgar
20c31cbb07 Fix grid bug when paginator is not involved 2020-09-25 16:05:07 -05:00
Lance Edgar
5b05f9426f Allow alternate engine to act as 'default' when multiple are available 2020-09-25 16:04:32 -05:00
Lance Edgar
9dc9bd162f Update changelog 2020-09-24 13:54:46 -05:00
Lance Edgar
c79b63e270 Fix bug when fetching partial versions data grid
e.g. when requesting new page of data
2020-09-23 20:42:43 -05:00
Lance Edgar
2d699b3e43 Add global help URL to login template 2020-09-23 18:32:53 -05:00
Lance Edgar
24cc4b4272 Change how we protect certain person, employee records 2020-09-23 16:39:44 -05:00
Lance Edgar
746db72046 Add user_is_protected() method to core View class
also, don't allow "protected" users to change their own password
2020-09-23 16:28:54 -05:00
Lance Edgar
77fa2a78d4 Update changelog 2020-09-22 19:40:47 -05:00
Lance Edgar
af11511d24 Remove unwanted columns for default Products grid 2020-09-20 23:35:07 -05:00
Lance Edgar
6709d97abc Only show node title in home page header, for buefy themes
it's just redundant for the old jquery theme
2020-09-20 19:57:27 -05:00
Lance Edgar
4b4faae009 Show node title in header, for home page 2020-09-20 19:55:33 -05:00
Lance Edgar
f37a9963f6 Add some more field hints when generating 'fabric' project 2020-09-20 18:04:44 -05:00
Lance Edgar
2d29245037 Don't expose "timezone" for input when generating 'fabric' project
static default is good enough for that
2020-09-20 18:01:23 -05:00
Lance Edgar
d146514c39 Prompt user if they try to send email preview w/ no address 2020-09-20 17:41:04 -05:00
Lance Edgar
149ae4b71c Avoid unhelpful error when perm check happens for "re-created" DB user
kind of an edge case, should only apply to dev
2020-09-20 16:32:44 -05:00
Lance Edgar
711ed947a3 Add "worksheet file" pattern for editing batches
lets user download a worksheet, edit, then upload back to update the batch
2020-09-18 12:17:04 -05:00
Lance Edgar
37a60592f6 Add 'warning' class for 'delete' action in b-table grid 2020-09-17 13:54:43 -05:00
Lance Edgar
3ac8ca90ce Update changelog 2020-09-16 22:23:28 -05:00
Lance Edgar
cc5d0ed3c6 Tweak option label for Catapult when generating project 2020-09-16 22:22:37 -05:00
Lance Edgar
652e951f89 Add support for generating new 'fabric' project 2020-09-16 19:25:03 -05:00
Lance Edgar
dd2b634ed2 Remove some custom field labels for Vendor
should use `labels` dict if really needed, but they don't seem to be
2020-09-15 18:34:00 -05:00
Lance Edgar
32cfe58601 Allow custom props for TailboneForm component 2020-09-15 09:33:27 -05:00
Lance Edgar
e6da1152ca Update changelog 2020-09-14 13:10:12 -05:00
Lance Edgar
3eb929aa13 Hide the 'byjove' option for generating new project
until we actually support it
2020-09-08 19:05:36 -05:00
Lance Edgar
7df5838bc0 Require permission to generate a new project 2020-09-08 19:01:34 -05:00
Lance Edgar
f8d9b0803c Add some help text to new project form, etc. 2020-09-08 14:10:49 -05:00
Lance Edgar
cf613ab34a Split "new project" forms into multiple sections 2020-09-06 14:47:14 -05:00
Lance Edgar
cebe2f8adc Add basic/incomplete support for generating new 'byjove' project
just wanted to get the placeholder in here for now
2020-09-06 13:54:11 -05:00
Lance Edgar
bd19d7c231 Add view for generating new project from template
this was copied as-is from titeship
2020-09-06 12:36:20 -05:00
Lance Edgar
1283a794df Overhaul project changelog links for upgrade pkg diff table 2020-09-05 17:48:34 -05:00
Lance Edgar
fdcf23f65f Stop including 'complete' filter by default for purchasing batches 2020-09-04 20:30:33 -05:00
Lance Edgar
24516b81cb Update changelog 2020-09-02 13:44:13 -05:00
Lance Edgar
527bc04998 Expose Product.average_weight field 2020-09-02 13:38:18 -05:00
Lance Edgar
72177e8ab5 Improve auto-handling of "local" timestamps
for non-Rattail DBs where timestamps are local instead of UTC
2020-09-02 11:30:02 -05:00
Lance Edgar
d2d632092b Add support for batch execution options in Buefy themes
i.e. from "view batch" page
2020-08-23 13:53:55 -05:00
Lance Edgar
7a0f975b31 Fix spacing between components in "grid tools" section 2020-08-23 11:26:29 -05:00
Lance Edgar
026dc6309c Fix "execute results" batch template logic for Buefy themes 2020-08-23 11:23:22 -05:00
Lance Edgar
5af26a57f6 Improve layout for "download results" modal 2020-08-22 16:11:29 -05:00
Lance Edgar
922cbe4451 Add new/flexible "download results" feature 2020-08-22 15:24:32 -05:00
Lance Edgar
43472c7eb6 Use utf8 encoding when downloading results as CSV 2020-08-21 18:35:27 -05:00
Lance Edgar
1b7612ffb0 Add progress for generating "results as CSV" file to download 2020-08-21 18:28:36 -05:00
Lance Edgar
7d8c57170f Add progress for generating "results as XLSX" file to download 2020-08-21 17:42:01 -05:00
Lance Edgar
32b98ae818 Update changelog 2020-08-21 13:18:08 -05:00
Lance Edgar
7f8271e215 Don't require department by default, for new purchasing batch 2020-08-21 12:28:01 -05:00
Lance Edgar
58362ae858 Add buefy theme support for ordering worksheet 2020-08-20 17:56:19 -05:00
Lance Edgar
7a01cb8873 Allow for unknown/missing "changed by" user for product price history 2020-08-20 17:51:59 -05:00
Lance Edgar
374f20ff1a Remove <section> tag around "no results" for minimal b-table 2020-08-20 17:51:21 -05:00
Lance Edgar
9620fc5a83 Add config for "global" help URL 2020-08-20 17:51:00 -05:00
Lance Edgar
cfa9c95814 Tweaks for export views, to make more generic 2020-08-19 17:23:23 -05:00
Lance Edgar
96185d17bd Update changelog 2020-08-17 21:56:09 -05:00
Lance Edgar
b5028ab2d0 Add pagination to price, cost history grids for product view 2020-08-17 21:38:12 -05:00
Lance Edgar
a038f2a98d Make "download row results" a bit more generic
to handle non-native table/rows, w/ non-uuid key
2020-08-16 16:57:06 -05:00
Lance Edgar
7924502b65 Update changelog 2020-08-13 12:55:17 -05:00
Lance Edgar
aac0e7d35c Tweak config methods for customer master view 2020-08-11 18:28:03 -05:00
Lance Edgar
dca890f169 Update changelog 2020-08-10 19:37:29 -05:00
Lance Edgar
d0e7f7dda2 Improve rendering of true_margin column for pricing batch row grid 2020-08-09 15:50:25 -05:00
Lance Edgar
b4ea1489a7 Update changelog 2020-08-09 15:06:41 -05:00
Lance Edgar
ca31af196f Expose user reference(s) for employees 2020-08-09 14:39:31 -05:00
Lance Edgar
163134326a Coalesce on User.active when merging 2020-08-09 14:32:16 -05:00
Lance Edgar
4371574403 Add model to global template context, plus h.maxlen()
sometimes it's nice to just add a `maxlength="100"` or whatever to an input tag
within some random template.  that should "just be possible" with no extra
effort
2020-08-09 14:03:28 -05:00
Lance Edgar
7d158e58b5 Add protected_usernames() config function 2020-08-06 02:04:17 -05:00
Lance Edgar
808e737202 Add basic/unfinished "new customer order" page/feature
so far creates the order batch, and can set some customer info
2020-08-02 20:59:16 -05:00
Lance Edgar
c32f47ba95 Tweak the buefy autocomplete component a bit
to better support staying in sync w/ data on the caller/parent side
2020-08-02 19:13:40 -05:00
Lance Edgar
493785591c Add basic web views for "new customer order" batches 2020-08-02 15:27:10 -05:00
Lance Edgar
9a2a6bbc9f Fix missing scrollbar when version diff table is too wide for screen
at least, this seems to fix.  not sure if/why we shouldn't apply this style
globally always, but playing it safe for now
2020-08-01 22:18:54 -05:00
Lance Edgar
6bd049e0bb Update changelog 2020-07-30 16:39:44 -05:00
Lance Edgar
8ea379bbff Add more customization hooks for making grid actions in master view 2020-07-30 16:38:03 -05:00
Lance Edgar
dfeb14e7a8 Update changelog 2020-07-29 21:59:49 -05:00
Lance Edgar
cf8072e402 Use handler do_delete() method when deleting a batch
even though it seems we have 2 calls to `session.delete(batch)` now, but things
are still working..fingers crossed
2020-07-29 21:58:31 -05:00
Lance Edgar
e0ce7e8505 Add self.cloning convenience indicator for master view 2020-07-28 21:19:47 -05:00
Lance Edgar
d196044d11 Update changelog 2020-07-26 14:02:28 -05:00
Lance Edgar
0798102ba5 Tweak "coalesce" logic for merging field data 2020-07-22 19:53:35 -05:00
Lance Edgar
4c3112b85b Fix another pagination bug with buefy grid tables
hopefully this gets it all working right...ugh
2020-07-19 18:43:31 -05:00
Lance Edgar
925e5e0731 Fix permissions wiget bug when creating new role 2020-07-16 19:43:33 -05:00
Lance Edgar
3819dd9469 Fix pagination sync issue with buefy grid tables 2020-07-15 22:05:57 -05:00
Lance Edgar
0dfe52a42d Don't allow "execute results" for any batches by default
custom app must always explicitly opt-in to that feature
2020-07-07 19:23:52 -05:00
Lance Edgar
ca64d52021 Make field list explicit for Store views 2020-07-05 00:21:00 -05:00
Lance Edgar
793d80f092 Make field list explicit for Department views 2020-07-04 11:44:09 -05:00
Lance Edgar
4f2f192783 Revert "Freeze version for 'Chameleon' dependency"
This reverts commit aac9bad7ec.

all should be good now, per new 'deform' release
2020-07-03 19:14:30 -05:00
Lance Edgar
6577b3752f Avoid latest SQLAlchemy-Utils when running tests for python2.7 2020-07-02 12:42:42 -05:00
Lance Edgar
66bf11e893 Tweak field label for Product.item_id 2020-06-29 16:57:05 -05:00
Lance Edgar
aac9bad7ec Freeze version for 'Chameleon' dependency
pending the fix, which should come w/ next 'deform' release
2020-06-29 13:07:49 -05:00
Lance Edgar
bea671987c Update changelog 2020-06-24 12:07:46 -05:00
Lance Edgar
e943a1cd44 Convert mako directories to list, if it's a string
so we can push a new path to it, for sake of theme
2020-06-24 11:36:58 -05:00
Lance Edgar
c1a2bb978c Use byte string filters for row grid too
if master view needs them at all, chances are they should apply to row grid as
well as main grid
2020-06-24 10:53:43 -05:00
Lance Edgar
c7c3dea6b2 Improve support for composite key in master view 2020-06-22 18:26:43 -05:00
Lance Edgar
bb11263bad Tweak how we freeze column for role/perm matrix 2020-06-22 16:21:45 -05:00
Lance Edgar
e5f0831369 Add ability to download roles / permissions matrix as Excel file 2020-06-22 16:00:33 -05:00
Lance Edgar
6463df7224 Add dropdown, autohide magic when editing Role permissions
only for Buefy theme though
2020-06-22 14:59:17 -05:00
Lance Edgar
dc81e5b5c5 Update changelog 2020-06-17 12:45:00 -05:00
Lance Edgar
31df41283c Don't allow edit/delete of rows, if master view says so
also fix "back to parent" link when viewing row
2020-06-12 18:40:10 -05:00
Lance Edgar
abea50427e Update changelog 2020-05-27 15:25:52 -05:00
Lance Edgar
a8a79ee326 Let each grid component have a custom name, if needed 2020-05-20 19:19:06 -05:00
Lance Edgar
8683e2a4c2 Cap version for 'cornice' dependency
their 5.0 release drops support for python 2.x but we can't do that yet
2020-05-20 16:15:05 -05:00
Lance Edgar
3bb0c8468b Update changelog 2020-05-20 15:53:49 -05:00
Lance Edgar
b5f9c8e358 Sort available reports by name, if handler doesn't specify
also add basic support for "decimal" params
2020-05-19 12:42:07 -05:00
Lance Edgar
2139fea3d0 Expose "shelved" field for pricing batches 2020-05-18 14:42:02 -05:00
Lance Edgar
b13cae11fa Update changelog 2020-05-15 10:56:56 -05:00
Lance Edgar
2ac2a98727 Don't auto-include "Guest" role when finding roles w/ permission X
otherwise "all" roles are returned when checking for a perm which Guest role
does have granted
2020-05-14 22:07:34 -05:00
Lance Edgar
5f2dd31485 Parse pip requirements file ourselves, instead of using their internals
that problem just kept getting worse, so i stole this solution partly from:

77879cf341
2020-05-14 21:53:41 -05:00
Lance Edgar
f0224144b7 Update changelog 2020-04-07 21:19:48 -05:00
Lance Edgar
3a6ced388a Allow the home page to include quickie search
make it easier for any "non-master" view to do so
2020-04-07 13:44:13 -05:00
Lance Edgar
4c3b189108 Update changelog 2020-04-06 13:20:44 -05:00
Lance Edgar
cc96d9877b Defer fetching price, cost history when viewing product details
user can ask for that history if they need it, but it's too expensive to always
fetch by default for initial page load
2020-04-06 13:12:38 -05:00
Lance Edgar
f2b5e2302a Delete some unwanted tests; delay import for tempmon session
view config can now depend on rattail config, and tests don't like that... but
they didn't really do anything that useful anyway i think
2020-04-04 21:44:01 -05:00
Lance Edgar
d9f6a7201e Let config totally disable the old/legacy jQuery mobile app 2020-04-04 20:51:49 -05:00
Lance Edgar
d2c4791611 Add basic dashboard page for TempMon
only the older jQuery theme is supported for now...
2020-04-04 19:47:28 -05:00
Lance Edgar
0fbc8c9247 Add initial API views for inventory batches 2020-03-29 16:31:16 -05:00
Lance Edgar
e9fc9ccbf7 Use "quick entry" logic from batch handler, for mobile inventory
pretty sure desktop version still needs cleanup, but later...
2020-03-29 15:20:34 -05:00
Lance Edgar
71a9010579 Make handler responsible for locating product for inventory batch 2020-03-29 15:20:34 -05:00
Lance Edgar
0e7835e2d9 Make inventory batch handler responsible for finding row for product 2020-03-29 15:20:32 -05:00
Lance Edgar
069eac1cf6 Add temporary method for inventory batch view
calling code should invoke handler directly instead of using this method, but
for now we need it to exist
2020-03-29 14:30:48 -05:00
Lance Edgar
dc4531f545 Let inventory batch handler decide which count modes are available 2020-03-29 13:37:50 -05:00
Lance Edgar
6a58f5f5d3 Let inventory batch handler decide if products should be aggregated 2020-03-29 13:33:38 -05:00
Lance Edgar
12b567d3d2 Let inventory batch handler decide what to do about unknown product scan 2020-03-29 13:09:14 -05:00
Lance Edgar
2532fcbea2 Let inventory batch handler decide if case input is allowed 2020-03-29 13:04:11 -05:00
Lance Edgar
0704717ec5 Let inventory batch handler declare which count modes are allowed
preparing for API/mobile usage
2020-03-29 12:46:41 -05:00
Lance Edgar
242e14e8a9 Allow bulk-delete for Inventory Batches 2020-03-29 12:07:42 -05:00
Lance Edgar
35bef2c3dd Move inventory batch view to its proper location
but keep "inventory adjustment reasons" where it was; that also is proper
2020-03-29 12:05:05 -05:00
Lance Edgar
65f41480eb Allow bulk-delete, merge for Brands table 2020-03-27 18:15:33 -05:00
Lance Edgar
aaabde5c5a Add link to generate new report, when viewing one 2020-03-26 15:30:14 -05:00
Lance Edgar
89ffbd6efc Add support for "choice" widget, for report params
also add support for default value, for a param
2020-03-26 15:24:16 -05:00
Lance Edgar
2a4832f9b9 Declare the v-model for "dynamic select" widget 2020-03-24 18:19:25 -05:00
Lance Edgar
c14ecd2948 Add helper function, get_csrf_token() 2020-03-24 18:19:05 -05:00
Lance Edgar
febe651e31 Stop raising an error if view doesn't define row grid columns
just show whatever is gonna show by default; they can edit list if they want
2020-03-23 22:35:24 -05:00
Lance Edgar
af07b433ad Fix rendering of batch ID in forms 2020-03-23 21:41:44 -05:00
Lance Edgar
13802c49a8 Add "generic" render_id_str() method to MasterView
not sure how useful, but maybe
2020-03-23 21:25:43 -05:00
Lance Edgar
eaeda6ca36 Fix row status filter for Import/Export batches
per Buefy theme
2020-03-23 20:55:46 -05:00
Lance Edgar
af4be59fe0 Add "local only" column to Users grid
but only show if user has perm of course
2020-03-23 20:24:03 -05:00
Lance Edgar
917d5ab3fa Expose the Role.notes field for view/edit
also add a simple "<pre> with sans-serif font" renderer
2020-03-23 19:59:28 -05:00
Lance Edgar
cd019fb05b Fix the "change password" form per Buefy theme 2020-03-23 19:33:56 -05:00
Lance Edgar
e04e67774e Add common permission for sending user feedback
there can be valid reasons to *not* expose that, so let admin decide
2020-03-23 19:33:00 -05:00
Lance Edgar
51e1a85f0b Fix some spacing in header for Buefy theme 2020-03-22 16:42:05 -05:00
Lance Edgar
297ca3fe11 Fix default row grid config logic for batches
make sure we don't overwrite configured row labels
2020-03-20 14:58:29 -05:00
Lance Edgar
1570871884 Use proper cornice service registration, for API batch execute etc. 2020-03-20 14:40:27 -05:00
Lance Edgar
a721ec4a43 Misc. API improvements for sake of mobile receiving 2020-03-20 13:51:34 -05:00
Lance Edgar
ad9c193061 Clean up some purchasing views 2020-03-19 14:36:43 -05:00
Lance Edgar
3223a77cb1 Add "danger" style for "delete" grid row action 2020-03-19 00:02:27 -05:00
Lance Edgar
e57010cd3d Update changelog 2020-03-18 23:44:34 -05:00
Lance Edgar
0ea4b98b1f Expose more Member data, relationships with Customer, Person 2020-03-18 13:15:11 -05:00
Lance Edgar
eb57ebe62b Show member number by default instead of ID
for now..  should probably make configurable though
2020-03-18 12:45:29 -05:00
Lance Edgar
72796d1e04 Expose new Member.number field 2020-03-18 12:29:18 -05:00
Lance Edgar
970b5871e5 Add/improve various display of Member data 2020-03-18 11:27:58 -05:00
Lance Edgar
8ac0bb2334 Expose default email address, phone number when editing a Person 2020-03-17 18:50:07 -05:00
Lance Edgar
ff3e83b1c5 Fix name display bug in profile view 2020-03-17 12:58:36 -05:00
Lance Edgar
60157abd46 Allow customization for Customers tab of Profile view
more tabs to come, this was all i needed for now
2020-03-17 12:38:49 -05:00
Lance Edgar
907a356bea Add support for "bulk-delete" of Person table 2020-03-16 17:47:06 -05:00
Lance Edgar
7994c7d770 Expose Customer.number field 2020-03-15 19:28:11 -05:00
Lance Edgar
4fe885995f Allow "touch" for Department, Subdepartment 2020-03-15 15:52:10 -05:00
Lance Edgar
da4f2b2081 Add sort/filter for Department Name, in Subdepartments grid 2020-03-15 14:26:56 -05:00
Lance Edgar
9b00e829b8 Prevent deletion of department which still has products 2020-03-15 13:01:52 -05:00
Lance Edgar
964671fcbf Don't let user delete roles to which they belong, without permission 2020-03-15 11:59:39 -05:00
Lance Edgar
edd48ef667 Misc. changes to User, Role permissions and management thereof
* only "root" can edit the Administrator role
* edit of Authenticated and Guest roles requires dedicated permission
* edit of role(s) to which current user belongs, requires dedicated permission
* delete is not allowed for any built-in role
* when editing a role, user can only add/remove permissions they themselves have
* settings can define some "protected" users, which only "root" can edit/delete
2020-03-15 11:39:52 -05:00
Lance Edgar
413e9b0f1e Remove old/unwanted Vue.js index experiment, for Users table 2020-03-15 09:40:11 -05:00
Lance Edgar
59cae7d207 Only show tables for "public" schema
i.e. avoid the "batch" schema
2020-03-15 09:26:38 -05:00
Lance Edgar
9a61f55f76 Tweak GPC grid filter, to better handle spaces in user input
i.e. when a user copy/pastes a UPC with leading/trailing space
2020-03-14 18:58:06 -05:00
Lance Edgar
136d181363 Add basic "ordering worksheet" API
display-only for the moment, pending review/feedback
2020-03-13 13:15:27 -05:00
Lance Edgar
d8b9ae9ff1 Update changelog 2020-03-11 13:31:59 -05:00
Lance Edgar
d72f61a98d Make sure all contact info is "touched" when touching person record 2020-03-11 13:30:04 -05:00
Lance Edgar
12b0ac1037 Move logic for Order Form worksheet into purchase batch handler
i.e. get it out of Tailbone!
2020-03-06 19:53:03 -06:00
Lance Edgar
1db6d642e7 Refactor "view profile" page per latest Buefy theme conventions 2020-03-06 14:01:10 -06:00
Lance Edgar
cd0703ba12 Update changelog 2020-03-05 13:03:59 -06:00
Lance Edgar
0f5999c8d8 Allow "touch" for vendor records 2020-03-04 12:59:11 -06:00
Lance Edgar
11cc9a752a Remove "api." prefix for default route names, in API master views 2020-03-03 17:10:41 -06:00
Lance Edgar
0483f47b26 Add support for refreshing multiple batches (results) at once 2020-03-02 18:11:13 -06:00
Lance Edgar
2605f5ab79 Fix batch row status breakdown for Buefy themes
also, fix the "import batch from file" feature UI, per Buefy theme
2020-03-02 14:38:06 -06:00
Lance Edgar
2100f0461d Update changelog 2020-03-02 11:53:15 -06:00
Lance Edgar
0e46b25f6e Use Cornice when registering all "service" API views
pretty sure we'll get *something* for "free" if we do it their way
2020-03-01 17:31:54 -06:00
Lance Edgar
c55830e533 Refactor all API views thus far, to use new v2 master 2020-03-01 17:31:54 -06:00
Lance Edgar
113c0af49d Add new "master" API view class; refactor products and batches to use it 2020-03-01 17:31:51 -06:00
Lance Edgar
df00dd600a Update changelog 2020-03-01 12:24:41 -06:00
Lance Edgar
86617e410f Fix some basic product editing features
mostly for sake of online demo
2020-02-28 18:11:54 -06:00
Lance Edgar
815cdbdd0a Fix product price, cost history dialogs, for Buefy theme 2020-02-28 17:06:30 -06:00
Lance Edgar
a2277feb10 Cleanup main version history views for Buefy theme 2020-02-28 15:45:27 -06:00
Lance Edgar
6d929dd95a Fix how we fetch employee history, for profile view 2020-02-28 13:10:25 -06:00
Lance Edgar
7b43164831 Add support for executing ordering batches via API 2020-02-26 21:29:59 -06:00
Lance Edgar
c145d077cd Return employee_uuid along with user info, from API
occasionally that is useful
2020-02-26 21:29:37 -06:00
Lance Edgar
a79bf3f055 Add toggle complete, more normalized row fields for odering batch API 2020-02-26 17:45:19 -06:00
Lance Edgar
77eead761e Update changelog 2020-02-26 15:04:56 -06:00
Lance Edgar
cd8d70de0e Send batch params as part of normalized API 2020-02-26 14:27:17 -06:00
Lance Edgar
5f8dc20312 Raise 404 not found instead of error, when user is not employee
i.e. when they try to view "employee schedule" or "time sheet"
2020-02-25 15:35:39 -06:00
Lance Edgar
2b70ed1407 Fix "edit row" logic for ordering batch
previous logic allowed `colander.null` to be passed to batch handler, which
caused an error.  also it allowed editing "all" fields for the row, which we
really don't need to do, so now we just support the order quantities
2020-02-24 13:38:58 -06:00
Lance Edgar
fc830f60e8 Tweak worksheet_update() of ordering batch view, to leverage handler
specifically this is to make use of handler's `update_row_quantity()` method,
when user enters new order quantities via worksheet
2020-02-24 12:36:47 -06:00
Lance Edgar
c3f4a3d9ea Tweak save_edit_row_form() of purchase batch view, to leverage handler
specifically this is to make use of handler's `update_row_quantity()` method,
when editing a row for ordering batches
2020-02-24 12:27:26 -06:00
Lance Edgar
6c5cc95e51 Overhaul the /ordering batch API somewhat; update docs
mostly a savepoint; the /ordering API still needs some work for sure
2020-02-23 21:07:50 -06:00
Lance Edgar
877e6088e2 Update changelog 2020-02-21 14:30:08 -06:00
Lance Edgar
c96ab426a4 Return new user permissions when logging in via API 2020-02-21 12:36:11 -06:00
Lance Edgar
5e028ce547 Add API view for changing current user password 2020-02-12 17:32:18 -06:00
Lance Edgar
da16f25cf2 Update changelog 2020-02-12 14:49:32 -06:00
Lance Edgar
c9cf59762a Return package names as list, from "about" page from API
so client knows in what order to display package versions
2020-02-12 14:47:48 -06:00
Lance Edgar
c95008703c Add common get_user_info() method for all API views 2020-02-11 13:31:02 -06:00
Lance Edgar
a6f80e07e0 Add way to prevent user login via API, per custom logic 2020-02-10 15:43:10 -06:00
Lance Edgar
5faced8d22 Tweak how default config is defined for auth API views
so it may be more easily extended
2020-02-10 14:13:50 -06:00
Lance Edgar
4a35620820 Allow override of "email key" for user feedback, sent via API 2020-02-10 12:35:30 -06:00
Lance Edgar
76839c48cf Fix email preview for TXT templates on python3 2020-02-09 15:32:22 -06:00
Lance Edgar
6925c460c5 Add some custom display logic for "current price" in pricing batch 2020-02-07 18:12:44 -06:00
Lance Edgar
6a8f64a9e8 Use new Email.obtain_sample_data() method when generating preview
per upstream changes
2020-02-07 16:21:51 -06:00
Lance Edgar
f1dc773bfd Update changelog 2020-02-03 18:46:19 -06:00
Lance Edgar
d00449465f Go ahead and expose theme picker by default
might as well let everyone see that out of the gate..right?
2020-01-29 22:20:53 -06:00
Lance Edgar
77f26f01d4 Make sure falafel theme is somewhat available by default 2020-01-29 22:01:44 -06:00
Lance Edgar
b633c91b66 Add red highlight for SRP breach, for generic product batch 2020-01-28 17:24:10 -06:00
Lance Edgar
132b2b9ec7 Fix vendor ID/name for Excel download of pricing batch rows 2020-01-28 16:33:23 -06:00
Lance Edgar
b875540397 Update changelog 2020-01-28 15:11:31 -06:00
Lance Edgar
201f7cc21e Add warning for "price breaches SRP" rows in pricing batch 2020-01-28 11:59:40 -06:00
Lance Edgar
6e7ee99b47 Sort report options by name, when choosing which to generate 2020-01-28 06:47:59 -06:00
Lance Edgar
99f1e000bf Stop including deprecated views
probably this only affected the "tests"
2020-01-27 16:13:28 -06:00
Lance Edgar
35875b7826 Tweak how we import pip internal things, for upgrade view
ugh, just kicking the can down the road here
2020-01-27 12:57:40 -06:00
Lance Edgar
e9533727db Allow populate of new pricing batch from products w/ "SRP breach" 2020-01-23 10:48:21 -06:00
Lance Edgar
842882e766 Include regular price changes, for current price history dialog 2020-01-21 11:41:37 -06:00
Lance Edgar
09e18b064d Update changelog 2020-01-20 12:28:49 -06:00
Lance Edgar
0e4b33be96 Add "cost history" dialog for product view
older jquery theme only, for now
2020-01-16 11:56:45 -06:00
Lance Edgar
91c1c1c5c8 Add "current price history" dialog for product view
hopefully this does everything it needs to...guess we'll see
2020-01-16 11:31:49 -06:00
Lance Edgar
09a383f89c Fix SRP warning logic!
dang, had it reversed for some testing and then forgot to switch back
2020-01-15 19:26:28 -06:00
Lance Edgar
133ca622a0 Expose batch ID, sequence for datasync change queue 2020-01-15 19:03:16 -06:00
Lance Edgar
0fbe3380cd Highlight SRP in red, if reg price is greater (in product view) 2020-01-14 16:49:56 -06:00
Lance Edgar
8f07f27a61 Highlight SRP in red, if reg price is greater (in products grid)
seems like a good enough idea generally...
2020-01-14 16:35:30 -06:00
Lance Edgar
bbd462c85a Cleanup "diff" table for importer batch row view, per Buefy theme 2020-01-14 12:15:02 -06:00
Lance Edgar
234fd8b2e1 Add support for Row Status Breakdown, for Import/Export batches 2020-01-14 11:54:00 -06:00
Lance Edgar
02649709aa Add regular price history dialog for product view 2020-01-08 08:04:48 -06:00
Lance Edgar
910e82a795 Hide the SRP history link for new buefy themes
until support for that is added...
2020-01-07 06:44:27 -06:00
Lance Edgar
3fc8254219 Update changelog 2020-01-06 08:03:29 -06:00
Lance Edgar
4c5b01f287 Move "delete results" logic for master grid
should be easier to customize this way..?  previous way seemed to be broken
2020-01-06 07:46:10 -06:00
Lance Edgar
03c8d3409a Update changelog 2020-01-02 12:39:32 -06:00
Lance Edgar
7dce154cc3 Add dialog for viewing product SRP history
only old jquery theme is supported, for now
2020-01-02 06:55:02 -06:00
Lance Edgar
8947a4d14f Add Grid.set_filters_sequence() convenience method
sometimes a properly-ordered filter sequence can really help
2020-01-01 12:05:08 -06:00
Lance Edgar
3895734c32 Update changelog 2019-12-04 16:53:39 -06:00
Lance Edgar
a96c5712ab Use currency formatting for costs in vendor catalog batch
and related tweaks
2019-12-04 16:51:55 -06:00
Lance Edgar
7b5ac7eba4 Update changelog 2019-12-02 08:40:45 -06:00
Lance Edgar
6c029382d9 Add API views for admin user to become / stop being "root" 2019-11-26 16:42:27 -06:00
Lance Edgar
31ae68f96e Allow override of user authentication logic for API 2019-11-26 15:28:03 -06:00
Lance Edgar
8cbabfbb95 Add API view for marking "receiving complete" for receiving batch 2019-11-26 13:54:43 -06:00
Lance Edgar
675660e130 Expose catalog cost, allow updating, for receiving batch rows 2019-11-26 11:19:55 -06:00
Lance Edgar
3e1409afc5 Show vendor item code in receiving batch row grid 2019-11-22 20:12:51 -06:00
Lance Edgar
c14cf3022c Allow update of row unit cost directly from receiving batch view 2019-11-22 20:12:48 -06:00
Lance Edgar
b7c710cddd Update changelog 2019-11-19 13:48:12 -06:00
Lance Edgar
bed9ad76f9 Filter by receiving mode, for receiving batch API 2019-11-19 13:19:37 -06:00
Lance Edgar
d9fecd8eb5 Update changelog 2019-11-15 16:26:22 -06:00
Lance Edgar
d256e2014a Provide background color when first checking API session 2019-11-15 16:16:59 -06:00
Lance Edgar
0715bd6321 Add basic "receive" handler logic for receiving API 2019-11-15 16:16:56 -06:00
Lance Edgar
337422a619 Tweak some "unexpected item" logic for receiving API 2019-11-15 10:30:01 -06:00
Lance Edgar
6a98dcc169 Add toggle complete; improve quick entry for receiving batch API 2019-11-13 14:05:38 -06:00
Lance Edgar
d42c2fabb9 Move "quick entry" logic for purchase batch, into rattail handler 2019-11-13 14:04:11 -06:00
Lance Edgar
a096ce565e Add some convenience filters for receiving batch rows API 2019-11-12 19:04:46 -06:00
Lance Edgar
a9b740dcaa Add basic support for "eligible purchases" for receiving batch API 2019-11-12 17:46:18 -06:00
Lance Edgar
3514c4050e Add some API views for receiving, and vendor autocomplete
lots more to do yet, for those...
2019-11-12 11:55:28 -06:00
Lance Edgar
afdd294c60 Add support for "toggle complete" for batch API 2019-11-11 12:36:50 -06:00
Lance Edgar
bd09acd0fd Add support for label batch "quick entry" API
plus other general improvements to API core/master views and config
2019-11-11 11:26:42 -06:00
Lance Edgar
c520dc23ba Update changelog 2019-11-08 16:16:43 -06:00
Lance Edgar
c70dedd94f Fix merge feature for master index grid
at least, for Vue.js / buefy theme
2019-11-08 16:02:21 -06:00
Lance Edgar
0877cfc3c9 Fallback to referrer if form has no cancel button URL 2019-11-07 22:56:56 -06:00
Lance Edgar
8dcec94aec Add notes to label batch API (get), basic create support 2019-11-07 11:02:12 -06:00
Lance Edgar
4afbb350ce Add very basic API views for label batches
still just trying to prove some concepts for now
2019-11-06 17:25:25 -06:00
Lance Edgar
99f69c13d2 Allow rendering of "raw" datetime as ISO date
sometimes a full timestamp isn't that helpful
2019-11-05 15:11:07 -06:00
Lance Edgar
93a44d83d2 Declare empty component list for TailboneForm
easier to add to that if it's already there
2019-11-04 20:55:51 -06:00
Lance Edgar
86695c9dc7 Refactor "send new message" form, esp. recipients field, per Vue.js 2019-11-04 19:06:58 -06:00
Lance Edgar
e153e530a8 Use "warning" status for pricing batch rows, where product not found 2019-11-04 12:39:26 -06:00
Lance Edgar
e99f225def Add some padding above/below form fields 2019-11-04 12:12:08 -06:00
Lance Edgar
7f94e3fc77 Tweak a method signature for batch views
sometimes executing a batch will involve an "action" kwarg, so we can't use
that or else a collision ensues
2019-11-01 21:09:15 -05:00
Lance Edgar
8af3d53a3c Improve/fix some views for Messages per Vue.js theme 2019-11-01 15:58:56 -05:00
Lance Edgar
bcfb4f257d Improve checkbox click handling support for grids
i.e. let custom use define click handlers
2019-10-31 18:03:17 -05:00
Lance Edgar
a857d31776 Add Vue.js support for "delete selected" grid feature 2019-10-31 15:02:03 -05:00
Lance Edgar
ebc22d845a Add Vue.js support for "enable / disable selected" grid feature 2019-10-31 13:28:00 -05:00
Lance Edgar
847136b69c Refactor "make batch from products query" per Vue.js theme 2019-10-31 12:45:22 -05:00
Lance Edgar
4a35c231f8 Always store CSRF token for each page in Vue.js theme
so child components don't have to "redefine" it.  at least, those that know
about the page already having it...
2019-10-30 20:38:33 -05:00
Lance Edgar
8ff69e8eda Bump default Buefy version to 0.8.2
had previously thought that 0.8.0 broke us somehow, but now 0.8.2 seems fine...
2019-10-30 20:38:06 -05:00
Lance Edgar
2e92f561d8 Assume "local only" flag should be ON by default, for new objects
i.e. if that is a thing, for the given master view
2019-10-29 19:58:08 -05:00
Lance Edgar
0c96062618 Update changelog 2019-10-25 13:27:00 -05:00
Lance Edgar
6536926f3c Don't bug out if can't update roles for user
based on perms, or missing data field
2019-10-24 12:25:59 -05:00
Lance Edgar
39b1a78b89 Allow bulk delete of New Product batch rows 2019-10-23 14:50:36 -05:00
Lance Edgar
15f7018aab Update changelog 2019-10-23 12:44:21 -05:00
Lance Edgar
9606b08c89 Fix JS bug for graph view of tempmon probe readings 2019-10-22 11:07:33 -05:00
Lance Edgar
b311c6be7d Add config flag to "force unit item" for inventory batch 2019-10-21 15:35:30 -05:00
Lance Edgar
65bcd8da2a Improve default behavior for clone operation
copy all fields but uuid, and show flash message(s)
2019-10-17 16:17:43 -05:00
Lance Edgar
85e67a974a Update changelog 2019-10-17 15:08:27 -05:00
Lance Edgar
4afe8e900e Don't bug out if stores, departments fields aren't present for Employee 2019-10-15 20:33:37 -05:00
Lance Edgar
c525b16581 Fix a label for Employees grid 2019-10-15 19:55:56 -05:00
Lance Edgar
0de34bfec1 Update changelog 2019-10-15 17:30:34 -05:00
Lance Edgar
9fe585bede Fix permissions for add/edit/delete notes from people profile view 2019-10-15 16:12:56 -05:00
Lance Edgar
3b65b06a3d Fix buefy grid pager bug
"has results, then no results" bug where spinner kept going
2019-10-15 15:30:52 -05:00
Lance Edgar
fa52ff5545 Update changelog 2019-10-14 15:25:54 -05:00
Lance Edgar
c0219938e3 Show active flag for users mini-grid on Role view page 2019-10-14 11:54:01 -05:00
Lance Edgar
ec8ce36bd5 Only show action URL if present, for Buefy grid rows 2019-10-12 18:35:22 -05:00
Lance Edgar
6c228a59f2 Use self.has_perm() within MasterView 2019-10-12 18:35:11 -05:00
Lance Edgar
1e0f707a6d Update changelog 2019-10-12 13:41:00 -05:00
Lance Edgar
acda689b15 Honor configured db key sequence; let config hide some db keys from UI 2019-10-12 13:34:00 -05:00
Lance Edgar
3dd70926b9 Expose unit cost diff for vendor invoice batch rows 2019-10-09 15:58:16 -05:00
Lance Edgar
adf377c41d Move module for vendor invoice batch views to a new home 2019-10-09 15:38:12 -05:00
Lance Edgar
9a35a31261 Expose the "is preferred vendor" flag for vendor catalog batches 2019-10-09 14:55:51 -05:00
Lance Edgar
f0a3607fb7 Fix docs, per recent view switcharoo 2019-10-09 14:21:48 -05:00
Lance Edgar
b451f4af55 Move module for vendor catalog batch views to a new home
also, expose new "unit cost diff percent" field
2019-10-09 14:16:44 -05:00
Lance Edgar
18c30fcb05 Allow bulk-delete for some common batches 2019-10-09 11:26:26 -05:00
Lance Edgar
b14a4987d2 Move label batch views to tailbone.views.batch.labels
to better match the general pattern we have going on
2019-10-09 11:11:22 -05:00
Lance Edgar
700813fa57 Add "is false or null" verb for boolean grid filters 2019-10-09 10:55:13 -05:00
Lance Edgar
c812519931 Fix URL for user, for feedback email 2019-10-08 10:08:13 -05:00
Lance Edgar
fbeb48a021 Update changelog 2019-10-08 09:39:44 -05:00
Lance Edgar
43f366d955 Improve docs a bit, for GridFilter.set_choices() 2019-10-08 09:38:03 -05:00
Lance Edgar
ace18e86ff Fix label bug for grid filter with value choices dropdown 2019-10-08 09:37:21 -05:00
Lance Edgar
08f86a3a7f Update changelog 2019-10-07 11:54:53 -05:00
Lance Edgar
47669a23bc Add support for "local only" Person, User, plus related security
also add "view / edit roles for user" permissions
2019-10-04 22:31:19 -05:00
Lance Edgar
4d1fa4f2d6 Update changelog 2019-10-04 14:32:06 -05:00
Lance Edgar
c8e689712a Add forbidden() convenience method to core View class 2019-10-02 18:11:26 -05:00
Lance Edgar
59d3a18b3f Update changelog 2019-10-02 11:08:42 -05:00
Lance Edgar
3199b4ee6c Fix "progress" behavior for upgrade page
per recent changes to progress page, whoops
2019-09-26 21:23:22 -05:00
Lance Edgar
fdc687ed45 Update changelog 2019-09-25 11:40:57 -05:00
Lance Edgar
ff9700e23a Add core View.make_progress() method
so callers no longer need to import `SessionProgress` and create directly
2019-09-25 00:32:41 -05:00
Lance Edgar
f0a5265a65 Update changelog 2019-09-24 14:26:20 -05:00
Lance Edgar
64f81e3396 Show "image not found" placeholder image for products which have none 2019-09-24 11:15:44 -05:00
Lance Edgar
c16349d5c3 Fix progress page so it effectively fetches progress data synchronously
i.e. use `setTimeout()` instead of `setInterval()` and only set next timeout
after previous fetch has succeeded
2019-09-20 17:26:33 -05:00
Lance Edgar
fe413ba2f5 Honor kwargs used for MasterView.get_index_url() 2019-09-19 20:19:52 -05:00
Lance Edgar
0d2f6e060f Use simple_error() from rattail, for showing some error messages
just trying to standardize a little
2019-09-19 20:19:26 -05:00
Lance Edgar
a972fb7359 Add todo comment 2019-09-14 15:07:47 -05:00
Lance Edgar
99cd9f9450 Update changelog 2019-09-09 20:04:08 -05:00
Lance Edgar
1165fa8cdb Show product image from database, if it exists
only use POD image if we have nothing in our DB (and config doesn't say not to)
2019-09-09 19:25:18 -05:00
Lance Edgar
ab1ff48527 Update changelog 2019-09-09 18:31:10 -05:00
Lance Edgar
1a6f9c2159 Fix 'about' page template for Buefy themes 2019-09-09 17:34:24 -05:00
Lance Edgar
4c42ccc7d7 Fix various templates for generating reports, per Buefy
also various other tweaks which came up along the way...
2019-09-06 17:45:59 -05:00
Lance Edgar
cb4e9e9eda Tweak login form styles, so inputs are same size 2019-09-06 16:43:22 -05:00
Lance Edgar
192c3c201d Prevent text wrap for pricing panel fields on product view page 2019-09-04 16:59:44 -05:00
Lance Edgar
2185182eee Fix rendering of "handheld batches" field for inventory batch view 2019-09-04 10:33:32 -05:00
Lance Edgar
79be69f8c1 Include tax1 thru tax3 flags in form fields for product view page 2019-09-03 13:44:59 -05:00
Lance Edgar
c874e879c1 Don't show Delete Row button for executed batch, on jquery mobile site 2019-08-30 20:01:49 -05:00
Lance Edgar
ed53bd487b Add basic API endpoints for /ordering-batch 2019-08-30 19:47:30 -05:00
Lance Edgar
c41a7303df Add /products API endpoint, enable basic filter support for API views 2019-08-30 19:47:27 -05:00
Lance Edgar
c1c37aad85 Cleanup styles for login form 2019-08-30 13:56:06 -05:00
Lance Edgar
7aa5c8e724 Tweak how we return single record data from API
i.e. always return 'data' key with object data, regardless of model
2019-08-30 00:27:03 -05:00
Lance Edgar
56974ce30f Tweak return value for /customers API 2019-08-30 00:27:03 -05:00
Lance Edgar
de46dfc4a2 Return current user permissions when session is checked via API 2019-08-30 00:27:00 -05:00
Lance Edgar
47efc88228 Add basic API view for "about" page
i.e. this returns app version and some package versions
2019-08-29 19:06:51 -05:00
Lance Edgar
19c734683b Add basic API view for user feedback 2019-08-29 18:30:13 -05:00
Lance Edgar
d97f95fb92 Add basic support for "between" verb, for date range grid filter
this seems to be complete, but we'll see in practice if i forgot something..
2019-08-29 17:23:32 -05:00
Lance Edgar
14778757d9 Expose api.SortColumn
even though we probably shouldn't?  guess we'll see
2019-08-26 00:57:42 -05:00
Lance Edgar
300efe4877 Tweak how we detect JSON request body instead of POST params
i.e. when processing submitted form data
2019-08-25 17:35:01 -05:00
Lance Edgar
3d3ace1c2a Add basic support for create and update actions in API views
customer views only for now, will add more upon further testing
2019-08-25 16:02:59 -05:00
Lance Edgar
7c0d9c4f93 Include short_name in field list returned by /session API 2019-08-24 20:35:56 -05:00
Lance Edgar
9081985b08 Include uuid in fields returned by /customers API 2019-08-24 19:16:41 -05:00
Lance Edgar
5cfe69d24b Hopefully fix "single store" behavior when make a new ordering batch
this does seem to fix for this use case, but previous commit for this code
implied that it was fixing something for the receiving use case...
2019-08-23 22:05:09 -05:00
Lance Edgar
937c2920ac Set default max height, width for app logo
should affect home page and login page
2019-08-23 22:02:46 -05:00
Lance Edgar
fd700e06f4 Let a grid have custom ajax data url
i.e. instead of assuming we should GET the current "partial" page, can use a
different URL altogether now
2019-08-23 19:28:36 -05:00
Lance Edgar
e6dff16550 Update changelog 2019-08-21 17:49:17 -05:00
Lance Edgar
f2c06042cd Tweak login page logo style for jQuery (non-Buefy) themes 2019-08-17 19:01:29 -05:00
Lance Edgar
a49d107a82 Provide today's date as context for profile view 2019-08-11 17:30:08 -05:00
Lance Edgar
b0af78f3b2 Update changelog 2019-08-05 19:16:13 -05:00
Lance Edgar
dade379dcf Fix "last sold" field rendering for product view 2019-08-05 16:06:23 -05:00
Lance Edgar
f3ac3ca25e Yet another fix for user feedback form handling 2019-08-04 22:59:32 -05:00
Lance Edgar
243c69b231 Fix some user feedback form handling
sheesh i don't see how this hasn't been more broken for some time now...
2019-08-04 22:36:58 -05:00
Lance Edgar
fda7230bce Fix form handling for user feedback
issue was noticed on demo site, but possibly existed elsewhere?  also not 100%
sure about this fix, but it's believed to be okay...
2019-08-04 22:14:15 -05:00
Lance Edgar
287464362e Remove unused "login tips" for demo 2019-08-04 21:52:11 -05:00
Lance Edgar
222e909686 Update changelog 2019-08-04 20:49:11 -05:00
Lance Edgar
1b1d37b9df Fix home and login pages for Buefy theme
not sure what broke those so bad...they're still not "great"
2019-08-04 20:43:31 -05:00
Lance Edgar
5a25ffe6e4 Update changelog 2019-08-04 19:13:27 -05:00
Lance Edgar
6d846ab0db Bring all of header into WholePage component
now there is only *one* Vue.js app instantiated on each page, yay!
2019-08-03 19:20:42 -05:00
Lance Edgar
47c2742878 Move the "HUD" content title section into WholePage component
that way, ThisPage can dynamically trigger a change in the title HTML
2019-08-03 17:56:18 -05:00
Lance Edgar
69eb54abf6 Highlight former Employee records as red/warning 2019-08-03 17:18:53 -05:00
Lance Edgar
1bb0330ab5 Refactory Buefy templates to use WholePage and ThisPage components
plus add `GridFilter.set_choices()` method
2019-08-03 16:57:13 -05:00
Lance Edgar
c64fca852c Allow "touch" for Person records 2019-08-02 11:30:46 -05:00
Lance Edgar
01fcd3175f Update changelog 2019-07-31 17:33:38 -05:00
Lance Edgar
c04c0e29bb Freeze Buefy version at pre-0.8.0
since apparently their 0.8.0 release breaks some grid filter action
2019-07-31 17:32:57 -05:00
Lance Edgar
9daf1dea31 Update changelog 2019-07-30 19:00:45 -05:00
Lance Edgar
4a175c76f9 Add proper support for composite primary key, in MasterView
at least hopefully this is complete, and didn't break anything else...
2019-07-29 19:27:23 -05:00
Lance Edgar
4d3ff6ed20 Update changelog 2019-07-25 16:53:07 -05:00
Lance Edgar
6e1f925944 Cleanup 'phone' filter/sort logic for Employees grid
per newer conventions etc.  needed to override some of this for a client
2019-07-25 16:05:10 -05:00
Lance Edgar
e756ae3c8f Add "multi-engine" support for Trainwreck transaction views 2019-07-25 15:40:38 -05:00
Lance Edgar
b07365b487 Add perm for editing employee history from profile view 2019-07-23 13:12:36 -05:00
Lance Edgar
f1b6f8a3e4 Add 'disabled' prop for buefy datepicker
also make sure we return `null` when input is empty
2019-07-23 13:12:07 -05:00
Lance Edgar
ad3b660bc0 Update changelog 2019-07-13 19:27:05 -05:00
Lance Edgar
dd773d4e5e Send URL for viewing employee, along to profile page template 2019-07-11 15:17:25 -05:00
Lance Edgar
61df7745c6 Use latest version of Buefy by default, for falafel theme 2019-07-11 15:17:04 -05:00
Lance Edgar
aeaef04fac Add convenience method for gathering employee history context data
so we can reuse that for returning JSON from various views
2019-07-11 14:01:22 -05:00
Lance Edgar
8c2287a1e8 Add custom permissions for People "profile" view
this whole thing needs some polishing yet...
2019-07-11 14:01:00 -05:00
Lance Edgar
fa825da404 Include employee history data in context for "view profile" 2019-07-10 22:58:05 -05:00
Lance Edgar
839f6affe2 Add basic "DB picker" support, for views which allow multiple engines
i.e. whichever engine is "current" will determine where data comes from
2019-07-09 22:14:12 -05:00
Lance Edgar
0d7492f6be Update changelog 2019-07-09 15:18:31 -05:00
Lance Edgar
c09437880f Add support for general "view click handler" for <b-table> element
plus some other tweaks for sake of revision history in profile view
2019-07-09 14:56:33 -05:00
Lance Edgar
069ccab0ae Clear feedback message after sending
that way user can open dialog again, and things not be weird
2019-07-05 19:54:57 -05:00
Lance Edgar
b8274d92db Refactor feedback dialog for Buefy themes
for more proper Vue.js component usage pattern
2019-07-05 19:50:16 -05:00
Lance Edgar
4499a872d8 Remove unwanted "export has file" logic for ExportMasterView
this mostly did what "downloadable" already did, plus some other stuff which it
probably shouldn't have been doing anyway
2019-07-05 18:17:53 -05:00
Lance Edgar
94d7e01bd5 Add download_path() method for ExportMasterView
default behavior isn't very smart, subclass should override as needed
2019-07-05 18:00:58 -05:00
Lance Edgar
993ce9289d Add basic "downloadable" support for ExportMasterView
instead of it trying to do its own thing for that...  more to come on this
2019-07-05 16:48:29 -05:00
Lance Edgar
c8d6361c36 When creating an export, set creator to current user
many exports won't support creation via web app, but some will
2019-07-05 16:47:51 -05:00
Lance Edgar
8c610e2142 Add render_customer() method for MasterView
surely will be commonly useful?
2019-07-05 16:44:46 -05:00
Lance Edgar
bb0e2fb9e9 Add way to hide "view profile" helper for customer view 2019-07-03 12:35:14 -05:00
Lance Edgar
e9e4d65c78 Update changelog 2019-07-01 15:18:06 -05:00
Lance Edgar
ddc8bd2028 Fix product view template per Buefy refactoring 2019-07-01 14:08:42 -05:00
Lance Edgar
bf9fff6065 Update changelog 2019-07-01 13:23:27 -05:00
Lance Edgar
744347c269 Clear checked rows when refreshing async grid data
we don't want to accidentally "remember" checked rows which aren't currently
visible...  at least not yet / by default
2019-07-01 13:22:38 -05:00
Lance Edgar
d087071fc9 Update changelog 2019-07-01 12:27:38 -05:00
Lance Edgar
a4d6c6694a Make sure grid action links preserve white-space
i.e. don't wrap between link icon and text!
2019-07-01 11:46:52 -05:00
Lance Edgar
ff3ee351d1 Add 'duration_hours' type for grid column display 2019-07-01 11:46:21 -05:00
Lance Edgar
b14e8daa1a Expose a way to embed "raw" data values within Buefy grid data
for sake of custom front-end stuff
2019-06-28 15:47:52 -05:00
Lance Edgar
3a53ffcc23 Add NumericInputWidget for use with Buefy themes
uses a Vue.js component for better logic encapsulation
2019-06-28 13:06:43 -05:00
Lance Edgar
2abe589ef6 Allow "touch" for customer records 2019-06-27 19:50:24 -05:00
Lance Edgar
f81e4fac79 Update changelog 2019-06-25 20:49:56 -05:00
Lance Edgar
a4b27115ac Refactor all Buefy form submit buttons, per Chrome behavior
ugh, what a pain.  and turns out i'd previously ran into this same issue for
jQuery, per commit e945ebe325
2019-06-25 20:32:49 -05:00
Lance Edgar
43a210cac4 Fix "edit row" icon for batch row grids, for Buefy themes 2019-06-21 15:47:30 -05:00
Lance Edgar
355a49e463 Fix PO total calculation bug for mobile ordering
also fix currency formatting for PO calculated total
2019-06-21 15:18:41 -05:00
Lance Edgar
975aa0a3cc Only expose "Make User" button when viewing a person
i.e. don't expose when editing the person
2019-06-18 16:54:05 -05:00
Lance Edgar
a99b8c6aaf Update changelog 2019-06-18 16:49:55 -05:00
Lance Edgar
8a968a1f89 Fix inheritance issue with "view row" master template 2019-06-18 16:48:55 -05:00
Lance Edgar
c7eeaffec9 Update changelog 2019-06-18 16:25:37 -05:00
Lance Edgar
cc79fe76fd Refactor form/page component structure for Buefy/Vue.js
this also moves Execute Batch from the form buttons area, to object helper
2019-06-17 15:07:19 -05:00
Lance Edgar
4cadeb8e5d Fix click behavior for all/diffs package links in upgrade view 2019-06-16 16:27:45 -05:00
Lance Edgar
76a19ebe5b Pull the grid tools to the right, for Buefy 2019-06-16 16:23:01 -05:00
Lance Edgar
b5613ec6dc Only include execute form if applicable, for batch grid view 2019-06-16 16:22:48 -05:00
Lance Edgar
26137ec81e Add Buefy support for "execute results" from core batch grid view 2019-06-16 15:50:40 -05:00
Lance Edgar
0e67c62c86 Add generic /page.mako template
helps with getting a proper Vue.js app going for arbitrary extra pages
2019-06-16 14:43:29 -05:00
Lance Edgar
90bf4edf0d Update changelog 2019-06-16 13:29:35 -05:00
Lance Edgar
d51fe8483a Buefy support for "mark batch as (in)complete" 2019-06-15 20:47:45 -05:00
Lance Edgar
3ddde1a1ca Use locale formatting for some numbers in the Buefy grid 2019-06-15 19:50:25 -05:00
Lance Edgar
48e28a1ba4 Assign client IP address to session, for sake of data versioning 2019-06-15 19:02:51 -05:00
Lance Edgar
558e127caa Fix package diff table for upgrade view template, per Buefy 2019-06-15 18:06:54 -05:00
Lance Edgar
63807e71fd Use once-button for tempmon client restart 2019-06-15 17:31:49 -05:00
Lance Edgar
f684c38958 Refactor tempmon probe graph view per Vue.js 2019-06-15 17:00:46 -05:00
Lance Edgar
4b2abf791c Refactor tempmon probe view template, per Buefy 2019-06-15 15:51:25 -05:00
Lance Edgar
a8b83d9fe1 Update changelog 2019-06-14 21:33:29 -05:00
Lance Edgar
4ce695d933 Make person, created by fields readonly when editing Person Note 2019-06-14 20:47:16 -05:00
Lance Edgar
44aa54f247 Fix some response headers per python 3 2019-06-13 14:25:54 -05:00
Lance Edgar
25e5739b34 Update changelog 2019-06-13 13:50:22 -05:00
Lance Edgar
33e1bd567d Add some vendor fields for product Excel download 2019-06-13 10:00:29 -05:00
Lance Edgar
f727c87b56 Add Buefy support for "delete w/ simple confirm" from index grid 2019-06-10 21:59:10 -05:00
Lance Edgar
3775c53df3 Add generic support for "delete w/ simple confirm" in master index template
jquery only, for now
2019-06-09 21:34:47 -05:00
Lance Edgar
e715794f04 Add Buefy support for "simple" delete confirmation 2019-06-08 21:02:32 -05:00
Lance Edgar
796170100f Add support for "simple confirm" of object deletion
i.e. can just use `window.confirm()` instead of showing full confirm page

note, this is jquery-only for now
2019-06-08 18:50:16 -05:00
Lance Edgar
f25e4fab28 Tweak structure of "view product" page to support Buefy, context menu 2019-06-08 15:50:16 -05:00
Lance Edgar
c44c6c79f9 Only tweak field value width for "normal" primary forms, in falafel theme 2019-06-08 15:17:40 -05:00
Lance Edgar
3f6d5daa1e More Buefy tweaks, for file upload, and "edit batch" generally 2019-06-08 14:26:33 -05:00
Lance Edgar
7224be9de2 More Buefy form cleanup for upgrades, clone/execute 2019-06-08 14:06:07 -05:00
Lance Edgar
2b6d88105c Add support for Buefy autocomplete; several other form tweaks
at least the Edit User form should work now, for instance
2019-06-08 13:46:00 -05:00
Lance Edgar
d7e19865de Update calculated PO totals for purchasing batch, when editing row 2019-06-08 13:16:57 -05:00
Lance Edgar
643d29ba57 Use <once-button> for "find by perm" feature for Users, Roles 2019-06-06 16:53:16 -05:00
Lance Edgar
4b6038c50c Use <once-button> for app settings form 2019-06-06 16:46:11 -05:00
Lance Edgar
f10a80333b Add <once-button> for sending email preview; various other tweaks 2019-06-06 15:58:46 -05:00
Lance Edgar
0a80e01d0b Use <once-button> for restarting datasync daemon 2019-06-06 15:11:01 -05:00
Lance Edgar
93a3da2335 Tweak initial v-bind model value for Buefy form, when is colander.null 2019-06-06 15:10:33 -05:00
Lance Edgar
96c5bd0b69 Fix "current value" for <b-select> element in e.g. edit form views
apparently marking an `<option>` as "selected" does not cut it for Buefy, and
we must bind to a v-model somehow.  not real crazy about the current method,
but it does seem to work okay so far...
2019-06-06 14:57:31 -05:00
Lance Edgar
1ee76878d9 Various things to support "notes management" from person profile view 2019-06-06 13:49:59 -05:00
Lance Edgar
6749604210 Add a generic "user" field renderer to master view
and use it for PersonNote view
2019-06-05 16:04:14 -05:00
Lance Edgar
e097f526bb Turn on bulk-delete feature for Raw Settings view
this can be dangerous, but then that's why we have a permissions system
2019-06-04 23:08:21 -05:00
Lance Edgar
ea0aff1a3e Tweak permissions styles for view/edit of User, Role
per Buefy themes, but still compatible with jQuery theme also
2019-06-04 19:53:47 -05:00
Lance Edgar
40ab3cda9c Initial support for adding new PersonNote from profile view 2019-06-04 19:23:27 -05:00
Lance Edgar
c24098a117 Fall back to parsing request body as JSON for form data
apparently that's what we'll be dealing with from Vue.js AJAX requests?
2019-06-04 17:57:48 -05:00
Lance Edgar
5c28f10921 Improve props handling for <once-button> component
now we use computed properties for some of the underlying button props.  this
also adds a "click" event for the element; callers should be able to add
handler for that which happens *in addition to* the button disabling.  it's
assumed that's always safe or else caller wouldn't use `<once-button>`
2019-06-04 17:50:14 -05:00
Lance Edgar
1c07508f39 Add <b-table> element template for simple grids with "static" data 2019-06-04 13:33:56 -05:00
Lance Edgar
e5472a6fae Add json_response() convenience method for all views
er, class-based views anyway
2019-06-04 12:15:32 -05:00
Lance Edgar
e06f8c16df Tweak styles for context menu on falafel theme 2019-06-03 16:39:17 -05:00
Lance Edgar
a1d7059c0b Update changelog 2019-06-03 15:01:13 -05:00
Lance Edgar
bbe2efa4b3 Allow bulk row delete for generic products batch 2019-05-30 13:25:42 -05:00
Lance Edgar
1fb121fb6d Add Buefy panels support for "view product" page 2019-05-23 19:15:47 -05:00
Lance Edgar
6be4964221 Use <once-button> where applicable for CRUD forms 2019-05-23 18:13:19 -05:00
Lance Edgar
5907973d42 Refactor "edit printer settings" view for Label Profile
for sake of Buefy, but it was definitely using some old form patterns...
2019-05-23 17:58:46 -05:00
Lance Edgar
a37b0229a0 Fix edit icon for row grids 2019-05-23 17:12:19 -05:00
Lance Edgar
d7c8b80da5 Fix Buefy "row grids" when viewing parent; add basic file upload support 2019-05-23 16:29:29 -05:00
Lance Edgar
5998941741 Refactor Buefy forms a bit more, to copy grid pattern
i.e. each page can modify the component dynamically before it's registered
2019-05-23 14:52:22 -05:00
Lance Edgar
5bd4f84389 Accept disabled prop for <once-button> component 2019-05-23 14:44:31 -05:00
Lance Edgar
8a47ab2dde Punctuation tweak 2019-05-23 13:58:29 -05:00
Lance Edgar
dda790b5c4 Fix datepicker behavior for grid filters
apparently we *do* need to accept a 'value' prop for tailbone-datepicker, to
round out the v-model support
2019-05-23 13:57:44 -05:00
Lance Edgar
b829cd260c Assume forms support Buefy if theme does; fix basic CRUD views 2019-05-23 13:11:26 -05:00
Lance Edgar
7b1947914e Make Buefy grids use proper Vue.js component structure
at least, better than before...this lets each page have the final say about the
app logic etc.
2019-05-23 12:10:11 -05:00
Lance Edgar
6c3722737d OMG so many Buefy things...and much to be done yet it seems
these changes are all with Buefy "forms" support in mind.  hopefully didn't
break any legacy/jquery stuff... and yeah, lots more left to do still for the
sake of Buefy forms
2019-05-22 15:31:23 -05:00
Lance Edgar
eea3f671af Add basic Buefy support for "Make User" button when viewing Person
this still relies on jQuery for now, but has Buefy styles at least...
2019-05-22 10:34:03 -05:00
Lance Edgar
f4f435c682 Add <once-button> component for Buefy templates
i.e. just a button, which allows only one click and then auto-disables
2019-05-21 20:11:57 -05:00
Lance Edgar
b16a81cf6e Keep using forms.css from bobcat theme, for falafel
..for now
2019-05-21 19:29:44 -05:00
Lance Edgar
be6a1d916f Add Buefy support for enum grid filters 2019-05-21 18:40:08 -05:00
Lance Edgar
ef7b2ddbdd Add basic Buefy support for default SelectWidget template 2019-05-21 17:54:14 -05:00
Lance Edgar
d3471c945b Turn on Buefy forms for Email Bounce views 2019-05-21 17:39:26 -05:00
Lance Edgar
47b2c603ef Expose per-page size picker for grids 2019-05-21 17:37:39 -05:00
Lance Edgar
9a48a60d28 Add "full justify" for grid filter pseudo-column elements
at least the field name and verb columns, for now...
2019-05-21 16:18:12 -05:00
Lance Edgar
678c966113 Allow inherited theme to set location of Vue.js, Buefy etc.
that way, can use a local version instead of CDN
2019-05-21 16:00:56 -05:00
Lance Edgar
d5d04b7dac Add support for Buefy datepicker in grid filters 2019-05-21 13:44:02 -05:00
Lance Edgar
0f0b32d797 Move logic used to determine if current request should use Buefy
so that function-based views can leverage it also
2019-05-21 12:34:18 -05:00
Lance Edgar
fbf3ee5cd1 Improve readonly form templates somewhat, for Buefy
progress at least, more polish needed yet
2019-05-21 12:14:49 -05:00
Lance Edgar
40e957fff2 Let view template define how to render "row grid tools"
seems much cleaner that way.  must adopt Buefy to use this style though
2019-05-20 20:00:28 -05:00
Lance Edgar
3c8d16a368 Add custom tailbone-datepicker component for Buefy
for easier reuse, outside of main CRUD forms
2019-05-20 19:59:21 -05:00
Lance Edgar
dfe0f49655 Add basic/generic Buefy support to the Form class
mostly just affects rendering, apparently backend logic needn't really change?
2019-05-20 16:24:14 -05:00
Lance Edgar
a125e381a9 Add basic Buefy support for batch refresh, execute buttons
still doesn't yet handle the "execution options" use case though
2019-05-20 14:43:51 -05:00
Lance Edgar
93d0cfcfeb Make email preview buttons use primary color
i.e. for bulma/buefy
2019-05-20 14:20:54 -05:00
Lance Edgar
6ea4d9c413 Add default sort for PersonNote grid 2019-05-15 15:34:32 -05:00
Lance Edgar
e6301f0d06 Add basic master view for PersonNote data model 2019-05-14 15:59:57 -05:00
Lance Edgar
f61cf318ae Add verbose flag for util.raw_datetime() rendering
just seems like could be useful somewhere...though not used yet
2019-05-14 15:58:43 -05:00
Lance Edgar
13db4861e1 Update changelog 2019-05-09 12:34:18 -05:00
Lance Edgar
684363bcde Add basic/generic email validator logic
for use mostly in non-web scenarios, probably
2019-05-09 12:28:57 -05:00
Lance Edgar
a8db5db308 Add basic Buefy form support when generating reports
apparently we have a lot of work to do yet for Buefy forms elsewhere...
2019-05-08 20:24:19 -05:00
Lance Edgar
4a198ce473 Tweak how we disable grid filter options
hoping to find some magic combo that works for everyone...
2019-05-08 17:16:27 -05:00
Lance Edgar
e9976635ba Align pseudo-columns for grid filters; let app settings define widths 2019-05-08 17:13:01 -05:00
Lance Edgar
079680d72e Add simple_field() def for base falafel template
hopefully this is a useful abstraction which will allow for smoother transition
to Buefy-style fields, when the time comes?
2019-05-08 16:15:54 -05:00
Lance Edgar
4c3dc6362c Make "view profile" buttons use "primary" color
for sake of Buefy themes
2019-05-08 16:15:24 -05:00
Lance Edgar
98428bf8c2 Fix sorting info bug when Buefy grid doesn't support it 2019-05-08 15:37:03 -05:00
Lance Edgar
73eec8f112 Add support for "quickie" search in falafel theme 2019-05-08 14:19:20 -05:00
Lance Edgar
789512de55 Must still define "jquery theme" for falafel theme, for now
ugh, need to get rid of that ASAP
2019-05-08 13:40:27 -05:00
Lance Edgar
070d4fc43e Force unicode string behavior for left/right arrow thingies
...hopefully this fixes an error we're suddenly seeing on a staging server?
2019-05-08 13:21:43 -05:00
Lance Edgar
fadf540422 Allow choosing report from simple list, when generating new
refs #6619
2019-05-08 13:00:09 -05:00
Lance Edgar
3cb803ffe3 Clean up falafel theme, move some parts to root template path 2019-05-07 21:10:48 -05:00
Lance Edgar
6ef217c546 Expose params and type key for report output 2019-05-07 17:15:52 -05:00
Lance Edgar
118f22c164 Update changelog 2019-05-07 15:01:45 -05:00
Lance Edgar
b2b4e1bfbc Add basic Buefy support for merging 2 objects
i.e. special grid stuff, plus "merge" view
2019-05-06 21:43:59 -05:00
Lance Edgar
9d6cc86e60 Add basic Buefy support for row grids
possibly even "complete" support...guess we'll see
2019-05-06 19:53:59 -05:00
Lance Edgar
a3ca6abb7a Add basic support for "quickie" search
a master view can "support" quickie search, which means it will setup a route
suitable for the quickie search form action.  and/or it can "expose" quickie
search which means it will actually show a quickie search form on its views
2019-05-06 18:34:42 -05:00
Lance Edgar
35158204c5 Update changelog 2019-05-05 20:15:42 -05:00
Lance Edgar
4c4cefde6d Add basic Buefy support for full "profile" view for Person 2019-05-04 03:19:40 -05:00
Lance Edgar
ff9554adc1 Update changelog 2019-05-03 14:28:08 -05:00
Lance Edgar
303c741a10 Add basic support for "touching" a data record object
to trigger further datasync logic for it, etc.
2019-05-03 14:24:55 -05:00
Lance Edgar
6b2ba3a285 Update changelog 2019-04-30 20:39:58 -05:00
Lance Edgar
06bedf6cb4 Pass batch execution kwargs when doing that via subprocess
i.e. instead of the normal in-app method
2019-04-29 09:06:54 -05:00
Lance Edgar
a5f04b6c7f Add filter for Vendor ID in Pricing Batch row grid 2019-04-25 21:29:10 -05:00
Lance Edgar
364257fe05 Update changelog 2019-04-25 15:40:12 -05:00
Lance Edgar
0d00bd746e Don't assume grid model class declares its title
that works for Rattail models, but not e.g. those from Onager
2019-04-25 15:39:30 -05:00
Lance Edgar
5c86ab38a4 Update changelog 2019-04-25 14:49:45 -05:00
Lance Edgar
cb67a23d0a Add render_person() convenience method for MasterView 2019-04-25 14:46:11 -05:00
Lance Edgar
25c8edd81c Allow config to specify grid "page size" options 2019-04-23 22:56:38 -05:00
Lance Edgar
798a9893e9 Add category, family, report code support for generic product batch 2019-04-23 22:50:58 -05:00
Lance Edgar
f8d26b4f8f Fix some issues with progress "socket" workaround for batches 2019-04-19 17:28:45 -05:00
Lance Edgar
2c1985bef3 Add support for generic "product" batch type 2019-04-19 13:23:21 -05:00
Lance Edgar
4a5f1ce19a Improve default people "profile" view somewhat 2019-04-19 11:20:45 -05:00
Lance Edgar
efb1a73e88 Add basic Buefy support for "find user/role with permission X"
still not totally polished, but works as expected
2019-04-18 22:13:05 -05:00
Lance Edgar
ea54ca6c11 Expose new code fields for pricing batch 2019-04-18 18:21:32 -05:00
Lance Edgar
1016b46243 Add "created by" and "executed by" grid filters for all batch views 2019-04-18 17:51:22 -05:00
Lance Edgar
a66ea53743 Declare row fields for vendor catalog batches
also exposes new "allowance" fields
2019-04-18 17:02:24 -05:00
Lance Edgar
95fb78f645 Fix auto-disable action for new message form
i.e. we don't want auto-disable there, b/c template does its own thing
2019-04-18 15:30:08 -05:00
Lance Edgar
6d68b56c56 Add views for "new product" batches 2019-04-17 21:48:41 -05:00
Lance Edgar
fcfc8b56bb Add basic Buefy support for App Settings page
also various buttons have been tweaked on some other "master view" pages
2019-04-17 14:55:27 -05:00
Lance Edgar
e1ff4578e9 Improve logic used to determine if current theme supports Buefy
let settings define this per theme, but have sane defaults also
2019-04-16 15:44:02 -05:00
Lance Edgar
e45dfd7351 More tweaks for Buefy support 2019-04-15 20:34:34 -05:00
Lance Edgar
4a92b05b57 Add Buefy support for email preview buttons 2019-04-15 19:54:17 -05:00
Lance Edgar
a0cd1f4cd0 Add "most of" Buefy support for grid filters
still a couple of details to wrap up yet, but this is most of it!
2019-04-15 18:36:14 -05:00
Lance Edgar
23c38e33d4 Update changelog 2019-04-12 16:01:21 -05:00
Lance Edgar
80158ffa95 Add "view profile" helper for all person-related views 2019-04-12 15:54:56 -05:00
Lance Edgar
97345c9710 Add raw_datetime() function to tailbone.helpers module 2019-04-12 12:55:22 -05:00
Lance Edgar
fdb76fc56c Add a bit more context for "view person profile" 2019-04-12 12:55:09 -05:00
Lance Edgar
df43abf9d3 Hopefully fix style bug when new filter is added to grid
i.e. when user selects a new filter from dropdown, sometimes it would display
incorrectly, with everything "after" the checkbox appearing *below* instead of
to the right of it
2019-04-12 10:48:56 -05:00
Lance Edgar
6ae703dfd9 Add "view profile" for viewing *all* details of a given person at once
feature preview (easter egg) only for now though, lots of refinement to do yet
2019-04-10 16:46:16 -05:00
Lance Edgar
ec70d85638 Add custom grid filter for phone number fields
and use it in various grid views
2019-04-10 14:20:36 -05:00
Lance Edgar
2bdcc4fe47 Can finally assume "simple" menus by default
all apps in the wild already using them
2019-04-02 21:55:54 -05:00
Lance Edgar
c26af4758b Update changelog 2019-04-02 14:48:59 -05:00
Lance Edgar
511ba61b1c Add move_before() convenience method for GridFilterSet
to more easily rearrange sort order of grid filters
2019-04-02 14:44:59 -05:00
Lance Edgar
bf189bb704 Use shipped instead of ordered, for receiving authority
i.e. compare receiving quantities to shipped quantities instead of ordered
2019-04-01 13:32:43 -05:00
Lance Edgar
49017fda39 Make sure user sees "receive row" page on mobile, after scanning UPC
was still redirecting to "view row" which is sort of deprecated now...
2019-04-01 13:31:57 -05:00
Lance Edgar
53917e9bf5 Require invoice parser selection for new truck dump child from invoice 2019-04-01 12:32:35 -05:00
Lance Edgar
503d508a86 Update changelog 2019-03-29 12:51:14 -05:00
Lance Edgar
8ee20e52f8 Add icon for Feedback button, in falafel theme 2019-03-29 00:29:16 -05:00
Lance Edgar
05b8ed7153 Add support for "row status" in Buefy grid tables 2019-03-28 23:09:10 -05:00
Lance Edgar
24547b4fc5 Add proper hamburger menu for falafel theme
fixes "disappearing menu" issue on mobile
2019-03-28 22:15:08 -05:00
Lance Edgar
18ad664acb Add validation when "declaring credit" for receiving batch row
i.e. don't just blindly attempt, when it isn't supported
2019-03-27 21:06:23 -05:00
Lance Edgar
d60679adfd Don't allow deletion of some receiving data rows on mobile
specifically, rows on a truck dump parent, which originated from a child
batch (and therefore presumably, an invoice)
2019-03-27 20:11:32 -05:00
Lance Edgar
9ace36c459 Remove duplicate code
not sure how that got in there, oh well
2019-03-27 20:10:09 -05:00
Lance Edgar
e9c9772c58 Fix HTML escaping bug when rendering products with pack price 2019-03-27 19:42:44 -05:00
Lance Edgar
d20d22ffb6 Fix rendering bug when price.multiple is null 2019-03-27 19:39:58 -05:00
Lance Edgar
a139d9c844 Add feature for generating new report of arbitrary type and params 2019-03-27 18:38:33 -05:00
Lance Edgar
13bba63382 Remove 'number' column for Customers grid by default 2019-03-24 21:09:12 -05:00
Lance Edgar
8d6ecc3ec7 Add basic "Buefy" support for grids (master index view)
still pretty experimental at this point, but making progress
2019-03-24 21:09:08 -05:00
Lance Edgar
3cef591719 Add support for one more package link in upgrade diffs 2019-03-22 20:02:36 -05:00
Lance Edgar
34a3aa0e3d Add smarts for a couple more projects in the upgraded packages links 2019-03-22 19:59:32 -05:00
Lance Edgar
1938884656 Update changelog 2019-03-21 19:34:15 -05:00
Lance Edgar
30ed84fd1d Allow width of object helper panel to grow 2019-03-21 19:30:10 -05:00
Lance Edgar
b67414bb84 Update changelog 2019-03-14 13:37:49 -05:00
Lance Edgar
5b9e97b4eb Add "declare credit" UI for receiving batch rows 2019-03-13 19:15:53 -05:00
Lance Edgar
c869516449 Add basic "receive row" desktop view for receiving batches
not terribly polished yet, but works
2019-03-13 18:31:57 -05:00
Lance Edgar
7fab472fc4 Add "time ago" for "product already receieved" alert on mobile 2019-03-13 12:49:54 -05:00
Lance Edgar
f755aefbfa Honor enum sort order where possible, for grid filter values 2019-03-12 15:13:34 -05:00
Lance Edgar
43122381f5 Add mobile alert when receiving product for 2nd time
optional per config.  idea is to alert user so they don't accidentally
double-receive a given item
2019-03-12 14:25:40 -05:00
Lance Edgar
d0b1cb527e Tweak how batch handler is invoked to remove row
also, removes some related logic which now lives in handler
2019-03-11 19:32:41 -05:00
Lance Edgar
c78d6f2104 Update changelog 2019-03-11 13:26:46 -05:00
Lance Edgar
eac2c2ddb2 Fix some unicode literals for base template
only necessary for python2, but we still must support that for now...
2019-03-11 13:17:26 -05:00
Lance Edgar
9b1efc3e45 Update changelog 2019-03-11 13:01:31 -05:00
Lance Edgar
512084194d Fix PO unit cost calculation for ordering row, batch 2019-03-11 12:20:56 -05:00
Lance Edgar
8bb09f5739 Begin to customize grid filters, for 'falafel' theme 2019-03-10 23:24:24 -05:00
Lance Edgar
0a68ff6dd0 Add 'falafel' theme, based on bobcat
but with more aggressive approach, includes no jQuery UI JS/CSS (and is
somewhat broken accordingly, for now)
2019-03-10 21:36:25 -05:00
Lance Edgar
e18e2492af Fix script tag for dodo theme 2019-03-10 18:17:59 -05:00
Lance Edgar
5d04de936b Allow apps to set background color per request 2019-03-10 16:36:16 -05:00
Lance Edgar
9a85bd0edb Add basic 'dodo' theme
definitely not complete, but a decent feature preview
2019-03-09 23:19:59 -06:00
Lance Edgar
20b97a88c0 Tweak header styles for 'bobcat' theme 2019-03-09 23:06:33 -06:00
Lance Edgar
eafe3737dc Refactor template content_title() and prev/next buttons feature
those were intertwined but now are a bit more separate, much better
2019-03-09 21:22:07 -06:00
Lance Edgar
9f743daf07 Fix login page styles for bobcat theme 2019-03-09 18:44:13 -06:00
Lance Edgar
291ec3aa04 Hide feedback dialog HTML
so user can't ever see it during page load
2019-03-09 18:33:08 -06:00
Lance Edgar
84f25ae91e Fix layout issues for bobcat theme, so footer sticks to bottom
i.e. even when page has little/no content
2019-03-09 18:32:43 -06:00
Lance Edgar
5516a11012 Fix navbar, footer background to match custom body background 2019-03-09 01:58:22 -06:00
Lance Edgar
316ed83047 Add view, edit links to vue.js users index 2019-03-09 01:52:07 -06:00
Lance Edgar
75bddc8777 Use configured background color for 'bobcat' theme 2019-03-08 23:30:36 -06:00
Lance Edgar
d096909a95 Expose "true cost" and "true margin" columns for products grid 2019-03-08 14:33:57 -06:00
Lance Edgar
15c47fb593 Update changelog 2019-03-08 11:50:40 -06:00
Lance Edgar
d337defb09 Expose new "calculated" invoice totals for receiving batch, rows 2019-03-07 17:05:25 -06:00
Lance Edgar
3760c3239f Improve display of purchase credit data
esp. within a receiving batch row
2019-03-07 12:21:50 -06:00
Lance Edgar
4a9b528c47 Only objectify address data if present
i.e. don't try to "remove" an address if no fields are present in form
2019-03-06 21:06:48 -06:00
Lance Edgar
60334229d5 Fix grid link logic some more...
should not show link if value is None
2019-03-06 21:03:43 -06:00
Lance Edgar
40c7e34014 Show grid link even when value is "false-ish"
saw a value of '0' get rendered with no link; this fixes
2019-03-06 18:22:12 -06:00
Lance Edgar
75bea75dce Update changelog 2019-03-06 13:20:48 -06:00
Lance Edgar
d5efc51d61 Tweak the "incomplete" row filter for mobile receiving batch
this really is not ideal...hopefully good enough to limp along for a while yet
2019-03-05 11:03:24 -06:00
Lance Edgar
3789e4b3bd Don't require user name for anonymous feedback msg 2019-03-04 18:29:25 -06:00
Lance Edgar
ef7466e0d5 Add mobile support for basic "feedback" dialog 2019-03-04 18:12:37 -06:00
Lance Edgar
006a7096ed Add ability to sort by Credits? column for receiving batch rows 2019-03-02 18:07:07 -06:00
Lance Edgar
b7a026a7e8 Add "truck dump status" fields to receiving batch views
also refactor some code to use e.g. `batch.is_truck_dump_parent()` for clarity
2019-03-01 12:12:00 -06:00
Lance Edgar
a2965d83af Remove 'truck_dump' field from mobile receiving batch view
not needed, and a bit redundant
2019-03-01 09:39:40 -06:00
Lance Edgar
05481f7828 Add new "receive row" view for mobile receiving
this frees us up to dumb-down the "view row" which thus far has been tasked
with actual receiving
2019-02-28 16:21:13 -06:00
Lance Edgar
b1c77afc81 Remove logic for "receiving a row" and invoke handler instead
i.e. for receiving batch
2019-02-28 15:54:31 -06:00
Lance Edgar
a5df9a2b3d Invoke handler when marking batch as (in)complete 2019-02-26 18:01:27 -06:00
Lance Edgar
0f5d668f86 Add "plain" date widget
to avoid deform.addCallback() JS for mobile forms

surely there's a better solution, but this works for now...
2019-02-22 20:46:54 -06:00
Lance Edgar
4b3e1c7b1b Update changelog 2019-02-22 16:03:34 -06:00
Lance Edgar
4b97b403d3 Treat empty string as null, for app settings field values 2019-02-22 15:58:55 -06:00
Lance Edgar
145e7f5529 Allow vendor field to be dropdown, for mobile ordering/receiving
based on config.  useful for apps which have very few vendors
2019-02-19 21:11:49 -06:00
Lance Edgar
19080924d5 Declare "is contact" for the Customers view
removes some duplicated code.  also this adds CustomerNote to version history
2019-02-19 20:14:10 -06:00
Lance Edgar
6a57e51f6b Add unique_id() validator method to Customer view 2019-02-19 18:11:52 -06:00
Lance Edgar
e916d4f71f Add basic support for editing address for a "contact" record 2019-02-19 18:11:15 -06:00
Lance Edgar
b0b551af82 Add basic support for "mobile edit" of records
specifically need to allow this for Customer records, for one app
2019-02-19 17:10:42 -06:00
Lance Edgar
37a8bfd6f5 Update changelog 2019-02-14 10:36:24 -06:00
Lance Edgar
489619c337 Refactor email settings/preview views to use email handler
still have one thing to refactor before this is really "done" though..
2019-02-13 20:52:57 -06:00
Lance Edgar
bd43884a1d Improve validator for "percent" input widget 2019-02-13 15:15:47 -06:00
Lance Edgar
d693c00c47 Update changelog 2019-02-12 14:06:25 -06:00
Lance Edgar
caec354092 Remove usage of colander.timeparse() function
that did very little, and has been removed in latest colander release
2019-02-12 14:03:27 -06:00
Lance Edgar
d2629e8925 Update changelog 2019-02-08 13:56:00 -06:00
Lance Edgar
a45ce2ced2 Introduce support for "children first" truck dump receiving
still needs more testing to see what's left...
2019-02-06 16:50:40 -06:00
Lance Edgar
4af971b83c Update changelog 2019-02-06 13:27:53 -06:00
Lance Edgar
6cfc72c875 Add support for downloading batch rows as XLSX file 2019-02-05 18:18:02 -06:00
Lance Edgar
10c30cd21a Update changelog 2019-02-05 17:28:58 -06:00
Lance Edgar
13ec46b145 Add generic support for "enable/disable selection" of grid records 2019-02-05 10:49:54 -06:00
Lance Edgar
05bb8a2df0 Add support for background color app setting 2019-02-03 14:40:21 -06:00
Lance Edgar
2f048b45c9 Improve user form handling, to prevent unwanted Person creation
i.e. only create new person if name(s) were provided
2019-02-02 20:30:35 -06:00
Lance Edgar
38d0ef8542 Use app node title setting for base template 2019-02-02 20:30:14 -06:00
Lance Edgar
d67a2e60fe Fix template bug when master view has no "delete selected" feature 2019-02-02 20:15:28 -06:00
Lance Edgar
22c71d832e Add template support for "delete selected objects" feature
whoops, should have been part of last commit
2019-02-02 19:43:47 -06:00
Lance Edgar
84fc3e7d50 Add support for "delete set" feature for main object index view
aka. "delete selected objects"
2019-02-02 19:34:36 -06:00
Lance Edgar
5ec11cf5b8 Update changelog 2019-01-31 16:50:09 -06:00
Lance Edgar
933ee88172 Improve rendering of enabled field for tempmon clients, probes
to make it more clear, when disabled
2019-01-29 17:21:48 -06:00
Lance Edgar
d18302314d Update changelog 2019-01-28 15:50:09 -06:00
Lance Edgar
eb78d79bb3 Update tempmon UI now that enabled flags are really datetime in DB 2019-01-25 19:36:13 -06:00
Lance Edgar
90e1baef50 Update changelog 2019-01-24 17:13:19 -06:00
Lance Edgar
d028679077 Fix response header value, per python3 2019-01-24 17:11:09 -06:00
Lance Edgar
0c57183a2d Update changelog 2019-01-23 13:26:11 -06:00
Lance Edgar
4b9394fe6b Use empty string for "missing" department name, for ordering worksheet
that way the sorting works as expected (i.e. for python3)
2019-01-23 13:23:04 -06:00
Lance Edgar
595f857aa1 Update changelog 2019-01-22 15:07:01 -06:00
Lance Edgar
ede9bfb17a Include robots.txt in the manifest
how did this manage to be left out all this time?
2019-01-22 14:13:34 -06:00
Lance Edgar
91bb71dc29 Update changelog 2019-01-21 17:17:19 -06:00
Lance Edgar
318e8645b2 Fix Excel download of ordering batch, per python3 2019-01-21 17:11:12 -06:00
Lance Edgar
5a96672d79 Log details of one-off label printing error, when they occur
needed for troubleshooting
2019-01-21 16:23:50 -06:00
Lance Edgar
1d744d4c26 Update changelog 2019-01-17 15:47:08 -06:00
Lance Edgar
8945dd75aa Convert all datetime values to localtime, for "download rows as CSV"
this probably will need to be more flexible at some point; this works for now
2019-01-15 15:49:54 -06:00
Lance Edgar
4413a61513 Update changelog 2019-01-11 15:15:34 -06:00
Lance Edgar
1dd42e1ab2 Fix products grid query when filter/sort has multiple ProductCost joins 2019-01-11 15:14:37 -06:00
Lance Edgar
1dc21d846e Update changelog 2019-01-10 18:05:17 -06:00
Lance Edgar
0e0b125d99 Make command configurable, for restarting tempmon-client
can even configure it per client if necessary
2019-01-10 18:01:23 -06:00
Lance Edgar
051cb71956 Let batch view customize logic for marking batch as (in)complete 2019-01-09 14:18:30 -06:00
Lance Edgar
98fc4608da Tweak batch view template "object helpers" for easier customization 2019-01-09 12:35:26 -06:00
Lance Edgar
5bdacc70e5 Update changelog 2019-01-08 12:45:25 -06:00
Lance Edgar
d659e62fda Add custom widget for "percent" field
so that storage can use "traditional" (0.3612) format but UI can use
"human-friendly" format (36.12 %)
2019-01-08 12:18:48 -06:00
Lance Edgar
7bf509097f Update changelog 2019-01-07 16:19:53 -06:00
Lance Edgar
b333b3f083 Turn off messaging-related menus by default
i.e. unless config declares support for messaging.  this can cause errors
though, if menus try to link to non-existing view routes
2019-01-07 16:18:45 -06:00
Lance Edgar
6277e0e372 Fix styles for master view_row template
per flexbox
2019-01-07 16:10:55 -06:00
Lance Edgar
10f594c774 Minor tweaks 2019-01-06 19:52:56 -06:00
Lance Edgar
c53170fe84 Update changelog 2019-01-02 17:59:00 -06:00
Lance Edgar
1e42fe9de5 Only allow POST method for executing "results" for batch grid 2019-01-02 17:07:43 -06:00
Lance Edgar
c064bb275f Expose vendor_id column in pricing batch row grid 2019-01-02 16:38:38 -06:00
Lance Edgar
1fb9ef4d58 Update changelog 2019-01-01 22:29:43 -06:00
Lance Edgar
0ea0ca240a Fix bug when making new member 2018-12-19 23:14:23 -06:00
Lance Edgar
512e74c493 Add basic master view for Members table 2018-12-19 23:07:32 -06:00
Lance Edgar
c9d40abe96 Update changelog 2018-12-19 11:38:01 -06:00
Lance Edgar
2ed34dda15 Make sure custom field labels are shown for batch execution dialog 2018-12-18 20:23:13 -06:00
Lance Edgar
5151e2dd96 Expose label profile selection when editing label batch 2018-12-18 19:26:11 -06:00
Lance Edgar
a637ba1e6b Add 'percent' as field type for Form; fix rendering of 'percent' for Grid
these both now assume the value obtained will be a "typical" percentage
decimal, i.e. 0.30130 instead of 30.130
2018-12-18 17:41:38 -06:00
Lance Edgar
3e9fdbacad Expose subdepartment for pricing batch rows 2018-12-18 16:50:49 -06:00
Lance Edgar
8d534691ac Add 'unit_cost' to Excel download for Products grid 2018-12-18 16:37:40 -06:00
Lance Edgar
c7496d7018 Clean up some inventory batch UI logic; prefer units by default 2018-12-18 15:13:01 -06:00
Lance Edgar
d61d9cc574 Add ability to make new pricing batch from input data file 2018-12-17 22:35:56 -06:00
Lance Edgar
6a643411a4 Fix some styles, per flexbox layout changes 2018-12-17 22:35:42 -06:00
Lance Edgar
d369693f9f Add oneoff_import() helper method to MasterView class 2018-12-15 22:29:28 -06:00
Lance Edgar
b4d1666bdf Add object_helpers() def to master/view template 2018-12-15 22:29:08 -06:00
Lance Edgar
2f2b36c91d Update changelog 2018-12-14 16:09:26 -06:00
Lance Edgar
10a8babed7 Fix some layout styles for master edit template
yay, flexbox
2018-12-14 16:08:18 -06:00
Lance Edgar
86117944e4 Update changelog 2018-12-13 13:01:33 -06:00
Lance Edgar
841dda903f Refactor product view template to use flexbox styles
finally, the layout is reasonably clean and should stay that way...
2018-12-12 15:07:18 -06:00
Lance Edgar
6907fbe844 Update changelog 2018-12-10 18:34:40 -06:00
Lance Edgar
bef7a2af36 Expose new "sync me" flag for LabelProfile settings 2018-12-04 18:56:20 -06:00
Lance Edgar
8192b19858 Update changelog 2018-12-02 15:35:42 -06:00
Lance Edgar
fe35986432 Expose old_price_margin field for pricing batch rows 2018-11-30 19:24:23 -06:00
Lance Edgar
358ac1592b Fix layout issues for "object-helper" element
thanks flexbox!
2018-11-30 17:53:00 -06:00
Lance Edgar
e100e0ea72 Use 4 decimal places when calculating hours for worked shift excel download 2018-11-30 16:59:59 -06:00
Lance Edgar
61fa77b752 Remove some pointless tests
they became broken, but not worth fixing
2018-11-30 16:07:58 -06:00
Lance Edgar
3bc0ba73ee Fix app_title reference in mobile templates 2018-11-30 15:32:59 -06:00
Lance Edgar
6022ef9be3 Don't assume app has configured a tempmon DB engine
whoops
2018-11-29 14:52:44 -06:00
Lance Edgar
c1eaf28812 Add support for top-level links for simple menus
also add 'messaging_enabled' to global template context, so can include (or
not) that stuff in the user menu
2018-11-29 14:51:57 -06:00
Lance Edgar
0eb394fb86 Add support for "simple" menus in base template
also flesh out the simple menu logic a bit, add separators etc.
2018-11-29 14:00:11 -06:00
Lance Edgar
291128b96f Refactor default and bobcat theme re: "context menu" styles
finally, we have that hugging the top right corner, without float!
2018-11-29 12:04:29 -06:00
Lance Edgar
c88e1cca68 Force use of "simple" menus for bobcat theme
seems safe i think...
2018-11-29 01:55:29 -06:00
Lance Edgar
b5083d32db Add basic support for "simple menus"
for sake of keeping those in common across various themes
2018-11-29 01:39:20 -06:00
Lance Edgar
a76a7dd54c Add support for new Bulma 'navbar' menu for bobcat theme
unfortunately the /menu.mako can't be shared (yet?) so apps must maintain a
separate one if they wish to support this new theme.

also, now when changing app theme we totally clear the lookup object's template
cache.  this was necessary for sake of /menu.mako but seems to be 'safe' so far
2018-11-28 23:50:50 -06:00
Lance Edgar
0ba1d65b11 Use bulma-style notifications for bobcat theme
instead of previous one, which was sort of pseudo-jquery i guess?
2018-11-28 22:35:22 -06:00
Lance Edgar
1fa56aa683 Add Bulma-style footer to bobcat theme
also refactor HTML element tree in general, for sake of bulma
2018-11-28 22:23:02 -06:00
Lance Edgar
103f006cc0 Turn on Bulma CSS framework for 'bobcat' theme
still trying to match the default theme here, but only in spirit, and giving
priority to doing things "the bulma way" if possible
2018-11-28 21:39:46 -06:00
Lance Edgar
9913586155 Add basic 'excite-bike' theme
no one will want this, surely...  but useful for contrast
2018-11-28 19:57:10 -06:00
Lance Edgar
3a982f6e38 Fix head_tags() template inheritance bug
this broke lots of things!
2018-11-28 19:44:09 -06:00
Lance Edgar
23ce2fb33c Add description, notes to default form_fields for batch views 2018-11-28 18:15:48 -06:00
Lance Edgar
36f786f0eb Clean up how we configure DB sessions on app startup
not real sure if the old logic was a "problem" per se, but this cleanup seems
warranted and (fingers crossed) shouldn't break anything
2018-11-28 15:37:57 -06:00
Lance Edgar
c56eadc49b Fix "delete object" form submit
not real sure why that broke, but this is a better pattern anyway
2018-11-28 15:37:35 -06:00
Lance Edgar
508359a939 Fix template references for app_title
make sure we only look to /base_meta.mako for that
2018-11-27 18:20:15 -06:00
Lance Edgar
acaa83c31a Add some code comments 2018-11-27 17:53:24 -06:00
Lance Edgar
ea0dc1ea19 Add template "theme" feature, albeit global
would be even better to let each user session have something different, but
alas this is all-or-nothing for now
2018-11-27 17:52:02 -06:00
Lance Edgar
f05d50bce3 Allow user to choose which columns to show, for Vue.js users grid 2018-11-27 03:05:14 -06:00
Lance Edgar
b7319fd152 Add patterns for joining tables in API list methods
i.e. we needed to do an *outer* join on User.person since that can be null
2018-11-27 02:21:38 -06:00
Lance Edgar
93aa96a339 Add support for sorting by person name in Vue.js Users grid 2018-11-27 01:49:39 -06:00
Lance Edgar
875f520710 Add basic FontAwesome support to new Vue.js table grid
i.e. for sortable column icons
2018-11-27 00:57:38 -06:00
Lance Edgar
02528aecc7 Tweak styles for "global title" in header 2018-11-26 22:58:21 -06:00
Lance Edgar
993d8c3b4e Add very basic Vue.js grid/index experiment for Users table 2018-11-26 22:07:30 -06:00
Lance Edgar
25e61cc8d5 Use empty string instead of null as fallback value, for pricing rows CSV 2018-11-26 19:25:32 -06:00
Lance Edgar
d773043429 Allow override of products query when making batch from it
also, invoke handler properly when populating the batch (i.e. to include
setup/teardown)
2018-11-26 18:58:55 -06:00
Lance Edgar
3b54ab3e0b Add "min % diff" option for pricing batch from products query
refactor the "batch from query" a bit also, to allow for multiple batch type
options which represent the same underlying batch type.  (thought i needed
that, then realized i didn't, but seems safe to include.)
2018-11-25 20:14:49 -06:00
Lance Edgar
d9e5eff23d Fix download filename when it contains spaces 2018-11-25 17:27:31 -06:00
Lance Edgar
4fa9ab3c6e Add better support for "make import batch from file" pattern 2018-11-22 20:26:28 -06:00
Lance Edgar
0375d66b91 Tweak default "model title" logic for master view
i.e. if view class doesn't declare one
2018-11-22 11:12:31 -06:00
Lance Edgar
4ad958b9d2 Fix bug in receiving template when truck dump not enabled 2018-11-21 23:03:07 -06:00
Lance Edgar
de788423e1 Update comments per frozen webhelpers2_grid dependency
not sure yet if it's worth refactoring to new version? probably is though..
2018-11-21 21:19:02 -06:00
Lance Edgar
6b7631013d Remove some relationship fields when creating new Person 2018-11-21 19:56:01 -06:00
Lance Edgar
5c66eb5f4f Refactor API collection_get to work with vue-tables-2
https://github.com/matfish2/vue-tables-2
2018-11-20 20:49:13 -06:00
Lance Edgar
81db564e34 Delay import of sqlalchemy_filters project
since apparently we can't use this (and hence our new API) unless python3
2018-11-20 17:07:28 -06:00
Lance Edgar
46501b7caa Use sqlalchemy-filters package for REST API collection_get
just sorting and pagination so far though, no actual filters yet
2018-11-19 23:56:42 -06:00
Lance Edgar
3e8d6a27f1 Update changelog 2018-11-19 14:15:48 -06:00
Lance Edgar
4806d7e5fe Expose price_diff_percent, margin_diff for pricing batch row 2018-11-18 21:12:08 -06:00
Lance Edgar
342c7c3854 Move some label definitions for pricing batch rows 2018-11-18 20:47:24 -06:00
Lance Edgar
4a36ab827c Expose "suggested price" for pricing batch row view 2018-11-18 20:02:43 -06:00
Lance Edgar
fded97d586 Don't add values to CSV row for undefined fields 2018-11-18 20:02:14 -06:00
Lance Edgar
de6275003e Add vendor id, name to row CSV download for pricing batch 2018-11-18 19:36:28 -06:00
Lance Edgar
f7e549b5fd Expose new Customer.wholesale flag 2018-11-17 19:26:13 -06:00
Lance Edgar
e27debd452 Allow override of template for custom create views 2018-11-17 18:23:07 -06:00
Lance Edgar
e3afb2c52a Add department, subdepartment "name" columns for products XLSX download 2018-11-14 10:46:23 -06:00
Lance Edgar
fed42d4898 Add "200 per page" option for UI table grids 2018-11-14 10:38:08 -06:00
Lance Edgar
b33c2fd0d0 Add simple price fields for product XLSX results download 2018-11-14 10:33:39 -06:00
Lance Edgar
a9b60b3d4a Update changelog 2018-11-08 15:48:38 -06:00
Lance Edgar
20e654ddea Display "suggested price" when viewing product details
very basic support here...
2018-11-08 09:57:41 -06:00
Lance Edgar
bdbb8e2a7d Make sure status field is readonly when creating new batch 2018-11-07 16:47:51 -06:00
Lance Edgar
37b9a81344 Add Grid.hide_columns() convenience method 2018-11-07 16:47:41 -06:00
Lance Edgar
21014c5013 Remove unwanted style for "email setting description" field
not sure why that was in there, but it broke some other pages sure enough.
will have to revisit whenever i see the "problem" on email settings page again
2018-11-07 16:46:55 -06:00
Lance Edgar
9daefed9b3 Detect non-numeric entry when locating row for purchase batch
i.e. don't try to convert to GPC if non-numeric
2018-11-07 13:08:59 -06:00
Lance Edgar
23a94ebfad Update changelog 2018-11-07 10:11:11 -06:00
Lance Edgar
d1980aeed8 Add client IP address to user feedback email 2018-11-05 11:24:03 -06:00
Lance Edgar
fec8ba28e2 Refactor API views a bit for sake of running as separate service
also add "proper" (sic) permission checks
2018-11-03 18:55:26 -05:00
Lance Edgar
9b61b05155 Add dependency for cornice 2018-11-03 17:15:23 -05:00
Lance Edgar
ad35481234 Use Cornice for REST API viws
still very experimental at this point
2018-11-03 17:13:08 -05:00
Lance Edgar
31ae5eacd5 Tweak status code rendering for upgrades API view 2018-11-02 21:44:19 -05:00
Lance Edgar
22ef6aad7b Fix bug in upgrades API view, when upgrade has no status code 2018-11-02 21:38:06 -05:00
Lance Edgar
e4a518c444 Remove some unwanted row grid labels
doing it that way makes customization harder..still need to revisit how best to
do that i guess
2018-11-02 18:59:46 -05:00
Lance Edgar
b8fdce378f Add basic API endpoint for upgrades, partial pagination support
latter is still broken, but this much is a starting point i think
2018-11-01 00:34:28 -05:00
Lance Edgar
0c41395cfc Add very basic API views to expose customer, user tables
just so we can populate an "index grid table" in the UI, for now..
2018-10-29 20:16:14 -05:00
Lance Edgar
f43b6db427 Add initial tailbone.api subpackage, with basic auth API views
lots more to do here! but hopefully this is a solid start
2018-10-27 15:17:48 -05:00
Lance Edgar
5222f44904 Update changelog 2018-10-25 21:20:37 -05:00
Lance Edgar
1123cbb728 Only show Restart Filemon button if so configured
otherwise everyone would need to include that view in their config
2018-10-25 17:52:00 -05:00
Lance Edgar
2131ea65cb Add button for restarting filemon
although this button shows up only on the datasync page, for now..
2018-10-25 17:47:43 -05:00
Lance Edgar
fc8391c6d1 Use load mask even for first data fetch, for probe readings graph 2018-10-25 16:00:15 -05:00
Lance Edgar
f086a2aa38 Add more time range options for viewing tempmon probe readings as graph 2018-10-25 15:57:25 -05:00
Lance Edgar
92c1b165fb Try to configure the 'pyramid_retry' package, if available
this is used (as of pyramid 1.9) for gracefully handling postgres restarts
2018-10-25 14:33:28 -05:00
Lance Edgar
3df1407073 Update changelog 2018-10-24 19:22:27 -05:00
Lance Edgar
05c33a4b34 Add ability to "transform" TD parent row from pack to unit item
to make "claiming" more straightforward
2018-10-24 18:52:49 -05:00
Lance Edgar
2bd107056c Add MasterView.render_product(), fix edit for pricing batch row 2018-10-23 17:20:47 -05:00
Lance Edgar
b9da7e1b12 Allow individual App Settings to not be required; allow null
hopefully this does the right thing also, not saving null to the db when that
isn't needed etc.
2018-10-23 10:25:57 -05:00
Lance Edgar
f1eba6a404 Update changelog 2018-10-19 23:01:54 -05:00
Lance Edgar
0e13e5606a Add very basic support for viewing probe readings as graph
can only view the last hour of readings, so far
2018-10-19 23:00:43 -05:00
Lance Edgar
c6b2f831e5 Update changelog 2018-10-19 21:18:53 -05:00
Lance Edgar
f26f42427f Don't include LargeBinary properties in default colander schema
actually, exclude any found in secondary properties...i.e. from relationship
2018-10-19 21:17:50 -05:00
Lance Edgar
ed9f8a269c Update changelog 2018-10-19 20:33:13 -05:00
Lance Edgar
fe2905e9df Add support for "appliance type" 2018-10-19 20:27:04 -05:00
Lance Edgar
7e28619e9d Don't include grid filters for LargeBinary columns 2018-10-19 20:26:33 -05:00
Lance Edgar
e277a19f71 Hopefully, let the Grid class generate a default list of columns 2018-10-19 20:26:04 -05:00
Lance Edgar
78941ec8d9 Add thumbnail images to Appliances grid
guess we'll see how folks like this
2018-10-19 19:47:00 -05:00
Lance Edgar
4aa8f43a7e Add basic image upload support for tempmon appliances 2018-10-19 19:20:20 -05:00
Lance Edgar
40a8761feb Add support for new Tempmon Appliance table, etc. 2018-10-19 17:55:23 -05:00
Lance Edgar
aa97a36167 Customize template for viewing probe details
probably still need to improve editing also?  we'll see
2018-10-19 16:49:47 -05:00
Lance Edgar
daa304c613 Add new timeout fields for tempmon probe 2018-10-19 16:12:42 -05:00
Lance Edgar
67e7ba023a Update release task to use twine for upload 2018-10-18 23:36:08 -05:00
Lance Edgar
af956c6c42 Update changelog 2018-10-18 23:33:22 -05:00
Lance Edgar
1bbf6c0940 Fix a dialog button for Chrome 2018-10-18 15:50:06 -05:00
Lance Edgar
8d1bd2adcd Fix API doc reference to renamed subscriber function 2018-10-17 20:05:25 -05:00
Lance Edgar
ff8f1ee435 Update changelog 2018-10-17 19:44:22 -05:00
Lance Edgar
fd15865d0b Remove some tests
ugh, this is the wrong direction, but seems practical in this case since the
tests didn't accomplish much
2018-10-17 19:44:22 -05:00
Lance Edgar
5a9fedbb9a Add basic Excel download support for Products table 2018-10-17 18:29:49 -05:00
Lance Edgar
79e71ec4ab Cache user permissions upon "new request" event
this avoids a ton of (often redundant) SQL queries when checking permissions
2018-10-17 12:50:02 -05:00
Lance Edgar
0ed3429cf7 Update changelog 2018-10-13 21:04:09 -05:00
Lance Edgar
fd0760ed07 Add "hours as decimal" hover text for some HH:MM timesheet values
hoping this helps with random troubleshooting...
2018-10-12 19:05:14 -05:00
Lance Edgar
9e065541b9 Update changelog 2018-10-09 16:38:10 -05:00
Lance Edgar
f36c1fbc3f Improve "length" (hours) column for Worked Shifts grid
web display shows "pretty" hours (e.g. 7:30) whereas the Excel export shows
"decimal" hours (7.50)
2018-10-09 16:19:55 -05:00
Lance Edgar
94ba18eaee Add basic Excel download support for raw worked shifts
also, tweak response per python3
2018-10-09 14:10:36 -05:00
Lance Edgar
362173ef10 Allow override of jquery source, for mobile base template 2018-10-06 21:04:21 -05:00
Lance Edgar
3f2c57c89f Allow override of jquery for base template 2018-10-06 20:51:04 -05:00
Lance Edgar
e05a58bdee Add some helptext for various tempmon fields 2018-10-06 17:41:33 -05:00
Lance Edgar
f17d7355e0 Auto-disable button when sending email preview 2018-10-05 19:58:58 -05:00
Lance Edgar
29e023096b Show tempmon readings when viewing client or probe
also make the probes list more helpful when viewing client
2018-10-05 19:29:26 -05:00
Lance Edgar
7650064b64 Fix bug when non-numeric entry given for mobile inventory "quick row" 2018-10-03 15:54:28 -05:00
Lance Edgar
d50d3678ec Update changelog 2018-10-03 14:20:10 -05:00
Lance Edgar
848b727b11 Tweak how receiving rows are looked up when adding to the batch
i.e. locate the product first, and then try to find an existing row to match.
previously we looked for a row based on product key match only, and it could
cause new rows to be created for a product we already had in the batch (i.e. if
the product was located via some secondary lookup other than product key)
2018-09-29 14:24:03 -05:00
Lance Edgar
5e49c2709b Expose new disk_type field for tempmon client views 2018-09-28 19:15:33 -05:00
Lance Edgar
6c1d67c966 Expose notes field for tempmon client and probe views 2018-09-28 12:27:08 -05:00
Lance Edgar
66807a801b Add support for "archived" flag in Tempmon Client views 2018-09-28 12:22:43 -05:00
Lance Edgar
c1f05bf014 Update changelog 2018-09-27 21:11:27 -05:00
Lance Edgar
d458d699e6 Restrict (temporarily I hope) webhelpers2_grid to 0.1
until we can figure out what happened in their 0.9 release
2018-09-27 21:10:36 -05:00
Lance Edgar
6c309705a0 Update changelog 2018-09-26 17:02:11 -05:00
Lance Edgar
27d5a92fee Tweak purchasing / receiving UI a bit
rows with 'out of stock' status are yellow; improve some row filter labels
2018-09-25 19:12:19 -05:00
Lance Edgar
878486cdab Capture user input for mobile receiving, and move some lookup logic
i.e. most of the logic responsible for looking up an item from e.g. scanner
entry, now lives in the handler for easier customization
2018-09-25 17:50:16 -05:00
Lance Edgar
ed5455089e Expose item_entry field for receiving batch row 2018-09-22 20:18:52 -05:00
Lance Edgar
d7863c2572 Add speedbump by default when deleting any "row" record
also, allow deleting rows for truck dump child batch
2018-09-22 19:27:17 -05:00
Lance Edgar
4a610ba2e6 Misc. UI improvements for truck dump receiving on desktop
links back and forth between parent/child rows, a little help text etc.
2018-09-22 18:33:01 -05:00
Lance Edgar
255485296c Leverage alternate code also, for mobile product quick lookup 2018-09-21 19:58:08 -05:00
Lance Edgar
99688c1c77 Update changelog 2018-09-20 18:23:09 -05:00
Lance Edgar
fb3105c099 Fix batch row status breakdown, for rows with no status 2018-09-20 18:22:36 -05:00
Lance Edgar
c3637bc416 Update changelog 2018-09-20 16:20:49 -05:00
Lance Edgar
8c26b632fe Only show mobile "quick receive" buttons if product is identifiable 2018-09-20 16:15:45 -05:00
Lance Edgar
0b9fe2dfe7 Add simple row status breakdown when viewing batch 2018-09-20 15:58:45 -05:00
Lance Edgar
3b0292029d More basic field tweaks for mobile "view product" page 2018-09-19 20:42:10 -05:00
Lance Edgar
3a91ab6bec Fix price fields, add pref. vendor/cost fields for mobile product view 2018-09-19 19:11:59 -05:00
Lance Edgar
66f1ed0e41 Do quick lookup by vendor item code, alt code for mobile receiving
at least until we have to make that configurable etc.
2018-09-19 18:22:59 -05:00
Lance Edgar
acd8c97afc Fix how we check config for mobile "quick receive" feature
at least hopefully this fixes it, and doesn't break anybody..
2018-09-19 17:16:15 -05:00
Lance Edgar
be49ca6967 Add quick-receive 1EA, 3EA, 6EA for mobile receiving
but only when cases are allowed.  at least for now...should surely be more
configurable than we have it now
2018-09-19 17:11:16 -05:00
Lance Edgar
2939b53467 Show red background for mobile receiving if product not found 2018-09-19 17:00:45 -05:00
Lance Edgar
6fb78c5dde Add setting to show/hide product image for mobile purchasing/receiving 2018-09-19 16:42:50 -05:00
Lance Edgar
5b2f4127ea Fix bug when editing truck dump child batch row quantities
sometimes we need to "add" to an existing claim which has qty None
2018-09-19 11:00:10 -05:00
Lance Edgar
c5fef6b954 Add unique check for "name" when creating new Role 2018-09-19 10:00:59 -05:00
Lance Edgar
84db66a60c Update changelog 2018-09-10 18:55:55 -05:00
Lance Edgar
db0eee707a Fix default (status) filter for Employees grid 2018-09-06 20:37:06 -05:00
Lance Edgar
06b5f6c97c Update changelog 2018-08-24 13:42:06 -05:00
Lance Edgar
a6a7d22ec1 Honor view logic when displaying Delete Row button for mobile receiving
also do not allow quick receive if receiving from scratch
2018-08-17 12:41:48 -05:00
Lance Edgar
f0d8f79676 Revert "Try to retry InvalidRequestError from sqlalchemy"
This reverts commit 4d0223e305.

well, that didn't work
2018-08-17 00:24:51 -05:00
Lance Edgar
4d0223e305 Try to retry InvalidRequestError from sqlalchemy
not sure if this is a good idea, hopefully can find out in a moment
2018-08-17 00:21:01 -05:00
Lance Edgar
528c0f9622 Refactor sqlerror tween to add support for pyramid_retry
hopefully this doesn't break anything else..
2018-08-17 00:04:59 -05:00
Lance Edgar
56392ccdd0 Add "quick receive all" support for mobile receiving
i.e. quick receive button can now receive all/remainder of the ordered qty
2018-08-16 22:21:58 -05:00
Lance Edgar
d4b2cf9943 Update changelog 2018-08-14 17:06:24 -05:00
Lance Edgar
950af8b5e0 Add "quick lookup" for mobile Products page
only if enabled, otherwise just shows the normal grid
2018-08-09 22:11:44 -05:00
Lance Edgar
21740ea2fd Show links to claiming rows for truck dump parent row 2018-08-09 15:59:57 -05:00
Lance Edgar
5e879a2d92 Remove some unused code for ordering worksheets 2018-08-07 22:42:48 -05:00
Lance Edgar
6ef5677dc5 Use invoice total, PO total as fallback, for mobile receiving list 2018-08-07 21:41:43 -05:00
Lance Edgar
ac451757b4 Add support for editing "claim" quantities for truck dump child row
at least i think this gets it all...guess we'll see
2018-08-07 15:19:38 -05:00
Lance Edgar
a348755be2 Hide 'ordered' columns for truck dump parent row grid
since that batch type is only concerned with receiving
2018-08-07 13:09:13 -05:00
Lance Edgar
a24076f0ce Make sure we refresh batch status when adding a new row
b/c whether or not it has a product will affect batch status.

this also changes how we interpret UPC for unknown product, i.e. by default we
now assume it does *not* have a check digit and that we should calculate that.
probably just a matter of time before someone needs the opposite though..
2018-08-02 16:58:38 -05:00
Lance Edgar
e0f7ba827f Update changelog 2018-07-31 14:11:42 -05:00
Lance Edgar
cefadc7c27 Don't configure versioning when making the app
that is now happening as part of the `make_config()` call
2018-07-31 14:08:38 -05:00
Lance Edgar
de6401c5db Update changelog 2018-07-30 11:53:40 -05:00
Lance Edgar
e43f713a66 Various tweaks for arbitrary model view with "rows"
just needed these for a particular feature...
2018-07-26 21:35:15 -05:00
Lance Edgar
8d77111b06 Update changelog 2018-07-26 13:50:15 -05:00
Lance Edgar
f6712a6686 Redirect to "view parent" after deleting a row
not sure why that was redirecting to "edit parent" before...weird
2018-07-26 13:33:21 -05:00
Lance Edgar
6af9440ed7 Fix permission group label for Ordering Batches
a minor annoyance, but consistency surely is better...
2018-07-25 16:23:32 -05:00
Lance Edgar
d145ce5f6d Assign purchase to new receiving batch via uuid instead of object ref
the latter was apparently causing session flush and would create the "dummy"
batch in addition to the "real" one...
2018-07-25 12:46:51 -05:00
Lance Edgar
634a93061b Let mobile form declare if/how to auto-focus a field
and for mobile ordering, auto-focus the "units" field when editing a row
2018-07-24 21:29:52 -05:00
Lance Edgar
6b3e645c12 Allow skipping of tests during release
sometimes ya just gotta do it
2018-07-19 17:41:32 -05:00
Lance Edgar
fba7c5f978 Update changelog 2018-07-19 17:39:29 -05:00
Lance Edgar
5db7d3776a Expose status etc. when editing upgrade, rename Email Settings
i.e. latter is renamed from Email Profiles, but within UI only for now
2018-07-18 21:06:07 -05:00
Lance Edgar
34bdd2ac84 Add (restore?) basic support for mobile receiving from PO 2018-07-18 16:25:54 -05:00
Lance Edgar
87ba8026e5 Don't use empty string as default setting value
should just fall back to None as per usual
2018-07-18 13:53:24 -05:00
Lance Edgar
c2968fbe52 Don't save any App Settings for which value would not change
that lets us avoid writing "redundant" values to the database, whereas in fact
the underlying value may be coming from config file
2018-07-18 13:50:32 -05:00
Lance Edgar
117e52df23 Remove unwanted line 2018-07-18 13:24:51 -05:00
Lance Edgar
4e09b757c3 Add (admin-friendly!) view to manage some App Settings
which settings are available to this view will depend on the project's settings
module, similar to how the email settings work
2018-07-18 13:09:32 -05:00
Lance Edgar
012a06d8a6 Tweak some purchase batch logic per changes in rattail 2018-07-17 20:38:48 -05:00
Lance Edgar
d8b45db331 Improve support for "receive from scratch" workflow, esp. for mobile
also try harder to make certain aspects easier to enable/disable via handler,
e.g. whether cases should be allowed as quantity input, or expired credits
should be a thing etc.
2018-07-17 19:55:15 -05:00
Lance Edgar
a34a42d2b2 Refactor mobile receiving to use "quick row" feature
plus some other random things thrown in there, for good measure..
2018-07-16 20:40:29 -05:00
Lance Edgar
3cc8adba86 Improve basic mobile views for customers, people 2018-07-15 18:13:30 -05:00
Lance Edgar
eccce1cabb Add runtime mobile flag for MasterView
will be false unless one of the mobile views are in effect...hopefully this is
a good idea
2018-07-15 18:12:21 -05:00
Lance Edgar
d3e67ccbcd Fix how we check file size when reading stdout for upgrade
i guess sometimes we were getting a negative number there
2018-07-15 17:40:46 -05:00
Lance Edgar
45f19517d3 Add 'person' column for customers grid
but don't show it by default, for now?
2018-07-15 16:23:20 -05:00
Lance Edgar
259d123876 Traverse master class hierarchy to collect all defined labels
i.e. for forms and grids
2018-07-15 16:22:30 -05:00
Lance Edgar
0853fac66a Fix Person.customers readonly field for python 3 2018-07-15 16:22:03 -05:00
Lance Edgar
6fc517269f Don't make customer ID readonly when editing
i mean, custom apps are welome to, but seems a bit heavy-handed as default
2018-07-15 15:33:35 -05:00
Lance Edgar
0e57152888 Add product grid filters for "on hand", "on order" 2018-07-13 20:17:22 -05:00
Lance Edgar
935a6b2a68 Add basic autocomplete support for "quick row" feature 2018-07-13 19:12:39 -05:00
Lance Edgar
68bd3047c4 Add initial support for mobile "quick row" feature, for ordering
at least for now, ordering only, but hopefully much more soon...
2018-07-12 22:53:29 -05:00
Lance Edgar
aa6e540abd Use upload time as default filter/sort for Trainwreck transactions
also show end time, upload time as grid columns
2018-07-11 13:30:48 -05:00
Lance Edgar
9caf0e2e1f Update changelog 2018-07-11 10:29:40 -05:00
Lance Edgar
8039af1c06 Fix cancel button for progress page
i.e. should actually cancel when clicked...
2018-07-11 10:10:06 -05:00
Lance Edgar
699536b1ab Add "?" for daily time sheet total if partial shift present 2018-07-10 17:45:33 -05:00
Lance Edgar
16ab8b6ffa Stop trying to be smart about "best fit" cases/units for receiving
i.e. just record amounts as provided by the user.  sometimes it is necessary
for the user to avoid "cases" altogether if they detect the "case quantity" to
be incorrect
2018-07-10 16:43:21 -05:00
Lance Edgar
477a34cfa7 Improve how cases/units, uom are handled for mobile receiving
last-used uom should be more or less sticky, etc.
2018-07-10 14:24:12 -05:00
Lance Edgar
147c65afe6 Try to be smart about how we update cases/units for receiving batch row
e.g. if you receive 1 CS (@ 12/CS) and then subtract 4 EA then you should wind
up with 8 EA for the row
2018-07-10 13:36:28 -05:00
Lance Edgar
2983ff7ba0 Highlight purchasing batch rows with "case quantity differs" status 2018-07-10 12:38:58 -05:00
Lance Edgar
ed6f2f27cc Show "truck dump" info for applicable receiving batch page title 2018-07-10 11:39:22 -05:00
Lance Edgar
9dd6f8ef7d Tweak default page title for master view 2018-07-10 11:39:00 -05:00
Lance Edgar
053fc4eb55 Sort mobile receiving rows by last modified instead of sequence
because we now prefer to aggregate rows for that, at least by default
2018-07-10 09:06:22 -05:00
Lance Edgar
44663fe548 Fix bug for inventory batch when product not found 2018-07-09 21:28:36 -05:00
Lance Edgar
c88d060fe0 Force user to count "units" and not "packs" for inventory batch
at least until we come up with something smarter...
2018-07-09 15:50:28 -05:00
Lance Edgar
469f9cf015 Update changelog 2018-07-09 14:29:34 -05:00
Lance Edgar
3dfdb26502 Improve basic support for unit/pack info when viewing product details 2018-07-08 00:01:14 -05:00
Lance Edgar
9149902c78 Remove deprecated "edbob" settings 2018-07-07 20:43:17 -05:00
Lance Edgar
b464db5722 Change field ordering for customer form
so that default_email comes next to email_preference
2018-07-06 14:17:33 -05:00
Lance Edgar
8cadec9a16 Fix enum values for customer email preference grid filter 2018-07-06 14:15:33 -05:00
Lance Edgar
00a0e6fb11 Update changelog 2018-07-03 20:55:11 -05:00
Lance Edgar
9a0a280d7d Tweak how some "pack item" fields are displayed when viewing product 2018-07-03 20:47:32 -05:00
Lance Edgar
ad5444d270 Update changelog 2018-07-03 18:57:34 -05:00
Lance Edgar
3cc789dda9 Fix batch action kwargs, so 'action' can be a handler kwarg
i.e. at least the handheld batch handler, accepts an 'action' kwarg for its
execute() method.  we had apparently broken that
2018-07-03 18:32:03 -05:00
Lance Edgar
ac5a6c011b Fix batch file download link URL 2018-07-03 18:25:34 -05:00
Lance Edgar
6febd01e76 Don't read upgrade progress file if size hasn't changed
apparently that is possible sometimes?  or perhaps just an issue on python 3?
2018-07-02 12:06:09 -05:00
Lance Edgar
4c2f1aa4ed Update changelog 2018-06-29 14:23:29 -05:00
Lance Edgar
944e896196 Consider any integer greater than PG allows, to be invalid grid filter value
this feels pretty hacky...would be nice to come up with a better way
2018-06-29 12:56:22 -05:00
Lance Edgar
4ffd0df7c1 Update changelog 2018-06-28 15:17:44 -05:00
Lance Edgar
2ffb930f7f Fix how "unknown product" row is added to receiving batch 2018-06-28 12:27:40 -05:00
Lance Edgar
8d0dfd631b Show department column for receiving batch rows 2018-06-28 12:27:30 -05:00
Lance Edgar
350e901c2a Highlight "cost not found" as warning, for purchasing batch 2018-06-28 12:27:04 -05:00
Lance Edgar
1342d67746 Improve basic support for adding new product 2018-06-28 12:26:22 -05:00
Lance Edgar
b9d699df84 Fix email preview logic per python 3
can't use filter() anymore
2018-06-28 12:25:44 -05:00
Lance Edgar
6b01a7e888 Add highlight for "cost not found" rows in purchasing batch 2018-06-27 18:40:22 -05:00
Lance Edgar
49f241a4b9 Accept invoice number when adding truck dump child from invoice file 2018-06-27 18:00:28 -05:00
Lance Edgar
eeba784c32 Be smarter about when we sort receiving batch by most recent (for mobile)
i.e. only do so when *not* aggregating products, since that probably needs a
closer look first
2018-06-27 17:29:31 -05:00
Lance Edgar
0ccb6883f8 Don't aggregate product for mobile truck dump receiving
also sort batch rows by most recent, for receiver convenience
2018-06-27 17:26:38 -05:00
Lance Edgar
da10c6503c Add support for new credit_total field for purchase credits 2018-06-27 15:20:20 -05:00
Lance Edgar
b66af5903b Add invoice_total column for purchase credits grid
that probably isn't quite right, but at least is something
2018-06-27 15:08:53 -05:00
Lance Edgar
440a88aa0f Add overflow validation for cases/units in inventory batch desktop form 2018-06-27 14:52:55 -05:00
Lance Edgar
ee1065bfdb Allow editing of unit cost for inventory batch row 2018-06-27 13:56:20 -05:00
Lance Edgar
076d3d8189 Add support for zero quantity for mobile inventory batch rows 2018-06-27 13:43:03 -05:00
Lance Edgar
c1e2c5551c Allow zero quantity for inventory batch desktop entry form 2018-06-27 13:34:48 -05:00
Lance Edgar
edbf7e6723 Fix bug when populating new batch 2018-06-27 12:19:34 -05:00
Lance Edgar
88a8922833 Update changelog 2018-06-27 10:27:14 -05:00
Lance Edgar
0c653b5ee3 Fix input validation for integer grid filter
sometimes a default is provided as int
2018-06-27 10:26:37 -05:00
Lance Edgar
f92123c398 Tweak pip and "upgrade strategy" for tox 2018-06-14 20:24:14 -05:00
Lance Edgar
ea8e52377c Update changelog 2018-06-14 20:21:19 -05:00
Lance Edgar
8387129eda Add workaround for using pip 10.0 "internal" API in upgrades view 2018-06-14 19:57:15 -05:00
Lance Edgar
93b3a5dab6 Change how date fields are handled within grid filters
don't set type="date" b/c that can trigger native browser datepicker
2018-06-14 19:37:50 -05:00
Lance Edgar
eb1bb02dc5 Update changelog 2018-06-14 12:20:36 -05:00
Lance Edgar
baeb9a558e Expose new exempt_from_gross_sales flags 2018-06-14 12:04:50 -05:00
Lance Edgar
8428790001 Use "known" label if possible when making new grid filters 2018-06-14 12:04:35 -05:00
Lance Edgar
7c46f10dd1 Add Excel results download for categories, report codes
also fix department field widget for categories
2018-06-13 21:02:21 -05:00
Lance Edgar
b1b4e7e4ef Auto-size columns for Excel results download 2018-06-13 21:00:11 -05:00
Lance Edgar
51ff56eb4f Update changelog 2018-06-09 16:59:36 -05:00
Lance Edgar
df9141ec4e Let config override sys.prefix when launching batch commands in subprocess 2018-06-08 11:41:40 -05:00
Lance Edgar
e608c0b428 Allow products view to set some labels in costs grid 2018-06-07 16:03:17 -05:00
Lance Edgar
bac82f47d8 Update changelog 2018-06-07 14:33:13 -05:00
Lance Edgar
44ff02b7af Add versioning workaround support for batch actions
* add `can_cancel` flag for progress page, hide button if set
* overhaul populate/refresh/execute to launch socket/subprocess if necessary
2018-06-07 12:40:25 -05:00
Lance Edgar
cc6fa7058b Update changelog 2018-06-05 14:39:49 -05:00
Lance Edgar
ae3f79e522 Set filter value renderer when setting enum for grid field 2018-06-05 14:38:52 -05:00
Lance Edgar
3688979b8f Add integer-specific grid filter
this was necessary for smarter handling of "invalid" input, e.g. '.645' is not
a good value when querying integer fields
2018-06-05 11:08:36 -05:00
Lance Edgar
cac9de3cc7 Update changelog 2018-06-04 14:11:13 -05:00
Lance Edgar
2923585bd3 Expose new Vendor.abbreviation field 2018-06-01 15:03:42 -05:00
Lance Edgar
8b46c1e3f0 Expose 'hidden' flag for inventory adjustment reasons 2018-06-01 13:03:41 -05:00
Lance Edgar
46c8887c3e Set default column renderers for grid based on data types
guess this really just moves that logic so it happens earlier
2018-06-01 13:02:55 -05:00
Lance Edgar
db645fb393 Add support for variance inventory batches, aggregation by product
kind of a rushed job but hopefully this is all good...
2018-06-01 12:49:01 -05:00
Lance Edgar
5bc4a1618b Tweak inventory batch view per new variance mode 2018-06-01 10:46:43 -05:00
Lance Edgar
dc5ad6ce82 Show department instead of subdept by default, for products grid 2018-06-01 09:59:03 -05:00
Lance Edgar
1866d8dd07 Freeze pip version for sake of tox tests...
ugh this needs some better attention soon!
2018-05-31 12:06:09 -05:00
Lance Edgar
d1224ac879 Update changelog 2018-05-31 11:59:27 -05:00
Lance Edgar
a1249a21c2 Show 'variance' field when viewing inventory batch row 2018-05-31 11:11:08 -05:00
Lance Edgar
c583e9734c Update changelog 2018-05-30 16:37:07 -05:00
Lance Edgar
75b48fdaae Fix handling of (missing) password when user is edited
was accidentally blanking them out, if no password was provided...
2018-05-30 16:31:19 -05:00
Lance Edgar
9ece43ce57 Add initial support for "variance" inventory batch mode
probably incomplete yet; needs testing
2018-05-30 11:48:39 -05:00
Lance Edgar
a557ec614a Make sure count mode is preserved when making new inventory batch
i.e. even if only one count mode is allowed for the user
2018-05-29 13:10:45 -05:00
Lance Edgar
6c0f243655 Add basic docs for CSV download support in master view 2018-05-29 12:38:37 -05:00
Lance Edgar
d03de66b64 Update changelog 2018-05-25 13:23:36 -05:00
Lance Edgar
ccdf821583 Add MasterView.use_byte_string_filters flag for encoding search values 2018-05-24 15:09:00 -05:00
Lance Edgar
54bfafdbfe Add way to prevent "case" entries for inventory adjustment batch 2018-05-23 14:48:17 -05:00
Lance Edgar
57c2a7981f Fix some things for inventory batch views 2018-05-23 14:13:28 -05:00
Lance Edgar
62dca3d0b0 Only show "toggle complete" buttons when viewing batch
i.e. just show simple value for e.g. delete batch page
2018-05-23 13:28:11 -05:00
Lance Edgar
6d27d0cfba Hide "create new row" link for batches which are marked complete 2018-05-23 13:11:32 -05:00
Lance Edgar
218ac221e5 Add buttons to toggle batch 'complete' flag when viewing batch 2018-05-23 13:06:49 -05:00
Lance Edgar
a4095b30f7 Add basic forms API doc 2018-05-22 20:29:07 -05:00
Lance Edgar
c9eeabecba Add allow_zero_all flag for inventory batch master
defaults to true, but setting to false should disable "zero all" count mode
2018-05-22 20:18:47 -05:00
Lance Edgar
961e0e801d Increase allowed width for form labels 2018-05-22 18:35:00 -05:00
Lance Edgar
37a21d93a1 Add category name filter for products grid 2018-05-22 17:52:04 -05:00
Lance Edgar
ecf7acc800 Fix handling of 'filename' field when making new batch 2018-05-22 15:31:31 -05:00
Lance Edgar
b0e8f7d985 Various changes to support current receiving workflows
i.e. for sake of truck dump, adding child from invoice etc.
2018-05-22 13:54:50 -05:00
Lance Edgar
210508480e Add "Receive 1 CS" button for better efficiency in mobile receiving 2018-05-21 16:16:12 -05:00
Lance Edgar
db25a5bfd0 Add docs for MasterView.help_url and get_help_url() 2018-05-21 15:27:22 -05:00
Lance Edgar
e5ffe3025b Set received date for new truck dump batches, show when choosing parent 2018-05-18 17:21:01 -05:00
Lance Edgar
cd7922f204 Add "most of" support for truck dump receiving
still not complete, but conceptually it sort of is...
2018-05-18 15:51:47 -05:00
Lance Edgar
805a1afa3f Fix rowcount bug when first row added via ordering worksheet 2018-05-16 09:44:16 -05:00
Lance Edgar
9ed501a8cc Add initial support for receiving truck dump batch via mobile
i.e. just the initial truck dump, but secondary invoice batches are not yet
supported.  also this maybe breaks other things..we'll see
2018-05-16 09:15:52 -05:00
Lance Edgar
b515331e48 Allow lookup of inventory item by alternate code
i.e. in addition to UPC.  but only if so configured
2018-05-09 15:58:09 -05:00
Lance Edgar
177d9d2e3d Fix label profile type field when editing label batch row 2018-05-09 15:12:59 -05:00
Lance Edgar
4ee30feb0f Fix bug for purchase batch 2018-05-03 18:20:38 -05:00
Lance Edgar
a5d1eece71 Improve default behavior for receiving a purchase batch
only targeting desktop so far, mobile is next...
2018-05-03 18:15:35 -05:00
Lance Edgar
e6144ea08b Add Form.__contains__() method
for testing if a field is contained in the form
2018-05-03 10:54:40 -05:00
Lance Edgar
497c80161d Update changelog 2018-05-02 10:38:07 -05:00
Lance Edgar
c869238678 Add sort/filter for department name, for Categories grid 2018-05-02 10:37:17 -05:00
Lance Edgar
7f567dec3a Update changelog 2018-04-12 19:31:45 -07:00
Lance Edgar
8c8d539266 Add future mode for vendor catalog batch 2018-04-10 09:07:57 -07:00
Lance Edgar
8ea769d0e5 Update changelog 2018-04-09 13:17:45 -07:00
Lance Edgar
7443b31a93 Add new vendor catalog row status, render product with hyperlink 2018-04-06 09:50:37 -07:00
Lance Edgar
8c211df633 Add awareness for Email.dynamic_to flag in config UI
i.e. show help text and do not allow edit, when relevant
2018-04-01 17:14:00 -07:00
Lance Edgar
eb45b9f8d9 Update changelog 2018-03-23 10:33:56 -05:00
Lance Edgar
d550efbf8f Fix default selection bug for store/department time sheet filters 2018-03-21 13:55:21 -05:00
Lance Edgar
e9322628cb Refactor inventory batch desktop lookup, to allow for Type 2 UPC logic
for now though, such logic must be provided by custom app
2018-03-21 11:30:14 -05:00
Lance Edgar
42982a69ea Treat unknown UPC as "product not found" for inventory batch
i.e. as opposed to collecting info about the product
2018-03-21 10:52:30 -05:00
Lance Edgar
fde5398455 Use 'today' as fallback date for ordering worksheet 2018-03-21 10:42:50 -05:00
Lance Edgar
79b1502920 Update changelog 2018-03-15 16:39:24 -05:00
Lance Edgar
bce6662eae Fix autodisable button bug for forms marked as such 2018-03-15 15:54:16 -05:00
Lance Edgar
69f04beb6d Fix text area behavior for email recipient fields 2018-03-12 18:27:50 -05:00
Lance Edgar
85f108d10e Update changelog 2018-03-12 17:58:41 -05:00
Lance Edgar
652f51d484 Add support for making new product on-the-fly during mobile ordering
let's face it, that will be necessary sometimes.  this feature still needs some
work before can be called complete though...
2018-03-06 19:29:15 -06:00
Lance Edgar
6ec0ddb94e Remove the "add vs. subtract" mode for desktop inventory workflow form
hopefully we can always assume the "mode" based on other things
2018-03-06 16:26:53 -06:00
Lance Edgar
802f4bfd6b Add disable_submit_button() global JS function
managed to find another use for this, so split it out
2018-03-06 16:26:15 -06:00
Lance Edgar
5765533491 Add changelog link for rattail-tempmon in upgrade diff 2018-03-05 20:26:22 -06:00
Lance Edgar
aeccf5c5f6 Fix default create logic for vendors, products
online demo triggered errors for this.  might as well have basic support
2018-03-05 20:20:35 -06:00
Lance Edgar
90f0fcfea6 Expose vendor item code for purchase credits
also, fix some issues with mobile receiving logic
2018-03-01 15:16:40 -06:00
Lance Edgar
91bb38573b Add desktop support for creating inventory batches
with a workflow form of sorts
2018-02-28 21:53:39 -06:00
Lance Edgar
52e9717288 Update changelog 2018-02-27 19:12:46 -06:00
Lance Edgar
bd45833395 Test commit 2018-02-26 00:49:21 -06:00
Lance Edgar
c7c241fe7a Update trove classifiers to reflect python 3, beta status 2018-02-25 21:25:52 -06:00
Lance Edgar
73f73e0236 Add python 3.5 support for tox; run all tests before a release 2018-02-24 17:15:49 -06:00
Lance Edgar
021848524a Fix field type for Trainwreck view 2018-02-22 21:04:00 -06:00
Lance Edgar
2c2df9f01e Fix bug in users view when person field not present 2018-02-22 13:25:20 -06:00
Lance Edgar
f2a60f683c Add logic for editing default phone/email in base master view
and refactor customer, vendor views to use it
2018-02-22 12:27:08 -06:00
Lance Edgar
630ffe0cf8 Don't allow row deletion if batch is marked complete 2018-02-22 12:26:21 -06:00
Lance Edgar
3d79f9fd7d Add support for executing batch with options, via mobile 2018-02-22 11:20:12 -06:00
Lance Edgar
0a165c5b93 Don't set order date for new ordering batch when created via mobile
that really should be set upon batch execution instead
2018-02-22 11:19:33 -06:00
Lance Edgar
2a2ff721c1 Bind batch to its execution options schema, when applicable
so the batch can provide default values, etc.  this also tweaks logic for using
defaults from session storage, so that they don't take priority over batch values
2018-02-22 11:18:11 -06:00
Lance Edgar
d75fe88c44 Expose ship_method and notes_to_vendor for purchase, ordering batch 2018-02-22 11:16:33 -06:00
Lance Edgar
37a788a141 Use Form.submit_label if present, or fall back to save_label
latter should probably be deprecated / removed at some point
2018-02-22 11:14:21 -06:00
Lance Edgar
e1a9da0716 Always show flash-error-style message when form has errors
probably will regret this and change it back soon, we'll see
2018-02-22 11:13:29 -06:00
Lance Edgar
ff7341d272 Add Form.mobile flag and set link button styles accordingly 2018-02-22 11:12:51 -06:00
Lance Edgar
046a70c5f6 Add NumberInputWidget for <input type="number" /> 2018-02-21 19:51:31 -06:00
Lance Edgar
a8a4e362a0 Add basic mobile support for executing batches
no progress, or options, yet..
2018-02-21 18:55:16 -06:00
Lance Edgar
6ca69802f5 Add download path for batch master views 2018-02-19 19:59:01 -06:00
Lance Edgar
1b059c5293 Refactor ordering worksheet to use shared logic 2018-02-19 18:19:19 -06:00
Lance Edgar
b529a005d8 Remove some redundant / unused code 2018-02-19 17:09:12 -06:00
Lance Edgar
12dd6ae6b0 Use all "normal" product form fields, for mobile view 2018-02-19 15:31:02 -06:00
Lance Edgar
e93e1b91a9 Update changelog 2018-02-15 18:49:16 -06:00
Lance Edgar
5c1008a0df More tweaks for python 3 2018-02-15 12:48:14 -06:00
Lance Edgar
135e98cde1 Fix encoding bug for python 3, when downloading CSV results 2018-02-14 15:27:55 -06:00
Lance Edgar
79634d402e Update changelog 2018-02-14 14:18:38 -06:00
Lance Edgar
cb2234cef5 Fix encoding for robots.txt view response 2018-02-14 10:31:04 -06:00
Lance Edgar
cfb6cf5ab4 Tweak rendering for python 3 2018-02-14 09:52:19 -06:00
Lance Edgar
0a16cc2ded Add tailbone version to base stylesheet URLs
hopefully this forces clients to refresh after upgrade?
2018-02-13 00:10:32 -06:00
Lance Edgar
a0d9b5ddf4 Add generic 'login_as_home' setting
i.e. redirect anonymous users to login instead of showing home page
2018-02-12 22:18:59 -06:00
Lance Edgar
2ab00bfd78 More python 3 tweaks 2018-02-12 22:17:38 -06:00
Lance Edgar
f411dcde24 Remove pyramid_debugtoolbar dependency 2018-02-12 21:25:58 -06:00
Lance Edgar
585db147ac Tweak dependencies per rattail changes 2018-02-12 19:39:04 -06:00
Lance Edgar
17d99e16b9 More tweaks for python 3 2018-02-12 19:22:05 -06:00
Lance Edgar
b0821e8011 More tweaks for python 3 2018-02-12 15:32:54 -06:00
Lance Edgar
ee35cc6f22 Misc. cleanup for Python 3 2018-02-12 14:41:40 -06:00
Lance Edgar
189bc1faa8 Officially remove pyramid_simpleform dependency 2018-02-12 12:16:56 -06:00
Lance Edgar
d9ff59afda Refactor grid filters to use colander/deform 2018-02-12 12:15:07 -06:00
Lance Edgar
f636b98cb3 Officially remove FormEncode dependency 2018-02-11 23:33:09 -06:00
Lance Edgar
33e345f4ae Officially remove FormAlchemy dependency (yay!) 2018-02-11 23:25:54 -06:00
Lance Edgar
cb8db266cd Remove last references to any "fieldset" type things 2018-02-11 23:19:30 -06:00
Lance Edgar
cdaf36f346 Rename 'forms2' package, templates to 'forms' 2018-02-11 22:57:33 -06:00
Lance Edgar
d0b78babd2 Remove legacy 'forms' package and templates
yay!
2018-02-11 22:46:35 -06:00
Lance Edgar
66769ab34b Stop configuring FormAlchemy engine etc. on app startup 2018-02-11 22:41:20 -06:00
Lance Edgar
dd04459748 Refactor batch execution options to use colander/deform 2018-02-11 22:37:17 -06:00
Lance Edgar
2cbacd6187 Remove legacy fieldset configuration logic 2018-02-11 16:25:09 -06:00
Lance Edgar
1c27efc8f1 Refactor feedback feature to use colander/deform 2018-02-11 16:05:56 -06:00
Lance Edgar
4191e50456 Refactor time sheet, schedule filter forms to use colander/deform
also add "print employee schedule" feature, didn't realize that was missing
2018-02-11 15:58:06 -06:00
Lance Edgar
d30e5e2b02 Update changelog 2018-02-10 20:22:19 -06:00
Lance Edgar
4191a56bfb Fix some bugs with importer batch views 2018-02-10 17:14:32 -06:00
Lance Edgar
ec438ead51 Refactor user login, change password to use colander/deform 2018-02-10 16:47:53 -06:00
Lance Edgar
cff757fe9e Refactor mobile inventory to use colander/deform 2018-02-10 14:07:16 -06:00
Lance Edgar
a65235c0fd Refactor mobile receiving to use colander/deform 2018-02-10 14:00:28 -06:00
Lance Edgar
ec275b2fe0 Remove tests for legacy forms 2018-02-10 02:29:42 -06:00
Lance Edgar
91b395118e Allow passing arbitrary attrs when rendering grid 2018-02-09 21:13:41 -06:00
Lance Edgar
e2bfb31cb2 Add 'gridcore' jQuery plugin, for core behavior
also add 'selected' status for checkbox grids, etc.
2018-02-09 15:17:29 -06:00
Lance Edgar
a3b2fbadb7 Make sure each grid has unique set of actions 2018-02-09 15:04:57 -06:00
Lance Edgar
4760295d6a Add some basic ORM object field types for new forms 2018-02-09 15:04:22 -06:00
Lance Edgar
035a7b2096 Add 'newstyle' behavior for Form.validate() 2018-02-09 15:03:44 -06:00
Lance Edgar
c35bfa3e4e Let forms choose *not* to auto-disable their cancel button 2018-02-07 20:06:35 -06:00
Lance Edgar
00a3b8fc33 Make it easier to hide buttons for a form 2018-02-07 19:28:54 -06:00
Lance Edgar
9e9a5f9a6a Update changelog 2018-02-07 15:10:44 -06:00
Lance Edgar
9ad8e5b546 Add even better UPC validation for mobile receiving 2018-02-06 12:57:27 -06:00
Lance Edgar
44dec830e5 Add better UPC validation for mobile receiving 2018-02-06 12:53:29 -06:00
Lance Edgar
5b4718fac4 Avoid "auto disable" button logic for new message form 2018-02-06 11:23:28 -06:00
Lance Edgar
22236e2909 Add master view for EmailAttempt 2018-02-06 10:31:44 -06:00
Lance Edgar
9387ef7116 Fix missing import bug 2018-02-06 10:31:36 -06:00
Lance Edgar
2219315ccc Collapse all master4 views back to just 'master' 2018-02-05 21:23:23 -06:00
Lance Edgar
7c62b6f7a7 Remove unused reference to legacy forms 2018-02-05 18:25:45 -06:00
Lance Edgar
7730080afc Let each form define its "save" button text
where applicable etc.
2018-02-05 16:53:17 -06:00
Lance Edgar
6cc509f5b4 Add Form.show_cancel flag, for hiding that button
also use fields from schema by default, if fields not provided
2018-02-05 14:24:49 -06:00
Lance Edgar
22d9981c2e Use master4 for custorder views
guess i missed that one...
2018-02-05 14:24:21 -06:00
Lance Edgar
8137d715df Refactor purchasing batch views per master4 2018-02-05 13:00:34 -06:00
Lance Edgar
dfc5e0f50e Refactor importer batch views per master4 2018-02-05 13:00:34 -06:00
Lance Edgar
4ab41ba82e Refactor trainwreck views per master4 2018-02-05 13:00:34 -06:00
Lance Edgar
38afb35b65 Refactor pricing batch views per master4 2018-02-05 13:00:34 -06:00
Lance Edgar
e78d1ac3c1 Refactor inventory batch views per master4 2018-02-05 13:00:34 -06:00
Lance Edgar
533b491124 Refactor purchase views per master4 2018-02-05 13:00:34 -06:00
Lance Edgar
7cee515187 Refactor handheld batch views per master4 2018-02-05 13:00:34 -06:00
Lance Edgar
0737faa034 Refactor label batch views per master4 2018-02-05 13:00:33 -06:00
Lance Edgar
88fe195615 Refactor all "easy" views per master4 2018-02-05 13:00:33 -06:00
Lance Edgar
410ee8eb65 Add base master4 batch view 2018-02-05 13:00:31 -06:00
Lance Edgar
63290154eb Add master4, refactor customers view to use it 2018-02-05 13:00:28 -06:00
Lance Edgar
ab16ffc823 Add "hidden" concept for form fields
i.e. include hidden fields but don't show label or other dressing
2018-02-05 13:00:28 -06:00
Lance Edgar
868b184069 Add 'plain' and 'jquery' templates for deform select widget
need to refactor things to get all that straight, at some point
2018-02-04 15:03:33 -06:00
Lance Edgar
7b4f7d758e Add setting for "force home" mobile behavior 2018-02-04 15:03:33 -06:00
Lance Edgar
aded59d7ff Don't process file for new batch unless field is present 2018-02-03 14:49:49 -06:00
Lance Edgar
737b2e578a Show year dropdown by default for jQuery UI date pickers 2018-02-03 14:49:32 -06:00
Lance Edgar
33931b4bf2 Refactor vendor invoice batch views to use master3 2018-02-03 12:37:24 -06:00
Lance Edgar
97c5e97ccb Add append() and replace() methods for core Grid class 2018-02-02 13:16:25 -06:00
Lance Edgar
1e8c9f709b Update changelog 2018-02-01 14:30:22 -06:00
Lance Edgar
c74bce2fdb Fix bugs when making inventory batch on mobile 2018-02-01 14:28:24 -06:00
Lance Edgar
d35dc5582e Add proper enum for inventory batch "count mode" filter 2018-02-01 14:12:04 -06:00
Lance Edgar
46aa7d5824 Update changelog 2018-01-31 17:04:50 -06:00
Lance Edgar
34ea572c0b Cap zope.sqlalchemy dependency at pre-1.0
not sure why exactly but this is necessary for now
2018-01-31 15:09:52 -06:00
Lance Edgar
5f8e26a8ec Update changelog 2018-01-30 11:10:48 -06:00
Lance Edgar
e821b2a025 Always redirect to mobile home page, if "other" page is refreshed
also applies when becoming / stopping root, and maybe other cases?
2018-01-29 22:47:30 -06:00
Lance Edgar
9beb32cea2 Fix mobile logout behavior 2018-01-29 18:07:29 -06:00
Lance Edgar
024f09dbd4 Fix permission bug when adding row in mobile receiving 2018-01-29 17:56:36 -06:00
Lance Edgar
beadc08002 Update changelog 2018-01-29 17:13:03 -06:00
Lance Edgar
19cd6336f9 Refactor vendor catalog batch views to use master3 2018-01-28 01:26:51 -06:00
Lance Edgar
34e81dc50a Refactor inventory batch views to use master3 2018-01-27 20:13:01 -06:00
Lance Edgar
e0650d26cf Refactor email profiles view to use master3 2018-01-27 19:16:07 -06:00
Lance Edgar
8d62960548 Refactor importer batch views to use master3 2018-01-27 13:04:07 -06:00
Lance Edgar
2cbe1b0049 Refactor pricing batch view to use master3 2018-01-27 12:53:32 -06:00
Lance Edgar
8eab3c5b36 Refactor handheld batch views to use master3 2018-01-27 12:23:47 -06:00
Lance Edgar
eac59ba5c8 Refactor purchasing batch views to use master3 2018-01-27 11:59:52 -06:00
Lance Edgar
d20601c359 Refactor label batch view to use master3 2018-01-26 19:14:15 -06:00
Lance Edgar
efdbc3c5b5 Show "buttons" when viewing an object, with forms2
also tweak logic when creating a batch..we'll see if it works..
2018-01-26 19:04:34 -06:00
Lance Edgar
580f817dd9 Add vendor links in cost grid when viewing product 2018-01-26 18:30:29 -06:00
Lance Edgar
e5c5a071f2 Add generic "download results as XLSX" feature 2018-01-26 14:24:06 -06:00
Lance Edgar
eaad87c704 Add 'single' context var when rendering timesheet template 2018-01-26 12:01:58 -06:00
Lance Edgar
1453d33123 Add support for extra column(s) in timesheet view table 2018-01-25 17:02:53 -06:00
Lance Edgar
b2b3a633d0 Show new 'exposed' field for brands table 2018-01-25 16:09:49 -06:00
Lance Edgar
e8dfe92be3 Improve case/unit quantity validation for order worksheet 2018-01-25 15:07:16 -06:00
Lance Edgar
37de777b2a Show "unit cost" column by default, for products grid 2018-01-25 14:45:06 -06:00
Lance Edgar
62d1918892 Add FieldList wrapper for grid columns list
needs to be merged with the "forms2" equivalent at some point...
2018-01-25 14:43:30 -06:00
Lance Edgar
f32cf3342c Allow disabling auto-dismiss of flash messages on mobile 2018-01-25 14:15:25 -06:00
Lance Edgar
96e5c42795 Add support for detaching Person from Customer 2018-01-24 23:53:12 -06:00
Lance Edgar
b8c6e95b73 Update changelog 2018-01-24 18:20:19 -06:00
Lance Edgar
8044039d78 Add 'delete-instance' class to delete link when viewing a record
so that JS can watch its click event
2018-01-24 13:12:42 -06:00
Lance Edgar
440cfd0d72 Show new cashback field for Trainwreck transaction 2018-01-23 20:08:24 -06:00
Lance Edgar
04d1e303be Let custom inventory batch view override logic for mobile UPC scanning 2018-01-23 19:00:33 -06:00
Lance Edgar
eefc3b33d7 Fix some master3 edit issues for products view 2018-01-23 17:41:01 -06:00
Lance Edgar
96421ee1e5 Fix doc reference 2018-01-22 17:27:58 -06:00
Lance Edgar
3d18460d23 Update changelog 2018-01-22 16:31:19 -06:00
Lance Edgar
a428bebda9 Add basic "config" concept doc 2018-01-22 16:30:09 -06:00
Lance Edgar
18af33c9bb Add basic support for per-page help URL 2018-01-18 11:47:11 -06:00
Lance Edgar
80e9a9cf1c Add creates_multiple flag for master view 2018-01-18 11:46:10 -06:00
Lance Edgar
a542cd70da Add option for preventing new inventory batch rows for unknown products 2018-01-17 14:55:17 -06:00
Lance Edgar
dd7c2a0763 Warn if user "scans" UPC with more than 14 digits, for mobile inventory
never assume such a UPC is valid, warn instead of adding batch row
2018-01-17 14:45:09 -06:00
Lance Edgar
07e7c5c4a0 Update changelog 2018-01-16 13:24:10 -06:00
Lance Edgar
bbcba05fdd Add placeholder doc for Configuration 2018-01-16 11:32:36 -06:00
Lance Edgar
7af29a243b Add concept doc for data batches 2018-01-16 00:22:46 -06:00
Lance Edgar
5e45d68bef Add basic schema docs 2018-01-15 23:19:29 -06:00
Lance Edgar
c7af97f301 Add docs for app structure, and creating new project 2018-01-15 21:37:10 -06:00
Lance Edgar
0675be8835 Allow editing of inventory batch count mode and reason code 2018-01-15 16:01:46 -06:00
Lance Edgar
8291c4d273 Fix client field when creating / editing tempmon probe 2018-01-15 15:21:29 -06:00
Lance Edgar
f9d1d34763 Fix bug when locating association proxy column 2018-01-15 15:11:12 -06:00
Lance Edgar
c996bf47ea Update changelog 2018-01-11 15:29:40 -06:00
Lance Edgar
dfd43b55aa Allow passing None to Form.set_renderer()
i.e. to remove any renderer which has been set
2018-01-11 15:17:58 -06:00
Lance Edgar
f021df446c Let custom schema node start out with empty children
sometimes that's just necessary
2018-01-11 15:15:12 -06:00
Lance Edgar
f4aa83788b Fix tox dependency for docs (for real) 2018-01-11 13:17:17 -06:00
Lance Edgar
e334564520 Show case quantity for inventory batch rows 2018-01-11 13:07:10 -06:00
Lance Edgar
0e0ebe9251 Fix some mobile view URLs 2018-01-11 12:38:44 -06:00
Lance Edgar
4147752672 Fix dialog button click event when executing price batch
i.e. fix it for Chrome's sake
2018-01-11 12:32:31 -06:00
Lance Edgar
935752c786 Update changelog 2018-01-11 12:26:38 -06:00
Lance Edgar
e2cdb4387a Fix row query bug when deleting batch row 2018-01-11 12:25:25 -06:00
Lance Edgar
3dce9d9ed3 Fix dependencies when building docs via tox 2018-01-11 12:17:21 -06:00
Lance Edgar
99ed897bf4 Add getting started doc for dev environment
also change docs theme
2018-01-11 12:15:37 -06:00
Lance Edgar
c750ea2355 Tweak feedback dialog styles a bit 2018-01-10 21:23:58 -06:00
Lance Edgar
e3ca3c9370 Fix readonly default renderers for association proxy fields 2018-01-10 21:18:38 -06:00
Lance Edgar
bfa398bee1 Provide some default readonly form field renderers 2018-01-10 20:46:49 -06:00
Lance Edgar
485c96fec1 Update changelog 2018-01-10 19:56:14 -06:00
Lance Edgar
acb4a77032 Add first attempt at master3 for batch views 2018-01-08 22:49:45 -06:00
Lance Edgar
365a48110c Refactor all tempmon views to use master3 2018-01-08 20:57:22 -06:00
Lance Edgar
ce0195bd51 Refactor several more straggler views to use master3 2018-01-08 20:41:31 -06:00
Lance Edgar
3097f46aa1 Refactor products view to use master3 2018-01-08 18:03:51 -06:00
Lance Edgar
d9a5b4a0f5 Update changelog 2018-01-08 15:33:06 -06:00
Lance Edgar
8d35955d03 Fix bug when printing product label 2018-01-08 15:32:36 -06:00
Lance Edgar
c00f7e2144 Update changelog 2018-01-08 12:49:21 -06:00
Lance Edgar
66d3b7b4af Tweak diff styles when viewing upgrade 2018-01-07 19:44:39 -06:00
Lance Edgar
a68bf572cc Update changelog 2018-01-07 17:02:15 -06:00
Lance Edgar
fb140f24c1 Add basic UI support for "importer batch" feature 2018-01-06 20:28:59 -06:00
Lance Edgar
c3c77ed586 Tweak diffs.css and refactor 'view_version' template to use it 2018-01-06 20:28:13 -06:00
Lance Edgar
568a625500 Add row_title to template context for view_row 2018-01-06 20:26:57 -06:00
Lance Edgar
85e6e7e08a Refactor away the row_route_prefix concept 2018-01-06 20:25:55 -06:00
Lance Edgar
22b8643def Add basic support for row grid view links 2018-01-06 20:02:51 -06:00
Lance Edgar
b2020686f5 Tweak conditions for CSV row download link 2018-01-06 19:27:37 -06:00
Lance Edgar
aa4051a7cd Exclude JS for refreshing batch unless it's relevant 2018-01-06 19:26:31 -06:00
Lance Edgar
50d6f1f95a Let grids be paginated even when they have no model class 2018-01-06 19:21:45 -06:00
Lance Edgar
582aabc1a3 Add empty default when displaying values in grid 2018-01-06 19:20:55 -06:00
Lance Edgar
46d0e96321 Stop setting execution details when multiple batches executed
that's now the handler's job
2018-01-05 20:39:38 -06:00
Lance Edgar
dd22c04573 Add view for InventoryAdjustmentReason model 2018-01-05 18:37:16 -06:00
Lance Edgar
067cd60e20 Change how select menus are enhanced for batch exec options
jquery selectmenu doesn't play nicely in a dialog, when expanded (options are
cut off from screen)
2018-01-05 17:13:01 -06:00
Lance Edgar
e78777f8e1 Add field name as wrapper class name 2018-01-05 17:12:42 -06:00
Lance Edgar
ec0865b03f Show 'static_prices' flag for label batches 2018-01-05 16:52:08 -06:00
Lance Edgar
6ed37743a5 Fix some styles for execution options dialog 2018-01-05 11:21:30 -06:00
Lance Edgar
1767cef701 Update changelog 2018-01-05 09:41:58 -06:00
Lance Edgar
b2fe300f02 Fix bug when making batch from product query 2018-01-05 09:36:02 -06:00
Lance Edgar
061aa889a6 Update changelog 2018-01-04 15:46:24 -06:00
Lance Edgar
80903bde38 Refactor forms logic when making batch from product query
use colander/deform instead of wtforms.  also make sure param names are unique
per batch type, within form controls
2018-01-04 15:08:03 -06:00
Lance Edgar
2cc0bb1995 Tweak product filter for report code name
i.e. make it more clear that it leverages the name
2018-01-04 10:38:15 -06:00
Lance Edgar
8d3846b2f2 Show row count field when viewing vendor catalog batch 2017-12-21 20:44:10 -06:00
Lance Edgar
e58ca10e25 Make jQuery time widget input even more flexible
e.g. allow any of:

* 01:30 PM
* 1:30pm
* 11 AM
* 11am
2017-12-20 21:36:11 -06:00
Lance Edgar
42b97d1e1a Add a bit more flexibility to jquery time input values
i.e. for when the user hand-keys a value
2017-12-20 21:30:14 -06:00
Lance Edgar
9f14d01c22 Add "price required" flag to product view 2017-12-20 19:02:03 -06:00
Lance Edgar
c0cb3d70ff Update changelog 2017-12-20 17:36:13 -06:00
Lance Edgar
163c8945ed Provide sane width for filter value dropdowns 2017-12-20 14:25:10 -06:00
Lance Edgar
36aaa4d70c Update changelog 2017-12-19 20:48:49 -06:00
Lance Edgar
f17617c659 Accept value_enum kwarg when creating grid filter
and do the "normal" thing for that if one is given
2017-12-19 14:21:19 -06:00
Lance Edgar
873104d573 Update changelog 2017-12-08 18:04:46 -06:00
Lance Edgar
927eb3b38c Add custom schema type for jQuery time picker data 2017-12-08 17:38:52 -06:00
Lance Edgar
abd47ae7ae Fix deserialize logic for jQuery time-picker widget 2017-12-08 14:39:23 -06:00
Lance Edgar
1e8a4534d5 Various forms2 changes 2017-12-07 20:35:44 -06:00
Lance Edgar
587871e87c Add Grid.remove_filter() method 2017-12-06 19:54:13 -06:00
Lance Edgar
908ca52b08 Fix type for export 'created' field 2017-12-06 14:59:11 -06:00
Lance Edgar
ef720e3a59 Refactor reports view to use master3 2017-12-06 13:50:02 -06:00
Lance Edgar
09ba419ee3 Refactor "exports" views to use master3 2017-12-06 13:40:00 -06:00
Lance Edgar
86cfc59d33 Refactor user and role views to use master3 2017-12-06 12:40:27 -06:00
Lance Edgar
789bdef190 Add cleared/selected callbacks for jquery autocomplete in forms2 2017-12-05 20:36:57 -06:00
Lance Edgar
bb12c5107c Refactor purchases view to use master3 2017-12-05 18:52:54 -06:00
Lance Edgar
8041c085f6 Add basic "helptext" support for forms2 2017-12-05 15:07:25 -06:00
Lance Edgar
c20fdf4450 Change template prefix for vendor catalog batches 2017-12-05 13:33:05 -06:00
Lance Edgar
4902fab187 Refactor views to use Grid.set_sort_defaults() method 2017-12-04 22:40:10 -06:00
Lance Edgar
7d79727c2e Refactor vendors view to use master3 2017-12-04 22:02:46 -06:00
Lance Edgar
dfba168504 Whoops, make shifts view really use master3 2017-12-04 21:11:27 -06:00
Lance Edgar
2762230691 Refactor raw shifts view to use master3 2017-12-04 21:09:44 -06:00
Lance Edgar
20bae8e54b Add Grid.set_sort_defaults() method 2017-12-04 20:53:46 -06:00
Lance Edgar
332fadd42e Refactor people view to use master3 2017-12-04 18:49:52 -06:00
Lance Edgar
c3fb86e391 Refactor messages view to use master3 2017-12-04 17:52:25 -06:00
Lance Edgar
84ebf5d929 Refactor employees view to use master3 2017-12-04 13:48:31 -06:00
Lance Edgar
7a777964a7 Add transaction "System ID" field for Trainwreck 2017-12-03 20:33:25 -06:00
Lance Edgar
984072467e Update changelog 2017-12-03 19:49:34 -06:00
Lance Edgar
b793998814 Expose default address for customers view 2017-12-03 12:23:43 -06:00
Lance Edgar
6da013bf6c Fix permission bug for executing multiple batch results 2017-12-02 18:14:31 -06:00
Lance Edgar
16eeb501ca Fix permission bug for mobile inventory batch 2017-12-02 18:10:33 -06:00
Lance Edgar
64afab821f Allow "execute results" for inventory batches 2017-12-02 17:59:21 -06:00
Lance Edgar
d27759ac2d Fix bug? or maybe there's no point 2017-12-02 17:20:40 -06:00
Lance Edgar
a7d8cfcdbb Let batch views allow or deny "execute results" option 2017-12-02 17:08:17 -06:00
Lance Edgar
277d98ae2c Tweak template prefix for label batch views 2017-12-02 16:25:59 -06:00
Lance Edgar
70a34615a3 Expose description and notes for label batches 2017-12-02 14:20:02 -06:00
Lance Edgar
f06fff983e Allow bulk delete of label batch rows 2017-12-02 13:24:52 -06:00
Lance Edgar
11a63ab2ef Fix batch row count when bulk-deleting rows 2017-12-02 13:24:38 -06:00
Lance Edgar
9cf5c9385d Add batch description to page body title 2017-11-30 11:22:54 -06:00
Lance Edgar
6decabb369 Various batch tweaks, for better execution options etc. 2017-11-29 18:26:55 -06:00
Lance Edgar
df3623b663 Add more "manually priced" awareness to pricing batch UI 2017-11-29 18:25:47 -06:00
Lance Edgar
366b1c9073 Hide status when creating new purchasing batch 2017-11-28 09:44:30 -06:00
Lance Edgar
ac733ae6ea Various tweaks for sake of forms2 refactor 2017-11-27 12:10:17 -06:00
Lance Edgar
43ce0fb44f Auto-scroll window as needed to ensure drop-down choices are visible 2017-11-22 11:21:59 -06:00
Lance Edgar
40d2251844 Add custom FieldList class for forms2 field list 2017-11-22 11:21:28 -06:00
Lance Edgar
4c189f2fcc Rather shoddy refactor of customers view to use master3
seems to work well enough for now..
2017-11-21 20:46:49 -06:00
Lance Edgar
3d7acbbe1d Update changelog 2017-11-21 14:06:02 -06:00
Lance Edgar
9c205d7da5 Add colander magic for association proxy fields
hopefully now any association proxy fields which are included, will be given
the appropriate type and widget.  however this still doesn't work for the
readonly rendering of fields...
2017-11-21 11:11:18 -06:00
Lance Edgar
6ea88808b2 Add date/time-picker, autocomplete support for forms2 (deform) 2017-11-20 17:01:08 -06:00
Lance Edgar
f541a94351 Set widget when defining enum for a form2 field 2017-11-20 12:38:50 -06:00
Lance Edgar
1325e507fb Update changelog 2017-11-19 17:45:40 -06:00
Lance Edgar
3861d46ce3 Fix (hack) for editing some department flags
not sure why this is necessary, but not very important for now...
2017-11-18 22:34:43 -06:00
Lance Edgar
a8c8447297 Improve auto-disable logic for some form buttons 2017-11-17 17:27:33 -06:00
Lance Edgar
455f991857 Update changelog 2017-11-11 11:43:27 -06:00
Lance Edgar
2cba0ade84 Accept None as valid arg for Grid.set_filter()
i.e. to effectively remove the filter
2017-11-11 09:52:11 -06:00
Lance Edgar
152db68606 Install rattail[auth] dependencies for tox builds 2017-11-11 08:15:45 -06:00
Lance Edgar
dae827a45b Update changelog 2017-11-08 13:03:36 -06:00
Lance Edgar
d874fccfd1 Fix manifest to include *.pt deform templates
i think these are chameleon templates?
2017-11-08 13:02:37 -06:00
Lance Edgar
04735dfb4f Update changelog 2017-11-08 12:24:01 -06:00
Lance Edgar
46293546b6 Add json to global template context
just seems like a useful thing to have around...
2017-11-02 21:38:16 -07:00
Lance Edgar
7ccb38b5ab Update changelog 2017-11-01 21:04:28 -07:00
Lance Edgar
5f04ac9cb4 Add "text" type for new form fields 2017-10-31 13:25:19 -07:00
Lance Edgar
c7855f2ca5 Add description, notes for pricing batches 2017-10-30 21:33:25 -07:00
Lance Edgar
aea4379fe4 Add sorters, filters for Product regular, current price 2017-10-30 21:23:00 -07:00
Lance Edgar
c320ab2feb Add product and personnel flags for Department 2017-10-30 20:52:07 -07:00
Lance Edgar
3f335315ab Update changelog 2017-10-29 22:50:11 -07:00
Lance Edgar
17d0ee64c2 Fix join bug for Upgrades table when sorting by executor 2017-10-29 22:48:49 -07:00
Lance Edgar
d89a21e2b0 Update changelog 2017-10-29 01:23:19 -07:00
Lance Edgar
2bbe6c8346 Add "make user" button when viewing person w/ no user account 2017-10-29 01:18:05 -07:00
Lance Edgar
b26036f366 Update changelog 2017-10-28 16:45:13 -07:00
Lance Edgar
d67350b93b Add cashier info, upload time for Trainwreck transaction views 2017-10-28 11:30:53 -07:00
Lance Edgar
f11210fa2b Update changelog 2017-10-25 23:11:09 -07:00
Lance Edgar
ff7fd94b57 Use master3 view for datasync changes 2017-10-24 21:21:43 -07:00
Lance Edgar
1ee822d715 Add support for validator and required flag, for new forms 2017-10-24 19:58:59 -07:00
Lance Edgar
8bcb2f750a Update changelog 2017-10-24 10:18:42 -07:00
Lance Edgar
2bd2839107 Export Person.users relationship (readonly) 2017-10-24 10:09:28 -07:00
Lance Edgar
a51d4e54db Add item_id to trainwreck views
er, add scancode, since item_id was renamed..
2017-10-24 09:51:18 -07:00
Lance Edgar
52342a7612 Fix value auto-selection for enum grid filters 2017-10-22 20:56:30 -07:00
Lance Edgar
401cba23b7 Add grid filter which treats empty string as NULL 2017-10-22 20:00:31 -07:00
Lance Edgar
512405f01f Fix bug in MasterView.get_effective_row_query()
really this method should be removed...
2017-10-22 12:55:41 -07:00
Lance Edgar
8c599f368e Update changelog 2017-10-20 11:51:48 -07:00
Lance Edgar
855153f121 Fix bug with products view config 2017-10-20 11:51:07 -07:00
Lance Edgar
cddb05d8fc Update changelog 2017-10-19 08:48:34 -07:00
Lance Edgar
14f67746bf Allow passing None to Grid.set_joiner()
doing so will remove the joiner
2017-10-18 12:54:57 -07:00
Lance Edgar
f8e98a5817 Avoid potential bugs when generating CSV results data for download 2017-10-16 17:38:42 -07:00
Lance Edgar
46b49ab987 Add 'currency' field type for new forms 2017-10-14 18:52:30 -07:00
Lance Edgar
7442b933fd Add support for setting default field values on new forms
i.e. those using Colander schema
2017-10-14 17:55:29 -07:00
Lance Edgar
c95e2dbb06 Add "download row results as CSV" feature to master view 2017-10-14 14:14:24 -07:00
Lance Edgar
f338a03c97 Add 'active' column to Users table view 2017-10-13 14:12:28 -07:00
Lance Edgar
8d002f76d2 Convert user feedback mechanism to use modal dialog
instead of navigating to new page.  this is how it should have been done
to begin with...
2017-10-13 08:01:43 -07:00
Lance Edgar
827cc592b4 Make CSRF protection optional (but on by default) 2017-10-11 15:57:34 -07:00
Lance Edgar
6281593084 Add "local" datetime renderer for new grids, forms 2017-10-10 13:58:52 -07:00
Lance Edgar
791f3beffc Update changelog 2017-09-28 12:13:30 -05:00
Lance Edgar
6186700a66 Add 'duration' type for new form fields
this only supports readonly, for now..
2017-09-26 22:06:50 -05:00
Lance Edgar
47ce0fd448 Add "populatable" for master views (populating new objects with progress) 2017-09-23 16:27:22 -05:00
Lance Edgar
8a945f8baf Pass form along to before_create_flush() in master3 2017-09-23 16:26:56 -05:00
Lance Edgar
e283288a26 Fix deform widget resource inclusion for master/create template 2017-09-23 16:26:22 -05:00
Lance Edgar
52747ea6bd Auto-enhance all select widget fields for deform 2017-09-23 16:26:03 -05:00
Lance Edgar
7cb4664018 Add ability to override schema node for custom deform fields 2017-09-23 16:25:37 -05:00
Lance Edgar
3361adf08a Copy select field template from deform
this is before any modifications, straight from deform
2017-09-23 14:12:27 -05:00
Lance Edgar
3bcec30a4c Don't set batch input file on creation, if no file exists 2017-09-23 13:32:12 -05:00
Lance Edgar
e1384c2ab1 Tweak default labels for created(by) batch form fields 2017-09-23 11:48:38 -05:00
Lance Edgar
8d78fad621 Fix data type/size issue with CSV download 2017-09-16 18:42:18 -05:00
Lance Edgar
c497604a30 Update changelog 2017-09-15 21:03:15 -05:00
Lance Edgar
3564ab0e1c Tweak title for master view row template 2017-09-15 21:02:13 -05:00
Lance Edgar
9ff6df83e5 Add generic support for downloading list results as CSV 2017-09-14 21:57:37 -05:00
Lance Edgar
f6d9f7a913 Fix user field rendering when no person associated 2017-09-03 13:00:44 -05:00
Lance Edgar
b76f568d7d Update changelog 2017-08-30 20:09:34 -05:00
Lance Edgar
45d4329630 Log debug instead of error when package diff render fails
we probably don't want email noise about this..
2017-08-20 13:12:55 -05:00
Lance Edgar
f74c93e3e7 Fix some bugs for rendering upgrade package diffs
in particular, when a new package gets installed and there is no "old"
version for it
2017-08-20 13:03:30 -05:00
Lance Edgar
ee606275ad Update changelog 2017-08-18 11:23:05 -05:00
Lance Edgar
2448d71edd Convert customer groups view to master3 2017-08-17 20:28:54 -05:00
Lance Edgar
7dbdaf1f8a Convert categories view to master3 2017-08-17 20:25:21 -05:00
Lance Edgar
34bc59f96f Convert brands view to master3 2017-08-17 20:20:15 -05:00
Lance Edgar
e3de40bdfe Convert bouncer view to master3
also move common file field logic from upgrades into master3
2017-08-17 20:13:42 -05:00
Lance Edgar
2db9d31386 Use shared logic for executing upgrade
now that it's part of the handler
2017-08-17 18:16:28 -05:00
Lance Edgar
639644375d Give the "More" link a but of extra space from other actions 2017-08-17 18:00:22 -05:00
Lance Edgar
c038d74302 Show all grid actions by default, if there are 3 or less 2017-08-17 17:25:18 -05:00
Lance Edgar
63e336d4bb Override deform template for checkbox field; fix label behavior 2017-08-17 17:21:07 -05:00
Lance Edgar
0d144ff58b Convert subdepartments view to master3 2017-08-17 00:45:11 -05:00
Lance Edgar
bbfa15845a Convert departments view to master3 2017-08-17 00:45:08 -05:00
Lance Edgar
3477637c74 Allow batch execution to require options on a per-batch basis
plus some other changes i think..
2017-08-16 23:27:27 -05:00
Lance Edgar
98ca378302 Add extra perms for creating inventory batch w/ different modes 2017-08-16 22:26:52 -05:00
Lance Edgar
860f990a2e Fix mobile inventory template 2017-08-16 22:11:30 -05:00
Lance Edgar
422b7681f4 Update changelog 2017-08-16 20:46:00 -05:00
Lance Edgar
e945ebe325 Fix auto-disable button on form submit, per Chrome issues
dang it chrome, why you gotta be like that
2017-08-16 19:10:39 -05:00
Lance Edgar
178b9f2bcb Add LocalDateTimeFieldRenderer for formalchemy 2017-08-16 18:32:17 -05:00
Lance Edgar
d83990bb58 Update changelog 2017-08-15 16:52:27 -05:00
Lance Edgar
0469ddea7a Fix permission used for mobile receiving item lookup 2017-08-15 16:49:49 -05:00
Lance Edgar
b309df005c Tweak how pyramid config is created during app startup, for tests
still not sure if this is quite right, but seems to work for now
2017-08-15 16:13:35 -05:00
Lance Edgar
ec4e52fa1a Add mechanism for user to bulk-change status for purchase credits
trying to stay pretty generic yet...
2017-08-15 12:58:16 -05:00
Lance Edgar
0516d44842 Let handler delete files when deleting upgrade 2017-08-14 01:05:21 -05:00
Lance Edgar
56910ea4c1 Add generic changelog link for rattail/tailbone packages
i.e. production changelog, when not running from src
2017-08-13 21:23:11 -05:00
Lance Edgar
cbf3a9e939 Update changelog 2017-08-13 20:36:14 -05:00
Lance Edgar
4639d4a7db Give older/newer buttons the autodisable treatment 2017-08-13 20:07:37 -05:00
Lance Edgar
0e42efd32b Fix core styles/javascript for base template 2017-08-13 19:14:54 -05:00
Lance Edgar
7d0bb80a90 Merge 'better' theme into base templates
i.e. for now there is no 'better' (or any other) theme
2017-08-13 19:11:53 -05:00
Lance Edgar
c0a28716f5 Add prev/next buttons when viewing upgrade details 2017-08-13 18:28:40 -05:00
Lance Edgar
852bafdfa0 Improve logic for generating changelog links for upgrade package diffs 2017-08-13 16:30:31 -05:00
Lance Edgar
55f96c4730 Add initial support for changelog links for upgrade package diffs
definitely still just playing around so far...
2017-08-13 00:25:32 -05:00
Lance Edgar
4360d263e4 Test commit 2017-08-12 22:47:11 -05:00
Lance Edgar
4b5e415147 Add show all vs. show diffs for upgrade packages
plus some related tweaks
2017-08-12 22:38:23 -05:00
Lance Edgar
24d89db025 Update changelog 2017-08-12 20:40:58 -05:00
Lance Edgar
bf09071e1d Make product field renderer allow override of link text rendering 2017-08-12 20:26:11 -05:00
Lance Edgar
d51b9d2ad7 Update changelog 2017-08-11 11:55:24 -05:00
Lance Edgar
41e09271a2 Flush session once every 1000 records when bulk-deleting 2017-08-10 16:32:03 -05:00
Lance Edgar
46a43981df Fix join bug for users grid 2017-08-10 15:32:04 -05:00
Lance Edgar
0ad2113b81 Various tweaks to inventory batch logic
really to support zero-all mode, but several generic changes too
2017-08-10 11:10:42 -05:00
Lance Edgar
1d9489169b Update changelog 2017-08-09 23:16:13 -05:00
Lance Edgar
4f2bf5431d Fix clone config bug for label batches 2017-08-09 23:15:38 -05:00
Lance Edgar
3c3300a541 Update changelog 2017-08-09 22:53:11 -05:00
Lance Edgar
a3e7556a06 Fix encoding bug when reading stdout during upgrade 2017-08-09 22:34:03 -05:00
Lance Edgar
18f4b4ff5c Various changes to support a certain new app
improve inventory support, plus "hiding" person data but still using it
2017-08-09 21:41:42 -05:00
Lance Edgar
fcffe0f79d Update changelog 2017-08-09 14:16:53 -05:00
Lance Edgar
773a0c769d Fix upgrade stdout handling if file doesn't exist yet
plus some other tweaks..
2017-08-09 11:56:25 -05:00
Lance Edgar
e5b0fe7198 Add running display of stdout.log when executing upgrade 2017-08-09 11:44:31 -05:00
Lance Edgar
fbd73a48c4 Fix status when cloning upgrade 2017-08-08 21:43:04 -05:00
Lance Edgar
d7f5211fc4 Add support for cloning an upgrade record
until this is all ironed out, seems like it will often be helpful
2017-08-08 21:26:31 -05:00
Lance Edgar
77880abb87 Add awareness of upgrade exit code, success/fail 2017-08-08 20:32:17 -05:00
Lance Edgar
7a14b42345 Update changelog 2017-08-08 19:41:38 -05:00
Lance Edgar
33a9516042 Specify expire_on_commit for tailbone db session
is this right..?  seems to be necessary for login now, in some
cases.. which surely doesn't make sense
2017-08-08 19:38:54 -05:00
Lance Edgar
c40a993273 Update changelog 2017-08-08 18:00:58 -05:00
Lance Edgar
b28dc0702e Fix bug which caused new empty worked shift when editing time sheet 2017-08-08 17:59:57 -05:00
Lance Edgar
158755377b Update changelog 2017-08-08 17:06:02 -05:00
Lance Edgar
e80f8b31c1 Fix numeric filter to allow 3 decimal places by default 2017-08-08 17:04:59 -05:00
Lance Edgar
4101e056e4 Fix permission check for deleting single batch rows 2017-08-08 17:00:38 -05:00
Lance Edgar
2dc539c357 Fix bulk-delete for batch rows, allow it for pricing batches 2017-08-08 16:57:05 -05:00
Lance Edgar
2df51bfef8 Update changelog 2017-08-08 14:44:42 -05:00
Lance Edgar
820841d4e0 Remove unwanted import (which broke versioning)
ugh, now there's a check on startup to hopefully prevent this sort of
thing from sneaking up on us again
2017-08-08 14:41:52 -05:00
Lance Edgar
e91f18f344 Add some links to employees grid 2017-08-08 13:02:57 -05:00
Lance Edgar
9335381560 Update changelog 2017-08-08 00:50:20 -05:00
Lance Edgar
3fcc105b78 Only use monospace fonts in diff table if so specified 2017-08-07 23:23:58 -05:00
Lance Edgar
2714d3c03c Tweak logging when object fails to be executed 2017-08-07 23:07:36 -05:00
Lance Edgar
e14b5a89c3 Improve status tracking for upgrades; add package version diff 2017-08-07 22:23:07 -05:00
Lance Edgar
430a1416c6 Fix recipients renderer for email settings grid 2017-08-07 19:09:03 -05:00
Lance Edgar
4cb4d9b14c Stop trying to persist session used for upgrade execution progress
apparently that trick won't work as long as we're waiting in-process
for the upgrade process to complete..
2017-08-07 18:50:50 -05:00
Lance Edgar
f46e20c119 Refactor progress bars somewhat to allow file-based sessions
hoping this solves issue of Apache restart at end of upgrade
2017-08-07 18:19:29 -05:00
Lance Edgar
f203f2c377 Update changelog 2017-08-07 14:38:09 -05:00
Lance Edgar
f5688f1f90 Add basic support for performing / tracking app upgrades
also add `MasterView.executable` and friends
2017-08-05 22:07:49 -05:00
Lance Edgar
f476c696fd Make datasync changes bulk-deletable 2017-08-05 16:12:06 -05:00
Lance Edgar
941ce1a9cb Record become/stop root user events 2017-08-05 16:11:56 -05:00
Lance Edgar
54a364aa0c Update changelog 2017-08-04 18:18:08 -05:00
Lance Edgar
2f0f3fa463 Expose UserEvent table in UI
normal table access, plus per-user row grid
2017-08-04 17:14:38 -05:00
Lance Edgar
82e8f49dd1 Record basic user login/logout events 2017-08-04 16:48:33 -05:00
Lance Edgar
eaa47dbd8a Add rattail-tempmon dependency for tox tests 2017-08-04 16:20:18 -05:00
Lance Edgar
ba877eb3e9 Update changelog 2017-08-04 16:13:08 -05:00
Lance Edgar
3205d61ba6 Add progress support for bulk deletion
plus bulk-delete all tempmon readings when deleting client or probe
2017-08-04 16:11:45 -05:00
Lance Edgar
d8be651e95 Make tempmon readings bulk-deletable
although if there are enough of them, it can still suck..  need to add a
progress bar for bulk-delete at some point..
2017-08-04 15:15:43 -05:00
Lance Edgar
f4d4dcbdd2 Update changelog 2017-08-04 12:00:12 -05:00
Lance Edgar
dce0efb5fa Various view tweaks 2017-08-04 11:55:53 -05:00
Lance Edgar
97fb74f093 Update changelog 2017-08-04 10:06:43 -05:00
Lance Edgar
b4cabadcd9 Fix row highlighting for sources panel on product view 2017-08-04 10:05:43 -05:00
Lance Edgar
ea7eb47551 Add auto-links for most grids
probably still missing some yet?
2017-08-03 19:16:53 -05:00
Lance Edgar
bd3d948bf4 Update changelog 2017-08-03 17:11:05 -05:00
Lance Edgar
d1aaac5b16 Don't assume all rows belong to a batch
whooops..
2017-08-03 17:06:26 -05:00
Lance Edgar
f20a40e818 Add some links to various grid columns 2017-08-02 23:31:08 -05:00
Lance Edgar
8186366b69 Add view for consuming new batch ID; misc. tweaks for grids etc. 2017-08-02 19:16:45 -05:00
Lance Edgar
6ae129ea24 Fix bug when request.user becomes unattached from session (?)
this sure seems unexpected.  so far the behavior has only been seen on
mobile when a new ordering batch was created
2017-08-02 13:18:19 -05:00
Lance Edgar
961249722f Some tweaks to ordering batch views 2017-08-02 13:18:05 -05:00
Lance Edgar
65c63dad3e Initial support for mobile ordering
plus various other changes required for that
2017-08-02 12:08:23 -05:00
Lance Edgar
5afa832684 Add 'data-uuid' attr for mobile grid list items, if applicable 2017-08-02 12:04:32 -05:00
Lance Edgar
09ffdba9ef Allow product field renderer to suppress hyperlink 2017-08-02 12:04:03 -05:00
Lance Edgar
b160ac64eb Update changelog 2017-08-01 15:05:34 -05:00
Lance Edgar
93fa361292 Add "on order" count to products grid, tweak product notes panel 2017-08-01 14:54:04 -05:00
Lance Edgar
3820891277 Fix batch links when viewing purchase object 2017-08-01 14:54:04 -05:00
Lance Edgar
0171f3ebba Various improvements to batch worksheets, index links etc. 2017-08-01 14:53:45 -05:00
Lance Edgar
00027b09f6 Fix styles for message compose template 2017-08-01 14:39:38 -05:00
Lance Edgar
cbf4ca8479 Improve verbiage for exception view
suggest the user submit Feedback to be notified of bugfix etc.
2017-08-01 14:38:53 -05:00
Lance Edgar
d93cb4f07b Fix how we detect grid settings presence in user session
..in case grid has filter settings only
2017-08-01 14:38:09 -05:00
Lance Edgar
5b35c3dd3b Make login template use same logo as home page 2017-07-31 13:58:38 -05:00
Lance Edgar
94894b2d27 Update changelog 2017-07-26 17:11:35 -05:00
Lance Edgar
39cf32bb0a Allow master view to decide whether each grid checkbox is checked
aka. un-break what the v3 grids broke..
2017-07-26 17:10:44 -05:00
Lance Edgar
f1bb603f93 Update changelog 2017-07-26 15:41:39 -05:00
Lance Edgar
c82c55942f Stop checking for pre-0.7 SQLAlchemy 2017-07-19 03:15:10 -05:00
Lance Edgar
d3bc1abb57 Add some more support for product inventory and status 2017-07-19 03:08:32 -05:00
Lance Edgar
e4b2cd638a Stop allowing pre-0.7 SQLAlchemy
some recent version broke tests, let's just skip this check
2017-07-19 01:44:42 -05:00
Lance Edgar
61d504afb8 Various tweaks for support of native inventory
certaianly some other things made it in here too..
2017-07-19 01:42:18 -05:00
Lance Edgar
eb68eec520 Update changelog 2017-07-18 17:52:53 -05:00
Lance Edgar
f9906b26f2 Tweak some basic styles for forms/grids 2017-07-18 16:51:15 -05:00
Lance Edgar
66a3d6e66e Add colander/deform dependencies 2017-07-18 16:23:46 -05:00
Lance Edgar
4dcd89fba7 Add new v3 master with v2 forms, with colander/deform
goal here is to replace FormAlchemy dependency, slowly but surely..
so far only the Settings and Stores views use v3 master
2017-07-18 16:17:00 -05:00
Lance Edgar
2b5aaa0753 Update changelog 2017-07-18 14:03:22 -05:00
Lance Edgar
cb6b093a2a Fix grid bug if "current page" becomes invalid
sometimes it was possible to fall outside the valid page range, in which
case grid would stop showing results!
2017-07-18 13:26:17 -05:00
Lance Edgar
69778a4682 Fix import bug 2017-07-18 13:26:04 -05:00
Lance Edgar
915929b500 Update changelog 2017-07-15 02:48:50 -05:00
Lance Edgar
bea28e97e9 Expose version history for all supported tables
mostly for sake of products, but various..
2017-07-15 02:46:39 -05:00
Lance Edgar
5be3671a77 Update changelog 2017-07-14 23:57:01 -05:00
Lance Edgar
965dac9f43 Refactor (coalesce) all batch-related templates 2017-07-14 22:08:48 -05:00
Lance Edgar
951057d8c2 Refactor / cleanup v2 batch master
also remove old/unused logic from v1 batch master
2017-07-14 21:55:35 -05:00
Lance Edgar
df1c0b0b5e Fix grid pager styles; add default config for version grids
also remove all old grid code from v1 MasterView, since it now is
entirely superseded by v2 master
2017-07-14 21:50:07 -05:00
Lance Edgar
55ca7d5117 Remove references to master2 templates 2017-07-14 21:38:46 -05:00
Lance Edgar
a18f55854d Refactor master2/index => master/index template 2017-07-14 21:23:40 -05:00
Lance Edgar
292546e44b Final grid refactor for all templates and CSS/JS (newgrid -> grid) 2017-07-14 21:15:22 -05:00
Lance Edgar
c57e2e17cc Final grid refactor; we now have just 'grids' :)
this also removes some old UI stuff for the first attempt at continuum
versioning..among other cruft
2017-07-14 20:30:00 -05:00
Lance Edgar
52c7f485ab Remove some more references to 'newgrids' / old MasterView 2017-07-14 19:20:19 -05:00
Lance Edgar
172efe2ab9 Add flexible grid class for v3 grids for width=half etc.
also add 'percent' type renderer, and include column name in <td> class
2017-07-14 18:21:24 -05:00
Lance Edgar
38418a4200 Provide default renderers for SA mapped tables, where possible 2017-07-14 17:12:10 -05:00
Lance Edgar
6954748452 Update changelog 2017-07-14 16:45:24 -05:00
Lance Edgar
2a9cf3db49 Fix master view get_effective_data() for v3 grids
used when creating new batch from product results etc.

this also tweaks purchase credits view a bit
2017-07-14 16:43:49 -05:00
Lance Edgar
82f4a6efcd Update changelog 2017-07-14 16:04:50 -05:00
Lance Edgar
242d37c95d Fix bug for printing one-off product labels 2017-07-14 16:03:23 -05:00
Lance Edgar
d090338ba5 Update changelog 2017-07-14 15:48:00 -05:00
Lance Edgar
c18774e5e5 Fix template/styles for v3 grid views, add purchasing batch status 2017-07-14 15:45:31 -05:00
Lance Edgar
c774d6c8e3 Update changelog 2017-07-14 14:41:21 -05:00
Lance Edgar
5b1ae27a10 Add new "v3" grids, refactor all views to use them
or at least that's the idea..hopefully we caught them all
2017-07-14 03:57:36 -05:00
Lance Edgar
f244c2934b Update changelog 2017-07-13 18:12:39 -05:00
Lance Edgar
270b33de27 Make background color white, for merge diff table 2017-07-11 23:58:36 -05:00
Lance Edgar
4e7837baa9 Tweak (fix) color highlight for version diff view 2017-07-11 23:56:02 -05:00
Lance Edgar
5bff7d16b9 Tweak wording for master merge template 2017-07-11 23:23:23 -05:00
Lance Edgar
1685d37c01 Fix typo 2017-07-11 23:20:51 -05:00
Lance Edgar
8636db2a53 Add unit cost for inventory batches 2017-07-11 22:40:53 -05:00
Lance Edgar
1791bd745b More tweaks to support mobile inventory batches 2017-07-11 21:59:12 -05:00
Lance Edgar
8a5dbc33a7 Refactor keypad widget for mobile receiving
logic for this is now held in common
2017-07-11 21:05:26 -05:00
Lance Edgar
32d256932e Various tweaks to support mobile inventory batches
still not fully there I think, but pretty close..
2017-07-11 20:57:52 -05:00
Lance Edgar
452cb99349 Add basic support for viewing inventory batches on mobile 2017-07-11 16:23:11 -05:00
Lance Edgar
60104f05c7 Make all batches support mobile by default
with default pending/etc. filter also
2017-07-11 15:25:05 -05:00
Lance Edgar
48f5da4511 Add global key handler for mobile receiving, for scanner wedge input
this way we don't have to focus the UPC search box, since that seems to
always popup the device keyboard.
2017-07-11 13:05:35 -05:00
Lance Edgar
bf3d7b9143 Stop using popup for expiration date, for mobile receiving
that was causing event headaches..this way is simpler
2017-07-11 12:13:19 -05:00
Lance Edgar
dda79a491f Fix bug with mobile receiving UPC lookup; require stronger perm
doing a UPC lookup for mobile receiving now requires "create batch row"
permissions, since the view is capable of just that
2017-07-11 11:15:26 -05:00
Lance Edgar
148cbd2f57 Fix bug with "memory" of mobile grid filters 2017-07-11 10:57:35 -05:00
Lance Edgar
72b2510681 Prevent mobile receiving actions for batch which is complete or executed 2017-07-11 10:45:05 -05:00
Lance Edgar
af0eea76e2 Add logic for mobile receiving if product not in batch and/or system 2017-07-11 00:59:51 -05:00
Lance Edgar
7bbdf38551 Disable unused Clear button for mobile receiving
its purpose was unclear..go figure
2017-07-10 22:41:52 -05:00
Lance Edgar
98ff71a2dd Add filter support for mobile row grid; plus mark receiving as complete 2017-07-10 22:10:27 -05:00
Lance Edgar
f47157102c Add initial/basic support for "simple" mobile grid filter w/ radio buttons
so far only one such filter is (presumably?) supported..etc.
2017-07-10 21:04:56 -05:00
Lance Edgar
9da7ba21bf Sort mobile receiving batches by ID desc 2017-07-10 16:39:35 -05:00
Lance Edgar
27c70eb459 Update changelog 2017-07-10 16:15:48 -05:00
Lance Edgar
85d18a760b Fix CS/EA bug for mobile receiving 2017-07-10 16:14:55 -05:00
Lance Edgar
5d9210085f Update changelog 2017-07-07 09:23:44 -05:00
Lance Edgar
f0d177e5df Fix broken product image tag, per webhelpers2
this still probably needs more attention but this will do for now
2017-07-07 09:21:10 -05:00
Lance Edgar
21476d8173 Fix encoding bugs 2017-07-07 00:52:04 -05:00
Lance Edgar
581ced2990 Switch license to GPL v3 (no longer Affero)
refs #2
2017-07-06 23:47:56 -05:00
Lance Edgar
602180c45b Update changelog 2017-07-06 21:31:01 -05:00
Lance Edgar
631665e208 Refactor all remaining usage of webhelpers; use webhelpers2 etc. instead 2017-07-06 21:11:05 -05:00
Lance Edgar
018702159d Tweak how options are created for enum/choice filter value fields 2017-07-06 21:01:23 -05:00
Lance Edgar
6302d5a351 Refactor grids to use new 'paginate' library
instead of the older `webhelpers.paginate`
2017-07-06 20:57:53 -05:00
Lance Edgar
8014e60d14 Add webhelpers2 dependency, use it for most things
still using webhelpers for certain things yet, hopefully can get rid of that soon
2017-07-06 20:13:42 -05:00
Lance Edgar
5bded89466 Replace occurrences of execfile() 2017-07-06 16:25:29 -05:00
Lance Edgar
91a14c81a9 Remove all old-style CRUD views 2017-07-06 15:46:05 -05:00
Lance Edgar
53d69acbcc Remove all old-style batch CRUD views 2017-07-06 15:44:37 -05:00
Lance Edgar
62fa0f9fcb Remove all "old-style" (aka. version 1) grids 2017-07-06 15:23:33 -05:00
Lance Edgar
0befc46070 Refactor "departments by vendor" grid to use newer-style 2017-07-06 14:34:35 -05:00
Lance Edgar
3b97757d7f Remove unused reference to deprecated view 2017-07-06 01:00:26 -05:00
Lance Edgar
d1436e4fd3 Revert "Remove all "old-style" (aka. version 1) grids"
This reverts commit 0085e2ccc4.

hm dang, sure enough broke stuff
2017-07-06 00:31:16 -05:00
Lance Edgar
0085e2ccc4 Remove all "old-style" (aka. version 1) grids
hopefully this doesn't break anything! ;)
2017-07-06 00:28:01 -05:00
Lance Edgar
59b170e745 Remove reference to old-style version view 2017-07-06 00:23:33 -05:00
Lance Edgar
66cc6cd39a Remove old-style continuum version views 2017-07-06 00:19:31 -05:00
Lance Edgar
83751f7c9e Fix background color for diff tables 2017-07-05 21:27:58 -05:00
Lance Edgar
85bdefc25b Add versioning display support for contact-related models 2017-07-05 17:16:28 -05:00
Lance Edgar
20ddf2687b Tweak header/title for versions listing page 2017-07-05 13:20:14 -05:00
Lance Edgar
d9569882c9 Tweak config handling in case of running tests 2017-07-05 13:19:41 -05:00
Lance Edgar
0b68d56ddb Add basic versioning history support for master view
as with actual data versioning, we only support Person thus far
2017-07-05 03:07:35 -05:00
Lance Edgar
7340ef1f9b Rearrange some imports to ensure rattail.db.model comes last
this is necessary for Continuum versioning
2017-07-03 23:52:48 -05:00
Lance Edgar
db0eaf8eb0 Make Person.employee field readonly 2017-07-03 23:52:30 -05:00
Lance Edgar
a03083efdd Add initial support for expiration date for mobile receiving 2017-07-03 21:07:57 -05:00
Lance Edgar
4aa91414a5 Tweak how customer/person relationships are displayed
expose just a little more to make it easier to track down a data issue i had
2017-07-03 16:58:30 -05:00
Lance Edgar
24a2c15850 Make hyperlink optional for employee field renderer 2017-07-03 15:52:41 -05:00
Lance Edgar
e2b22221c4 Add custom default grid row size for Trainwreck items
seems like 100 rows is way more useful for this one
2017-07-01 19:06:05 -05:00
Lance Edgar
cbdbcb6df9 Update changelog 2017-06-22 13:41:03 -05:00
Lance Edgar
888c094fe3 Allow bulk row deletion for vendor catalog batches 2017-06-22 13:28:35 -05:00
Lance Edgar
318189b839 Hide "execute results" button for handheld batches, unless permissions 2017-06-22 02:42:14 -05:00
Lance Edgar
1ce2f410d0 Tweak device type list field when making new handheld batch
i.e. sort by display name, etc.
2017-06-22 02:35:41 -05:00
Lance Edgar
b2f96f4217 Make case/unit quantities prettier within Inventory batch rows grid 2017-06-22 01:21:15 -05:00
Lance Edgar
b9a96f306b Add row count to inventory and label batch views 2017-06-22 01:17:34 -05:00
Lance Edgar
17017adde8 Tweak behavior when executing handheld batch results
redirect to final batch when done, try to warn user a bit
2017-06-22 01:02:03 -05:00
Lance Edgar
0d448fe6c5 Fix batch row count when deleting a row 2017-06-22 00:52:41 -05:00
Lance Edgar
5a0fa20e03 Add way to execute multiple handheld batches at once 2017-06-21 17:29:06 -05:00
Lance Edgar
a63f2e3623 Tweak display of inventory/label batches to reflect multiple handheld batches 2017-06-21 15:36:32 -05:00
Lance Edgar
1fc3133f8e Try to keep batch status updated; display it for handheld batches
seems a little hacky but hoping it's safe at least
2017-06-21 13:24:27 -05:00
Lance Edgar
83dbf405f6 Add row count as available column to batch header grids 2017-06-21 12:59:13 -05:00
Lance Edgar
0fb789fc2c Tweak default views for Trainwreck data 2017-06-16 16:38:05 -07:00
Lance Edgar
b468bc4b2b Add AlchemyLocalDateTimeFilter 2017-06-16 16:37:40 -07:00
Lance Edgar
80d2912874 Add basic views for Trainwreck transactions
..but never try to configure them, custom app must do that
2017-06-06 18:25:04 -07:00
Lance Edgar
02c93dd505 Update changelog 2017-06-05 20:54:49 -07:00
Lance Edgar
d727efa6a0 Always add key as class to grid column headers; allow literal label 2017-06-01 19:29:32 -05:00
Lance Edgar
c8b8608dc7 Update changelog 2017-05-30 20:27:44 -05:00
Lance Edgar
cc41c38d68 Fix bug when updating Order Form data, if row.po_total is None
not sure how/when that happens, but just fall back to $0
2017-05-30 20:25:37 -05:00
Lance Edgar
2d29174772 Remove all views etc. for old-style batches 2017-05-25 16:46:31 -05:00
Lance Edgar
9e5b43ca66 Update changelog 2017-05-25 14:53:34 -05:00
Lance Edgar
95418ab459 Remove "case quantity" field from Ordering Batch download as Excel file 2017-05-25 12:34:12 -05:00
Lance Edgar
da0f5cb63c Fix bug where batch notes weren't saved upon creation 2017-05-25 12:20:37 -05:00
Lance Edgar
522aad5880 Add basic ability to download Ordering Batch as Excel spreadsheet 2017-05-24 21:13:18 -05:00
Lance Edgar
b841ce664e Make 'notes' field use textarea renderer by default, for all batches 2017-05-24 20:11:53 -05:00
Lance Edgar
346bb48f9c Add highlight to active row within Order Form view 2017-05-24 19:41:51 -05:00
Lance Edgar
37a9153c4d Pad session timeout warning by 10 seconds, to account for drift 2017-05-24 18:38:33 -05:00
Lance Edgar
cf8df76788 Add support for bulk-delete of Pricing Batches 2017-05-24 18:10:38 -05:00
Lance Edgar
38d623bcf9 Fix behavior of mobile receiving when first entering a quantity
i.e. replace default of '1' if user first presses a numeric key, but
always append to quantity after that
2017-05-24 00:17:06 -05:00
Lance Edgar
5eca2347d5 Add initial support for mobile receiving views 2017-05-24 00:04:56 -05:00
Lance Edgar
d68bf6b012 Refactor "purchasing" batch views, split off "ordering"
remainder will be handled when the time comes..
2017-05-23 13:44:07 -05:00
Lance Edgar
4875c8ebdc Simplify page title display for mobile base template 2017-05-23 11:30:38 -05:00
Lance Edgar
d93b91f491 Various tweaks for mobile receiving batches
this is temporary, soon will refactor all that again..
2017-05-22 13:13:44 -05:00
Lance Edgar
5cb3f15616 Add validation for unique name when creating new Setting 2017-05-19 10:42:05 -05:00
Lance Edgar
242bcd7603 Remove references to deprecated batch handler methods 2017-05-18 11:57:30 -05:00
Lance Edgar
cb39ca7970 Populate data rows for new mobile purchasing batch, if applicable
i.e. if batch is meant for receiving an existing PO etc.
2017-05-18 11:48:28 -05:00
Lance Edgar
f0feefc7e5 Tweak how purchase batch is created via mobile
to let custom apps override args etc.
2017-05-18 11:33:01 -05:00
Lance Edgar
9e0e21399b Fix subtle bug when identifying purchase batch row on order form update 2017-05-18 09:22:39 -05:00
Lance Edgar
d04f80e4e0 Update changelog 2017-05-18 08:43:20 -05:00
Lance Edgar
d6bc584831 Add convenience dialog_button() JS function 2017-05-17 14:02:00 -05:00
Lance Edgar
76e71d634e Fall back to 'pretty' hours display if config is invalid etc. 2017-05-16 14:00:13 -05:00
Lance Edgar
3111aad7cd Expose full-time flag and start date for employee view 2017-05-16 13:44:02 -05:00
Lance Edgar
1dda8a961a Let config cause time sheet hours to display as HH.HH for some users
default display is still HH:MM however
2017-05-15 17:51:24 -05:00
Lance Edgar
d7160a0a38 Add daily hour totals when viewing or editing single employee time sheet 2017-05-15 17:34:47 -05:00
Lance Edgar
d1e092d9d3 Cap our pyramid_tm version until we can upgrade to pyramid 1.9 2017-05-13 14:41:03 -05:00
Lance Edgar
5989091a9d Don't include 'tailbone.views.core' b/c it no longer provides anything 2017-05-13 14:28:20 -05:00
Lance Edgar
9460b41ec2 Add basic 'robots.txt' support to CommonView 2017-05-13 14:26:16 -05:00
Lance Edgar
737973f4fc Remove unused 'fake_error' view
has been superseded by CommonView.bogus_error
2017-05-13 14:10:00 -05:00
Lance Edgar
f02d6d4b16 Add basic support for Trainwreck database connectivity 2017-05-12 23:14:30 -05:00
Lance Edgar
17f9e6d4a9 Remove customer view template
we shouldn't be doing anything special here, leave that up to derived app
2017-05-11 13:59:51 -05:00
Lance Edgar
eb272bf7f9 Tweak some customer view/field rendering, to allow more customization 2017-05-11 13:54:23 -05:00
Lance Edgar
56695d0c20 Allow batch view to override execution failure message 2017-05-11 09:49:15 -05:00
Lance Edgar
02962fbf87 Update changelog 2017-05-05 17:52:34 -05:00
Lance Edgar
5f8702e4cf Remove lower version for Pyramid dependency, but restrict to pre-1.9
this may not be the best idea, but needed a hack for now..
2017-05-05 00:26:17 -05:00
Lance Edgar
9107a26b63 Add basic support for deletion speedbump for row data 2017-05-04 16:35:21 -05:00
Lance Edgar
72ae1191a0 Let a batch disallow bulk-deletion of its rows 2017-05-04 16:34:48 -05:00
Lance Edgar
2c14dce30d Add allowance for Escape key, in numeric.js 2017-05-04 16:33:34 -05:00
Lance Edgar
7f5dbc422d Update changelog 2017-04-18 18:51:08 -05:00
Lance Edgar
ee2137e1bf Add simple flag to prevent multiple submits for Order Form AJAX 2017-04-18 18:43:14 -05:00
Lance Edgar
589a747662 Auto-save time sheet day editor on Enter press if time field is focused
Hopefully this is a good idea, may have to revisit someday..?
2017-04-17 16:24:59 -05:00
Lance Edgar
56aff60efd Update changelog 2017-04-04 17:44:52 -05:00
Lance Edgar
754c086053 Fix signature for MasterView.get_index_url()
per new `mobile` kwarg
2017-04-04 17:43:33 -05:00
Lance Edgar
1a9a2b2d67 Update changelog 2017-04-04 16:05:34 -05:00
Lance Edgar
e64cdb3f80 Tweak mobile home page to leverage config for main image 2017-03-30 23:32:18 -05:00
Lance Edgar
a3d0966139 Allow config to define home page image URL 2017-03-30 22:19:44 -05:00
Lance Edgar
6156a80db0 Tweak field label styles for mobile 2017-03-30 20:15:09 -05:00
Lance Edgar
0ad29c5283 Add basic paging grid/index support for mobile
still lots to do for this yet..but readonly basics are here..
2017-03-30 20:11:17 -05:00
Lance Edgar
e313e1bc8c Tweak logic for registering exception view, to avoid test breakage 2017-03-29 22:31:10 -05:00
Lance Edgar
17aab8f4f0 Update changelog 2017-03-29 12:46:42 -05:00
Lance Edgar
1adcb98f11 Various template standardization tweaks 2017-03-29 00:21:10 -05:00
Lance Edgar
b1f98c1023 Add 'status' column to vendor cost table in product view
(available vs. discontinued)
2017-03-28 19:56:02 -05:00
Lance Edgar
5a2f20e489 Add basic table listing view, with rough estimate row counts 2017-03-28 00:54:46 -05:00
Lance Edgar
73c0d02b9a Only configure exception view when running in production
apparently that supresses normal traceback on console even..
2017-03-28 00:54:21 -05:00
Lance Edgar
7463d4e092 Add default view for unhandled exceptions
to give the user a bit of low-down as to what should happen next...
2017-03-28 00:00:35 -05:00
Lance Edgar
04e9752ee1 Detect "backwards" shift when time sheet is edited, alert user 2017-03-27 23:25:17 -05:00
Lance Edgar
27903b5984 Fix core view auto-logout inactive user logic, for tests 2017-03-27 22:44:51 -05:00
Lance Edgar
97aa17f64d Add logic to core View class, to force logout if user becomes inactive
Also, expose "active sticky" field for user views
2017-03-27 21:37:45 -05:00
Lance Edgar
bef0a2d0b6 Tweak organization panel for product view template
for better customization
2017-03-26 18:42:20 -05:00
Lance Edgar
543bf5338a Update changelog 2017-03-25 15:34:33 -05:00
Lance Edgar
77a252399b Add unit item and pack size fields to product view 2017-03-25 15:28:38 -05:00
Lance Edgar
4a2f329613 Fix bugs when checking for 'chuck' in demo mode 2017-03-24 17:57:23 -05:00
Lance Edgar
e37e17adf0 Fix route sequence for people autocomplete 2017-03-24 17:29:34 -05:00
Lance Edgar
d373eb9ac1 Broad refactor to improve customization of purchase order form etc.
* add dropdown alternative for autocomplete renderer
* auto-enhance some common dropdowns
* refactor new purchase batch, order form view/templates
2017-03-24 17:22:12 -05:00
Lance Edgar
e71204dcec Bump margin between grid and header table, i.e. buttons
hopefully this is a good amount..
2017-03-23 21:35:23 -05:00
Lance Edgar
3dfe3dfa28 Add CostFieldRenderer and tweak product view template
latter being for easier customization
2017-03-23 20:32:56 -05:00
Lance Edgar
95b2ce25c1 Update changelog 2017-03-22 19:26:10 -05:00
Lance Edgar
7975d177d6 Add file download support by default for report output 2017-03-22 14:35:40 -05:00
Lance Edgar
6adb99003d Add basic master view for Report Output data model 2017-03-22 14:27:59 -05:00
Lance Edgar
e34bd947bc Allow config to override jQuery UI version 2017-03-21 21:23:35 -05:00
Lance Edgar
4c7f398c88 Add extra_main_fields() method to product view template 2017-03-21 19:35:32 -05:00
Lance Edgar
27c118eb10 Rollback our jQuery UI version again..to 1.11.4
apparently the new one introduces some changes which need to be
investigated further.  This change also makes it easier to override
the core jquery script tags, for experimenation...
2017-03-21 13:40:59 -05:00
Lance Edgar
abb82c91f3 Add BatchMasterView.add_file_field() convenience method 2017-03-21 13:19:38 -05:00
Lance Edgar
0d830d595c Move notfound() method to core View class 2017-03-21 13:18:24 -05:00
Lance Edgar
5494266698 Bump default jQuery UI version to 1.12.1
previously was 1.11.4
2017-03-21 13:17:35 -05:00
Lance Edgar
43022c3205 Refactor the batch file field renderer somewhat
try to leverage the "common" file field renderer some more...
2017-03-21 13:16:48 -05:00
Lance Edgar
581a21bd9d Add basic "mobile index" master view, plus support for demo mode 2017-03-19 11:21:00 -05:00
Lance Edgar
9808bb3a91 Fix behavior of default email/phone field with empty value 2017-03-17 18:15:54 -05:00
Lance Edgar
15eae8b2c7 Various tweaks to the customer and person views/forms
These things still need plenty more help...
2017-03-17 15:52:26 -05:00
Lance Edgar
e61b60e412 Add more variations of project name when creating via scaffold 2017-03-17 15:51:52 -05:00
Lance Edgar
68fea2f59a Add 'is_any' verb to integer grid filters 2017-03-16 13:54:40 -05:00
Lance Edgar
24765e8dac Update changelog 2017-03-14 12:36:12 -05:00
Lance Edgar
9a8fa43c6a Add trailing '?' for employee time sheet when hours are incomplete 2017-03-14 12:31:10 -05:00
Lance Edgar
693c2dce57 Tweak grid configuration for Employees view 2017-03-10 12:45:44 -06:00
Lance Edgar
7a63f11dae Update changelog 2017-03-03 15:58:22 -08:00
Lance Edgar
b3599d8241 Add 'discontinued' flag to product view
Also, don't render product description as link if it's empty
2017-03-03 15:08:00 -08:00
Lance Edgar
2002031e41 Update changelog 2017-03-01 13:33:29 -08:00
Lance Edgar
7d7bdb11ae Add ingredients field to product view 2017-02-27 21:34:02 -08:00
Lance Edgar
89a4b5645c Add notes panel to product details view 2017-02-27 20:48:38 -08:00
Lance Edgar
c3b15f76b5 Update changelog 2017-02-24 12:17:04 -06:00
Lance Edgar
ec444d8f7d Remove 'forever sessions' permission from role/user views
This has been deprecated in favor of Role.session_timeout
2017-02-24 12:05:47 -06:00
Lance Edgar
cf059baffa Add initial support for native product images
Definitely not perfect yet, but a start..
2017-02-23 13:21:19 -06:00
Lance Edgar
507f742edf Add some product flags (kosher vegan etc.) to view fieldset 2017-02-22 20:11:02 -06:00
Lance Edgar
555935c71e Expose notes field for purchasing batches
Plus various other tweaks for styles and coding conventions etc.
2017-02-21 14:27:16 -06:00
Lance Edgar
59799302bd Fix daylight savings bug when cloning schedule from previous week 2017-02-21 13:57:04 -06:00
Lance Edgar
75c73aad13 Expose/honor per-role session timeouts 2017-02-21 13:12:23 -06:00
Lance Edgar
7ef4ebcda8 Update changelog 2017-02-21 12:02:25 -06:00
Lance Edgar
cb96272b46 Fix session reference bug in schedule view 2017-02-21 12:01:40 -06:00
Lance Edgar
7d18766aa1 Update changelog 2017-02-21 11:59:13 -06:00
Lance Edgar
ac8c63219c Fix bug in DateFieldRenderer when no format specified 2017-02-21 11:58:21 -06:00
Lance Edgar
48713bb3cf Update changelog 2017-02-21 11:40:20 -06:00
Lance Edgar
6b11eb84ea Be less aggressive when validating schedule edit form POST
Somehow deletions were requested for shifts which didn't exist...not
sure how that happened but let's just ignore instead of raise error
2017-02-21 11:36:36 -06:00
Lance Edgar
080e3080af Tweak filter for CustomerOrderItem grid 2017-02-21 11:36:17 -06:00
Lance Edgar
e0521ba8c5 Add initial/basic views for customer orders data 2017-02-19 14:22:35 -06:00
Lance Edgar
9b85a77695 Update changelog 2017-02-19 13:22:54 -06:00
Lance Edgar
3930ed9a16 Add beginnings of mobile receiving views
Very incomplete, not much is supported yet, but this is a start..
2017-02-19 13:17:28 -06:00
Lance Edgar
6ed752d477 Add generic "bulk delete" support to MasterView 2017-02-17 19:40:21 -06:00
Lance Edgar
9712868406 Update changelog 2017-02-17 14:51:33 -06:00
Lance Edgar
38aaebe08f Add ability to filter Send Messages by recipient name 2017-02-17 14:24:30 -06:00
Lance Edgar
def2931ba6 Increase size of Roles select when editing a User 2017-02-17 14:24:13 -06:00
Lance Edgar
93f40ef36e Add ability to merge 2 user accounts 2017-02-17 12:49:15 -06:00
Lance Edgar
35126e8e5b Tweak progress template to better handle reset to 0%
for those tasks which invoke the progress meter multiple times
2017-02-16 19:44:31 -06:00
Lance Edgar
24831af231 Update changelog 2017-02-16 14:05:51 -06:00
Lance Edgar
e3ec3be03b Add support for client-side session timeout warning 2017-02-16 13:32:20 -06:00
Lance Edgar
4ae70de339 Tweak product view page styles
Use the new grid styles, plus tweak a field renderer
2017-02-15 14:16:14 -06:00
Lance Edgar
c24120393f Tweak styles for 'sources' grid on products view page 2017-02-15 01:13:46 -06:00
Lance Edgar
8e35b68e05 Make sure invoice number is saved when making new purchasing batch 2017-02-14 23:12:37 -06:00
Lance Edgar
39bc1039c4 Set form id for new purchasing batch page 2017-02-14 22:06:42 -06:00
Lance Edgar
6ebb89fac1 Update changelog 2017-02-14 20:41:18 -06:00
Lance Edgar
643f411f42 Tweak default grid actions a little
Still trying to be smart about how/when to collapse
2017-02-14 13:33:04 -06:00
Lance Edgar
b89e8574e1 Add way for login_user() to set different timeout depending on nature of login
This was added for the sake of a "clock in/out" mechanism
2017-02-13 19:23:24 -06:00
Lance Edgar
6bcfd0515f Advance to password field when Enter pressed on username, login page 2017-02-13 19:08:18 -06:00
Lance Edgar
051b52bd4b Tweak form handling for sending a new message, for more customization 2017-02-13 17:37:16 -06:00
Lance Edgar
70e5915e51 Tweak styles for Send Message page 2017-02-13 16:45:45 -06:00
Lance Edgar
b90f5c8a3a Redirect to login page when Forbidden happens with anonymous user 2017-02-13 16:22:20 -06:00
Lance Edgar
5fb421d74b Make datasync changes viewable 2017-02-13 10:13:47 -06:00
Lance Edgar
aa13cbfa07 Make some product fields readonly 2017-02-12 20:09:25 -06:00
Lance Edgar
7ad2ec48f0 Add master view for generic exports 2017-02-12 16:08:29 -06:00
Lance Edgar
2c7270954c Collapse grid actions if there are only 2 2017-02-12 16:07:58 -06:00
Lance Edgar
9a3dbb9786 Update changelog 2017-02-11 19:10:55 -06:00
Lance Edgar
43a3b8ae0a Use pretty_hours() function where applicable 2017-02-11 17:46:06 -06:00
Lance Edgar
ca4d15f06c Refactor logic used to login a user, for easier sharing 2017-02-11 17:08:27 -06:00
Lance Edgar
61b3daa701 Add config for redirecting user to home page after logout 2017-02-11 01:48:55 -06:00
Lance Edgar
6121b16522 Update changelog 2017-02-10 14:43:57 -06:00
Lance Edgar
e6bd9e18d0 Fix bug in base 'shifts' template if weekdays not in context 2017-02-10 14:40:19 -06:00
Lance Edgar
afe822dd6c Tweak how regular/current price fields are handled for Product view 2017-02-10 12:47:35 -06:00
Lance Edgar
99776b28d7 Tweak renderer for Amount field for DepositLink view 2017-02-10 10:04:45 -06:00
Lance Edgar
928a3766bc Update changelog 2017-02-09 19:03:59 -06:00
Lance Edgar
11a0d85286 Fix bug when first entry is empty for product on ordering form 2017-02-09 18:58:00 -06:00
Lance Edgar
6e7cad36b2 Expose 'delay' field in tempmon client views 2017-02-09 17:58:20 -06:00
Lance Edgar
13ff58a4fa Don't render user field as hyperlink unless so configured 2017-02-09 17:08:30 -06:00
Lance Edgar
7ca03df04d Refactor the Edit Time Sheet view for "autocommit" mode
I.e. instead of letting changes queue up for "batch" mode, immediately
flush changes to server after each edit.
2017-02-09 16:11:40 -06:00
Lance Edgar
d21c8bcaeb Rename case_pack to case_size 2017-02-08 15:30:44 -06:00
Lance Edgar
0f03e7d6a4 Update changelog 2017-02-08 13:15:45 -06:00
Lance Edgar
df7fa9ddbd Fix sorting bug for Employee Time Sheet view 2017-02-08 13:14:24 -06:00
Lance Edgar
cab339e367 Add support for Find Roles by Permission X feature 2017-02-06 13:37:42 -06:00
Lance Edgar
dd5162c151 Add initial version of "Find Users by Permission" page 2017-02-04 18:16:18 -06:00
Lance Edgar
afffb911d2 Update changelog 2017-02-04 14:28:57 -06:00
Lance Edgar
cc7c1e162f Invoke timepicker to correct format of user input, for edit schedule/timesheet
It's hoped that this will prevent possibility of user submitting invalid data
2017-02-04 14:27:47 -06:00
Lance Edgar
70a1dbf69a Update changelog 2017-02-04 12:49:57 -06:00
Lance Edgar
af415693b6 Add config flag for disabling option to "Clear Schedule"
I.e. when editing the schedule
2017-02-04 12:38:26 -06:00
Lance Edgar
273f56ec83 Improve the grid for WorkedShift model a bit 2017-02-04 12:32:21 -06:00
Lance Edgar
8b02fd3d38 Add hyperlink to EmployeeFieldRenderer 2017-02-04 12:32:12 -06:00
Lance Edgar
11f91d42d2 Update changelog 2017-02-03 16:56:11 -06:00
Lance Edgar
b2e21b8e74 Add basic support for per-user session timeout 2017-02-02 21:44:13 -06:00
Lance Edgar
4659d3473b Let project override user authentication for login page 2017-02-02 16:50:38 -06:00
Lance Edgar
49c9bbbbee Be explicit about fieldset for pricing batch rows
Seems helpful to investigate these sometimes...
2017-02-02 15:34:32 -06:00
Lance Edgar
9ebce976c1 Fix probe filter for tempmon readings grid 2017-02-02 14:29:36 -06:00
Lance Edgar
ff7b167d7e Update changelog 2017-01-31 13:23:04 -06:00
Lance Edgar
1e4612bcbe Refactor schedule / timesheet views for better separation of concerns
This was needed to support a "late clock-ins" view which included both
scheduled *and* worked shift data..
2017-01-30 23:03:05 -06:00
Lance Edgar
bd6d2d2e11 Update changelog 2017-01-30 17:15:42 -06:00
Lance Edgar
12545c6a20 Add way for batch views to hide rows with given status code(s)
This seems like it would often be useful...though maybe belongs in the handler?
2017-01-30 17:08:05 -06:00
Lance Edgar
e452ea1ae9 Add min diff threshold param when making price batch from product query
Hopefully this sets the stage for arbitrary batch params here..
2017-01-30 16:11:29 -06:00
Lance Edgar
2ab2dfe26b Add hyperlink to User field renderer 2017-01-29 22:52:36 -06:00
Lance Edgar
709fd5200d Add 'target' kwarg for grid action links
For opening link in new window etc.
2017-01-29 22:52:09 -06:00
Lance Edgar
7104e275c3 Add ability to edit employee time sheet
Also disable some unwanted autocomplete logic, plus add ability to
prevent autocomplete "change click" event
2017-01-29 18:53:52 -06:00
Lance Edgar
2e88cdde88 Add pyramid_mako dependency, remove minimum version for rattail 2017-01-29 15:19:39 -06:00
Lance Edgar
e009f240be Update changelog 2017-01-29 11:35:12 -06:00
Lance Edgar
25492cc0e8 Add warning highlight for pricing batch row if can't calculate price 2017-01-29 11:29:53 -06:00
Lance Edgar
3e98b24492 Add price diff column to pricing batch row grid 2017-01-29 11:22:20 -06:00
Lance Edgar
e86066e9ed Let master view with rows prevent sort/filter for row grid 2017-01-26 18:14:00 -06:00
Lance Edgar
732681b545 Tweaks to order form template etc., for purchasing batch 2017-01-25 11:15:17 -06:00
Lance Edgar
c2a189cb40 Add basic support for cloning batches
For now only label batches support this by default
2017-01-24 21:36:58 -06:00
Lance Edgar
b14feae0c1 Update changelog 2017-01-24 15:00:09 -06:00
Lance Edgar
9ea98bb27b Add ability to merge subdepartments 2017-01-24 14:59:00 -06:00
Lance Edgar
0b5a644de1 Improve columns, filters for TempMon Readings grid 2017-01-12 15:36:18 -06:00
Lance Edgar
fef6737832 Update changelog 2017-01-11 13:09:54 -06:00
Lance Edgar
5bc3cb7431 Fix CSRF token bug with email preview form, refactor to use webhelpers 2017-01-09 13:38:17 -06:00
Lance Edgar
03805942ae Update changelog 2017-01-06 17:38:45 -06:00
Lance Edgar
4b586c6249 When making batch from products, build query *before* starting thread
Otherwise permission checks will fail, if any are needed to build query
2017-01-06 17:36:50 -06:00
Lance Edgar
f68c3dd724 Update changelog 2017-01-03 12:32:59 -06:00
Lance Edgar
e102fa3df5 Prefer received quantities over ordered quantities, for Order Form history 2017-01-03 12:32:02 -06:00
Lance Edgar
d43e1e4a5f Update changelog 2017-01-03 10:05:20 -06:00
Lance Edgar
d4defef138 Fix type error in grid numeric filter 2017-01-03 10:02:14 -06:00
Lance Edgar
e13e2cfaaf Add "discarded" flag when receiving DMG/EXP products; add view for purchase credits 2016-12-30 12:37:07 -06:00
Lance Edgar
55973bf30a Set "order date" when creating new receiving batch 2016-12-30 09:45:22 -06:00
Lance Edgar
ed06ada8c4 Add department UUID to JSON returned for "eligible purchases" when creating batch 2016-12-30 09:00:13 -06:00
Lance Edgar
25866798cf Update changelog 2016-12-30 08:00:52 -06:00
Lance Edgar
e9dd44fa39 Tweak the "create" screen for purchase batches, for more customization
Also add some fields to the batch row fieldset
2016-12-30 07:52:56 -06:00
Lance Edgar
01ed68a3fe Update changelog 2016-12-29 13:28:35 -06:00
Lance Edgar
814fd12e9e Refactor Order Form a bit to allow custom history data 2016-12-29 13:23:21 -06:00
Lance Edgar
feed93eb61 Add extra perms for restricing which 'mode' of purchase batch user can create 2016-12-29 12:09:47 -06:00
Lance Edgar
2b7e38d077 Fix purchase batch execution, to redirect to Purchase *or* Batch
Depending on what the handler returned from execution
2016-12-29 11:56:42 -06:00
Lance Edgar
4231bf0455 Update changelog 2016-12-28 16:44:19 -06:00
Lance Edgar
1da898c9cf Tweak default filter label for Batch ID 2016-12-28 16:43:07 -06:00
Lance Edgar
8f98d61a38 Tweak default "numeric" grid filter, to ignore UPC-like values
Those tend to cause SQL errors, so just "fail silently" for now.  This
situation needs to be improved on the front end at some point...
2016-12-28 16:42:09 -06:00
Lance Edgar
f67fdb8c5b Update changelog 2016-12-28 14:53:06 -06:00
Lance Edgar
de38c3a20a Fix CSRF token bug for bulk-move message forms 2016-12-28 14:51:16 -06:00
Lance Edgar
e0865bef12 Update changelog 2016-12-22 12:27:35 -06:00
Lance Edgar
a0f32854e8 Fix CSRF token bug for old-style batch params form 2016-12-22 12:26:56 -06:00
Lance Edgar
a3313938a3 Update changelog 2016-12-21 12:00:06 -06:00
Lance Edgar
113f474e8b Fix master merge template/forms to include CSRF token 2016-12-21 11:58:59 -06:00
Lance Edgar
2fbf719d61 Update changelog 2016-12-20 17:01:41 -06:00
Lance Edgar
0b10021942 Update some enum references, render all purchase batch cases/units fields as quantity 2016-12-20 16:10:22 -06:00
Lance Edgar
feef8a5ecc Fix some bugs in product view template 2016-12-20 16:09:59 -06:00
Lance Edgar
8afaf80128 Various tweaks to purchasing batch views 2016-12-19 16:17:56 -06:00
Lance Edgar
7a9780e2b8 Fix CSRF bug in Ordering Form template, make case quantity pretty 2016-12-19 14:45:20 -06:00
Lance Edgar
3db2c9cba4 Update changelog 2016-12-19 13:39:26 -06:00
Lance Edgar
aa99f3b506 Add QuantityFieldRenderer 2016-12-19 12:26:16 -06:00
Lance Edgar
4c929055e6 Add style for 'half-width' grid 2016-12-17 00:30:18 -06:00
Lance Edgar
2a53eba564 Update changelog 2016-12-16 12:47:22 -06:00
Lance Edgar
6186200aba Make case quantity render a little prettier on product view 2016-12-15 16:31:32 -06:00
Lance Edgar
9a6ad16e2f Overhaul product views a little, per customization needs 2016-12-15 15:11:15 -06:00
Lance Edgar
f7267597ee Tweak the CustomFieldRenderer base class a bit
Not sure who all's using this now..hopefully this breaks nothing
2016-12-15 00:36:58 -06:00
Lance Edgar
d40d5e3f6b Tweak some field renderers for sake of product view 2016-12-14 23:27:45 -06:00
Lance Edgar
ef649d8c96 Fix CSRF tokens for datasync restart forms 2016-12-14 18:52:12 -06:00
Lance Edgar
4ed522ae47 Add global CSRF protection 2016-12-14 18:37:17 -06:00
Lance Edgar
ab09314ed3 Add initial support for CSRF token protection 2016-12-14 15:41:15 -06:00
Lance Edgar
11e78adaab Add "print receiving worksheet" feature, for 'ordered' purchases 2016-12-14 12:32:41 -06:00
Lance Edgar
86c667e1f1 Auto-append slash to URL when necessary
This should make people happy, if they notice..
2016-12-13 22:29:46 -06:00
Lance Edgar
ed252c6465 Overhaul the Receiving Form to account for "product not found" etc.
Also shows ordered/received/etc. quantities
2016-12-13 22:28:50 -06:00
Lance Edgar
acbb3d289c Add ValidGPC formencode validator 2016-12-13 22:27:52 -06:00
Lance Edgar
f890405162 Update changelog 2016-12-12 15:26:21 -06:00
Lance Edgar
7f14f50ee0 More mobile view improvements, various 2016-12-12 15:24:26 -06:00
Lance Edgar
14ac7aa198 Fix session bug in old CRUD views 2016-12-12 15:24:09 -06:00
Lance Edgar
79e63571e3 Make CurrencyFieldRenderer inherit from FloatFieldRenderer
Also cleanup some code generally..
2016-12-12 12:13:59 -06:00
Lance Edgar
06dee96af6 Add mobile support for datasync restart 2016-12-11 21:20:51 -06:00
Lance Edgar
22c7fee0f6 Tweak icons for mobile menu 2016-12-11 19:52:17 -06:00
Lance Edgar
024d3c1975 Add mobile support for "become/stop root" feature 2016-12-11 19:16:24 -06:00
Lance Edgar
ee0bdc4b74 OMG..lots of changes for sake of mobile login / user menu etc.
Feeling a bit sloppy right about now...oh well good enough
2016-12-11 18:07:30 -06:00
Lance Edgar
e3ae427e37 Update changelog 2016-12-11 10:53:27 -06:00
Lance Edgar
c2d2b6e072 Change jquery CDN URLs from HTTP to HTTPS 2016-12-11 01:43:17 -06:00
Lance Edgar
d77216374f Add initial mobile templates: base, home, about 2016-12-11 01:39:51 -06:00
Lance Edgar
34bd40ca86 Hide first/last name for employee view, unless in readonly mode 2016-12-10 16:03:55 -06:00
Lance Edgar
35d1c24bc7 Tweak flash message when sending email preview, in case it's disabled 2016-12-10 14:54:52 -06:00
Lance Edgar
ed4c445fbe Show 'enabled' column in grid, fix prefix bug for email profiles 2016-12-10 14:15:40 -06:00
Lance Edgar
9692e389d5 Update changelog 2016-12-10 12:51:21 -06:00
Lance Edgar
a0408e87f9 Fix plural titles for Tempmon model views 2016-12-10 12:06:49 -06:00
Lance Edgar
ede7869a22 Fix bug when restarting tempmon client 2016-12-10 11:59:32 -06:00
Lance Edgar
aa9c7abdb5 Add 'restartable tempmon client' conditional logic 2016-12-10 11:56:25 -06:00
Lance Edgar
16f00b02df Validate for unique tempmon probe config key 2016-12-10 11:23:22 -06:00
Lance Edgar
8578a063f3 Add PO/invoice unit costs to purchase batch row view 2016-12-10 10:23:21 -06:00
Lance Edgar
6389481cea Remove some deprecated field renderers 2016-12-10 10:14:52 -06:00
Lance Edgar
8ed4421b03 Update changelog 2016-12-10 09:21:50 -06:00
Lance Edgar
6a469a6f22 Add logic for handling Ctrl+V / Ctrl+X in numeric.js 2016-12-10 09:15:02 -06:00
Lance Edgar
839d3957dd Add initial support for mispicks / attaching credits for receiving batch 2016-12-10 09:08:37 -06:00
Lance Edgar
b3010465b6 Add generic 'not on file' product image for use as POD 404 2016-12-10 09:07:37 -06:00
Lance Edgar
1ab2a70e60 Add initial/basic support for damaged/expired items in receiving batch 2016-12-09 15:30:14 -06:00
Lance Edgar
dd08b71458 Tweak various views for purchase batches 2016-12-09 14:20:16 -06:00
Lance Edgar
c73ba56505 Add support for 'department' field in purchases / batches
Also fix logic for deleting a purchase (delete its batches first)
2016-12-09 14:01:06 -06:00
Lance Edgar
6c3d221e98 Add new 'receiving form' for purchase batches 2016-12-09 12:09:18 -06:00
Lance Edgar
468a84aa90 Update changelog 2016-12-09 10:35:33 -06:00
Lance Edgar
ccc1374f6d Fix bug when editing a data row
This was a new-ish bug, caused I think by 4a2ba3925d
2016-12-09 10:34:35 -06:00
Lance Edgar
81baa90873 Update changelog 2016-12-08 12:14:37 -06:00
Lance Edgar
369d5849a9 Revert to display_name field for person views 2016-12-08 12:13:45 -06:00
Lance Edgar
e4a10cf7fc Update footer text/link per new about page 2016-12-07 22:06:27 -06:00
Lance Edgar
96ef75a75d Hopefully fix some bugs with people view(s) 2016-12-07 20:36:54 -06:00
Lance Edgar
cebde053ad Fix permission group label for email bounces 2016-12-07 17:04:52 -06:00
Lance Edgar
e1e4514038 Update changelog 2016-12-07 16:57:52 -06:00
Lance Edgar
cc34e77a2c Fix permission / grid action bug for email profiles 2016-12-07 16:57:08 -06:00
Lance Edgar
e662af1464 Update changelog 2016-12-07 16:02:07 -06:00
Lance Edgar
5a24c4113f Add new 'bytestring' filter for grids that need it
For now, must explicitly request the filter, nothing will use it by default
2016-12-07 16:00:36 -06:00
Lance Edgar
457ce97f4e Add 'extra_styles' to true base template 2016-12-07 16:00:20 -06:00
Lance Edgar
d8c4f92aa5 Tweak tempmon views a little, fix client restart logic 2016-12-07 16:00:00 -06:00
Lance Edgar
aedbe5214f Update changelog 2016-12-05 21:02:52 -06:00
Lance Edgar
4a2ba3925d Use master view's session when creating form
Needed when allowing create for models from non-rattail database
2016-12-05 21:01:30 -06:00
Lance Edgar
7705c765ee Fix import bugs with tempmon views 2016-12-05 21:01:18 -06:00
Lance Edgar
b339290274 Allow delete for datasync changes 2016-12-05 21:00:50 -06:00
Lance Edgar
dba9663d27 Update changelog 2016-12-05 19:15:33 -06:00
Lance Edgar
8674cf1650 Refactor tempmon views to leverage rattail-tempmon database 2016-12-05 19:14:20 -06:00
Lance Edgar
083f8ecde0 Tweak email config views, to support subject "templates" 2016-12-01 11:56:26 -06:00
Lance Edgar
cfd6e87cff Update changelog 2016-11-30 14:09:44 -06:00
Lance Edgar
dc00239b5f Fix bug in products view class
Need to invoke the core View init logic, for `self.enum`
2016-11-30 14:08:12 -06:00
Lance Edgar
62740e8a59 Update changelog 2016-11-29 15:30:52 -06:00
Lance Edgar
4498bc001f Tweak fields for product view 2016-11-29 15:30:05 -06:00
Lance Edgar
ee6d3195c5 Add basic 'about' page with some package versions 2016-11-28 18:28:33 -06:00
Lance Edgar
b2d7e14ef7 Update changelog 2016-11-28 16:16:31 -06:00
Lance Edgar
948987232a Tweak some fields for Product view 2016-11-27 14:17:42 -06:00
Lance Edgar
c8ec13d130 Add permission for bulk-delete of batch data rows 2016-11-26 21:22:57 -06:00
Lance Edgar
139d9a4fed Hopefully fix styles for 'print schedule' page 2016-11-26 20:29:10 -06:00
Lance Edgar
06ec80e7a8 Update changelog 2016-11-22 12:57:17 -06:00
Lance Edgar
3a9930b879 Tweak tempmon probe fields, make readings read-only
Still allow deletion of readings though.
2016-11-22 12:30:21 -06:00
Lance Edgar
0296c29dd7 Add support for restarting tempmon client 2016-11-22 00:55:30 -06:00
Lance Edgar
a39c347ad3 Add initial views for tempmon 2016-11-21 23:53:20 -06:00
Lance Edgar
668191b2e9 Add support for pricing batches 2016-11-21 19:36:57 -06:00
Lance Edgar
fdd0b6ec3b Add some links between employees / people / customers views 2016-11-21 17:47:24 -06:00
Lance Edgar
686bcfc74c Update changelog 2016-11-21 14:40:09 -06:00
Lance Edgar
674a315104 Fix bug when downloading batch file 2016-11-21 14:39:04 -06:00
Lance Edgar
8399eb8f91 Add initial support for 'costing' mode for purchase batches 2016-11-21 03:37:45 -06:00
Lance Edgar
67f6c11307 Add support for 'receiving' mode for purchase batches 2016-11-21 01:07:35 -06:00
Lance Edgar
8acb9b0029 Bump jquery version
Did this while troubleshooting something, maybe unnecessary but what the heck
2016-11-21 01:04:28 -06:00
Lance Edgar
d46b0cbc70 Add support for mode, purchase relation for purchase batches 2016-11-20 17:48:04 -06:00
Lance Edgar
1a6bacda6a Update changelog 2016-11-20 16:19:01 -06:00
Lance Edgar
339f3c6361 Move get_batch_kwargs() to BatchMasterView 2016-11-20 16:03:28 -06:00
Lance Edgar
d9145e5122 Update changelog 2016-11-20 14:11:15 -06:00
Lance Edgar
37be76cc84 Fix some bugs etc. with batch views and templates 2016-11-20 14:10:04 -06:00
Lance Edgar
f97b26506f Add printer-friendly view for "full" employee schedule
i.e. whatever version of that the user happens to be currently viewing
2016-11-19 22:23:45 -06:00
Lance Edgar
c9799f5943 Update changelog 2016-11-19 19:49:57 -06:00
Lance Edgar
936535d625 Tweak core view's rattail config init logic, for tests 2016-11-19 18:56:09 -06:00
Lance Edgar
203f0242fb Refactor batch views / templates per rattail framework overhaul 2016-11-19 18:34:50 -06:00
Lance Edgar
a5184e416a Tweak email config view a bit, for clarity 2016-11-15 19:36:08 -06:00
Lance Edgar
c275071499 Add size, extra link fields to product view template 2016-11-14 19:29:00 -06:00
Lance Edgar
09c1c49c0e Update changelog 2016-11-14 17:52:50 -06:00
Lance Edgar
73fcf84d59 Disable save button when creating new object 2016-11-14 17:51:23 -06:00
Lance Edgar
ad2724fd2f Make POD image for product view a bit more sane 2016-11-11 22:15:47 -06:00
Lance Edgar
536e1aa3eb Update changelog 2016-11-11 18:47:26 -06:00
Lance Edgar
11b4cf9616 Add support for more cases + units, more vendor fields, for new purchase batches 2016-11-11 01:56:37 -06:00
Lance Edgar
1f9a27a7ae Tweak default factory for boolean grid filters 2016-11-10 23:13:21 -06:00
Lance Edgar
7afd9c87df Update changelog 2016-11-10 17:37:42 -06:00
Lance Edgar
fe978a9bd2 Add 'additive fields' concept to merge diff preview 2016-11-10 17:13:46 -06:00
Lance Edgar
7dd19c6d87 Change how we determine default 'grid key' for master views 2016-11-10 17:13:29 -06:00
Lance Edgar
43eb2f107f Display sequence for product alt codes
Might as well, for now..
2016-11-09 16:59:08 -06:00
Lance Edgar
130f0b4cdc Update changelog 2016-11-09 14:19:30 -06:00
Lance Edgar
ecdf9b6926 Tweak merge template 2016-11-09 14:15:16 -06:00
Lance Edgar
ba1fa6d617 Tweak verbiage for merge template etc. 2016-11-09 02:17:01 -06:00
Lance Edgar
63d89b696a Fix line item PO Total update for new purchase Order Form 2016-11-08 23:44:34 -06:00
Lance Edgar
da5c040aeb Add historical amounts to new purchase Order Form, allow extra columns etc. 2016-11-08 22:45:58 -06:00
Lance Edgar
bf5808d517 Tweak fab release task per PyPI changes 2016-11-08 19:39:53 -06:00
Lance Edgar
83e9c7d076 Update changelog 2016-11-08 19:38:26 -06:00
Lance Edgar
c51d0db42d Tweak order form view for new purchase batches 2016-11-08 13:06:56 -06:00
Lance Edgar
7454e611c5 Refactor how batch editing is done; don't include rows for that sometimes
Various other fixes also..for sake of new purchase batches
2016-11-08 12:56:12 -06:00
Lance Edgar
da8ef9ebd8 Don't allow access to Order Form for executed purchase batch 2016-11-07 20:49:33 -06:00
Lance Edgar
758ae7099d Add initial support for viewing new purchase batch as Order Form 2016-11-07 20:40:47 -06:00
Lance Edgar
0477561ca6 Add support for making new-style batches from products grid query
Just label batches so far, will have to revisit that
2016-11-06 23:31:27 -06:00
Lance Edgar
4cfd3aa00e Add basic views for label batches 2016-11-06 20:53:50 -06:00
Lance Edgar
5183184b16 Fix row grid tools bug in batch view 2016-11-06 20:52:47 -06:00
Lance Edgar
a51bf54e94 Prevent user from adding new rows to batch which has already been executed 2016-11-06 13:34:08 -06:00
Lance Edgar
a6e43d1658 Add support for new Purchase/Batch views, 'create row' master pattern
More refactoring here but hopefully not that important..
2016-11-06 12:58:29 -06:00
Lance Edgar
8fe0e96273 Remove unused (I think?) VendorFieldRenderer 2016-11-05 02:08:10 -05:00
Lance Edgar
732453eedc Update changelog 2016-11-02 15:06:34 -05:00
Lance Edgar
06b0b13992 Add basic merge feature to MasterView 2016-10-28 10:26:37 -05:00
Lance Edgar
a398a0a710 Tweak styles for global header 2016-10-28 10:26:23 -05:00
Lance Edgar
0c11b72804 Update changelog 2016-10-27 19:00:09 -05:00
Lance Edgar
2b3b69ed70 Tweak how we auto-filter 'deleted' products
Hopefully this doesn't break anything?  This change is required for a
user who has 'become root' to see deleted products.
2016-10-27 15:58:00 -05:00
Lance Edgar
68ba3a7fcb Add 'vendor code' and 'vendor code (any)' filters for products grid 2016-10-26 18:47:44 -05:00
Lance Edgar
01acedaedf Show vendor invoice rows as warning, if they have no case quantity 2016-10-26 17:58:28 -05:00
Lance Edgar
2772057381 Tweak default styles for home page 2016-10-25 18:14:59 -05:00
Lance Edgar
590444b273 Fix template bug when deleting user 2016-10-25 18:14:43 -05:00
Lance Edgar
1af9fbd100 Update changelog 2016-10-19 13:56:41 -05:00
Lance Edgar
3790af8ef5 test commit 2016-10-18 20:54:28 -05:00
Lance Edgar
7932fffa1a Protect new 'root' views, only admin users allowed..
Heh whoops.
2016-10-18 19:17:23 -05:00
Lance Edgar
2c27120eb4 Update references to request.authenticated_userid
Per warnings from Pyramid, old method will go away in 1.8
2016-10-18 17:54:41 -05:00
Lance Edgar
6bf60365ba Let any 'admin' user elevate to 'root' for full system access
But otherwise, let the Administrator role be "normal" and have perms of
its own.  Hopefully cuts down on unwanted screen noise for admins.
2016-10-18 16:59:38 -05:00
Lance Edgar
4599eaad97 Revert to 'classic' docs theme, for now
Need to come up with a unique theme for rattail at some point...
2016-10-17 23:36:59 -05:00
Lance Edgar
383d714214 Disable a focus() call in menubar.js which messed with search filter focus
Hopefully this is a good idea..?  Probably should look for a replacement
lib at some point...
2016-10-16 21:40:04 -05:00
Lance Edgar
6cb4b86fd0 Redo whitespace / indentation for menubar.js 2016-10-16 21:37:38 -05:00
Lance Edgar
26c6c083c4 Add refresh_after_create flag for BatchMasterView
Hopefully this is a good idea too..
2016-10-16 03:33:10 -05:00
Lance Edgar
4757a56002 Fix bug in batch ID field renderer, when displayed for new batch
Hopefully this is a good idea..
2016-10-16 03:32:56 -05:00
Lance Edgar
1327b886fc Disable delete button by default, when clicked 2016-10-16 03:30:42 -05:00
Lance Edgar
7e3d47aa5c Fix / improve progress display somewhat 2016-10-16 03:30:12 -05:00
Lance Edgar
d0d8da9e47 Update changelog 2016-10-14 16:32:46 -05:00
Lance Edgar
3980886356 Add ability to clone schedule data from another week 2016-10-14 16:02:15 -05:00
Lance Edgar
c2503977ea Add ability to clear current schedule when editing 2016-10-14 14:45:23 -05:00
Lance Edgar
9e7cb532c8 Add speed bump when leaving timesheet page w/ unsaved changes
Also add save/undo buttons to top as well as bottom of timesheet.
2016-10-14 13:57:57 -05:00
Lance Edgar
e153390c15 Fix bug, break for loop when we can 2016-10-12 15:03:10 -05:00
Lance Edgar
e57757d44b Fix bug when POST'ing filter form data to edit schedule page 2016-10-12 14:26:59 -05:00
Lance Edgar
048951153d Add basic ability to edit employee schedule 2016-10-12 14:16:33 -05:00
Lance Edgar
788f3ad386 Update changelog 2016-10-10 11:41:24 -05:00
Lance Edgar
38ef101679 Add size description to inventory report 2016-10-10 11:34:10 -05:00
Lance Edgar
223a6dc862 Fix couple of bugs for vendor catalog views
No need to expose an "edit" mode for this batch since view allows
refresh.
2016-10-10 11:16:55 -05:00
Lance Edgar
3b84a92d7d Strip whitespace from username field when editing User
Otherwise can be a gotcha, if user doesn't know their username "has a
space" etc.
2016-10-10 10:59:07 -05:00
Lance Edgar
b157b79938 Remove last references to 'edbob' package 2016-10-09 21:12:13 -05:00
Lance Edgar
9b50067bd7 Issue proper warning if old 'edbob.config' setting is found 2016-10-09 19:44:45 -05:00
Lance Edgar
b5cea62de7 Tweak how tailbone finds rattail config from pyramid settings
Eventually need to stop supporting the old 'edbob.config' setting, for
now keep it as a fallback.
2016-10-08 14:29:23 -05:00
Lance Edgar
fca95ae8c0 Add 'tailbone' to global template context, update 'better' template footer 2016-10-07 19:33:41 -05:00
Lance Edgar
459637cddb Add registration for 'rattail' template with Pyramid scaffold system 2016-10-07 19:32:49 -05:00
Lance Edgar
8ce0148a64 Tweak some things to make demo project more "out of the box" 2016-10-06 13:13:31 -05:00
Lance Edgar
7451a0dc14 Update changelog 2016-10-04 15:55:45 -05:00
Lance Edgar
894ee87591 Add "bulk delete rows" feature to new batches view 2016-10-04 15:12:30 -05:00
Lance Edgar
f41135a2e0 Add code field to Category views 2016-10-03 15:37:31 -05:00
Lance Edgar
29ec662ead Update changelog 2016-09-30 15:52:17 -05:00
Lance Edgar
3bafa41ecd Add specific permissions for edit/delete of individual batch rows 2016-09-30 15:20:40 -05:00
Lance Edgar
f59e75072e Update changelog 2016-09-26 15:18:37 -05:00
Lance Edgar
1c45472fe5 Tweak how a grid filter factory is determined
Don't inspect anything if a factory is provided by caller.
2016-09-19 16:34:12 -05:00
Lance Edgar
65d1c24230 Add a couple of extra verbs to base grid filter class
Seems like these could be more useful some day; for now they're used by
a bespoke project.
2016-09-19 16:33:24 -05:00
Lance Edgar
a77f41debf Fix row-level visibility for grid edit action 2016-09-19 16:32:18 -05:00
Lance Edgar
cff19f38a3 Improve validation for FormAlchemy date field renderer 2016-09-19 13:13:53 -05:00
Lance Edgar
65661a03f5 Add FormAlchemy-compatible validators for email address, phone number 2016-09-18 17:16:17 -05:00
Lance Edgar
93fcc72f73 Add "refresh" button when viewing batch 2016-09-18 17:15:58 -05:00
Lance Edgar
679dce4ed8 Add "just in time" editable instance check for master view 2016-09-18 17:14:57 -05:00
Lance Edgar
94a7a15e6d Add basic form validation when sending new messages
This avoids the message body for now, since that's implemented a couple
different ways in the real world...
2016-09-13 20:23:51 -05:00
Lance Edgar
378f1ae7fb Update changelog 2016-09-01 00:03:58 -05:00
Lance Edgar
bb6a838d3b Don't show CSV download link if master view opts out 2016-08-26 15:41:22 -05:00
Lance Edgar
60c5d31aa1 Allow opt-out for "download batch row data as CSV" feature
Sometimes that just confuses the issue, e.g. when the batch provides a
download feature of its own.
2016-08-26 15:31:03 -05:00
Lance Edgar
e3f13baaab Fix permission group label bug for batch views 2016-08-24 17:21:21 -05:00
Lance Edgar
e296bfd392 Add MasterView.listable flag for disabling grid view 2016-08-24 17:20:53 -05:00
Lance Edgar
11460461e7 Update changelog 2016-08-23 17:00:31 -05:00
Lance Edgar
901c2fc573 Add MasterView.has_rows concept and related logic
Now the `BatchMasterView` no longer provides most of these goodies.

Also tweak some custom batch views to reflect changes etc.
2016-08-23 13:11:13 -05:00
Lance Edgar
8a19b90efa Add hook to customize timesheet shift rendering
Also decrease font size slightly for shift text.
2016-08-22 17:25:43 -05:00
Lance Edgar
cdde848275 Refactor batch view/edit pages to share some "execution options" logic 2016-08-22 15:46:16 -05:00
Lance Edgar
53950931af Add has_rows support to MasterView class
Eventually the batch views should be refactored to leverage this..
2016-08-22 12:38:51 -05:00
Lance Edgar
340f02a3f2 Set relevant 'index title' when viewing batch with rows
Also tweak 'Batch ID' field label.
2016-08-20 21:03:30 -05:00
Lance Edgar
dce4972f0f Add TODO comment 2016-08-19 18:12:13 -05:00
Lance Edgar
9de5a3b39e Tweak how we use DB session to fetch grid settings 2016-08-19 16:01:44 -05:00
Lance Edgar
a99e129b42 Update changelog 2016-08-17 20:50:06 -05:00
Lance Edgar
207cd6a261 Fix bug in handheld batch view config 2016-08-17 20:49:13 -05:00
Lance Edgar
f7e70f8a30 Update changelog 2016-08-17 18:39:25 -05:00
Lance Edgar
d94ed5e99c Fix bug when viewing batch with no execution options 2016-08-17 18:38:38 -05:00
Lance Edgar
7eef6e6cf4 Update changelog 2016-08-17 17:49:16 -05:00
Lance Edgar
30f543a38c Fix bug for handheld batch device type field 2016-08-17 17:48:30 -05:00
Lance Edgar
3a2406d420 Update changelog 2016-08-17 17:22:07 -05:00
Lance Edgar
aff90ac756 Add basic support for new handheld/inventory batches 2016-08-17 17:05:51 -05:00
Lance Edgar
db62f82a37 Add basic support for batch execution options 2016-08-17 16:52:13 -05:00
Lance Edgar
3b265e19c4 Fix bug in batch download URL 2016-08-17 16:51:31 -05:00
Lance Edgar
3c3aa5f2b1 Fix bug when deleting certain batches 2016-08-17 16:51:04 -05:00
Lance Edgar
cf1b9acfb1 Add support for system-unique ID in batch views etc. 2016-08-17 16:50:00 -05:00
Lance Edgar
343f9bde1b Add "empty" option to enum field renderers, if field allows empty value 2016-08-17 16:45:54 -05:00
Lance Edgar
8d6c9854a3 Add MasterView.render() method for sake of common context/logic
That still needs some work I'm sure...
2016-08-17 16:44:49 -05:00
Lance Edgar
7c9307e298 Update changelog 2016-08-13 23:07:47 -05:00
Lance Edgar
01edbf32d1 Add null / not null verbs back to default boolean grid filter 2016-08-13 18:26:46 -05:00
Lance Edgar
f3f7b9f95b Update changelog 2016-08-12 17:19:56 -05:00
Lance Edgar
498a810f08 Revert "Disable view mode for settings table"
This reverts commit 457407fbcf.
2016-08-12 17:18:22 -05:00
Lance Edgar
a6438e4bb5 Add permissions field when viewing user details
About damn time I'm sure...
2016-08-12 01:58:07 -05:00
Lance Edgar
a70c9d3360 Export 'enabled' flag for email profile/settings 2016-08-12 01:17:40 -05:00
Lance Edgar
457407fbcf Disable view mode for settings table
Create/edit/delete are all that's needed there.
2016-08-11 23:59:40 -05:00
Lance Edgar
41ca3859f6 Only show granted permissions when viewing role details
Hopefully a little easier on the eyes..still could use more improvements
though I'm sure.
2016-08-11 22:29:55 -05:00
Lance Edgar
2b1a493706 Update changelog 2016-08-10 14:30:51 -05:00
Lance Edgar
c38535e4c0 Add hopefully generic FileFieldRenderer
Eventually should refactor other (batch) things to use this.
2016-08-09 19:50:24 -05:00
Lance Edgar
e15888ffcd Add render_progress() method to core view class 2016-08-09 19:46:49 -05:00
Lance Edgar
a1094cc995 Update changelog 2016-08-09 13:20:33 -05:00
Lance Edgar
bfcf6a9500 Add support for 10-key hyphen/period keys for numeric input fields 2016-08-09 11:45:34 -05:00
Lance Edgar
f816098199 Update changelog 2016-08-05 15:53:41 -05:00
Lance Edgar
9ebff91db0 Allow negative sign, decimal point for "numeric" text fields 2016-08-05 15:12:36 -05:00
Lance Edgar
c4b4b866ff Fallback to empty string for email preview recipient, if current user has no address 2016-08-04 13:19:55 -05:00
Lance Edgar
b3bd2ba3b5 Update changelog 2016-07-27 19:48:24 -07:00
Lance Edgar
38927ce282 Add initial attempt at 'better' theme 2016-07-17 20:16:26 -05:00
Lance Edgar
fdf1419ea2 Add CodeTextAreaFieldRenderer, refactor label profile form to use it 2016-07-13 11:04:23 -05:00
Lance Edgar
a093b84c98 Update changelog 2016-07-08 01:17:35 -05:00
Lance Edgar
e0bd20ee23 Always strip whitespace from label profile 'spec' field input
Otherwise we can't properly load (import) the spec object...
2016-06-29 18:59:56 -05:00
Lance Edgar
35d4d35fd6 Add awareness of special 'Authenticated' role, in permissions UI etc. 2016-06-15 12:51:10 -05:00
Lance Edgar
68ca5766d1 Cleanup some timesheet display logic
Also make sure to force current user unless they have permission to view
all time sheets.
2016-06-14 22:19:37 -05:00
Lance Edgar
d94372ee41 Allow extra kwargs to core View.redirect() method 2016-06-14 22:19:16 -05:00
Lance Edgar
686ae1b657 Fix some 'strftime' typos 2016-06-13 10:14:51 -05:00
Lance Edgar
8f0ac0fa71 Update changelog 2016-06-10 17:08:51 -05:00
Lance Edgar
1e0ef53aea Add support for viewing single employee's schedule / time sheet
A little sloppy perhaps, here and there..but seems to do the job.
2016-06-07 16:16:37 -05:00
Lance Edgar
c6ab3b80f9 Hopefully fix some CSS for form field values 2016-05-27 14:33:01 -05:00
Lance Edgar
c806c572cb Update changelog 2016-05-11 14:11:24 -05:00
Lance Edgar
559f782720 Add default kwargs to Session class 2016-05-11 12:37:40 -05:00
Lance Edgar
fa2c265e77 Add rattail config object to Session kwargs 2016-05-11 12:36:32 -05:00
Lance Edgar
4c5bdc6766 Move "full name" to front of grid columns
Also use "full name" label in fieldset, instead of "display name".
2016-05-10 15:17:14 -05:00
Lance Edgar
123f5ce0c6 Add support for "full" schedule and time sheet views
Temporarily removes support for viewing current user's time sheet; that
will be added back in soon.
2016-05-10 13:08:32 -05:00
Lance Edgar
181123dfaa Update changelog 2016-05-06 11:42:39 -05:00
Lance Edgar
890392ab92 Various improvements to the schedule view
Still clearly not yet complete though.
2016-05-06 11:41:05 -05:00
Lance Edgar
1017823b06 Disable autocomplete for password fields when editing user
Er, at least try.  Didn't seem to work in my local test though.
2016-05-06 11:40:25 -05:00
Lance Edgar
3e6c1f28b9 Tweak timesheet styles, to give rows alternating background color 2016-05-06 11:39:45 -05:00
Lance Edgar
10f1c34a75 Tweak styles for jQuery UI selectmenu dropdowns
Give max height so that we get a scroll bar out of the deal, instead of
an endless list.
2016-05-06 11:38:36 -05:00
Lance Edgar
dc2104d430 Refactor some common FormEncode validators, plus add some more 2016-05-06 11:38:01 -05:00
Lance Edgar
691b33cad4 Update changelog 2016-05-05 16:31:01 -05:00
Lance Edgar
286b095528 Fix bug in roles view 2016-05-05 16:27:35 -05:00
Lance Edgar
aaa1d17507 Add hyperlinks to product UPC and description, within main grid
These won't honor the indexing scheme yet, still need to think about
that.
2016-05-03 22:10:54 -05:00
Lance Edgar
b718336ac2 Refactor timesheet logic, add initial/basic schedule view
Clearly need to be able to filter by store/department yet.
2016-05-03 21:19:28 -05:00
Lance Edgar
34482892f7 Add prev/next week navigation to time sheet view 2016-05-02 19:26:21 -05:00
Lance Edgar
25ec005764 Add week navigation to time sheet view 2016-05-02 19:15:51 -05:00
Lance Edgar
7e0e1f6659 Update changelog 2016-05-02 18:25:14 -05:00
Lance Edgar
be7108bcda Tweak how empty hours are displayed in time sheet 2016-05-02 18:24:09 -05:00
Lance Edgar
77ce81dec0 Fix bugs in batch grid URLs 2016-05-02 18:23:57 -05:00
Lance Edgar
785d0b5806 Remove 'create batch from results' link on products index page
This probably should come back someday, but in a smarter form and
leveraging new-style batches of course...
2016-05-02 16:43:56 -05:00
Lance Edgar
fd11ef9af4 Update changelog 2016-05-02 15:22:30 -05:00
Lance Edgar
566777fef0 Tweak some styles on feedback template 2016-05-02 13:18:03 -05:00
Lance Edgar
157d4ccc9f Stop trying to use PIL when generating product image tag 2016-05-02 12:45:25 -05:00
Lance Edgar
2bd15ca5c7 Fix grid URL bug 2016-05-02 10:35:54 -05:00
Lance Edgar
1c0c148294 Add initial/basic user feedback form support 2016-05-01 20:39:05 -05:00
Lance Edgar
4ec8fdcf82 Add grid_index_nav() template def, for page header 2016-05-01 18:40:52 -05:00
Lance Edgar
abb42e9f25 Add initial support for grid index URLs
Yay, been wanting this for some time now.
2016-05-01 17:50:57 -05:00
Lance Edgar
70a2f10c81 Add auto-hide/show magic to message recipients field when viewing 2016-05-01 14:57:41 -05:00
Lance Edgar
f3cab67aaf Add 'index title' setting to master view
This was needed due to a new way of showing the index link when
e.g. viewing a record, particularly with regard to messaging and a new
template design.
2016-05-01 12:34:15 -05:00
Lance Edgar
c9afae3a44 Add testing image, for background / watermark 2016-05-01 00:06:16 -05:00
Lance Edgar
0c179fb9d0 Move Person.display_name to top of fieldset when viewing/editing 2016-04-30 20:55:10 -05:00
Lance Edgar
6d2af6d698 Overhaul newgrid template header a bit, to improve styles 2016-04-30 20:54:22 -05:00
Lance Edgar
130b6dda76 Tweak flash message when record is updated
To be more consistent with add/delete.
2016-04-30 19:01:17 -05:00
Lance Edgar
b96c1ebd3a Add MasterView.listing flag, for templates' sake 2016-04-30 19:00:43 -05:00
Lance Edgar
3572c16000 Update changelog 2016-04-28 18:35:47 -05:00
Lance Edgar
22e4d38d58 Add initial Time Sheet view
Hardly complete at this point, but proves the concept.
2016-04-28 18:18:11 -05:00
Lance Edgar
fb25f6917e Add master views for ScheduledShift model 2016-04-28 18:16:26 -05:00
Lance Edgar
b02f7a9a2b Update changelog 2016-04-25 19:49:06 -05:00
Lance Edgar
4e917169f9 Add views for WorkedShift model 2016-04-25 19:40:29 -05:00
Lance Edgar
2bbd17afa9 Update changelog 2016-04-24 20:12:29 -05:00
Lance Edgar
8a1b86dd2d Tweak styles for form field labels
OMG so tired of these ugly fieldsets, where is the magic UI fairy?
2016-04-22 20:00:16 -05:00
Lance Edgar
8141e90a8e Add commas to record/page count in grid footer
I.e. when those numbers are big enough to need them.
2016-04-21 13:44:31 -05:00
Lance Edgar
eb64e709c4 Make currency field renderer display negative amounts in parentheses
Also remove space between amount and dollar sign.
2016-04-21 13:43:08 -05:00
Lance Edgar
c7c2fecec0 Add workarounds for certain display bugs when rendering datetimes 2016-04-21 13:42:20 -05:00
Lance Edgar
74f02ebb0d Update changelog 2016-04-12 14:24:18 -05:00
Lance Edgar
95b94ef570 Fix case-sensitivity when sorting permission group labels 2016-04-06 21:43:48 -05:00
Lance Edgar
30e6b6e29c Add flag for rendering key value, for enum field renderers
Only valid during the readonly rendering.  Not sure how useful this will
be in the long run...
2016-04-06 21:17:02 -05:00
Lance Edgar
90bde4f2e0 Change default filter type for integer fields, in new grids
Treat that field like the numeric value it is.
2016-04-06 21:16:46 -05:00
Lance Edgar
7676312dd7 Add support for column header title (tooltip) in new grids 2016-04-06 21:15:54 -05:00
Lance Edgar
073358417c Update changelog 2016-04-05 22:19:12 -05:00
Lance Edgar
aaf5ca97f9 Add last-minute check to ensure master views allows deletion
Generally for the 'delete' route to even exist the master view *class*
must still allow deletions.  But once a request is involved and we have
a view *instance* then we can disable deletions if we like.
2016-03-24 00:25:17 -05:00
Lance Edgar
0f3f39d5c6 Add new TimeFieldRenderer, make it default for Time fields
Uses a jQuery UI widget similar to datepicker:

https://fgelinas.com/code/timepicker/
2016-03-24 00:06:04 -05:00
Lance Edgar
e13a58e808 Add the 'is any' verb to default list for most grid filters 2016-03-24 00:05:04 -05:00
Lance Edgar
12e8b662a8 Add comma magic back to CurrencyFieldRenderer
No longer concerned with Python 2.6.
2016-03-24 00:03:42 -05:00
Lance Edgar
cd332f2287 Fix redirect bug when attempting bulk row delete for nonexistent batch 2016-03-22 18:56:48 -05:00
Lance Edgar
f60d304133 Update changelog. 2016-03-11 14:10:07 -06:00
Lance Edgar
de58adad24 Fix bug where batch creator was being overwritten anytime it was viewed..
Yikes!  Hopefully this didn't happen too many times in production...
2016-03-11 13:55:51 -06:00
Lance Edgar
cd461aef51 Improve grid filters for datetime fields.
Hopefully this makes these filters more intuitive, by allowing user to
provide a date value but interpret in a datetime context.
2016-03-11 13:21:54 -06:00
Lance Edgar
68f7c418d6 Tweak "raw" string for datetime field renderers. 2016-03-11 13:21:36 -06:00
Lance Edgar
a22f50850f Add 'executed' to old batches grid view, make timestamps show "raw" by default. 2016-03-11 11:35:00 -06:00
Lance Edgar
a7b73021ac Make tailbone.views.labels a subpackage instead of module. 2016-03-11 10:25:25 -06:00
Lance Edgar
07e5ac2942 Update changelog. 2016-02-27 13:07:47 -06:00
Lance Edgar
1a07314493 Fix some API docs per refactor. 2016-02-27 10:49:31 -06:00
Lance Edgar
4cbdb51545 Fix bug when rendering email bounce links. 2016-02-26 13:06:36 -06:00
Lance Edgar
80f034e773 Update changelog. 2016-02-15 15:30:22 -06:00
Lance Edgar
36149e48ed Tweak some styles for label printing on products index page, etc. 2016-02-15 13:24:27 -06:00
Lance Edgar
7111bb96ca Make datasync views easier to customize.
Already needed to do that a little bit.
2016-02-15 13:24:01 -06:00
Lance Edgar
715dce1655 Split off the jquery theme from the rest of core head stuff, for easier override. 2016-02-14 21:41:43 -06:00
Lance Edgar
215a8c13b0 Refactor some more model views to use MasterView.
(emailbounce, depositlink, tax)
2016-02-14 21:34:01 -06:00
Lance Edgar
bc1c7b3554 More tweaks to vendor catalog/invoice batches.
Trying to make batch fieldsets simpler to configure...
2016-02-14 19:56:56 -06:00
Lance Edgar
874fd6d4b3 More tweaks to new master-based batch views, etc. 2016-02-14 18:50:57 -06:00
Lance Edgar
7ac4af5f34 Refactor vendor invoice batch views to use BatchMasterView. 2016-02-14 17:50:03 -06:00
Lance Edgar
c83a3e6eb0 Overhaul vendor catalog batch views, to use BatchMasterView. 2016-02-14 17:07:48 -06:00
Lance Edgar
62221a1a25 Add new BatchMasterView for new-style batches. 2016-02-14 16:47:35 -06:00
Lance Edgar
7338560fc3 Tweak button label for restarting datasync. 2016-02-14 16:39:50 -06:00
Lance Edgar
a341acb4f0 Make our DateTimeFieldRenderer the default for datetime fields. 2016-02-14 16:34:39 -06:00
Lance Edgar
e10b956bf7 "Fix" the stupid styles for the grid tools section..sort of..for now.
At least this gets us back to the basics somewhat.  Still ugly as hell though.
2016-02-13 13:44:55 -06:00
Lance Edgar
a5080b113d Various tweaks to products grid filters etc.
Trying to troubleshoot some things...think we're good now.  Some of the
changes here were made and then discovered not to be necessary yet, but
left in place since they're probably good ideas anyway.
2016-02-13 13:00:55 -06:00
Lance Edgar
583548cad5 Refactor products view(s) per new master pattern.
Finally!
2016-02-12 20:44:41 -06:00
Lance Edgar
254c68034a Update changelog. 2016-02-11 21:22:45 -06:00
Lance Edgar
1dd5b11414 Refactor how sender is assigned for new messages, to avoid bogus commits.
Man I really wish I could find the right pattern for default values with
FormAlchemy...
2016-02-11 18:47:39 -06:00
Lance Edgar
7649bf142b Add subscriber hook for setting inbox count in template context. 2016-02-11 18:47:17 -06:00
Lance Edgar
c65bc6f229 Refactor magic recipients field when sending new message.
Uses local cache of user mappings instead of AJAX calls; has just enough
customization hooks to allow for a department/user mapping for MJ...
2016-02-11 17:05:56 -06:00
Lance Edgar
ad9cd8be8e Protect message reply functions with 'create' permission. 2016-02-10 22:17:49 -06:00
Lance Edgar
46923d40da Add initial reply / reply-all support for messages. 2016-02-10 21:59:13 -06:00
Lance Edgar
415fc439b7 Update changelog. 2016-02-10 15:23:45 -06:00
Lance Edgar
84f85f0870 Add 'Move' button to message view template.
Get rid of context menu link.
2016-02-10 15:22:47 -06:00
Lance Edgar
4713e25ffe Tweak how we connect a user to a batch, when refreshing. 2016-02-09 20:47:12 -06:00
Lance Edgar
f07518f939 Update changelog. 2016-02-08 19:46:39 -06:00
Lance Edgar
6c8425b06d Make rattail config object use our scoped session, when consulting db.
Whoops, apparently we were previously creating a new session for each
config check?  Hopefully this helps...
2016-02-08 19:45:06 -06:00
Lance Edgar
74a13fb739 Update changelog. 2016-02-08 14:35:21 -06:00
Lance Edgar
687b83e2e1 Add support for sending new messages. 2016-02-05 14:42:56 -06:00
Lance Edgar
9d802d8f25 Update changelog. 2016-02-02 12:10:02 -06:00
Lance Edgar
de7496e1aa Remove style hack for message grid views.
For now...still need to really fix this at some point.
2016-02-01 16:34:04 -06:00
Lance Edgar
d2eabccd46 Add 'password is/not null' filter to users list view. 2016-02-01 16:11:24 -06:00
Lance Edgar
0b5ec8cb56 Update changelog. 2016-02-01 15:46:44 -06:00
Lance Edgar
4bade10317 Add 'messages.list' permission, to protect inbox etc.
At least will be useful for a soft launch, beyond that not sure.
2016-02-01 15:44:10 -06:00
Lance Edgar
60d3778160 Update changelog. 2016-02-01 12:25:34 -06:00
Lance Edgar
46c3750d38 Fix bug when marking batch as executed.
Not sure why that ever worked, actually?
2016-02-01 12:23:29 -06:00
Lance Edgar
bf49f30fff Update changelog. 2016-01-30 16:37:09 -06:00
Lance Edgar
7edfc98747 Add 'Stores' and 'Departments' fields to Employee fieldset. 2016-01-30 15:19:04 -06:00
Lance Edgar
bcf1032156 Change default form buttons so Cancel is also a button. 2016-01-30 15:18:20 -06:00
Lance Edgar
85159d91bc Update changelog. 2016-01-22 14:50:04 -06:00
Lance Edgar
fae26c60c6 Stop depending on PIL.
We need to fix things better than that eventually...
2016-01-21 21:03:16 -06:00
Lance Edgar
d6bdc0e87d Change vendor catalog upload, to allow vendor-less parsers.
The user must provide the vendor if the parser does not; the user cannot
override the vendor if the parser does provide it.
2016-01-21 20:05:01 -06:00
Lance Edgar
0a223ac4f9 Add autocomplete vendor field renderer. 2016-01-21 20:04:28 -06:00
Lance Edgar
b78b49d79e Add 'restart datasync' button to datasync changes list page. 2016-01-19 17:29:19 -06:00
Lance Edgar
6b9727d7cb Tweak syntax for a redirect. 2016-01-19 16:38:34 -06:00
Lance Edgar
677e66e358 Update changelog. 2016-01-18 19:24:12 -06:00
Lance Edgar
973b9903ae Add employee/department relationships to employee and department views. 2016-01-17 19:45:42 -06:00
Lance Edgar
aafaf64640 Update changelog. 2016-01-13 13:19:50 -06:00
Lance Edgar
84ebb158bc Add initial support for 'messages' views. 2016-01-13 02:43:20 -06:00
Lance Edgar
c2a6b0dd50 Fix 'checkboxes' attribute for master view grids. 2016-01-13 02:41:59 -06:00
Lance Edgar
9e3b2a646c Fix 'index' URL used in master view template. 2016-01-13 02:41:17 -06:00
Lance Edgar
f3b7781105 Make grid checkbox center-aligned within their column. 2016-01-13 02:40:40 -06:00
Lance Edgar
747471b08a Fix auto-creation of grid sorter, when joined table is involved. 2016-01-13 02:40:03 -06:00
Lance Edgar
bcb5176718 Rearrange the 'user' form renderer(s) a bit. 2016-01-13 02:39:27 -06:00
Lance Edgar
36c710e0fa Fix label prettify-er for generic fieldset. 2016-01-10 17:53:04 -06:00
Lance Edgar
12a6cbfac8 Move description field to appear sooner, in email profile settings form. 2016-01-10 17:49:44 -06:00
Lance Edgar
1956c4c9cf Add edit mode for email "profile" settings.
Plus some related tweaks, needed to make that happen.
2016-01-10 17:35:34 -06:00
Lance Edgar
73d14cb1d9 Update changelog. 2016-01-09 21:04:19 -06:00
Lance Edgar
f4f61dae97 Add Person.middle_name to the fieldset. 2016-01-08 14:42:13 -06:00
Lance Edgar
654c69772e Add "grid tools" to "complete" grid template.
We'll see about this...
2016-01-08 10:50:14 -06:00
Lance Edgar
640bb736b2 Add speed bump / confirmation page when deleting records.
Also cleanup the context menu links on various master CRUD pages.
2016-01-07 20:55:10 -06:00
Lance Edgar
94406f84b3 Update changelog. 2016-01-04 19:54:38 -06:00
Lance Edgar
c7eb852fa4 Add mailing address to person fieldset. 2015-12-19 11:29:26 -06:00
Lance Edgar
3b5ea0e426 Add config extension, to record data changes if so configured. 2015-12-17 15:15:26 -06:00
Lance Edgar
211959693c Update changelog. 2015-12-08 16:19:08 -06:00
Lance Edgar
707b933553 Fix some route names. 2015-12-08 16:18:29 -06:00
Lance Edgar
165c105b96 Remove some broken tests. 2015-12-07 19:02:21 -06:00
Lance Edgar
9f5487b242 Update changelog. 2015-12-07 15:11:18 -06:00
Lance Edgar
16bbbb4a75 Convert (most?) basic views to use master view pattern. 2015-12-07 15:08:14 -06:00
Lance Edgar
ab40685175 Clean up products view imports etc. a bit. 2015-12-07 15:07:48 -06:00
Lance Edgar
fee00b96a2 Convert 'people' view to use MasterView pattern. 2015-12-06 18:04:23 -06:00
Lance Edgar
717a614194 Use sample data when generating subject for display in email profile settings. 2015-12-06 12:17:51 -06:00
Lance Edgar
09f3d1fe01 Update changelog. 2015-12-05 14:40:29 -06:00
Lance Edgar
57dd81d409 Add 'To' field to email profile settings grid. 2015-12-05 14:39:19 -06:00
Lance Edgar
47603ad070 Change default sortkey for email profiles list. 2015-12-04 19:04:44 -06:00
Lance Edgar
64f4ab4a02 Update changelog. 2015-12-04 18:42:47 -06:00
Lance Edgar
ef40af814a Add readonly support for email profile settings.
More to come...  Also this required some form tweaking/overhaul(s).
2015-12-04 17:25:52 -06:00
Lance Edgar
ba6bf87ded Update changelog. 2015-11-22 13:43:46 -06:00
Lance Edgar
a33b48dde3 Let subclass of MasterView override the database Session it uses. 2015-11-20 20:11:15 -06:00
Lance Edgar
89b443c442 Tweak some things to get Tailbonen working on its own. 2015-11-15 21:06:21 -06:00
Lance Edgar
8ec6a18cdc Fix bug when 'edbob.permissions' setting is empty.
Which, it ought to be forever, soon...
2015-11-15 20:51:09 -06:00
Lance Edgar
ecc49e4939 Update changelog. 2015-11-12 14:22:10 -06:00
Lance Edgar
864300b927 Render DataSyncChange.obtained as humanized timestamp within UI. 2015-11-11 15:58:13 -06:00
Lance Edgar
18a5f16b2c Update changelog. 2015-11-05 14:18:49 -06:00
Lance Edgar
a96a44110a Add view to show DataSync changes, for basic troubleshooting. 2015-11-04 22:30:55 -06:00
Lance Edgar
8928d03cef Work around formalchemy config bug, caused by edbob. 2015-11-04 22:30:30 -06:00
Lance Edgar
be2a1ba862 Delete product costs for vendor when deleting vendor. 2015-10-17 16:45:39 -05:00
Lance Edgar
b119ccff7d Update changelog. 2015-10-13 20:50:35 -05:00
Lance Edgar
d1d905c570 Remove format hack which isn't py2.6-friendly. 2015-10-13 20:49:43 -05:00
Lance Edgar
768c7cec16 Update changelog. 2015-08-24 19:32:58 -05:00
Lance Edgar
2614236d50 Tweak layout CSS so page body expands to fill screen. 2015-08-24 13:00:58 -05:00
Lance Edgar
920f0144c2 Treat filter by "contains X Y" as "contains X and contains Y". 2015-08-21 23:43:19 -05:00
Lance Edgar
c9b01f6061 More grid filter improvements; add choice/enum/date value renderers. 2015-08-20 21:17:48 -05:00
Lance Edgar
226ca01720 Add HTML5 doctype to base template. 2015-08-20 21:17:21 -05:00
Lance Edgar
8a6958775d Configure logging when starting up.
Whoops, missed that.
2015-08-20 21:17:01 -05:00
Lance Edgar
b75d94cbab Tweak labels for new grid filter form buttons. 2015-08-20 20:32:50 -05:00
Lance Edgar
032d538062 Add "valueless verbs" concept to grid filters.
Plus some other improvements I'm sure...
2015-08-20 20:29:04 -05:00
Lance Edgar
3d7cb2d9a7 Comment out FormAlchemy intersphinx docs config, for now.
Their server is not currently reachable.
2015-08-20 14:55:25 -05:00
Lance Edgar
0cbf860ab6 Update changelog. 2015-08-19 22:15:44 -05:00
Lance Edgar
73939b825e Add ability to download batch row data as CSV. 2015-08-19 20:06:13 -05:00
Lance Edgar
6c5eec7981 Add progress indicator to batch execution.
Also disable Execute button immediately when clicked.
2015-08-19 18:49:09 -05:00
Lance Edgar
e01e323d3e Tweak base BatchRowCrud view class, for fieldset customization. 2015-08-19 17:15:09 -05:00
Lance Edgar
6ac13286cb Fix some bugs with new CustomFieldRenderer. 2015-08-19 17:15:02 -05:00
Lance Edgar
e02357a791 Add configure_fieldset() stub for master view. 2015-08-19 14:04:59 -05:00
Lance Edgar
5f1c60e362 Tweak default/basic batch CRUD fieldset a little. 2015-08-18 23:50:23 -05:00
Lance Edgar
3d44e3e857 Add CustomFieldRenderer and DateFieldRenderer. 2015-08-18 23:47:42 -05:00
Lance Edgar
6feb488884 Various tweaks to base batch views.
These were made to support a non-file batch; apparently that use case
hadn't seen much attention yet.
2015-08-18 21:17:15 -05:00
Lance Edgar
e688471732 Don't show Save Defaults button if no user is logged in. 2015-08-17 17:21:41 -05:00
Lance Edgar
75c9f9ebc0 Fix bug in late-login user stuff. 2015-08-17 16:55:10 -05:00
Lance Edgar
a7bcf71642 Fix references to config.getboolean(). 2015-08-17 12:40:42 -05:00
Lance Edgar
078e2c5471 Tweak label formatter instantiation, per rattail changes. 2015-08-17 12:39:26 -05:00
Lance Edgar
f5b22b1256 Refactor app configuration to use rattail.config.make_config().
Yay, one step closer to removing edbob completely.
2015-08-16 19:55:00 -05:00
Lance Edgar
673fcaed97 Hard-code old grid pagecount settings, to avoid edbob.config. 2015-08-16 19:52:51 -05:00
Lance Edgar
3e37ac909e Various tweaks to support "late login" idea when uploading new batch. 2015-08-15 17:00:01 -05:00
Lance Edgar
1a929f8dd1 Remove some unused styles. 2015-08-15 16:59:49 -05:00
Lance Edgar
9d426fa54f Fix bug when rendering hidden field in FA fieldset.
Field wasn't being rendererd at all, if hidden.
2015-08-15 16:58:51 -05:00
Lance Edgar
2b1bdec2f8 Add "Save Defaults" button so user can save personal defaults for any new grid. 2015-08-14 19:59:26 -05:00
Lance Edgar
d57f5169b0 Add 'Default Filters' and 'Clear Filters' buttons to new grid filters form. 2015-08-14 18:53:39 -05:00
Lance Edgar
d2b065a8fc Add basic checkbox support to new grids.
Also:

 * Add 'creatable', 'editable' etc. to master view class.
 * Add styles for warning/notice grid rows.
 * Misc. other tweaks.
2015-08-14 15:31:11 -05:00
Lance Edgar
e79531fda8 Add CurrencyFieldRenderer.
Also clean up the subpackage root a little bit.
2015-08-14 15:27:52 -05:00
Lance Edgar
62784390b0 Add hack to fix some tests. 2015-08-13 14:45:05 -05:00
Lance Edgar
d3f65452b6 Update changelog. 2015-08-13 13:51:29 -05:00
Lance Edgar
761620028c Fix progress template, per jQuery CDN changes. 2015-08-13 13:50:42 -05:00
Lance Edgar
19029519fe Update changelog. 2015-08-12 01:14:54 -05:00
Lance Edgar
d4210844ac Convert label profiles to use master view.
Plus some more minor tweaks to the framework.
2015-08-12 00:46:39 -05:00
Lance Edgar
af07f477dc Convert User pages to use master view.
And of course make some more tweaks to new grids etc.
2015-08-11 23:24:02 -05:00
Lance Edgar
9cfbc918e7 Overhaul how available permissions are registered in app config.
Permissions must now be regsistered just like routes and views.  This
should make things much nicer going forward.
2015-08-11 17:26:04 -05:00
Lance Edgar
412ac6e12f Tweak some view config logic to avoid test failure. 2015-08-11 15:18:39 -05:00
Lance Edgar
9605d44b05 Convert Roles to use master view.
Also tweak the grid API here and there.
2015-08-11 15:01:21 -05:00
Lance Edgar
585eb09bec Add support for "new-style grids" and "model master views".
Finally, an API that makes some sense...  We don't yet have feature parity
with the old-style grids and CRUD views, but this is already a significant
improvement to the design.  Still needs a lot of docs though...
2015-08-10 18:58:31 -05:00
Lance Edgar
62b7194c21 Tweak jQuery UI styles, so button text etc. isn't so big. 2015-08-08 17:56:59 -05:00
Lance Edgar
ea9a9ad5bc Tweak renderer import, for clarity. 2015-08-08 17:20:42 -05:00
Lance Edgar
0db1c252cd Add "core" JS/CSS defs to base template, for sharing's sake. 2015-08-08 17:00:04 -05:00
Lance Edgar
17c6f390c0 Remove cached copies of jQuery / jQuery UI files.
We just need to use the CDN, or else folks are welcome to roll their own
theme etc. for use within their templates.
2015-08-08 15:26:06 -05:00
Lance Edgar
d698bef608 Don't show flash message when user logs in.
That just seems more annoying to me, somehow..
2015-08-08 13:58:16 -05:00
Lance Edgar
d756b7885a Update changelog. 2015-07-29 12:28:17 -05:00
Lance Edgar
46f8430c32 Log warning instead of error when refreshing batch fails. 2015-07-29 12:27:28 -05:00
Lance Edgar
e348a2f216 Tweak package handling for tox some more. 2015-07-28 20:21:21 -05:00
Lance Edgar
c45f2d807b Upgrade packages when running tox stuff. 2015-07-28 20:15:02 -05:00
Lance Edgar
b4f5c36b3b Update changelog. 2015-07-28 01:13:53 -05:00
Lance Edgar
eecabac08f Fix filter bug in bouncer. 2015-07-23 20:10:29 -05:00
Lance Edgar
c42e80f87a Make email "source" filter use a dropdown, in bouncer UI. 2015-07-23 20:05:48 -05:00
Lance Edgar
0ddb5bffd7 Add plain text of message body to email bounce view.
Also tweak some labels.
2015-07-23 15:47:17 -05:00
Lance Edgar
f523146a4b Add initial support for email bounce management. 2015-07-22 20:01:16 -05:00
Lance Edgar
cfd5e5ae50 Update changelog. 2015-07-21 12:55:25 -05:00
Lance Edgar
fca1ae55db Fix missing import bug. 2015-07-21 12:54:49 -05:00
Lance Edgar
e2131d3500 Update changelog. 2015-07-20 17:16:07 -05:00
Lance Edgar
ab23a8067c Add DecimalFieldRenderer. 2015-07-20 12:47:37 -05:00
Lance Edgar
b6192b49f2 Tweak form label area width for common forms.
This still needs to be overhauled I'm sure.
2015-07-20 10:43:19 -05:00
Lance Edgar
a992a34fdf Add some custom FormEncode validators. 2015-07-20 09:57:41 -05:00
Lance Edgar
50e8637b71 Fix timezone issues with util.pretty_datetime() function.
Seems we should just calculate the "time ago" value instead of just
providing a "then" timestamp and expecting the humanize library to
understand exactly what we meant.
2015-07-20 09:52:24 -05:00
Lance Edgar
3732cc30f2 Add rattail_config attribute to base View class.
Just a shortcut but should save a little code noise.
2015-07-20 09:51:29 -05:00
Lance Edgar
d0a977d64b Add products autocomplete view. 2015-07-20 09:51:08 -05:00
Lance Edgar
e0cb47d03a Add list of assigned users to role view page.
This surely could be better still; at least this is *something*.
2015-07-16 17:11:25 -05:00
Lance Edgar
bafa1a0fd7 Tweak how default filter config is handled for batch grid views.
Not sure I fully understand what happened but this seemed to fix it..
2015-07-15 23:19:29 -05:00
Lance Edgar
21486a5e55 Add StoreFieldRenderer.
Also try to set a good pattern for going forward..
2015-07-15 23:18:53 -05:00
Lance Edgar
5cbccb175a Only check executability of a batch when not creating one.
There is no batch yet when creating, so execution is not relevant.
2015-07-09 15:46:21 -05:00
Lance Edgar
dc1ef65441 Let batch handler determine whether Execute button is enabled. 2015-07-09 13:38:54 -05:00
Lance Edgar
4290f0d8df Allow batch view to disable the Execute button in some cases.
Although this only disables the UI button element, it doesn't really
prevent anything beyond that...
2015-07-09 01:42:19 -05:00
Lance Edgar
fb8fab1577 Tweak logic for removing certain form fields when creating a batch.
Just to be a little more on the safe side.
2015-07-03 17:48:53 -05:00
Lance Edgar
fcfe5f6442 Add display_name field to employee CRUD view. 2015-05-19 22:18:21 -05:00
Lance Edgar
4f5c0e6bd8 Tweak app.make_rattail_config() to allow caller to define some settings.
This is mostly for the sake of tests etc.
2015-05-03 19:36:19 -05:00
Lance Edgar
2f5f9c8c3c Make anchor tags with 'button' class render as jQuery UI buttons. 2015-05-02 20:39:03 -05:00
Lance Edgar
5161371e37 Update changelog. 2015-04-21 21:34:46 -05:00
Lance Edgar
49cb1e8e13 Merge branch 'bugfix' 2015-04-14 15:40:55 -05:00
Lance Edgar
87708c755b Update changelog. 2015-04-14 15:40:28 -05:00
Lance Edgar
b30549cab6 Fix bug when creating batch from product query.
Caused by some refactoring to remove edbob cruft.
2015-04-14 15:38:57 -05:00
Lance Edgar
b3f531c379 Merge branch 'b0.4.10' 2015-04-14 15:09:34 -05:00
Lance Edgar
1c15f96c65 Update changelog. 2015-04-14 15:08:05 -05:00
Lance Edgar
23f491c441 Tweak old-style batch execution call.
Need to provide config so we can remove more edbob cruft.
2015-04-14 15:06:01 -05:00
Lance Edgar
2fe1d49ff9 Tweak old-style batch execution call.
Need to provide config so we can remove more edbob cruft.
2015-04-14 01:29:24 -05:00
Lance Edgar
7c2b406d0d Fix usage of Product.unit_of_measure vs. Product.weighed. 2015-04-11 03:33:01 -05:00
Lance Edgar
8c5f03da8c Add autocomplete employee field renderer. 2015-04-11 00:23:54 -05:00
Lance Edgar
6db88edb68 Add autocomplete view for current employees. 2015-04-11 00:23:31 -05:00
Lance Edgar
0c4ceefa2c Add flash message when any batch executes successfully. 2015-04-11 00:22:34 -05:00
Lance Edgar
a79c89b470 Change permission requirement for refreshing a batch's data.
In the event of a create-only user role, refreshing sort of needs to be
part of it.
2015-04-10 22:04:37 -05:00
Lance Edgar
d8ee09916a Make vendor field renderer show ID in readonly mode. 2015-04-10 20:25:45 -05:00
Lance Edgar
e43ceda6bc Fix query bugs for batch row grid views.
It worked until we needed to join a table (vendor in this case).
2015-04-06 20:44:42 -05:00
Lance Edgar
fd74fb041b Update changelog. 2015-03-24 13:21:07 -05:00
Lance Edgar
ef2dcee4c5 Add "extra panels" customization hook to product details template. 2015-03-24 13:12:24 -05:00
Lance Edgar
d8790c7c4f Tweak display for some product fields. 2015-03-23 17:23:24 -05:00
Lance Edgar
84c5f0a327 Add dept. number and friends to product details page. 2015-03-23 02:36:18 -05:00
Lance Edgar
8a21fe7cfc Fix vendor invoice validation bug.
If user provided a PO number but no parser, an error was raised.
2015-03-21 17:25:02 -05:00
Lance Edgar
366572e0a7 Add view template for vendor catalog batch rows. 2015-03-19 02:25:03 -05:00
Lance Edgar
d0bc348ce4 Fix bulk delete of batch rows, to set 'removed' flag instead. 2015-03-19 02:02:07 -05:00
Lance Edgar
8285993fa6 Add ability to view details (i.e. all fields) of a batch row. 2015-03-19 01:25:38 -05:00
Lance Edgar
be41d0bb1e Add 'fake_error' view to test exception handling. 2015-03-17 14:49:20 -05:00
Lance Edgar
c6ca64574b Update changelog. 2015-03-14 18:21:36 -05:00
Lance Edgar
62a93d1cd1 Hide "print labels" column on products list view if so configured. 2015-03-12 19:22:06 -05:00
Lance Edgar
f34ae88c39 Update changelog. 2015-03-12 18:36:51 -05:00
Lance Edgar
e82b8152a4 Bump rattail dependency. 2015-03-12 10:53:54 -05:00
Lance Edgar
5e79b132f9 Fix permission for taxes list/search view. 2015-03-11 23:44:27 -05:00
Lance Edgar
ab0c5bb45f Fix permission for deposit link list/search view. 2015-03-11 23:42:40 -05:00
Lance Edgar
a93b8a33fb Update changelog. 2015-03-11 21:29:09 -05:00
Lance Edgar
3fed317805 Add UI support for Product.last_sold and current_price_ends pseudo-field. 2015-03-10 17:51:12 -05:00
Lance Edgar
42da24a047 Add product UPC to JSON output of 'products.search' view. 2015-03-10 15:22:39 -05:00
Lance Edgar
085ce70820 Add numeric.js script for numeric-only text inputs. 2015-03-10 12:46:10 -05:00
Lance Edgar
666b553255 Add "save" icon and grid column style. 2015-03-10 12:45:44 -05:00
Lance Edgar
d960738578 Add default Grid.iter_rows() implementation. 2015-03-10 12:44:58 -05:00
Lance Edgar
7c9e7cd138 Clean up some imports. 2015-03-07 14:21:48 -06:00
Lance Edgar
69a5eed83b Add shared GPC search filter, use it for product batch rows. 2015-03-07 14:19:19 -06:00
Lance Edgar
51e4eda662 Don't allow edit of vendor and effective date in catalog batches.
This may need to be tweaked in the future, but until then we'll be
conservative about it.
2015-03-06 19:15:03 -06:00
Lance Edgar
d83ca4456a Fix bulk delete of batch rows.
Actually I didn't see this fail, but I've seen one instance where someone
else did.  This should hopefully be a safe approach.
2015-03-06 19:13:45 -06:00
Lance Edgar
a7ecf445db Fix login redirect if referrer is not internal to site. 2015-03-05 16:55:09 -06:00
Lance Edgar
d296b5bde5 Fix login so user is sent to their target page after authentication. 2015-03-05 16:19:38 -06:00
Lance Edgar
2762e8e072 Tweak product detail layout some more. 2015-02-27 17:02:12 -06:00
Lance Edgar
2a8dc14e1c And some more tweaks.. 2015-02-27 03:26:27 -06:00
Lance Edgar
6252c3f777 More tweaks to product details view. 2015-02-27 03:24:15 -06:00
Lance Edgar
3b9efe0ffb Add panels to product details view, etc. 2015-02-27 03:07:49 -06:00
Lance Edgar
86db5181b8 Add some new vendor and product fields. 2015-02-27 01:53:36 -06:00
Lance Edgar
6ea032c591 Add unit_of_measure to product detail view. 2015-02-26 21:10:08 -06:00
Lance Edgar
d50aef4e49 Add views for deposit links, taxes; update product view. 2015-02-26 19:06:20 -06:00
Lance Edgar
d30d6f84e6 Update changelog. 2015-02-26 18:06:33 -06:00
Lance Edgar
99e11fe8d8 Hide deleted field from product details, according to permissions. 2015-02-26 18:01:55 -06:00
Lance Edgar
9e7d0e177d Don't include query string in embedded grid URL.
This was causing the param list to grow each time a search happened at
least, maybe more.
2015-02-24 23:53:22 -06:00
Lance Edgar
364a38a936 Make readonly version of batch file field not show download link. 2015-02-24 22:51:13 -06:00
Lance Edgar
e216ed9281 Add validation to PO number for vendor invoices. 2015-02-24 22:50:59 -06:00
Lance Edgar
e11a599f92 Add warning status for products with missing cost in vendor invoices. 2015-02-24 19:55:29 -06:00
Lance Edgar
ce2b29433d Exclude 'deleted' items from reports. 2015-02-24 18:57:07 -06:00
Lance Edgar
50430e89db Add better error handling when batch refresh fails, etc.
Also don't force refresh when view is requested; instead just do a refresh
after batch is first created.
2015-02-23 20:10:21 -06:00
Lance Edgar
3e940e3c14 Fix bug when sorting batches by 'executed by' field.
Hopefully this gets it, seems like I may need an alias in there
somewhere...
2015-02-23 18:47:49 -06:00
Lance Edgar
dba0f1fd51 Add edit template for vendor catalog batches. 2015-02-22 00:21:14 -06:00
Lance Edgar
3614254804 Improve data file handling for file batches.
Leverages a FormAlchemy "extension" of sorts.
2015-02-22 00:00:00 -06:00
Lance Edgar
2e8db05717 Add initial support for vendor invoice batch feature, etc.
Also included:

* Add "edit batch" template, refactor "view batch" template.
* Tweak form templates to allow specifying form ID and buttons HTML.
* Make deleting batch rows only work when editing a batch.
2015-02-16 18:00:45 -06:00
Lance Edgar
aee69f5a2c Force grid table background to white.
This can be helpful if the overall page background is not white, in the
case of batch rows etc. which use color-coding to help indicate status.
2015-02-16 17:51:47 -06:00
Lance Edgar
730a2a2f01 Let custom vendor catalog batch handler be specified in config file.
This was using database settings exclusively.
2015-02-13 21:22:36 -06:00
Lance Edgar
ae5ff89c7f Refactor app module to promote code sharing.
Hopefully this is a good approach, we'll see.
2015-02-13 21:22:01 -06:00
Lance Edgar
937a55c14d Add docs for new batch system.
And some other tweak(s).
2015-02-13 01:12:20 -06:00
Lance Edgar
6c7f1afcf4 Fix filename in batch file download link (again).
This hopefully prevents encoding errors which were bound to happen...
2015-02-12 23:32:17 -06:00
Lance Edgar
26e5be9897 Fix filename when downloading batch file. 2015-02-12 23:24:36 -06:00
Lance Edgar
eedbcb81f8 Add download feature for file batches. 2015-02-12 23:19:01 -06:00
Lance Edgar
23addae818 Rearrange primary batch fields for vendor catalogs.
Catalog info seemed more important than who uploaded it.
2015-02-12 23:18:17 -06:00
Lance Edgar
16be06821a Wrap up initial vendor catalog batch support etc.
* Adds the ability to delete all batch rows matching current query.
* Refactors some progress factory args.
* If batch initialization fails, don't persist batch.
2015-02-12 21:35:28 -06:00
Lance Edgar
c28a6b2e09 Update changelog. 2015-02-12 11:37:32 -06:00
Lance Edgar
8409d24273 Add case pack field to product CRUD form. 2015-02-11 20:26:56 -06:00
Lance Edgar
7b7ec2ccbd Change rattail dependency to include 'db' feature (again)... 2015-02-11 20:25:45 -06:00
Lance Edgar
bc06a72993 Add prettier UPCs to ordering worksheet report. 2015-02-11 03:27:31 -06:00
Lance Edgar
bf18bab909 Update changelog. 2015-02-11 00:55:37 -06:00
Lance Edgar
f3d449c9f3 Add UI support for Product.deleted column.
This leverages the 'products.view_deleted' permission to hide products
which are marked as deleted from various views.  Also adds a 'deleted'
class to product grid rows where the flag is set, and adds a flash warning
when viewing a deleted product.
2015-02-11 00:52:23 -06:00
Lance Edgar
6434e64f5e Update changelog. 2015-02-10 20:10:49 -06:00
Lance Edgar
e6b448f298 More versioning support fixes, to allow on or off. 2015-02-10 20:10:03 -06:00
Lance Edgar
994af9dd3f Update changelog. 2015-02-10 19:15:56 -06:00
Lance Edgar
aa70ffc9f0 Rework versioning support to allow it to be one or off.
Turns out versioning isn't quite ready for prime time, so let's have a
fallback plan shall we?
2015-02-10 19:07:46 -06:00
Lance Edgar
bd44d886c4 Update changelog. 2015-02-10 11:24:42 -06:00
Lance Edgar
5ad5cb569d Only attempt to count versions for versioned models. 2015-02-10 11:23:35 -06:00
Lance Edgar
75729be79f Update changelog. 2015-02-09 23:56:25 -06:00
Lance Edgar
def466935b Add initial versioning support with SQLAlchemy-Continuum. 2015-02-09 23:36:40 -06:00
Lance Edgar
41dd2ef17b Add category to product CRUD view. 2015-02-09 13:31:41 -06:00
Lance Edgar
0455e472f5 Cleanup some view modules per conventions etc.
Mainly this makes extending them easier..
2015-02-09 13:30:29 -06:00
Lance Edgar
eedbc5fb9a Various grid and form tweaks. 2015-02-09 13:20:34 -06:00
Lance Edgar
3257010a7e Change default sort for People grid view. 2015-02-02 20:44:32 -06:00
Lance Edgar
7fbabc8792 Add department to field lists for category views. 2015-01-31 18:18:54 -06:00
Lance Edgar
ccb7b47912 Update changelog. 2015-01-20 17:58:31 -06:00
Lance Edgar
c328c96203 Let settings determine which batch handler to use for vendor catalog views. 2015-01-20 13:22:20 -06:00
Lance Edgar
7c761bee99 Fix some imports etc. regarding new batch system. 2015-01-20 00:51:51 -06:00
Lance Edgar
b05f30d9fe New batch system! Hopefully nothing else broke...
Attempt number 5,176 at a decent batch system, we'll see.
2015-01-19 00:52:40 -06:00
Lance Edgar
c4a19f279b Remove some edbob, unicode tweak, etc.
In particular it was noticed that edbob has been configuring FormAlchemy
all this time, whoops.  That's still partially the case but now at least
it's explicit.
2015-01-19 00:49:07 -06:00
Lance Edgar
e47477f0c4 Improve UPC search for rows within batches.
As with the products page, now this search works with or without the check
digit.
2015-01-15 12:17:35 -06:00
Lance Edgar
7d42950527 Tweak variable name. 2015-01-15 01:49:17 -06:00
Lance Edgar
b7aa4b36d0 Add unique username check when creating users. 2015-01-15 01:40:00 -06:00
Lance Edgar
4535ba0851 Require 'auth' feature of rattail package.
This stupid bcrypt thing, hopefully this is a good idea...
2015-01-14 15:44:28 -06:00
Lance Edgar
050276218a Update changelog. 2015-01-13 21:27:31 -06:00
Lance Edgar
7bbadfd338 Add support for integer search filters.
This mostly just avoids to suppress type errors by stripping out
non-numeric chars from input.
2015-01-13 21:22:56 -06:00
Lance Edgar
9f62ed6b07 Ugh, add unwanted jQuery libs to progress template.
This is really just a hack to get around the problem of `tailbone.js`
always trying to load the menubar and make buttons pretty etc...
2015-01-11 19:15:05 -06:00
Lance Edgar
d8b2112d01 Fix bug in product search UPC filter. 2015-01-11 19:14:18 -06:00
Lance Edgar
107da5dd9d Fix bug with default search filters for SA grids.
Sometimes the default search value needs to be `False`, in which case we do
want the filter to fire.
2015-01-10 17:16:33 -06:00
Lance Edgar
cf7f884f80 Update changelog. 2014-12-28 16:02:12 -06:00
Lance Edgar
4a71ab5fb1 Use boolean search filter for batch column filters of 'FLAG' type. 2014-12-28 16:00:52 -06:00
Lance Edgar
9e6b02bcc8 Update changelog. 2014-12-18 15:45:22 -06:00
Lance Edgar
2a04caaf99 Make product UPC search view strip non-digit chars from input.
This is to accomodate the apparently frequent use case of copy/paste which
includes the check digit as a "-X" type suffix.
2014-12-18 15:43:49 -06:00
Lance Edgar
d5a8d19165 Update changelog. 2014-12-17 15:06:08 -06:00
Lance Edgar
646956dfdb Fix bug with progress template, when error occurs (?).
Not real clear about why this problem existed.  Hopefully this "fix" comes
with no side effects...
2014-12-17 14:51:13 -06:00
Lance Edgar
78b09cacd0 Update base.css with various things from other projects.
Also update "progress" template accordingly.
2014-12-17 14:50:47 -06:00
Lance Edgar
23013c954d Remove 'db' extra from rattail requirement. 2014-12-03 10:59:37 -06:00
Lance Edgar
cc2c2573e5 Add grid, CRUD views for Setting model.
This required some tweaks to the base CRUD view etc.
2014-11-23 14:27:00 -06:00
Lance Edgar
86507cf660 Tweak CRUD form buttons a little.
Change submit button wording for edit forms, from "Update" to "Save".  Also
show Cancel as a link instead of button.
2014-11-23 14:25:13 -06:00
Lance Edgar
8bf292ebac Remove some more edbob cruft. 2014-11-18 23:00:24 -06:00
Lance Edgar
9806c7a0a2 Add DateTimeFieldRenderer to show human-friendly timestamps.
This leverages the `humanize` package to do so.  Unfortunately that doesn't
seem to handle tz-aware times though, so we may need to revisit that at
some point...?
2014-11-18 19:37:52 -06:00
Lance Edgar
2326482bb6 Make GPCFieldRenderer display check digit separate from main barcode data.
It is presumed that this is a good idea in general; I guess we'll see.
2014-11-18 19:36:55 -06:00
Lance Edgar
fa9cef9636 Update changelog. 2014-11-11 10:49:46 -06:00
Lance Edgar
b2aa45ceb0 Fix bugs when configuring database session within threads.
This got missed during a recent refactor.
2014-11-11 10:48:48 -06:00
Lance Edgar
3fa9f06457 Force latest dependency installation when running tox. 2014-11-08 16:17:31 -06:00
Lance Edgar
a28f956549 Update changelog. 2014-11-04 20:52:41 -06:00
Lance Edgar
5b173dd9bc Change session progress API.
Breaks compatibility, but worth it I think..
2014-11-02 20:48:22 -06:00
Lance Edgar
4909188ee3 Remove cap on installed Pyramid version.
I don't recall exactly which changes I was trying to avoid previously, but
I'm not spotting any obvious reason we can't use the newer 1.5 series...
2014-11-02 19:41:18 -06:00
Lance Edgar
4a598bd360 Add explicit session config within batch threads.
This may not be particularly necessary in general, but this change is
required to match previous functionality.
2014-11-02 19:40:14 -06:00
Lance Edgar
8faec95b17 Make Store.database_key field editable. 2014-11-02 19:39:33 -06:00
Lance Edgar
241f454e4c Update changelog. 2014-10-29 16:30:19 -05:00
Lance Edgar
b2439dee70 Add monospace font for label printer format command. 2014-10-29 16:29:16 -05:00
Lance Edgar
f7c3955d8c Update changelog. 2014-09-26 15:41:54 -07:00
Lance Edgar
350c944e91 Fix some bugs with printer profile stuff, per recent rattail changes. 2014-09-26 15:31:34 -07:00
Lance Edgar
9d2a35c8b1 Refactor some label printing stuff, per rattail changes.
This had to do with some edbob removal.
2014-09-13 19:16:25 -07:00
Lance Edgar
03c72d850d Update changelog. 2014-09-13 12:08:03 -07:00
Lance Edgar
a3cfbd1e09 Add "exclude not for sale" option to Inventory Worksheet. 2014-09-11 20:59:43 -07:00
Lance Edgar
dfb5e83c7e Add support for Product.not_for_sale flag.
This involved a couple of ancillary changes:

* The price field renderer will not display a price for products marked not
  for sale.

* The "grid" class now allows specifying a custom callable to provide
  additional CSS class for table rows.

* The products grid uses this to add a "not-for-sale" class to table rows
  for products which are marked thusly.
2014-09-10 19:38:49 -07:00
Lance Edgar
98f6a7377b Update changelog. 2014-08-05 21:25:22 -07:00
Lance Edgar
16bba17e83 Add "active" filter to users view; enable it by default. 2014-08-05 21:23:55 -07:00
Lance Edgar
dcc1699f69 Add explicit file encoding to all Mako templates.
Also remove some u"" style strings within templates, since they appear to
be unnecessary.
2014-07-23 21:35:33 -07:00
Lance Edgar
124e28c0c2 Update changelog. 2014-07-19 18:56:00 -07:00
Lance Edgar
2626ff4fdf Add Person autocomplete view which restricts to employees only. 2014-07-19 18:49:00 -07:00
Lance Edgar
9c294f2e4d Allow editing User.active field. 2014-07-13 20:39:36 -07:00
Lance Edgar
f9d22f59f2 Add customer phone autocomplete and customer "info" AJAX view.
This autocomplete view is a little different than the typical ones used
prior, and required some refactoring of the base autocomplete view as well
as the autocomplete template.
2014-07-13 12:47:03 -07:00
Lance Edgar
bfd1b034ee Update changelog. 2014-07-12 16:04:36 -07:00
Lance Edgar
6943298ee0 Add product report codes to the UI. 2014-07-12 16:03:31 -07:00
Lance Edgar
bdf835a4dd Ignore coverage stuff. 2014-07-12 16:01:29 -07:00
Lance Edgar
8cf5605e8e Remove some edbob references. 2014-06-12 22:07:34 -07:00
Lance Edgar
59cefd7182 update changelog 2014-06-12 20:47:47 -07:00
Lance Edgar
54bb9e2869 Add experimental soundex filter support to the Customers grid. 2014-06-12 20:41:25 -07:00
Lance Edgar
8f1e34c73c Freeze FormAlchemy version below 1.5. 2014-06-12 20:40:07 -07:00
Lance Edgar
79bfeced64 Add tox support. 2014-05-17 20:22:21 -07:00
Lance Edgar
d7a135f77f update changelog 2014-04-28 18:39:39 -07:00
Lance Edgar
0eb1bf4558 Fix the find_packages() usage. 2014-04-28 18:32:35 -07:00
Lance Edgar
ec65a9ee07 Stop using find_packages(); it was including tests. 2014-04-13 18:51:04 -07:00
Lance Edgar
389bb5dcc6 Add POD image support to product view page. 2014-04-13 17:54:22 -07:00
Lance Edgar
087342b09c Add Family and Product.family to the general grid/crud UI. 2014-04-13 00:04:30 -07:00
Lance Edgar
e4ef46d4fc Fix vendor filter/sort issues in products grid. 2014-04-12 19:14:14 -07:00
Lance Edgar
0d65691952 Update URL references to Rattail home page. 2014-02-21 10:10:49 -08:00
Lance Edgar
a958a7b285 Add event hook for attaching Rattail config to new requests. 2014-02-21 10:10:10 -08:00
Lance Edgar
23ffcc5a78 update changelog 2014-02-16 19:19:30 -08:00
Lance Edgar
e472095271 Bump rattail dependency. 2014-02-16 00:21:03 -08:00
Lance Edgar
54dff4a812 Docs tweak (test buildbot). 2014-02-16 00:04:17 -08:00
Lance Edgar
354635e973 Add hidden file to force presence of docs/_static. 2014-02-15 23:56:45 -08:00
Lance Edgar
6a29000db7 Add global release version to docs. 2014-02-15 23:54:17 -08:00
Lance Edgar
9c9706cee2 Docs tweak; testing buildbot. 2014-02-15 23:28:50 -08:00
Lance Edgar
72c7f69873 Initial docs (as generated by sphinx-quickstart). 2014-02-15 23:18:30 -08:00
Lance Edgar
4032efbc61 Add extra 'docs' requirements. 2014-02-15 23:17:34 -08:00
Lance Edgar
580e91c544 Rename README to .rst. 2014-02-15 22:53:53 -08:00
Lance Edgar
247c8d7060 Remove change log from project description. 2014-02-15 22:45:11 -08:00
Lance Edgar
bc156b46f4 Fix tests for Python 2.6. 2014-02-15 22:39:27 -08:00
Lance Edgar
67f8960655 Apply zope transaction to global Tailbone Session class. 2014-02-15 19:27:50 -08:00
Lance Edgar
d6f2b1afb1 Use global Session from rattail (again). 2014-02-15 19:27:22 -08:00
Lance Edgar
f3947dc6de update changelog 2014-01-30 09:28:19 -08:00
Lance Edgar
6fcb5a5ddf Add progress views. 2014-01-28 22:35:33 -08:00
Lance Edgar
c6d01e0205 Add SessionProgress class. 2014-01-28 22:14:11 -08:00
Lance Edgar
a6226700f1 Fix customer lookup bug in customer detail view. 2014-01-26 13:17:15 -08:00
Lance Edgar
c4257809e5 update changelog 2014-01-26 00:02:15 -08:00
Lance Edgar
7638020aa0 Removed reliance on global rattail.db.Session class. 2013-12-18 21:13:03 -08:00
Lance Edgar
18453c0113 update changelog 2013-12-18 18:40:16 -08:00
Lance Edgar
874ad44e6b Removed references to edbob.enum. 2013-12-17 06:09:28 -08:00
Lance Edgar
1a557f3947 Refactored model imports, etc.
This is in preparation for using database models only from `rattail` (i.e. no
`edbob`).  Mostly the model and enum imports were affected.
2013-12-17 06:00:04 -08:00
Lance Edgar
d838203ec7 Changed UserFieldRenderer to leverage User.display_name. 2013-11-22 14:39:47 -08:00
Lance Edgar
8aaff93ff7 update changelog 2013-10-11 14:26:45 -07:00
Lance Edgar
650e6389e5 Added Product.family to CRUD view. 2013-10-11 14:15:43 -07:00
Lance Edgar
0ac0ef4079 Don't sort values in EnumFieldRenderer.
The dictionaries used to supply enumeration values should be `OrderedDict`
instances if sorting is needed.
2013-10-04 11:37:47 -07:00
Lance Edgar
3070c280cc Made EnumFieldRenderer a proper class. 2013-09-27 08:16:22 -07:00
Lance Edgar
a11b8d9ff2 Allow overriding form class/factory for CRUD views. 2013-09-21 17:09:10 -07:00
Lance Edgar
9f8a3d3a5c Refactored AutocompleteFieldRenderer.
Also improved some organization of renderers.
2013-09-21 15:02:55 -07:00
Lance Edgar
c1d726d48c Made SortableAlchemyGridView default to full (100%) width. 2013-09-20 21:51:29 -07:00
Lance Edgar
e58f8594c4 Fixed bug with request.has_any_perm(). 2013-09-20 20:21:59 -07:00
Lance Edgar
62a0b67502 Added forbidden view. 2013-09-20 20:17:59 -07:00
Lance Edgar
2bdac13a14 update changelog 2013-09-20 16:02:17 -07:00
Lance Edgar
644c297f63 Fixed manifest (whoops). 2013-09-20 16:01:25 -07:00
Lance Edgar
919279f3bc update changelog 2013-09-20 15:51:37 -07:00
Lance Edgar
23e08d0bb0 Fixed grid join map bug. 2013-09-20 15:49:48 -07:00
Lance Edgar
685b391dd2 Added products.search route/view.
This is for simple AJAX uses.
2013-09-20 14:54:27 -07:00
Lance Edgar
ba5dc6ab02 Added some autocomplete Javascript magic.
Not sure how this got missed the first time around.
2013-09-12 06:51:00 -07:00
Lance Edgar
fab49e6b20 update changelog 2013-09-10 20:38:31 -07:00
Lance Edgar
857a4b88e5 Fixed change password template/form. 2013-09-10 20:37:19 -07:00
Lance Edgar
6b5ca78a83 update changelog 2013-09-10 09:55:11 -07:00
Lance Edgar
332122a4e9 Added progress template. 2013-09-10 09:54:11 -07:00
Lance Edgar
73686b822f Added forms.alchemy module and changed CRUD view to use it. 2013-09-10 09:45:01 -07:00
Lance Edgar
716f3cbd71 update changelog 2013-09-10 06:38:30 -07:00
Lance Edgar
047c35ab75 Changed vendor filter in product search to find "any vendor".
I.e. the current filter is ''not'' restricted to the preferred vendor only.
Probably should still add one (back) for preferred only as well; hence the
commented code.
2013-09-10 06:35:17 -07:00
Lance Edgar
88adfe5d85 update changelog 2013-09-09 22:05:20 -07:00
Lance Edgar
017815a9e2 Made logo more easily customizable in login template. 2013-09-09 21:57:35 -07:00
Lance Edgar
2e84873666 Added global_title() to base template. 2013-09-06 04:13:50 -07:00
Lance Edgar
0d0445592e Fix authorization policy bug.
This was really an edge case, but in any event the problem would occur when a
user was logged in, and then that user account was deleted.
2013-09-06 04:12:21 -07:00
Lance Edgar
9a956e66f5 Change trove classifier for framework. 2013-09-06 04:12:02 -07:00
Lance Edgar
7d19700c3c More standalone operation stuff.
Stop using `edbob.db.engine`, stop using all edbob templates, etc.
2013-09-01 20:25:34 -07:00
Lance Edgar
2a50e704ef Major overhaul for standalone operation.
This removes some of the `edbob` reliance, as well as borrowing some templates
and styling etc. from Dtail.
2013-09-01 15:31:50 -07:00
Lance Edgar
b9f61e6a47 fixed bug in fabfile 2013-09-01 09:19:24 -07:00
Lance Edgar
9f02ec593d update changelog 2013-09-01 08:24:01 -07:00
Lance Edgar
40efd8a3bc Rebranded to Tailbone. 2013-09-01 08:18:37 -07:00
Lance Edgar
47944767dc update changelog 2013-08-30 20:17:03 -07:00
Lance Edgar
9b1579f587 renamed CHANGES file 2013-08-30 20:11:42 -07:00
Lance Edgar
6921f20fed Fixed import issue with views.reports module. 2013-08-23 14:52:07 -07:00
Lance Edgar
bb67fd3c32 Fixed bug in batch rows grid view. 2013-08-19 22:51:18 -07:00
Lance Edgar
d1b2983a9b Improved product UPC search so check digit is optional. 2013-08-17 18:31:26 -07:00
Lance Edgar
1ade594046 Overhauled report views to allow easier template customization. 2013-08-17 08:36:56 -07:00
Lance Edgar
dc44bbac67 Moved GPCFieldRenderer to products module. 2013-08-17 08:36:17 -07:00
Lance Edgar
6b1d1c3336 Bugfix in common renderers. 2013-08-17 08:35:42 -07:00
Lance Edgar
d7d7d870ab Improved query modification logic in alchemy grid views. 2013-08-16 16:07:16 -07:00
Lance Edgar
8812b74460 Added grid sort arrow images. 2013-08-10 11:58:06 -07:00
Lance Edgar
c2b2601103 Fixed FormAlchemy table rendering when underlying session is not primary.
This was needed for a grid based on a LOC SMS session.
2013-08-10 11:57:03 -07:00
Lance Edgar
42d0e52b89 Added style for grid checkbox cells. 2013-07-22 21:50:30 -07:00
Lance Edgar
b7fdd1f797 Replaced Grid.clickable with .viewable.
Clickable grid rows seemed to be more irritating than useful.  Now a view icon
is shown instead.
2013-07-22 21:32:54 -07:00
Lance Edgar
134613aadd Moved tests out of package dir. 2013-07-22 19:22:18 -07:00
Lance Edgar
68650a5488 Removed several references to edbob. 2013-07-19 15:57:53 -07:00
Lance Edgar
578e4bde2a Stole grids and grid-based views from edbob. 2013-07-19 15:04:03 -07:00
Lance Edgar
aad5e6e2bd Fixed customer group deletion.
Now any customer associations are dropped first, to avoid database integrity
errors.
2013-07-05 12:04:48 -07:00
Lance Edgar
a681b4f872 Fixed bug with helpers.pretty_date(). 2013-07-05 10:52:47 -07:00
Lance Edgar
094e77d06a Added autocomplete view and template. 2013-06-19 22:37:11 -07:00
Lance Edgar
81b181f128 Added simpleform wildcard import to forms module. 2013-06-19 22:32:20 -07:00
Lance Edgar
4cb09d903e Added helpers module.
Also added a Pyramid subscriber hook to add the module to the template renderer
context with a key of `h`.  This is nothing really new, but it overrides the
helper provided by `edbob`, and adds a `pretty_date()` function (which maybe
isn't a good idea anyway..?).
2013-06-19 22:29:57 -07:00
Lance Edgar
d07aee345a Added some tests. 2013-06-19 22:26:34 -07:00
Lance Edgar
84225f00e1 Initial tests.
This doesn't add much in the way of useful tests but it should pave the way for
more. Tests may be run like so:

{{{
python setup.py nosetests --with-coverage
}}}
2013-06-19 14:21:45 -07:00
Lance Edgar
4174e6d77d update changelog 2013-06-09 13:46:20 -07:00
Lance Edgar
fec34d8290 Added support for product codes.
These are shown when viewing a product, and may be used to locate a product via
search filters.
2013-06-09 13:03:42 -07:00
Lance Edgar
c7995c5241 Fixed bugs where edit links were appearing for unprivileged users. 2013-06-07 08:52:57 -07:00
Lance Edgar
6440319bb0 Tweaked Fabric release command. 2013-05-22 18:10:55 -07:00
Lance Edgar
a45f31cb59 update changelog 2013-05-21 22:39:35 -07:00
Lance Edgar
c422b900c6 Extensive commit; see notes.
* Replaced `forms` module with subpackage; added some initial goodies (many of
  which are currently just imports from `edbob`).

* Added/edited various CRUD templates for consistency.

* Renamed `customer_groups` module and template folder to `customergroups`.

* Modified several view modules so their Pyramid configuration is more
  "extensible."  This just means routes and views are defined as two separate
  steps, so that derived applications may inherit the route definitions if they
  so choose.

* Added Employee CRUD views; added Email Address field to index view.

* Updated `people` view module so it no longer derives from that of `edbob`.

* Added support for, and some implementations of, extra key lookup abilities to
  CRUD views.  This allows URLs to use a "natural" key (e.g. Customer ID
  instead of UUID), for cases where that is more helpful.

* Product CRUD now uses autocomplete for Brand field.  Also, price fields no
  longer appear within an editable fieldset.

* Within Store index view, default sort is now ID instead of Name.

* Added Contact and Phone Number fields to Vendor CRUD views; added Contact and
  Email Address fields to index view.
2013-05-21 21:51:41 -07:00
Lance Edgar
931700131f Added extra key lookups for customer and product routes.
Now the CRUD routes for these objects can leverage UUIDs of various related
objects in addition to the primary object.  More should be done with this, but
at least we have a start.
2013-05-17 23:32:57 -07:00
Lance Edgar
5f3b91826a Added email address to vendor CRUD views. 2013-05-17 23:32:17 -07:00
Lance Edgar
680cc8aeb4 Added Session to rattail.pyramid namespace. 2013-05-17 23:31:25 -07:00
Lance Edgar
736f5e9ba1 Removed setup.cfg file.
The `tag_build` setting was not doing us any favors.
2013-05-09 21:53:07 -07:00
Lance Edgar
57e2aad698 update changelog 2013-05-08 17:54:58 -07:00
Lance Edgar
c6f5df7721 Added id and .status fields to Employee grid view. 2013-05-07 18:01:58 -07:00
Lance Edgar
06429a4d05 Added Person autocomplete view and User CRUD views. 2013-05-07 17:41:58 -07:00
Lance Edgar
25951c0080 Added AutocompleteView. 2013-05-07 17:39:05 -07:00
Lance Edgar
e283957c9e Added CRUD view and template. 2013-05-04 16:11:09 -07:00
Lance Edgar
a63870e032 Added initial Fabric script. 2013-04-16 07:07:48 -07:00
Lance Edgar
a383c9ff62 update changelog 2013-04-16 06:52:15 -07:00
Lance Edgar
9fabccd7ce Sorted Ordering Worksheet by brand, description. 2013-04-16 06:48:40 -07:00
Lance Edgar
bd700431f6 update changelog 2013-02-20 22:14:42 -08:00
Lance Edgar
8368754ba6 Made batch creation and execution threads aware of sys.excepthook.
Updated both instances to use `rattail.threads.Thread` instead of
`threading.Thread`.  This way if an exception occurs within the
thread, the registered handler will be invoked.
2013-02-20 22:08:40 -08:00
Lance Edgar
edf9bda744 update changelog 2013-02-12 22:22:22 -08:00
Lance Edgar
6744c77cc0 Merge branch 'v0.3' 2013-02-12 22:07:14 -08:00
Lance Edgar
c7132fa4d6 update changelog 2013-02-11 19:10:13 -08:00
Lance Edgar
cd7f7ee444 Added "preferred only" option to Ordering Worksheet. 2013-02-11 19:08:24 -08:00
Lance Edgar
80eb558783 Added Brand and Size fields to the Ordering Worksheet.
Also tweaked the template styles slightly, and added the ability to
override the template via config.
2013-02-11 18:55:21 -08:00
Lance Edgar
d14b388b4b update changelog 2013-02-10 17:20:05 -08:00
Lance Edgar
86e96273a5 Fixed bug where requesting deletion of non-existent batch row was redirecting
to a non-existent route.
2013-02-10 17:15:25 -08:00
Lance Edgar
3895091ad0 update changelog 2013-02-05 19:37:15 -08:00
Lance Edgar
5a69037e42 bump version 2013-02-05 19:35:04 -08:00
Lance Edgar
b4feccbca0 Fixed batch grid and CRUD views so that the execution time shows a pretty (and
local) display instead of 24-hour UTC time.
2013-02-05 19:16:51 -08:00
Lance Edgar
4cd598f33e add inventory worksheet report 2012-11-28 15:47:00 -08:00
Lance Edgar
a53f4477e4 use StrippingFieldRenderer for LabelProfile.printer_spec and .formatter_spec 2012-11-28 09:32:22 -08:00
Lance Edgar
589c3e6ca6 bump version 2012-11-27 21:53:37 -08:00
Lance Edgar
470aa10d9f update changelog 2012-11-27 21:52:26 -08:00
Lance Edgar
95096e0872 handle missing printer in label profile templates 2012-11-27 14:34:05 -08:00
Lance Edgar
b1faddd33e fix batch url in row crud template 2012-11-27 11:28:09 -08:00
Lance Edgar
765fa7f949 use default_format when saving label profiles 2012-11-26 16:27:55 -08:00
Lance Edgar
472d2cfd7b cleanup main batch route 2012-11-26 14:24:10 -08:00
Lance Edgar
619818f486 Merge branch 'master' of ssh://edbob.org/srv/git/rattail.pyramid 2012-11-26 11:18:26 -08:00
Lance Edgar
b290a25691 add various CRUD things 2012-11-18 08:38:11 -08:00
Lance Edgar
704907fe59 add COPYING 2012-11-15 17:25:31 -08:00
Lance Edgar
c7132d68e1 bump version 2012-11-14 13:34:09 -08:00
Lance Edgar
ff552f3406 update changelog 2012-11-14 13:33:09 -08:00
Lance Edgar
c76e3242fc fix UPC search in products screen 2012-11-14 13:31:25 -08:00
Lance Edgar
352f32ff5e bump version 2012-11-13 09:47:17 -08:00
Lance Edgar
bafba5dc0c update changelog 2012-11-13 09:46:28 -08:00
Lance Edgar
6036597d7a remove hgignore 2012-11-09 06:31:12 -08:00
Lance Edgar
e0dbbf43bc fix namespace packages 2012-11-09 06:08:15 -08:00
Lance Edgar
78f0dad6d0 add LabelProfile.visible field support 2012-11-06 18:24:12 -08:00
Lance Edgar
5f7fd2401e add type check to product upc search filter 2012-10-26 10:49:55 -07:00
Lance Edgar
ae40b15977 bump version 2012-10-11 10:39:56 -07:00
Lance Edgar
ab562255b9 update changelog 2012-10-11 10:39:04 -07:00
Lance Edgar
6dc447284e catch any exception when printing a label 2012-10-11 10:35:50 -07:00
Lance Edgar
7fe4be4527 bump version 2012-10-09 16:40:45 -07:00
Lance Edgar
7f6d30d4e7 update changelog 2012-10-09 16:39:21 -07:00
Lance Edgar
1c280f8062 update category views 2012-10-09 16:05:26 -07:00
Lance Edgar
fd19661132 bump version 2012-10-04 08:53:53 -07:00
Lance Edgar
b4283c5a6c update changelog 2012-10-04 08:52:48 -07:00
Lance Edgar
4644f283dd add ID filter to vendors grid 2012-10-04 08:40:53 -07:00
Lance Edgar
6d7732b34a add departments autocomplete view 2012-10-04 08:40:27 -07:00
Lance Edgar
a64ef0e20e add brands autocomplete view 2012-10-04 08:40:07 -07:00
Lance Edgar
78eb708a9c bump version 2012-09-28 09:41:41 -07:00
Lance Edgar
fbc457fe2a update changelog 2012-09-28 09:40:43 -07:00
Lance Edgar
d44af94378 tweak batch progress, add 'executed' to grid 2012-09-28 07:55:13 -07:00
Lance Edgar
38e7335ec9 bump version 2012-09-25 09:46:30 -07:00
Lance Edgar
2264f630e6 update changelog 2012-09-25 09:45:33 -07:00
Lance Edgar
a14bebabc7 add batch provider restriction config 2012-09-25 09:42:52 -07:00
Lance Edgar
4f45aa9118 bump version 2012-09-24 16:22:37 -07:00
550 changed files with 99157 additions and 3156 deletions

9
.gitignore vendored
View file

@ -1 +1,8 @@
rattail.pyramid.egg-info
*~
*.pyc
.coverage
.tox/
dist/
docs/_build/
htmlcov/
Tailbone.egg-info/

View file

@ -1,2 +0,0 @@
syntax:glob
rattail.pyramid.egg-info

683
CHANGELOG.md Normal file
View file

@ -0,0 +1,683 @@
# Changelog
All notable changes to Tailbone 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.22.7 (2025-02-19)
### Fix
- stop using old config for logo image url on login page
- fix warning msg for deprecated Grid param
## v0.22.6 (2025-02-01)
### Fix
- register vue3 form component for products -> make batch
## v0.22.5 (2024-12-16)
### Fix
- whoops this is latest rattail
- require newer rattail lib
- require newer wuttaweb
- let caller request safe HTML literal for rendered grid table
## v0.22.4 (2024-11-22)
### Fix
- avoid error in product search for duplicated key
- use vmodel for confirm password widget input
## v0.22.3 (2024-11-19)
### Fix
- avoid error for trainwreck query when not a customer
## v0.22.2 (2024-11-18)
### Fix
- use local/custom enum for continuum operations
- add basic master view for Product Costs
- show continuum operation type when viewing version history
- always define `app` attr for ViewSupplement
- avoid deprecated import
## v0.22.1 (2024-11-02)
### Fix
- fix submit button for running problem report
- avoid deprecated grid method
## v0.22.0 (2024-10-22)
### Feat
- add support for new ordering batch from parsed file
### Fix
- avoid deprecated method to suggest username
## v0.21.11 (2024-10-03)
### Fix
- custom method for adding grid action
- become/stop root should redirect to previous url
## v0.21.10 (2024-09-15)
### Fix
- update project repo links, kallithea -> forgejo
- use better icon for submit button on login page
- wrap notes text for batch view
- expose datasync consumer batch size via configure page
## v0.21.9 (2024-08-28)
### Fix
- render custom attrs in form component tag
## v0.21.8 (2024-08-28)
### Fix
- ignore session kwarg for `MasterView.make_row_grid()`
## v0.21.7 (2024-08-28)
### Fix
- avoid error when form value cannot be obtained
## v0.21.6 (2024-08-28)
### Fix
- avoid error when grid value cannot be obtained
## v0.21.5 (2024-08-28)
### Fix
- set empty string for "-new-" file configure option
## v0.21.4 (2024-08-26)
### Fix
- handle differing email profile keys for appinfo/configure
## v0.21.3 (2024-08-26)
### Fix
- show non-standard config values for app info configure email
## v0.21.2 (2024-08-26)
### Fix
- refactor waterpark base template to use wutta feedback component
- fix input/output file upload feature for configure pages, per oruga
- tweak how grid data translates to Vue template context
- merge filters into main grid template
- add basic wutta view for users
- some fixes for wutta people view
- various fixes for waterpark theme
- avoid deprecated `component` form kwarg
## v0.21.1 (2024-08-22)
### Fix
- misc. bugfixes per recent changes
## v0.21.0 (2024-08-22)
### Feat
- move "most" filtering logic for grid class to wuttaweb
- inherit from wuttaweb templates for home, login pages
- inherit from wuttaweb for AppInfoView, appinfo/configure template
- add "has output file templates" config option for master view
### Fix
- change grid reset-view param name to match wuttaweb
- move "searchable columns" grid feature to wuttaweb
- use wuttaweb to get/render csrf token
- inherit from wuttaweb for appinfo/index template
- prefer wuttaweb config for "home redirect to login" feature
- fix master/index template rendering for waterpark theme
- fix spacing for navbar logo/title in waterpark theme
## v0.20.1 (2024-08-20)
### Fix
- fix default filter verbs logic for workorder status
## v0.20.0 (2024-08-20)
### Feat
- add new 'waterpark' theme, based on wuttaweb w/ vue2 + buefy
- refactor templates to simplify base/page/form structure
### Fix
- avoid deprecated reference to app db engine
## v0.19.3 (2024-08-19)
### Fix
- add pager stats to all grid vue data (fixes view history)
## v0.19.2 (2024-08-19)
### Fix
- sort on frontend for appinfo package listing grid
- prefer attr over key lookup when getting model values
- replace all occurrences of `component_studly` => `vue_component`
## v0.19.1 (2024-08-19)
### Fix
- fix broken user auth for web API app
## v0.19.0 (2024-08-18)
### Feat
- move multi-column grid sorting logic to wuttaweb
- move single-column grid sorting logic to wuttaweb
### Fix
- fix misc. errors in grid template per wuttaweb
- fix broken permission directives in web api startup
## v0.18.0 (2024-08-16)
### Feat
- move "basic" grid pagination logic to wuttaweb
- inherit from wutta base class for Grid
- inherit most logic from wuttaweb, for GridAction
### Fix
- avoid route error in user view, when using wutta people view
- fix some more wutta compat for base template
## v0.17.0 (2024-08-15)
### Feat
- use wuttaweb for `get_liburl()` logic
## v0.16.1 (2024-08-15)
### Fix
- improve wutta People view a bit
- update references to `get_class_hierarchy()`
- tweak template for `people/view_profile` per wutta compat
## v0.16.0 (2024-08-15)
### Feat
- add first wutta-based master, for PersonView
- refactor forms/grids/views/templates per wuttaweb compat
## v0.15.6 (2024-08-13)
### Fix
- avoid `before_render` subscriber hook for web API
- simplify verbiage for batch execution panel
## v0.15.5 (2024-08-09)
### Fix
- assign convenience attrs for all views (config, app, enum, model)
## v0.15.4 (2024-08-09)
### Fix
- avoid bug when checking current theme
## v0.15.3 (2024-08-08)
### Fix
- fix timepicker `parseTime()` when value is null
## v0.15.2 (2024-08-06)
### Fix
- use auth handler, avoid legacy calls for role/perm checks
## v0.15.1 (2024-08-05)
### Fix
- move magic `b` template context var to wuttaweb
## v0.15.0 (2024-08-05)
### Feat
- move more subscriber logic to wuttaweb
### Fix
- use wuttaweb logic for `util.get_form_data()`
## v0.14.5 (2024-08-03)
### Fix
- use auth handler instead of deprecated auth functions
- avoid duplicate `partial` param when grid reloads data
## v0.14.4 (2024-07-18)
### Fix
- fix more settings persistence bug(s) for datasync/configure
- fix modals for luigi tasks page, per oruga
## v0.14.3 (2024-07-17)
### Fix
- fix auto-collapse title for viewing trainwreck txn
- allow auto-collapse of header when viewing trainwreck txn
## v0.14.2 (2024-07-15)
### Fix
- add null menu handler, for use with API apps
## v0.14.1 (2024-07-14)
### Fix
- update usage of auth handler, per rattail changes
- fix model reference in menu handler
- fix bug when making "integration" menus
## v0.14.0 (2024-07-14)
### Feat
- move core menu logic to wuttaweb
## v0.13.2 (2024-07-13)
### Fix
- fix logic bug for datasync/config settings save
## v0.13.1 (2024-07-13)
### Fix
- fix settings persistence bug(s) for datasync/configure page
## v0.13.0 (2024-07-12)
### Feat
- begin integrating WuttaWeb as upstream dependency
### Fix
- cast enum as list to satisfy deform widget
## v0.12.1 (2024-07-11)
### Fix
- refactor `config.get_model()` => `app.model`
## v0.12.0 (2024-07-09)
### Feat
- drop python 3.6 support, use pyproject.toml (again)
## v0.11.10 (2024-07-05)
### Fix
- make the Members tab optional, for profile view
## v0.11.9 (2024-07-05)
### Fix
- do not show flash message when changing app theme
- improve collapse panels for butterball theme
- expand input for butterball theme
- add xref button to customer profile, for trainwreck txn view
- add optional Transactions tab for profile view
## v0.11.8 (2024-07-04)
### Fix
- fix grid action icons for datasync/configure, per oruga
- allow view supplements to add extra links for profile employee tab
- leverage import handler method to determine command/subcommand
- add tool to make user account from profile view
## v0.11.7 (2024-07-04)
### Fix
- add stacklevel to deprecation warnings
- require zope.sqlalchemy >= 1.5
- include edit profile email/phone dialogs only if user has perms
- allow view supplements to add to profile member context
- cast enum as list to satisfy deform widget
- expand POD image URL setting input
## v0.11.6 (2024-07-01)
### Fix
- set explicit referrer when changing dbkey
- remove references, dependency for `six` package
## v0.11.5 (2024-06-30)
### Fix
- allow comma in numeric filter input
- add custom url prefix if needed, for fanstatic
- use vue 3.4.31 and oruga 0.8.12 by default
## v0.11.4 (2024-06-30)
### Fix
- start/stop being root should submit POST instead of GET
- require vendor when making new ordering batch via api
- don't escape each address for email attempts grid
## v0.11.3 (2024-06-28)
### Fix
- add link to "resolved by" user for pending products
- handle error when merging 2 records fails
## v0.11.2 (2024-06-18)
### Fix
- hide certain custorder settings if not applicable
- use different logic for buefy/oruga for product lookup keydown
- product records should be touchable
- show flash error message if resolve pending product fails
## v0.11.1 (2024-06-14)
### Fix
- revert back to setup.py + setup.cfg
## v0.11.0 (2024-06-10)
### Feat
- switch from setup.cfg to pyproject.toml + hatchling
## v0.10.16 (2024-06-10)
### Feat
- standardize how app, package versions are determined
### Fix
- avoid deprecated config methods for app/node title
## v0.10.15 (2024-06-07)
### Fix
- do *not* Use `pkg_resources` to determine package versions
## v0.10.14 (2024-06-06)
### Fix
- use `pkg_resources` to determine package versions
## v0.10.13 (2024-06-06)
### Feat
- remove old/unused scaffold for use with `pcreate`
- add 'fanstatic' support for sake of libcache assets
## v0.10.12 (2024-06-04)
### Feat
- require pyramid 2.x; remove 1.x-style auth policies
- remove version cap for deform
- set explicit referrer when changing app theme
- add `<b-tooltip>` component shim
- include extra styles from `base_meta` template for butterball
- include butterball theme by default for new apps
### Fix
- fix product lookup component, per butterball
## v0.10.11 (2024-06-03)
### Feat
- fix vue3 refresh bugs for various views
- fix grid bug for tempmon appliance view, per oruga
- fix ordering worksheet generator, per butterball
- fix inventory worksheet generator, per butterball
## v0.10.10 (2024-06-03)
### Feat
- more butterball fixes for "view profile" template
### Fix
- fix focus for `<b-select>` shim component
## v0.10.9 (2024-06-03)
### Feat
- let master view control context menu items for page
- fix the "new custorder" page for butterball
### Fix
- fix panel style for PO vs. Invoice breakdown in receiving batch
## v0.10.8 (2024-06-02)
### Feat
- add styling for checked grid rows, per oruga/butterball
- fix product view template for oruga/butterball
- allow per-user custom styles for butterball
- use oruga 0.8.9 by default
## v0.10.7 (2024-06-01)
### Feat
- add setting to allow decimal quantities for receiving
- log error if registry has no rattail config
- add column filters for import/export main grid
- escape all unsafe html for grid data
- add speedbumps for delete, set preferred email/phone in profile view
- fix file upload widget for oruga
### Fix
- fix overflow when instance header title is too long (butterball)
## v0.10.6 (2024-05-29)
### Feat
- add way to flag organic products within lookup dialog
- expose db picker for butterball theme
- expose quickie lookup for butterball theme
- fix basic problems with people profile view, per butterball
## v0.10.5 (2024-05-29)
### Feat
- add `<tailbone-timepicker>` component for oruga
## v0.10.4 (2024-05-12)
### Fix
- fix styles for grid actions, per butterball
## v0.10.3 (2024-05-10)
### Fix
- fix bug with grid date filters
## v0.10.2 (2024-05-08)
### Feat
- remove version restriction for pyramid_beaker dependency
- rename some attrs etc. for buefy components used with oruga
- fix "tools" helper for receiving batch view, per oruga
- more data type fixes for ``<tailbone-datepicker>``
- fix "view receiving row" page, per oruga
- tweak styles for grid action links, per butterball
### Fix
- fix employees grid when viewing department (per oruga)
- fix login "enter" key behavior, per oruga
- fix button text for autocomplete
## v0.10.1 (2024-04-28)
### Feat
- sort list of available themes
- update various icon names for oruga compatibility
- show "View This" button when cloning a record
- stop including 'falafel' as available theme
### Fix
- fix vertical alignment in main menu bar, for butterball
- fix upgrade execution logic/UI per oruga
## v0.10.0 (2024-04-28)
This version bump is to reflect adding support for Vue 3 + Oruga via
the 'butterball' theme. There is likely more work to be done for that
yet, but it mostly works at this point.
### Feat
- misc. template and view logic tweaks (applicable to all themes) for
better patterns, consistency etc.
- add initial support for Vue 3 + Oruga, via "butterball" theme
## Older Releases
Please see `docs/OLDCHANGES.rst` for older release notes.

View file

@ -1,62 +0,0 @@
0.3a6
-----
- Add Vendor CRUD.
- Add Brand views.
0.3a5
-----
- Added support for GPC data type.
- Added eager import of ``rattail.sil`` in ``before_render`` hook.
- Removed ``rattail.pyramid.util`` module.
- Added initial batch support: views, templates, creation from Product grid.
- Added support for ``rattail.LabelProfile`` class.
- Improved Product grid to include filter/sort on Vendor.
- Cleaned up dependencies.
- Added ``rattail.pyramid.includeme()``.
- Added ``CustomerGroup`` CRUD view (read only).
- Added hot links to ``Customer`` CRUD view.
- Added ``Store`` index, CRUD views.
- Updated ``rattail.pyramid.views.includeme()``.
- Added ``email_preference`` to ``Customer`` CRUD.
0.3a4
-----
- Update grid and CRUD views per changes in ``edbob``.
0.3a3
-----
- Add price field renderers.
- Add/tweak lots of views for database models.
- Add label printing to product list view.
- Add (some of) ``Product`` CRUD.
0.3a2
-----
- Refactor category views.
0.3a1
-----
- Initial port to Rattail v0.3.

674
COPYING.txt Normal file
View file

@ -0,0 +1,674 @@
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
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
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.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
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.
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.
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.
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.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
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.
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
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.
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
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
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
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
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
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
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.
You should have received a copy of the GNU 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".
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
<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>.

View file

@ -1,2 +1,18 @@
include *.txt *.ini *.cfg *.rst
recursive-include rattail/pyramid *.ico *.png *.css *.gif *.jpg *.pt *.txt *.mak *.mako *.js *.html *.xml
include *.txt
include *.rst
include *.py
include tailbone/static/robots.txt
recursive-include tailbone/static *.js
recursive-include tailbone/static *.css
recursive-include tailbone/static *.png
recursive-include tailbone/static *.jpg
recursive-include tailbone/static *.gif
recursive-include tailbone/static *.ico
recursive-include tailbone/static/files *
recursive-include tailbone/templates *.mako
recursive-include tailbone/templates *.pt
recursive-include tailbone/reports *.mako

8
README.md Normal file
View file

@ -0,0 +1,8 @@
# Tailbone
Tailbone is an extensible web application based on Rattail. It provides a
"back-office network environment" (BONE) for use in managing retail data.
Please see Rattail's [home page](http://rattailproject.org/) for more
information.

View file

@ -1,11 +0,0 @@
rattail.pyramid
===============
Rattail is a retail software framework based on `edbob <http://edbob.org/>`_,
and released under the GNU Affero General Public License.
This package contains Pyramid views, etc., for managing a Rattail system.
Please see Rattail's `home page <http://rattail.edbob.org/>`_ for more
information.

177
docs/Makefile Normal file
View file

@ -0,0 +1,177 @@
# Makefile for Sphinx documentation
#
# You can set these variables from the command line.
SPHINXOPTS =
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
ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
# the i18n builder cannot share the environment and doctrees with the others
I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext
help:
@echo "Please use \`make <target>' where <target> is one of"
@echo " html to make standalone HTML files"
@echo " dirhtml to make HTML files named index.html in directories"
@echo " singlehtml to make a single large HTML file"
@echo " pickle to make pickle files"
@echo " json to make JSON files"
@echo " htmlhelp to make HTML files and a HTML help project"
@echo " qthelp to make HTML files and a qthelp project"
@echo " devhelp to make HTML files and a Devhelp project"
@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)/*
html:
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
dirhtml:
$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
singlehtml:
$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
@echo
@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
pickle:
$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
@echo
@echo "Build finished; now you can process the pickle files."
json:
$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
@echo
@echo "Build finished; now you can process the JSON files."
htmlhelp:
$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
@echo
@echo "Build finished; now you can run HTML Help Workshop with the" \
".hhp project file in $(BUILDDIR)/htmlhelp."
qthelp:
$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
@echo
@echo "Build finished; now you can run "qcollectiongenerator" with the" \
".qhcp project file in $(BUILDDIR)/qthelp, like this:"
@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/Tailbone.qhcp"
@echo "To view the help file:"
@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/Tailbone.qhc"
devhelp:
$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
@echo
@echo "Build finished."
@echo "To view the help file:"
@echo "# mkdir -p $$HOME/.local/share/devhelp/Tailbone"
@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/Tailbone"
@echo "# devhelp"
epub:
$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
@echo
@echo "Build finished. The epub file is in $(BUILDDIR)/epub."
latex:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo
@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
@echo "Run \`make' in that directory to run these through (pdf)latex" \
"(use \`make latexpdf' here to do that automatically)."
latexpdf:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo "Running LaTeX files through pdflatex..."
$(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
@echo "Build finished. The text files are in $(BUILDDIR)/text."
man:
$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
@echo
@echo "Build finished. The manual pages are in $(BUILDDIR)/man."
texinfo:
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
@echo
@echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
@echo "Run \`make' in that directory to run these through makeinfo" \
"(use \`make info' here to do that automatically)."
info:
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
@echo "Running Texinfo files through makeinfo..."
make -C $(BUILDDIR)/texinfo info
@echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."
gettext:
$(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
@echo
@echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
changes:
$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
@echo
@echo "The overview file is in $(BUILDDIR)/changes."
linkcheck:
$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
@echo
@echo "Link check complete; look for any errors in the above output " \
"or in $(BUILDDIR)/linkcheck/output.txt."
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."

7539
docs/OLDCHANGES.rst Normal file

File diff suppressed because it is too large Load diff

0
docs/_static/.dummy vendored Normal file
View file

View file

@ -0,0 +1,15 @@
``tailbone.api.batch.core``
===========================
.. automodule:: tailbone.api.batch.core
.. autoclass:: APIBatchMixin
.. autoclass:: APIBatchView
.. autoclass:: APIBatchRowView
.. autoattribute:: editable
.. autoattribute:: supports_quick_entry

View file

@ -0,0 +1,41 @@
``tailbone.api.batch.ordering``
===============================
.. automodule:: tailbone.api.batch.ordering
.. autoclass:: OrderingBatchViews
.. autoattribute:: collection_url_prefix
.. autoattribute:: object_url_prefix
.. autoattribute:: model_class
.. autoattribute:: route_prefix
.. autoattribute:: permission_prefix
.. autoattribute:: default_handler_spec
.. automethod:: base_query
.. automethod:: create_object
.. autoclass:: OrderingBatchRowViews
.. autoattribute:: collection_url_prefix
.. autoattribute:: object_url_prefix
.. autoattribute:: model_class
.. autoattribute:: route_prefix
.. autoattribute:: permission_prefix
.. autoattribute:: default_handler_spec
.. autoattribute:: supports_quick_entry
.. automethod:: update_object

6
docs/api/db.rst Normal file
View file

@ -0,0 +1,6 @@
``tailbone.db``
===============
.. automodule:: tailbone.db
:members:

6
docs/api/diffs.rst Normal file
View file

@ -0,0 +1,6 @@
``tailbone.diffs``
==================
.. automodule:: tailbone.diffs
:members:

9
docs/api/forms.rst Normal file
View file

@ -0,0 +1,9 @@
``tailbone.forms``
==================
.. automodule:: tailbone.forms
:members:
.. autoclass:: tailbone.forms.Form
:members:

View file

@ -0,0 +1,6 @@
``tailbone.forms.widgets``
==========================
.. automodule:: tailbone.forms.widgets
:members:

6
docs/api/grids.core.rst Normal file
View file

@ -0,0 +1,6 @@
``tailbone.grids.core``
=======================
.. automodule:: tailbone.grids.core
:members:

6
docs/api/grids.rst Normal file
View file

@ -0,0 +1,6 @@
``tailbone.grids``
==================
.. automodule:: tailbone.grids
:members:

6
docs/api/progress.rst Normal file
View file

@ -0,0 +1,6 @@
``tailbone.progress``
=====================
.. automodule:: tailbone.progress
:members:

6
docs/api/subscribers.rst Normal file
View file

@ -0,0 +1,6 @@
``tailbone.subscribers``
========================
.. automodule:: tailbone.subscribers
:members:

6
docs/api/util.rst Normal file
View file

@ -0,0 +1,6 @@
``tailbone.util``
=================
.. automodule:: tailbone.util
:members:

5
docs/api/views/batch.rst Normal file
View file

@ -0,0 +1,5 @@
``tailbone.views.batch``
========================
.. automodule:: tailbone.views.batch

View file

@ -0,0 +1,10 @@
``tailbone.views.batch.vendorcatalog``
======================================
.. automodule:: tailbone.views.batch.vendorcatalog
.. autoclass:: VendorCatalogsView
:members:
.. autofunction:: includeme

6
docs/api/views/core.rst Normal file
View file

@ -0,0 +1,6 @@
``tailbone.views.core``
=======================
.. automodule:: tailbone.views.core
:members:

126
docs/api/views/master.rst Normal file
View file

@ -0,0 +1,126 @@
``tailbone.views.master``
=========================
.. module:: tailbone.views.master
Model Master View
------------------
This module contains the "model master" view class. This is a convenience
abstraction which provides some patterns/consistency for the typical set of
views needed to expose a table's data for viewing/editing/etc. Usually this
means providing something like the following view methods for a model:
* index (list/filter)
* create
* view
* edit
* delete
The actual list of provided view methods will depend on usage. Generally
speaking, each view method which is provided by the master class may be
configured in some way by the subclass (e.g. add extra filters to a grid).
.. autoclass:: MasterView
.. automethod:: index
.. automethod:: create
.. automethod:: view
.. automethod:: edit
.. automethod:: delete
Attributes to Override
----------------------
The following is a list of attributes which you can (and in some cases must)
override when defining your subclass.
.. attribute:: MasterView.model_class
All master view subclasses *must* define this attribute. Its value must
be a data model class which has been mapped via SQLAlchemy, e.g.
``rattail.db.model.Product``.
.. attribute:: MasterView.normalized_model_name
Name of the model class which has been "normalized" for the sake of usage
as a key (for grid settings etc.). If not defined by the subclass, the
default will be the lower-cased model class name, e.g. 'product'.
.. attribute:: grid_key
Unique value to be used as a key for the grid settings, etc. If not
defined by the subclass, the normalized model name will be used.
.. attribute:: MasterView.route_prefix
Value with which all routes provided by the view class will be prefixed.
If not defined by the subclass, a default will be constructed by simply
adding an 's' to the end of the normalized model name, e.g. 'products'.
.. attribute:: MasterView.grid_factory
Factory callable to be used when creating new grid instances; defaults to
:class:`tailbone.grids.Grid`.
.. attribute:: MasterView.results_downloadable_csv
Flag indicating whether the view should allow CSV download of grid data,
i.e. primary search results.
.. attribute:: MasterView.help_url
If set, this defines the "default" help URL for all views provided by the
master. Default value for this is simply ``None`` which would mean the
Help button is not shown at all. Note that the master may choose to
override this for certain views, if so that should be done within
:meth:`get_help_url()`.
.. attribute:: MasterView.version_diff_factory
Optional factory to use for version diff objects. By default
this is *not set* but a subclass is free to set it. See also
:meth:`get_version_diff_factory()`.
Methods to Override
-------------------
The following is a list of methods which you can override when defining your
subclass.
.. automethod:: MasterView.editable_instance
.. .. automethod:: MasterView.get_settings
.. automethod:: MasterView.get_csv_fields
.. automethod:: MasterView.get_csv_row
.. automethod:: MasterView.get_help_url
.. automethod:: MasterView.get_model_key
.. automethod:: MasterView.get_version_diff_enums
.. automethod:: MasterView.get_version_diff_factory
.. automethod:: MasterView.make_version_diff
.. automethod:: MasterView.title_for_version
Support Methods
---------------
The following is a list of methods you should (probably) not need to
override, but may find useful:
.. automethod:: MasterView.default_edit_url
.. automethod:: MasterView.get_action_route_kwargs

View file

@ -0,0 +1,6 @@
``tailbone.views.members``
==========================
.. automodule:: tailbone.views.members
:members:

View file

@ -0,0 +1,9 @@
``tailbone.views.purchasing.batch``
===================================
.. automodule:: tailbone.views.purchasing.batch
.. autoclass:: PurchasingBatchView
.. automethod:: save_edit_row_form

View file

@ -0,0 +1,15 @@
``tailbone.views.purchasing.ordering``
======================================
.. automodule:: tailbone.views.purchasing.ordering
.. autoclass:: OrderingBatchView
.. autoattribute:: model_class
.. autoattribute:: default_handler_spec
.. automethod:: configure_row_form
.. automethod:: worksheet_update

8
docs/changelog.rst Normal file
View file

@ -0,0 +1,8 @@
Changelog Archive
=================
.. toctree::
:maxdepth: 1
OLDCHANGES

65
docs/concepts/batches.rst Normal file
View file

@ -0,0 +1,65 @@
Data Batches
============
.. contents:: :local:
Data "batches" are one of the most powerful features of Rattail / Tailbone.
However each "batch type" is different, and they usually require custom
development. In all cases they require a Rattail-based app database, for
storage.
General Overview
----------------
You can think of data batches as a sort of "temporary spreadsheet" feature.
When a batch is created, it is usually populated with rows, from some data
source. The user(s) may then manipulate the batch data as needed, with the
final goal being to "execute" the batch. What execution specifically means
will depend on context, e.g. type of batch, but generally it will "commit" the
"pending changes" which are represented by the batch.
Note that when a batch is executed, it becomes read-only ("frozen in time") and
at that point may be considered part of an audit trail of sorts. The utility
of this may vary depending on the nature of the batch data.
Beyond that it's difficult to describe batches very well at this level,
precisely because they're all different.
..
This graphic tries to show how batches are created and executed over time.
Note that each batch type is free to target a different system(s) upon
execution.
TODO: need graphic
Batch Tables
------------
In most cases the table(s) underlying a particular batch type, have a "static"
schema and must be defined as ORM classes, e.g. within the ``poser.db.model``
package.
In some rare cases the batch data (row) table may be dynamic; however the batch
header table must still be defined.
Batch Handlers
--------------
Once the batch table(s) are present, the next puzzle piece is the batch
handler. Again there is generally (at least) one handler defined for each
batch type.
The batch "handler" is considered part of the data layer and provides logic for
populating the batch, executing it etc.
Batch Views
-----------
This discussion would not be complete without mentioning the web views for the
batch. Again each batch type will require a custom view(s) although these
"usually" are simple wrappers as most logic is provided by the base view.

115
docs/concepts/config.rst Normal file
View file

@ -0,0 +1,115 @@
Configuration
=============
.. contents:: :local:
Configuration for an app can come from two sources: configuration file(s), and
the Settings table in the database.
Config File Inheritance
-----------------------
An important thing to understand regarding Rattail config files, is that one
file may "include" another file(s), which in turn may "include" others etc.
Invocation of the app will often require only a single config file to be
specified, since that file may include others as needed.
For example ``web.conf`` will typically include ``rattail.conf`` but the web
app need only be invoked with ``web.conf`` - config from both files will inform
the app's behavior.
Typical Config Files
--------------------
A typical Poser (Rattail-based) app will have at the very least, one file named
``rattail.conf`` - this is considered the most fundamental config file. It
will usually define database connections, logging config, and any other "core"
things which would be required for any invocation of the app, regardless of the
environment (e.g. console vs. web).
Note that even ``rattail.conf`` is free to include other files. This may be
useful for instance, if you have a single site-wide config file which is shared
among all Rattail apps.
There is no *strict* requirement for having a ``rattail.conf`` file, but these
docs will assume its presence. Here are some other typical files, which the
docs also may reference occasionally:
**web.conf** - This is the "core" config file for the web app, although it
still includes the ``rattail.conf`` file. In production (running on Apache
etc.) it is specified within the WSGI module which is responsible for
instantiating the web app. When running the development server, it is
specified via command line.
**quiet.conf** - This is a slight wrapper around ``rattail.conf`` for the sake
of a "quieter" console, when running app commands via console. It may be used
in place of ``rattail.conf`` - i.e. you would specify ``-c quiet.conf`` when
running the command. The only function of this wrapper is to set the level to
INFO for the console logging handler. In practice this hides DEBUG logging
messages which are shown by default when using ``rattail.conf`` as the app
config file.
**cron.conf** - Another wrapper around ``rattail.conf`` which suppresses
logging even further. The idea is that this config file would be used by cron
jobs; that way the only actual output is warnings and errors, hence cron would
not send email unless something actually went wrong. It may be used in place
of ``rattail.conf`` - i.e. you would specify ``-c cron.conf`` when running the
command. The only function of this wrapper is to set the level to WARNING for
the console logging handler.
**ignore-changes.conf** - This file is only relevant if your ``rattail.conf``
says to "record changes" when write activity occurs in the database(s). Note
that this file does *not* include ``rattail.conf`` because it is meant to be
supplemental only. For instance on the command line, you would need to specify
two config files, first ``rattail.conf`` or a suitable alternative, but then
``ignore-changes.conf`` also. If specified, this file will cause changes to be
ignored, i.e. **not recorded** when write activity occurs.
**without-versioning.conf** - This file is only relevant if your
``rattail.conf`` says to enable "data versioning" when write activity occurs in
the database(s). Note that this file does *not* include ``rattail.conf``
because it is meant to be supplemental only. For instance on the command line,
you would need to specify two config files, first ``rattail.conf`` or a
suitable alternative, but then ``without-versioning.conf`` also. If specified,
this file will disable the data versioning system entirely. Note that if
versioning is undesirable for a given app run, this is the only way to
effectively disable it; once loaded that feature cannot be disabled.
Settings from Database
----------------------
The other (often more convenient) source of app configuration is the Settings
table within the app database. Whether or not this table is a valid source for
app configuration, ultimately depends on what the config file(s) has to say
about it.
Assuming the config file(s) defines a database connection and declares it a
valid source for config values, then the Settings table may contribute to the
running app config. The nice thing about this is that these settings are
checked in real-time. So whereas changing a config file will require an app
restart, any edits to the settings table should take effect immediately.
Usually the settings table will *override* values found in the config file.
This behavior also is configurable to some extent, and in some cases a config
value may *only* come from a config file and never the settings table.
An example may help here. If the config file contained the following value:
.. code-block:: ini
[poser]
foo = bar
Then you could create a new Setting in the database with the following fields:
* **name** = poser.foo
* **value** = baz
Assuming typical setup, i.e. where settings table may override config file, the
app would consider 'baz' to be the config value. So basically the setting name
must correspond to a combination of the config file "section" name, then a dot,
then the "option" name.

View file

@ -0,0 +1,7 @@
Console Commands
================
.. contents:: :local:
TODO

45
docs/concepts/schema.rst Normal file
View file

@ -0,0 +1,45 @@
Database Schema
===============
.. contents:: :local:
Rattail provides a "core" schema which is assumed to be the foundation of any
Poser app database.
Core Tables
-----------
All tables which are considered part of the Rattail "core" schema, are defined
as ORM classes within the ``rattail.db.model`` package.
.. note::
The Rattail project has its roots in retail grocery-type stores, and its
schema reflects that to a large degree. In practice however the software
may be used to support a wide variety of apps. The next section describes
that a bit more.
Customizing the Schema
----------------------
Almost certainly a custom app will need some of the core tables, but just as
certainly, it will *not* need others. And to make things even more
interesting, it may need some tables but also need to "supplement" them
somehow, to track additional data for each record etc.
Any table in the core schema which is *not* needed, may simply be ignored,
i.e. hidden from the app UI etc.
Any table which is "missing" from core schema, from the custom app's
perspective, should be added as a custom table.
Also, any table which is "present but missing columns" from the app's
perspective, will require a custom table. In this case each record in the
custom table will "tie back to" the core table record. The custom record will
then supply any additional data for the core record.
Defining custom tables, and associated tasks, are documented in
:doc:`../schemachange`.

52
docs/conf.py Normal file
View file

@ -0,0 +1,52 @@
# Configuration file for the Sphinx documentation builder.
#
# For the full list of built-in configuration values, see the documentation:
# https://www.sphinx-doc.org/en/master/usage/configuration.html
# -- Project information -----------------------------------------------------
# https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information
from importlib.metadata import version as get_version
project = 'Tailbone'
copyright = '2010 - 2024, Lance Edgar'
author = 'Lance Edgar'
release = get_version('Tailbone')
# -- General configuration ---------------------------------------------------
# https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration
extensions = [
'sphinx.ext.autodoc',
'sphinx.ext.todo',
'sphinx.ext.intersphinx',
'sphinx.ext.viewcode',
]
templates_path = ['_templates']
exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store']
intersphinx_mapping = {
'rattail': ('https://docs.wuttaproject.org/rattail/', None),
'webhelpers2': ('https://webhelpers2.readthedocs.io/en/latest/', None),
'wuttaweb': ('https://docs.wuttaproject.org/wuttaweb/', None),
'wuttjamaican': ('https://docs.wuttaproject.org/wuttjamaican/', None),
}
# allow todo entries to show up
todo_include_todos = True
# -- Options for HTML output -------------------------------------------------
# https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output
html_theme = 'furo'
html_static_path = ['_static']
# The name of an image file (relative to this directory) to place at the top
# of the sidebar.
#html_logo = None
#html_logo = 'images/rattail_avatar.png'
# Output file base name for HTML help builder.
#htmlhelp_basename = 'Tailbonedoc'

78
docs/devenv.rst Normal file
View file

@ -0,0 +1,78 @@
Development Environment
=======================
.. contents:: :local:
Base System
-----------
Development for Tailbone in particular is assumed to occur on a Linux machine.
This is because it's assumed that the web app would run on Linux. It should be
possible (presumably) to do either on Windows or Mac but that is not officially
supported.
Furthermore it is assumed the Linux flavor in use is either Debian or Ubuntu,
or a similar alternative. Presumably any Linux would work although some
details may differ from what's shown here.
Prerequisites
-------------
Python
^^^^^^
The only supported Python is 2.7. Of course that should already be present on
Linux.
It usually is required at some point to compile C code for certain Python
extension modules. In practice this means you probably want the Python header
files as well:
.. code-block:: sh
sudo apt-get install python-dev
pip
^^^
The only supported Python package manager is ``pip``. This can be installed a
few ways, one of which is:
.. code-block:: sh
sudo apt-get install python-pip
virtualenvwrapper
^^^^^^^^^^^^^^^^^
While not technically required, it is recommended to use ``virtualenvwrapper``
as well. There is more than one way to set this up, e.g.:
.. code-block:: sh
sudo apt-get install python-virtualenvwrapper
The main variable as concerns these docs, is where your virtual environment(s)
will live. If you install virtualenvwrapper via the above command, then most
likely your ``$WORKON_HOME`` environment variable will be set to
``~/.virtualenvs`` - however these docs will assume ``/srv/envs`` instead.
Please adjust any commands as needed.
PostgreSQL
^^^^^^^^^^
The other primary requirement is PostgreSQL. Technically that may be installed
on a separate machine, which allows connection from the development machine.
But of course it will usually just be installed on the dev machine:
.. code-block:: sh
sudo apt-get install postgresql
Regardless of where your PG server lives, you will probably need some extras in
order to compile extensions for the ``psycopg2`` package:
.. code-block:: sh
sudo apt-get install libpq-dev

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

85
docs/index.rst Normal file
View file

@ -0,0 +1,85 @@
Tailbone
========
Welcome to Tailbone, part of the Rattail project. While the core Rattail
package provides the data layer, the Tailbone package provides the (default,
back-end) web application layer.
Some additional information is available on the `website`_. Certainly not
everything is documented yet, but here you can see what has received some
attention thus far.
.. _website: https://rattailproject.org/
Quick Start for Custom Apps:
.. toctree::
:maxdepth: 1
structure
devenv
newproject
schemachange
Concept Guide:
.. toctree::
concepts/config
concepts/console
concepts/schema
concepts/batches
Narrative Documentation:
.. toctree::
narr/batches
Package API:
.. toctree::
:maxdepth: 1
api/api/batch/core
api/api/batch/ordering
api/db
api/diffs
api/forms
api/forms.widgets
api/grids
api/grids.core
api/progress
api/subscribers
api/util
api/views/batch
api/views/batch.vendorcatalog
api/views/core
api/views/master
api/views/members
api/views/purchasing.batch
api/views/purchasing.ordering
Changelog:
.. toctree::
:maxdepth: 1
changelog
Documentation To-Do
===================
.. todolist::
Indices and tables
==================
* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`

242
docs/make.bat Normal file
View file

@ -0,0 +1,242 @@
@ECHO OFF
REM Command file for Sphinx documentation
if "%SPHINXBUILD%" == "" (
set SPHINXBUILD=sphinx-build
)
set BUILDDIR=_build
set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% .
set I18NSPHINXOPTS=%SPHINXOPTS% .
if NOT "%PAPER%" == "" (
set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS%
set I18NSPHINXOPTS=-D latex_paper_size=%PAPER% %I18NSPHINXOPTS%
)
if "%1" == "" goto help
if "%1" == "help" (
:help
echo.Please use `make ^<target^>` where ^<target^> is one of
echo. html to make standalone HTML files
echo. dirhtml to make HTML files named index.html in directories
echo. singlehtml to make a single large HTML file
echo. pickle to make pickle files
echo. json to make JSON files
echo. htmlhelp to make HTML files and a HTML help project
echo. qthelp to make HTML files and a qthelp project
echo. devhelp to make HTML files and a Devhelp project
echo. epub to make an epub
echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter
echo. text to make text files
echo. man to make manual pages
echo. texinfo to make Texinfo files
echo. gettext to make PO message catalogs
echo. changes to make an overview over 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
goto end
)
if "%1" == "clean" (
for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i
del /q /s %BUILDDIR%\*
goto end
)
%SPHINXBUILD% 2> nul
if errorlevel 9009 (
echo.
echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
echo.installed, then set the SPHINXBUILD environment variable to point
echo.to the full path of the 'sphinx-build' executable. Alternatively you
echo.may add the Sphinx directory to PATH.
echo.
echo.If you don't have Sphinx installed, grab it from
echo.http://sphinx-doc.org/
exit /b 1
)
if "%1" == "html" (
%SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The HTML pages are in %BUILDDIR%/html.
goto end
)
if "%1" == "dirhtml" (
%SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml.
goto end
)
if "%1" == "singlehtml" (
%SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml.
goto end
)
if "%1" == "pickle" (
%SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle
if errorlevel 1 exit /b 1
echo.
echo.Build finished; now you can process the pickle files.
goto end
)
if "%1" == "json" (
%SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json
if errorlevel 1 exit /b 1
echo.
echo.Build finished; now you can process the JSON files.
goto end
)
if "%1" == "htmlhelp" (
%SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp
if errorlevel 1 exit /b 1
echo.
echo.Build finished; now you can run HTML Help Workshop with the ^
.hhp project file in %BUILDDIR%/htmlhelp.
goto end
)
if "%1" == "qthelp" (
%SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp
if errorlevel 1 exit /b 1
echo.
echo.Build finished; now you can run "qcollectiongenerator" with the ^
.qhcp project file in %BUILDDIR%/qthelp, like this:
echo.^> qcollectiongenerator %BUILDDIR%\qthelp\Tailbone.qhcp
echo.To view the help file:
echo.^> assistant -collectionFile %BUILDDIR%\qthelp\Tailbone.ghc
goto end
)
if "%1" == "devhelp" (
%SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp
if errorlevel 1 exit /b 1
echo.
echo.Build finished.
goto end
)
if "%1" == "epub" (
%SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The epub file is in %BUILDDIR%/epub.
goto end
)
if "%1" == "latex" (
%SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex
if errorlevel 1 exit /b 1
echo.
echo.Build finished; the LaTeX files are in %BUILDDIR%/latex.
goto end
)
if "%1" == "latexpdf" (
%SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex
cd %BUILDDIR%/latex
make all-pdf
cd %BUILDDIR%/..
echo.
echo.Build finished; the PDF files are in %BUILDDIR%/latex.
goto end
)
if "%1" == "latexpdfja" (
%SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex
cd %BUILDDIR%/latex
make all-pdf-ja
cd %BUILDDIR%/..
echo.
echo.Build finished; the PDF files are in %BUILDDIR%/latex.
goto end
)
if "%1" == "text" (
%SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The text files are in %BUILDDIR%/text.
goto end
)
if "%1" == "man" (
%SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The manual pages are in %BUILDDIR%/man.
goto end
)
if "%1" == "texinfo" (
%SPHINXBUILD% -b texinfo %ALLSPHINXOPTS% %BUILDDIR%/texinfo
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The Texinfo files are in %BUILDDIR%/texinfo.
goto end
)
if "%1" == "gettext" (
%SPHINXBUILD% -b gettext %I18NSPHINXOPTS% %BUILDDIR%/locale
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The message catalogs are in %BUILDDIR%/locale.
goto end
)
if "%1" == "changes" (
%SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes
if errorlevel 1 exit /b 1
echo.
echo.The overview file is in %BUILDDIR%/changes.
goto end
)
if "%1" == "linkcheck" (
%SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck
if errorlevel 1 exit /b 1
echo.
echo.Link check complete; look for any errors in the above output ^
or in %BUILDDIR%/linkcheck/output.txt.
goto end
)
if "%1" == "doctest" (
%SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest
if errorlevel 1 exit /b 1
echo.
echo.Testing of doctests in the sources finished, look at the ^
results in %BUILDDIR%/doctest/output.txt.
goto end
)
if "%1" == "xml" (
%SPHINXBUILD% -b xml %ALLSPHINXOPTS% %BUILDDIR%/xml
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The XML files are in %BUILDDIR%/xml.
goto end
)
if "%1" == "pseudoxml" (
%SPHINXBUILD% -b pseudoxml %ALLSPHINXOPTS% %BUILDDIR%/pseudoxml
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The pseudo-XML files are in %BUILDDIR%/pseudoxml.
goto end
)
:end

74
docs/narr/batches.rst Normal file
View file

@ -0,0 +1,74 @@
.. -*- coding: utf-8 -*-
Data Batches
============
This document briefly outlines what comprises a batch in terms of the Tailbone
user interface etc.
Batch Views
-----------
Adding support for a new batch type is mostly a matter of providing some custom
views for the batch and its rows. In fact you must define four different view
classes, inheriting from each of the following:
* :class:`tailbone.views.batch.BatchGrid`
* :class:`tailbone.views.batch.BatchCrud`
* :class:`tailbone.views.batch.BatchRowGrid`
* :class:`tailbone.views.batch.BatchRowCrud`
It would sure be nice to only require two view classes instead of four, hopefully
that can happen "soon". In the meantime that's what it takes. Note that as with
batch data models, there are some more specialized parent classes which you may
want to inherit from instead of the core classes mentioned above:
* :class:`tailbone.views.batch.FileBatchGrid`
* :class:`tailbone.views.batch.FileBatchCrud`
* :class:`tailbone.views.batch.ProductBatchRowGrid`
Here are the vendor catalog views as examples:
* :class:`tailbone.views.vendors.catalogs.VendorCatalogGrid`
* :class:`tailbone.views.vendors.catalogs.VendorCatalogCrud`
* :class:`tailbone.views.vendors.catalogs.VendorCatalogRowGrid`
* :class:`tailbone.views.vendors.catalogs.VendorCatalogRowCrud`
Pyramid Config
--------------
In addition to defining the batch views, the Pyramid Configurator object must be
told of the views and their routes. This also could probably stand to be simpler
somehow, but for now the easiest thing is to apply default configuration with:
* :func:`tailbone.views.batch.defaults()`
See the source behind the vendor catalog for an example:
* :func:`tailbone.views.vendors.catalogs.includeme()`
Note of course that your view config must be included by the core/upstream
config process of your application's startup to take effect. At this point
your views should be accessible by navigating to the URLs directly, e.g. for
the vendor catalog views:
* List Uploaded Catalogs - http://example.com/vendors/catalogs/
* Upload New Catlaog - http://example.com/vendors/catalogs/new
Menu and Templates
------------------
Providing access to the batch views is (I think) the last step. You must add
links to the views, wherever that makes sense for your app. In case it's
helpful, here's a Mako template snippet which would show some links to the main
vendor catalog views:
.. code-block:: mako
<ul>
<li>${h.link_to("Vendor Catalogs", url('vendors.catalogs'))}</li>
<li>${h.link_to("Upload new Vendor Catalog", url('vendors.catalogs.create'))}</li>
</ul>

154
docs/newproject.rst Normal file
View file

@ -0,0 +1,154 @@
Creating a New Project
======================
.. contents:: :local:
.. highlight:: bash
This describes the process of creating a new app project based on
Rattail/Tailbone. It assumes you are working from a supported :doc:`devenv`.
Per convention, this doc uses "Poser" (and ``poser``) to represent the custom
app. Please adjust commands etc. accordingly. See also :doc:`structure`.
Create the Virtual Environment
------------------------------
First step is simple enough::
mkvirtualenv poser
Then with your new environment activated, install the Tailbone package::
pip install Tailbone
Create the Project
------------------
Now with your environment still activated, ``cd`` to wherever you like
(e.g. ``~/src``) and create a new project skeleton like so::
mkdir -p ~/src
cd ~/src
pcreate -s rattail poser
This will have created a new project at ``~/src/poser`` which you can then edit
as you wish. At some point you will need to "install" this project to the
environment like so (again with environment active)::
cd ~/src/poser
pip install -e .
Setup the App Environment
-------------------------
Any project based on Rattail will effectively be its own "app" (usually), but
Rattail itself provides some app functionality as well. However all such apps
require config files, usually. If running a web app then you may also need to
have configured a folder for session storage, etc. To hopefully simplify all
this, there are a few commands you should now run, with your virtual
environment still active::
rattail make-appdir
cdvirtualenv app
rattail make-config -T rattail
rattail make-config -T quiet
rattail make-config -T web
This will have created a new 'app' folder in your environment (e.g. at
``/srv/envs/poser/app``) and then created ``rattail.conf`` and ``web.conf``
files within that app dir. Note that there will be other folders inside the
app dir as well; these are referenced by the config files.
But you're not done yet... You should likely edit the config files, at the
very least edit ``rattail.conf`` and change the ``default.url`` value (under
``[rattail.db]`` section) which defines the Rattail database connection.
Create the Database
-------------------
If applicable, it's time for that. First you must literally create the user
and database on your PostgreSQL server, e.g.::
sudo -u postgres createuser --no-createdb --no-createrole --no-superuser poser
sudo -u postgres psql -c "alter user poser password 'mypassword'"
sudo -u postgres createdb --owner poser poser
Then you can install the schema; with your virtual environment activated::
cdvirtualenv
alembic -c app/rattail.conf upgrade heads
At this point your 'poser' database should have some empty tables. To confirm,
on your PG server do::
sudo -u postgres psql -c '\d' poser
Create Admin User
-----------------
If your intention is to have a web app, or at least to test one, you'll
probably want to create the initial admin user. With your env active::
cdvirtualenv
rattail -c app/quiet.conf make-user --admin myusername
This should prompt you for a password, then create a single user and assign it
to the Administrator role.
Install Sample Data
-------------------
If desired, you can install a bit of sample data to your fresh Rattail
database. With your env active do::
cdvirtualenv
rattail -c app/quiet.conf -P import-sample
Run Dev Web Server
------------------
With all the above in place, you may now run the web server in dev mode::
cdvirtualenv
pserve --reload app/web.conf
And finally..you may browse your new project dev site at http://localhost:9080/
(unless you changed the port etc.)
Schema Migrations
-----------------
Often a new project will require custom schema additions to track/manage data
unique to the project. Rattail uses `Alembic`_ for handling schema migrations.
General usage of that is documented elsewhere, but a little should be said here
regarding new projects.
.. _Alembic: https://pypi.python.org/pypi/alembic
The new project template includes most of an Alembic "repo" for schema
migrations. However there is one step required to really bootstrap it, i.e. to
the point where normal Alembic usage will work: you must create the initial
version script. Before you do this, you should be reasonably happy with any
ORM classes you've defined, as the initial version script will be used to
create that schema. Once you're ready for the script, this command should do
it::
cdvirtualenv
bin/alembic -c app/rattail.conf revision --autogenerate --version-path ~/src/poser/poser/db/alembic/versions/ -m 'initial Poser tables'
You should of course look over and edit the generated script as needed. One
change in particular you should make is to add a branch label, e.g.:
.. code-block:: python
branch_labels = ('poser',)

63
docs/schemachange.rst Normal file
View file

@ -0,0 +1,63 @@
Migrating the Schema
====================
.. contents:: :local:
As development progresses for your custom app, you may need to migrate the
database schema from time to time.
See also this general discussion of the :doc:`concepts/schema`.
.. note::
The only "safe" migrations are those which add or modify (or remove)
"custom" tables, i.e. those *not* provided by the ``rattail.db.model``
package. This doc assumes you are aware of this and are only attempting a
safe migration.
Modify ORM Classes
------------------
First step is to modify the ORM classes defined by your app, so they reflect
the "desired" schema. Typically this will mean editing files under the
``poser.db.model`` package within your source. In particular when adding new
tables, you must be sure to include them within ``poser/db/model/__init__.py``.
As noted above, only those classes *not* provided by ``rattail.db.model``
should be modified here, to be safe. If you wish to "extend" an existing
table, you must create a secondary table which ties back to the first via
one-to-one foreign key relationship.
Create Migration Script
-----------------------
Next you will create the Alembic script which is responsible for performing the
schema migration against a database. This is typically done like so:
.. code-block:: sh
workon poser
cdvirtualenv
bin/alembic -c app/rattail.conf revision --autogenerate --head poser@head -m "describe migration here"
This will create a new file under
e.g. ``~/src/poser/poser/db/alembic/versions/``. You should edit this file as
needed to ensure it performs all steps required for the migration. Technically
it should support downgrade as well as upgrade, although in practice that isn't
always required.
Upgrade Database Schema
-----------------------
Once you're happy with the new script, you can apply it against your dev
database with something like:
.. code-block:: sh
workon poser
cdvirtualenv
bin/alembic -c app/rattail.conf upgrade heads

130
docs/structure.rst Normal file
View file

@ -0,0 +1,130 @@
App Organization & Structure
============================
.. contents:: :local:
Tailbone doesn't try to be an "app" proper. But it does try to provide just
about everything you'd need to make one. These docs assume you are making a
custom app, and will refer to the app as "Poser" to be consistent. In practice
you would give your app a unique name which is meaningful to you. Please
mentally replace "Poser" with your app name as you read.
.. note::
Technically it *is possible* to use Tailbone directly as the app. You may
do so for basic testing of the concepts, but you'd be stuck with Tailbone
logic, with far fewer customization options. All docs will assume a custom
"Poser" app which wraps and (as necessary) overrides Tailbone and Rattail.
Architecture
------------
In terms of how the Poser app hangs together, here is a conceptual diagram.
Note that all systems on the right-hand side are *external* to Poser, i.e. they
are not "plugins" although Poser may use plugin-like logic for the sake of
integrating with these systems.
.. image:: images/poser-architecture.png
Data Layer vs. Web Layer
^^^^^^^^^^^^^^^^^^^^^^^^
While the above graphic doesn't do a great job highlighting the difference, it
will (presumably) help to understand the difference in purpose and function of
Tailbone vs. Rattail packages.
**Rattail** is the data layer, and is responsible for database connectivity,
table schema information, and some business rules logic (among other things).
**Tailbone** is the web app layer, and is responsible for presentation and
management of data objects which are made available by Rattail (and others).
**Poser** is a custom layer which can make use of both data and web app layers,
supplementing each as necessary. In practice the lines may get blurry within
Poser.
The reason for this distinction between layers, is to allow creation of custom
apps which use only the data layer but not the web app layer. This can be
useful for console-based apps; a traditional GUI app would also be possible
although none is yet planned.
File Layout
-----------
Below is an example file layout for a Poser app project. This tries to be
"complete" and show most kinds of files a typical project may need. In
practice you can usually ignore anything which doesn't apply to your app,
i.e. relatively few of the files shown here are actually required. Of course
some apps may need many more files than this to achieve their goals.
Note that all files in the root ``poser`` package namespace would correspond to
the "data layer" mentioned above, whereas everything under ``poser.web`` would
of course supply the web app layer.
.. code-block:: none
~/src/poser/
├── CHANGELOG.md
├── docs/
├── fabfile.py
├── MANIFEST.in
├── poser/
│   ├── __init__.py
│   ├── batch/
│   │   ├── __init__.py
│   │   └── foobatch.py
│   ├── commands.py
│   ├── config.py
│   ├── datasync/
│   ├── db/
│   │   ├── __init__.py
│   │   ├── alembic/
│   │   └── model/
│   │   ├── __init__.py
│   │   ├── batch/
│   │   │   ├── __init__.py
│   │   │   └── foobatch.py
│   │   └── customers.py
│   ├── emails.py
│   ├── enum.py
│   ├── importing/
│   │   ├── __init__.py
│   │   ├── model.py
│   │   ├── poser.py
│   │   └── versions.py
│   ├── problems.py
│   ├── templates/
│   │   └── mail/
│   │   └── warn_about_foo.html.mako
│   ├── _version.py
│   └── web/
│   ├── __init__.py
│   ├── app.py
│   ├── static/
│   │   ├── __init__.py
│   │   ├── css/
│   │   ├── favicon.ico
│   │   ├── img/
│   │   └── js/
│   ├── subscribers.py
│   ├── templates/
│   │   ├── base.mako
│   │   ├── batch/
│   │   │   └── foobatch/
│   │   ├── customers/
│   │   ├── menu.mako
│   │   └── products/
│   └── views/
│   ├── __init__.py
│   ├── batch/
│   │   ├── __init__.py
│   │   └── foobatch.py
│   ├── common.py
│   ├── customers.py
│   └── products.py
├── README.rst
└── setup.py

103
pyproject.toml Normal file
View file

@ -0,0 +1,103 @@
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[project]
name = "Tailbone"
version = "0.22.7"
description = "Backoffice Web Application for Rattail"
readme = "README.md"
authors = [{name = "Lance Edgar", email = "lance@edbob.org"}]
license = {text = "GNU GPL v3+"}
classifiers = [
"Development Status :: 4 - Beta",
"Environment :: Web Environment",
"Framework :: Pyramid",
"Intended Audience :: Developers",
"License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)",
"Natural Language :: English",
"Operating System :: OS Independent",
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Topic :: Internet :: WWW/HTTP",
"Topic :: Office/Business",
"Topic :: Software Development :: Libraries :: Python Modules",
]
requires-python = ">= 3.8"
dependencies = [
"asgiref",
"colander",
"ColanderAlchemy",
"cornice",
"cornice-swagger",
"deform",
"humanize",
"Mako",
"markdown",
"openpyxl",
"paginate",
"paginate_sqlalchemy",
"passlib",
"Pillow",
"pyramid>=2",
"pyramid_beaker",
"pyramid_deform",
"pyramid_exclog",
"pyramid_fanstatic",
"pyramid_mako",
"pyramid_retry",
"pyramid_tm",
"rattail[db,bouncer]>=0.20.1",
"sa-filters",
"simplejson",
"transaction",
"waitress",
"WebHelpers2",
"WuttaWeb>=0.21.0",
"zope.sqlalchemy>=1.5",
]
[project.optional-dependencies]
docs = ["Sphinx", "furo"]
tests = ["coverage", "mock", "pytest", "pytest-cov"]
[project.entry-points."paste.app_factory"]
main = "tailbone.app:main"
webapi = "tailbone.webapi:main"
[project.entry-points."rattail.cleaners"]
beaker = "tailbone.cleanup:BeakerCleaner"
[project.entry-points."rattail.config.extensions"]
tailbone = "tailbone.config:ConfigExtension"
[project.urls]
Homepage = "https://rattailproject.org"
Repository = "https://forgejo.wuttaproject.org/rattail/tailbone"
Issues = "https://forgejo.wuttaproject.org/rattail/tailbone/issues"
Changelog = "https://forgejo.wuttaproject.org/rattail/tailbone/src/branch/master/CHANGELOG.md"
[tool.commitizen]
version_provider = "pep621"
tag_format = "v$version"
update_changelog_on_bump = true
[tool.nosetests]
nocapture = 1
cover-package = "tailbone"
cover-erase = 1
cover-html = 1
cover-html-dir = "htmlcov"

View file

@ -1,2 +0,0 @@
from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)

View file

@ -1,34 +0,0 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
################################################################################
#
# Rattail -- Retail Software Framework
# Copyright © 2010-2012 Lance Edgar
#
# This file is part of Rattail.
#
# Rattail is free software: you can redistribute it and/or modify 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.
#
# Rattail 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 Affero General Public License for
# more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with Rattail. If not, see <http://www.gnu.org/licenses/>.
#
################################################################################
"""
``rattail.pyramid`` -- Rattail's Pyramid Framework
"""
from rattail.pyramid._version import __version__
def includeme(config):
config.include('rattail.pyramid.subscribers')
config.include('rattail.pyramid.views')

View file

@ -1 +0,0 @@
__version__ = '0.3a6'

View file

@ -1,85 +0,0 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
################################################################################
#
# Rattail -- Retail Software Framework
# Copyright © 2010-2012 Lance Edgar
#
# This file is part of Rattail.
#
# Rattail is free software: you can redistribute it and/or modify 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.
#
# Rattail 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 Affero General Public License for
# more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with Rattail. If not, see <http://www.gnu.org/licenses/>.
#
################################################################################
"""
``rattail.pyramid.forms`` -- Rattail Forms
"""
from webhelpers.html import literal
import formalchemy
from edbob.pyramid.forms import pretty_datetime
import rattail
from rattail.gpc import GPC
class GPCFieldRenderer(formalchemy.TextFieldRenderer):
"""
Renderer for :class:`rattail.gpc.GPC` fields.
"""
@property
def length(self):
# Hm, should maybe consider hard-coding this...?
return len(str(GPC(0)))
class PriceFieldRenderer(formalchemy.FieldRenderer):
"""
Renderer for fields which reference a :class:`ProductPrice` instance.
"""
def render_readonly(self, **kwargs):
price = self.field.raw_value
if price:
if price.price is not None and price.pack_price is not None:
if price.multiple > 1:
return literal('$ %0.2f / %u&nbsp; ($ %0.2f / %u)' % (
price.price, price.multiple,
price.pack_price, price.pack_multiple))
return literal('$ %0.2f&nbsp; ($ %0.2f / %u)' % (
price.price, price.pack_price, price.pack_multiple))
if price.price is not None:
if price.multiple > 1:
return '$ %0.2f / %u' % (price.price, price.multiple)
return '$ %0.2f' % price.price
if price.pack_price is not None:
return '$ %0.2f / %u' % (price.pack_price, price.pack_multiple)
return ''
class PriceWithExpirationFieldRenderer(PriceFieldRenderer):
"""
Price field renderer which also displays the expiration date, if present.
"""
def render_readonly(self, **kwargs):
res = super(PriceWithExpirationFieldRenderer, self).render_readonly(**kwargs)
if res:
price = self.field.raw_value
if price.ends:
res += '&nbsp; (%s)' % pretty_datetime(price.ends, from_='utc')
return res

View file

@ -1,55 +0,0 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
################################################################################
#
# Rattail -- Retail Software Framework
# Copyright © 2010-2012 Lance Edgar
#
# This file is part of Rattail.
#
# Rattail is free software: you can redistribute it and/or modify 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.
#
# Rattail 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 Affero General Public License for
# more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with Rattail. If not, see <http://www.gnu.org/licenses/>.
#
################################################################################
"""
``rattail.pyramid.subscribers`` -- Event Subscribers
"""
from pyramid import threadlocal
import rattail
def before_render(event):
"""
Adds goodies to the global template renderer context:
* ``rattail``
"""
# Import labels module so it's available if/when needed.
import rattail.labels
# Import SIL module so it's available if/when needed.
import rattail.sil
request = event.get('request') or threadlocal.get_current_request()
renderer_globals = event
renderer_globals['rattail'] = rattail
def includeme(config):
config.add_subscriber('rattail.pyramid.subscribers:before_render',
'pyramid.events.BeforeRender')

View file

@ -1,8 +0,0 @@
<%inherit file="/crud.mako" />
<%def name="context_menu_items()">
<li>${h.link_to("Back to Batches", url('batches'))}</li>
<li>${h.link_to("View Batch Rows", url('batch.rows', uuid=form.fieldset.model.uuid))}</li>
</%def>
${parent.body()}

View file

@ -1,5 +0,0 @@
<%inherit file="/grid.mako" />
<%def name="title()">Batches</%def>
${parent.body()}

View file

@ -1,42 +0,0 @@
<%inherit file="/base.mako" />
<%def name="title()">Batch Parameters</%def>
<%def name="head_tags()">
${parent.head_tags()}
<script language="javascript" type="text/javascript">
$(function() {
$('#create-batch').click(function() {
disable_button(this, "Creating batch");
disable_button('#cancel');
$('form').submit();
});
});
</script>
</%def>
<%def name="batch_params()"></%def>
<p>Please provide the following values for your new batch:</p>
<br />
<div class="form">
${h.form(request.get_referrer())}
${h.hidden('provider', value=provider)}
${h.hidden('params', value='True')}
${self.batch_params()}
<div class="buttons">
<button type="button" id="create-batch">Create Batch</button>
<button type="button" id="cancel" onclick="location.href = '${request.get_referrer()}';">Cancel</button>
</div>
${h.end_form()}
</div>

View file

@ -1,19 +0,0 @@
<%inherit file="/batches/params.mako" />
<%def name="batch_params()">
<div class="field-wrapper">
<label for="profile">Label Type</label>
<div class="field">
${h.select('profile', None, label_profiles)}
</div>
</div>
<div class="field-wrapper">
<label for="quantity">Quantity</label>
<div class="field">${h.text('quantity', value=1)}</div>
</div>
</%def>
${parent.body()}

View file

@ -1,40 +0,0 @@
<%inherit file="/batches/crud.mako" />
<%def name="context_menu_items()">
${parent.context_menu_items()}
<li>${h.link_to("Edit this Batch", url('batch.update', uuid=form.fieldset.model.uuid))}</li>
<li>${h.link_to("Delete this Batch", url('batch.delete', uuid=form.fieldset.model.uuid))}</li>
</%def>
${parent.body()}
<% batch = form.fieldset.model %>
<h2>Columns</h2>
<div class="grid full hoverable">
<table>
<thead>
<tr>
<th>Name</th>
<th>SIL Name</th>
<th>Display Name</th>
<th>Description</th>
<th>Data Type</th>
<th>Visible</th>
</tr>
</thead>
<tbody>
% for i, column in enumerate(batch.columns, 1):
<tr class="${'odd' if i % 2 else 'even'}">
<td>${column.name}</td>
<td>${column.sil_name}</td>
<td>${column.display_name}</td>
<td>${column.description}</td>
<td>${column.data_type}</td>
<td>${column.visible}</td>
</tr>
% endfor
</tbody>
</table>
</div>

View file

@ -1,8 +0,0 @@
<%inherit file="/crud.mako" />
<%def name="context_menu_items()">
<li>${h.link_to("Back to Batch", url('batch', uuid=form.fieldset.model.batch.uuid))}</li>
<li>${h.link_to("Back to Batch Rows", url('batch.rows', uuid=form.fieldset.model.batch.uuid))}</li>
</%def>
${parent.body()}

View file

@ -1,46 +0,0 @@
<%inherit file="/grid.mako" />
<%def name="title()">Batch Rows : ${batch.description}</%def>
<%def name="head_tags()">
${parent.head_tags()}
<script language="javascript" type="text/javascript">
$(function() {
$('#delete-results').click(function() {
var msg = "This will delete all rows matching the current search.\n\n"
+ "PLEASE NOTE that this may include some rows which are not visible "
+ "on your screen.\n(I.e., if there is more than one \"page\" of results.)\n\n"
+ "Are you sure you wish to delete these rows?";
if (confirm(msg)) {
disable_button(this, "Deleting rows");
location.href = '${url('batch.rows.delete', uuid=batch.uuid)}';
}
});
$('#execute-batch').click(function() {
if (confirm("Are you sure you wish to execute this batch?")) {
disable_button(this, "Executing batch");
location.href = '${url('batch.execute', uuid=batch.uuid)}';
}
});
});
</script>
</%def>
<%def name="context_menu_items()">
<li>${h.link_to("Back to Batches", url('batches'))}</li>
<li>${h.link_to("Back to Batch", url('batch', uuid=batch.uuid))}</li>
</%def>
<%def name="tools()">
<div class="buttons">
<button type="button" id="delete-results">Delete Results</button>
<button type="button" id="execute-batch">Execute Batch</button>
</div>
</%def>
${parent.body()}

View file

@ -1,12 +0,0 @@
<%inherit file="/crud.mako" />
<%def name="context_menu_items()">
<li>${h.link_to("Back to Brands", url('brands'))}</li>
% if form.readonly:
<li>${h.link_to("Edit this Brand", url('brand.update', uuid=form.fieldset.model.uuid))}</li>
% elif form.updating:
<li>${h.link_to("View this Brand", url('brand.read', uuid=form.fieldset.model.uuid))}</li>
% endif
</%def>
${parent.body()}

View file

@ -1,11 +0,0 @@
<%inherit file="/grid.mako" />
<%def name="title()">Brands</%def>
<%def name="context_menu_items()">
% if request.has_perm('brands.create'):
<li>${h.link_to("Create a new Brand", url('brand.create'))}</li>
% endif
</%def>
${parent.body()}

View file

@ -1,2 +0,0 @@
<%inherit file="/base.mako" />
${parent.body()}

View file

@ -1,10 +0,0 @@
<%inherit file="/categories/base.mako" />
<%inherit file="/crud.mako" />
<%def name="crud_name()">Category</%def>
<%def name="context_menu_items()">
<li>${h.link_to("Back to Categories", url('categories.list'))}</li>
</%def>
${parent.body()}

View file

@ -1,2 +0,0 @@
<%inherit file="/categories/crud.mako" />
${parent.body()}

View file

@ -1,12 +0,0 @@
<%inherit file="/categories/base.mako" />
<%inherit file="/index.mako" />
<%def name="title()">Categories</%def>
<%def name="context_menu_items()">
% if request.has_perm('categories.create'):
<li>${h.link_to("Create a new Category", url('category.new'))}</li>
% endif
</%def>
${parent.body()}

View file

@ -1,2 +0,0 @@
<%inherit file="/categories/crud.mako" />
${parent.body()}

View file

@ -1,7 +0,0 @@
<%inherit file="/crud.mako" />
<%def name="context_menu_items()">
<li>${h.link_to("Back to Customer Groups", url('customer_groups'))}</li>
</%def>
${parent.body()}

View file

@ -1,5 +0,0 @@
<%inherit file="/grid.mako" />
<%def name="title()">Customer Groups</%def>
${parent.body()}

View file

@ -1,7 +0,0 @@
<%inherit file="/crud.mako" />
<%def name="context_menu_items()">
<p>${h.link_to("Back to Customers", url('customers'))}</p>
</%def>
${parent.body()}

View file

@ -1,5 +0,0 @@
<%inherit file="/grid.mako" />
<%def name="title()">Customers</%def>
${parent.body()}

View file

@ -1,51 +0,0 @@
<%inherit file="/customers/crud.mako" />
${parent.body()}
<% customer = form.fieldset.model %>
<h2>People</h2>
% if customer.people:
<p>Customer account is associated with the following people:</p>
<div class="grid clickable">
<table>
<thead>
<th>First Name</th>
<th>Last Name</th>
</thead>
<tbody>
% for i, person in enumerate(customer.people, 1):
<tr class="${'odd' if i % 2 else 'even'}" url="${url('person.read', uuid=person.uuid)}">
<td>${person.first_name or ''}</td>
<td>${person.last_name or ''}</td>
</tr>
% endfor
</tbody>
</table>
</div>
% else:
<p>Customer account is not associated with any people.</p>
% endif
<h2>Groups</h2>
% if customer.groups:
<p>Customer account belongs to the following groups:</p>
<div class="grid clickable">
<table>
<thead>
<th>ID</th>
<th>Name</th>
</thead>
<tbody>
% for i, group in enumerate(customer.groups, 1):
<tr class="${'odd' if i % 2 else 'even'}" url="${url('customer_group.read', uuid=group.uuid)}">
<td>${group.id}</td>
<td>${group.name or ''}</td>
</tr>
% endfor
</tbody>
</table>
</div>
% else:
<p>Customer account doesn't belong to any groups.</p>
% endif

View file

@ -1,5 +0,0 @@
<%inherit file="/grid.mako" />
<%def name="title()">Departments</%def>
${parent.body()}

View file

@ -1,5 +0,0 @@
<%inherit file="/grid.mako" />
<%def name="title()">Employees</%def>
${parent.body()}

View file

@ -1,26 +0,0 @@
<%inherit file="/crud.mako" />
<%def name="head_tags()">
${parent.head_tags()}
<style type="text/css">
div.form div.field-wrapper.format textarea {
width: auto;
}
</style>
</%def>
<%def name="context_menu_items()">
<li>${h.link_to("Back to Label Profiles", url('label_profiles'))}</li>
% if form.updating:
<% profile = form.fieldset.model %>
<% printer = profile.get_printer() %>
% if printer.required_settings:
<li>${h.link_to("Edit Printer Settings", url('label_profile.printer_settings', uuid=profile.uuid))}</li>
% endif
<li>${h.link_to("View this Label Profile", url('label_profile.read', uuid=profile.uuid))}</li>
% endif
</%def>
${parent.body()}

View file

@ -1,11 +0,0 @@
<%inherit file="/grid.mako" />
<%def name="title()">Label Profiles</%def>
<%def name="context_menu_items()">
% if request.has_perm('label_profiles.create'):
<li>${h.link_to("Create a new Label Profile", url('label_profile.create'))}</li>
% endif
</%def>
${parent.body()}

View file

@ -1,48 +0,0 @@
<%inherit file="/base.mako" />
<%def name="title()">Printer Settings</%def>
<%def name="context_menu_items()">
<li>${h.link_to("Back to Label Profiles", url('label_profiles'))}</li>
<li>${h.link_to("View this Label Profile", url('label_profile.read', uuid=profile.uuid))}</li>
<li>${h.link_to("Edit this Label Profile", url('label_profile.update', uuid=profile.uuid))}</li>
</%def>
<div class="form-wrapper">
<ul class="context-menu">
${self.context_menu_items()}
</ul>
<div class="form">
<div class="field-wrapper">
<label>Label Profile</label>
<div class="field">${profile.description}</div>
</div>
<div class="field-wrapper">
<label>Printer Spec</label>
<div class="field">${profile.printer_spec}</div>
</div>
${h.form(request.current_route_url())}
% for name, display in printer.required_settings.iteritems():
<div class="field-wrapper">
<label for="${name}">${display}</label>
<div class="field">
${h.text(name, value=profile.get_printer_setting(name))}
</div>
</div>
% endfor
<div class="buttons">
${h.submit('update', "Update")}
<button type="button" onclick="location.href = '${url('label_profile.read', uuid=profile.uuid)}';">Cancel</button>
</div>
${h.end_form()}
</div>
</div>

View file

@ -1,32 +0,0 @@
<%inherit file="/labels/profiles/crud.mako" />
<%def name="context_menu_items()">
<li>${h.link_to("Back to Label Profiles", url('label_profiles'))}</li>
% if form.readonly and request.has_perm('label_profiles.update'):
<% profile = form.fieldset.model %>
<% printer = profile.get_printer() %>
<li>${h.link_to("Edit this Label Profile", url('label_profile.update', uuid=form.fieldset.model.uuid))}</li>
% if printer.required_settings:
<li>${h.link_to("Edit Printer Settings", url('label_profile.printer_settings', uuid=profile.uuid))}</li>
% endif
% endif
</%def>
${parent.body()}
<% profile = form.fieldset.model %>
<% printer = profile.get_printer() %>
% if printer.required_settings:
<h2>Printer Settings</h2>
<div class="form">
% for name, display in printer.required_settings.iteritems():
<div class="field-wrapper">
<label>${display}</label>
<div class="field">${profile.get_printer_setting(name) or ''}</div>
</div>
% endfor
</div>
% endif

View file

@ -1,27 +0,0 @@
<%inherit file="/base.mako" />
<%def name="title()">Create Products Batch</%def>
<%def name="context_menu_items()">
<li>${h.link_to("Back to Products", url('products'))}</li>
</%def>
<div class="form">
${h.form(request.current_route_url())}
<div class="field-wrapper">
<label for="provider">Batch Type</label>
<div class="field">
${h.select('provider', None, providers)}
</div>
</div>
<div class="buttons">
${h.submit('create', "Create Batch")}
<button type="button" onclick="location.href = '${url('products')}';">Cancel</button>
</div>
${h.end_form()}
</div>

View file

@ -1,7 +0,0 @@
<%inherit file="/crud.mako" />
<%def name="context_menu_items()">
<li>${h.link_to("Back to Products", url('products'))}</li>
</%def>
${parent.body()}

View file

@ -1,104 +0,0 @@
<%inherit file="/grid.mako" />
<%def name="title()">Products</%def>
<%def name="head_tags()">
${parent.head_tags()}
<style type="text/css">
table.grid-header td.tools table {
margin-left: auto;
}
table.grid-header td.tools table th,
table.grid-header td.tools table td {
padding: 0px;
text-align: left;
}
table.grid-header td.tools table #label-quantity {
text-align: right;
width: 30px;
}
div.grid table tbody td.size,
div.grid table tbody td.regular_price_uuid,
div.grid table tbody td.current_price_uuid {
padding-right: 6px;
text-align: right;
}
div.grid table tbody td.labels {
text-align: center;
}
</style>
% if label_profiles and request.has_perm('products.print_labels'):
<script language="javascript" type="text/javascript">
$(function() {
$('div.grid a.print-label').live('click', function() {
var quantity = $('#label-quantity').val();
if (isNaN(quantity)) {
alert("You must provide a valid label quantity.");
$('#label-quantity').select();
$('#label-quantity').focus();
} else {
$.ajax({
url: '${url('products.print_labels')}',
data: {
'product': get_uuid(this),
'profile': $('#label-profile').val(),
'quantity': quantity,
},
success: function(data) {
if (data.error) {
alert("An error occurred while attempting to print:\n\n" + data.error);
} else if (quantity == '1') {
alert("1 label has been printed.");
} else {
alert(quantity + " labels have been printed.");
}
},
});
}
return false;
});
});
</script>
% endif
</%def>
<%def name="tools()">
% if label_profiles and request.has_perm('products.print_labels'):
<table>
<thead>
<tr>
<td>Label</td>
<td>Qty.</td>
</tr>
</thead>
<tbody>
<td>
<select name="label-profile" id="label-profile">
% for profile in label_profiles:
<option value="${profile.uuid}">${profile.description}</option>
% endfor
</select>
</td>
<td>
<input type="text" name="label-quantity" id="label-quantity" value="1" />
</td>
</tbody>
</table>
% endif
</%def>
<%def name="context_menu_items()">
% if request.has_perm('batches.create'):
<li>${h.link_to("Create Batch from Results", url('products.create_batch'))}</li>
% endif
</%def>
${parent.body()}

View file

@ -1,37 +0,0 @@
<%inherit file="/products/crud.mako" />
${parent.body()}
<% product = form.fieldset.model %>
<div id="product-costs">
<h2>Product Costs:</h2>
% if product.costs:
<div class="grid hoverable">
<table>
<thead>
<th>Pref.</th>
<th>Vendor</th>
<th>Code</th>
<th>Case Size</th>
<th>Case Cost</th>
<th>Unit Cost</th>
</thead>
<tbody>
% for i, cost in enumerate(product.costs, 1):
<tr class="${'odd' if i % 2 else 'even'}">
<td class="center">${'X' if cost.preference == 1 else ''}</td>
<td>${cost.vendor}</td>
<td class="center">${cost.code}</td>
<td class="center">${cost.case_size}</td>
<td class="right">${'$ %0.2f' % cost.case_cost if cost.case_cost is not None else ''}</td>
<td class="right">${'$ %0.4f' % cost.unit_cost if cost.unit_cost is not None else ''}</td>
</tr>
% endfor
</tbody>
</table>
</div>
% else:
<p>None on file.</p>
% endif
</div>

View file

@ -1,2 +0,0 @@
<%inherit file="/base.mako" />
${parent.body()}

View file

@ -1,84 +0,0 @@
<%inherit file="/reports/base.mako" />
<%def name="title()">Report : Ordering Worksheet</%def>
<%def name="head_tags()">
${parent.head_tags()}
<style type="text/css">
div.grid {
clear: none;
}
</style>
</%def>
<p>Please provide the following criteria to generate your report:</p>
<br />
${h.form(request.current_route_url())}
${h.hidden('departments', value='')}
<div class="field-wrapper">
${h.hidden('vendor', value='')}
<label for="vendor-name">Vendor:</label>
${h.text('vendor-name', size='40', value='')}
<div id="vendor-display" style="display: none;">
<span>(no vendor)</span>&nbsp;
<button type="button" id="change-vendor">Change</button>
</div>
</div>
<div class="field-wrapper">
<label>Departments:</label>
<div class="grid"></div>
</div>
<div class="buttons">
${h.submit('submit', "Generate Report")}
</div>
${h.end_form()}
<script type="text/javascript">
$(function() {
var autocompleter = $('#vendor-name').autocomplete({
serviceUrl: '${url('vendors.autocomplete')}',
width: 300,
onSelect: function(value, data) {
$('#vendor').val(data);
$('#vendor-name').hide();
$('#vendor-name').val('');
$('#vendor-display span').html(value);
$('#vendor-display').show();
loading($('div.grid'));
$('div.grid').load('${url('departments.by_vendor')}', {'uuid': data});
},
});
$('#vendor-name').focus();
$('#change-vendor').click(function() {
$('#vendor').val('');
$('#vendor-display').hide();
$('#vendor-name').show();
$('#vendor-name').focus();
$('div.grid').empty();
});
$('form').submit(function() {
var depts = [];
$('div.grid table tbody tr').each(function() {
if ($(this).find('td.checkbox input[type=checkbox]').is(':checked')) {
depts.push(get_uuid(this));
}
$('#departments').val(depts.toString());
return true;
});
});
});
</script>

View file

@ -1,7 +0,0 @@
<%inherit file="/crud.mako" />
<%def name="context_menu_items()">
<li>${h.link_to("Back to Stores", url('stores'))}</li>
</%def>
${parent.body()}

View file

@ -1,11 +0,0 @@
<%inherit file="/grid.mako" />
<%def name="title()">Stores</%def>
<%def name="context_menu_items()">
% if request.has_perm('stores.create'):
<li>${h.link_to("Create a new Store", url('store.create'))}</li>
% endif
</%def>
${parent.body()}

View file

@ -1,5 +0,0 @@
<%inherit file="/grid.mako" />
<%def name="title()">Subdepartments</%def>
${parent.body()}

View file

@ -1,12 +0,0 @@
<%inherit file="/crud.mako" />
<%def name="context_menu_items()">
<li>${h.link_to("Back to Vendors", url('vendors'))}</li>
% if form.readonly:
<li>${h.link_to("Edit this Vendor", url('vendor.update', uuid=form.fieldset.model.uuid))}</li>
% elif form.updating:
<li>${h.link_to("View this Vendor", url('vendor.read', uuid=form.fieldset.model.uuid))}</li>
% endif
</%def>
${parent.body()}

View file

@ -1,11 +0,0 @@
<%inherit file="/grid.mako" />
<%def name="title()">Vendors</%def>
<%def name="context_menu_items()">
% if request.has_perm('vendors.create'):
<li>${h.link_to("Create a new Vendor", url('vendor.create'))}</li>
% endif
</%def>
${parent.body()}

View file

@ -1,41 +0,0 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
################################################################################
#
# Rattail -- Retail Software Framework
# Copyright © 2010-2012 Lance Edgar
#
# This file is part of Rattail.
#
# Rattail is free software: you can redistribute it and/or modify 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.
#
# Rattail 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 Affero General Public License for
# more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with Rattail. If not, see <http://www.gnu.org/licenses/>.
#
################################################################################
"""
``rattail.pyramid.views`` -- Pyramid Views
"""
def includeme(config):
config.include('rattail.pyramid.views.batches')
# config.include('rattail.pyramid.views.categories')
config.include('rattail.pyramid.views.customer_groups')
config.include('rattail.pyramid.views.customers')
config.include('rattail.pyramid.views.departments')
config.include('rattail.pyramid.views.employees')
config.include('rattail.pyramid.views.labels')
config.include('rattail.pyramid.views.products')
config.include('rattail.pyramid.views.stores')
config.include('rattail.pyramid.views.subdepartments')
config.include('rattail.pyramid.views.vendors')

View file

@ -1,35 +0,0 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
################################################################################
#
# Rattail -- Retail Software Framework
# Copyright © 2010-2012 Lance Edgar
#
# This file is part of Rattail.
#
# Rattail is free software: you can redistribute it and/or modify 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.
#
# Rattail 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 Affero General Public License for
# more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with Rattail. If not, see <http://www.gnu.org/licenses/>.
#
################################################################################
"""
``rattail.pyramid.views.batches`` -- Batch Views
"""
from rattail.pyramid.views.batches.params import *
def includeme(config):
config.include('rattail.pyramid.views.batches.core')
config.include('rattail.pyramid.views.batches.params')
config.include('rattail.pyramid.views.batches.rows')

View file

@ -1,174 +0,0 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
################################################################################
#
# Rattail -- Retail Software Framework
# Copyright © 2010-2012 Lance Edgar
#
# This file is part of Rattail.
#
# Rattail is free software: you can redistribute it and/or modify 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.
#
# Rattail 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 Affero General Public License for
# more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with Rattail. If not, see <http://www.gnu.org/licenses/>.
#
################################################################################
"""
``rattail.pyramid.views.batches.core`` -- Core Batch Views
"""
import threading
from pyramid.httpexceptions import HTTPFound
from pyramid.renderers import render_to_response
from webhelpers.html import tags
import edbob
from edbob.pyramid import Session
from edbob.pyramid.forms import EnumFieldRenderer
from edbob.pyramid.progress import SessionProgress
from edbob.pyramid.views import SearchableAlchemyGridView, CrudView, View
import rattail
from rattail import batches
class BatchesGrid(SearchableAlchemyGridView):
mapped_class = rattail.Batch
config_prefix = 'batches'
sort = 'id'
def filter_map(self):
return self.make_filter_map(
exact=['id'],
ilike=['source', 'destination', 'description'])
def filter_config(self):
return self.make_filter_config(
filter_label_id="ID")
def sort_map(self):
return self.make_sort_map('source', 'id', 'destination', 'description')
def query(self):
q = self.make_query()
q = q.filter(rattail.Batch.executed == None)
return q
def grid(self):
g = self.make_grid()
g.configure(
include=[
g.source,
g.id.label("ID"),
g.destination,
g.description,
g.rowcount.label("Row Count"),
],
readonly=True)
if self.request.has_perm('batches.read'):
def rows(row):
return tags.link_to("View Rows", self.request.route_url(
'batch.rows', uuid=row.uuid))
g.add_column('rows', "", rows)
g.clickable = True
g.click_route_name = 'batch'
if self.request.has_perm('batches.update'):
g.editable = True
g.edit_route_name = 'batch.update'
if self.request.has_perm('batches.delete'):
g.deletable = True
g.delete_route_name = 'batch.delete'
return g
class BatchCrud(CrudView):
mapped_class = rattail.Batch
home_route = 'batches'
def fieldset(self, model):
fs = self.make_fieldset(model)
fs.action_type.set(renderer=EnumFieldRenderer(rattail.BATCH_ACTION))
fs.configure(
include=[
fs.source,
fs.id.label("ID"),
fs.destination,
fs.action_type,
fs.description,
fs.rowcount.label("Row Count").readonly(),
])
return fs
def post_delete(self, batch):
batch.drop_table()
class ExecuteBatch(View):
def execute_batch(self, batch):
session = edbob.Session()
batch = session.merge(batch)
progress = SessionProgress(self.request.session, 'batch.execute')
progress.session['success_msg'] = "Batch \"%s\" has been executed." % batch.description
progress.session['success_url'] = self.request.route_url('batches')
if batch.execute(progress):
session.commit()
else:
session.rollback()
session.close()
def __call__(self):
uuid = self.request.matchdict['uuid']
batch = Session.query(rattail.Batch).get(uuid) if uuid else None
if not batch:
return HTTPFound(location=self.request.route_url('batches'))
thread = threading.Thread(target=self.execute_batch, args=(batch,))
thread.start()
kwargs = {
'key': 'batch.execute',
'cancel_url': self.request.route_url('batch.rows', uuid=batch.uuid),
'cancel_msg': "Batch execution was cancelled.",
}
return render_to_response('/progress.mako', kwargs, request=self.request)
def includeme(config):
config.add_route('batches', '/batches')
config.add_view(BatchesGrid, route_name='batches',
renderer='/batches/index.mako',
permission='batches.list')
config.add_route('batch', '/batches/{uuid}')
config.add_view(BatchCrud, attr='read', route_name='batch',
renderer='/batches/read.mako',
permission='batches.read')
config.add_route('batch.update', '/batches/{uuid}/edit')
config.add_view(BatchCrud, attr='update', route_name='batch.update',
renderer='/batches/crud.mako',
permission='batches.update')
config.add_route('batch.delete', '/batches/{uuid}/delete')
config.add_view(BatchCrud, attr='delete', route_name='batch.delete',
permission='batches.delete')
config.add_route('batch.execute', '/batches/{uuid}/execute')
config.add_view(ExecuteBatch, route_name='batch.execute',
permission='batches.execute')

View file

@ -1,52 +0,0 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
################################################################################
#
# Rattail -- Retail Software Framework
# Copyright © 2010-2012 Lance Edgar
#
# This file is part of Rattail.
#
# Rattail is free software: you can redistribute it and/or modify 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.
#
# Rattail 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 Affero General Public License for
# more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with Rattail. If not, see <http://www.gnu.org/licenses/>.
#
################################################################################
"""
``rattail.pyramid.views.batches.params`` -- Batch Parameter Views
"""
from edbob.pyramid.views import View
__all__ = ['BatchParamsView']
class BatchParamsView(View):
provider_name = None
def render_kwargs(self):
return {}
def __call__(self):
if self.request.POST:
if self.set_batch_params():
return HTTPFound(location=self.request.get_referer())
kwargs = self.render_kwargs()
kwargs['provider'] = self.provider_name
return kwargs
def includeme(config):
config.include('rattail.pyramid.views.batches.params.labels')

View file

@ -1,51 +0,0 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
################################################################################
#
# Rattail -- Retail Software Framework
# Copyright © 2010-2012 Lance Edgar
#
# This file is part of Rattail.
#
# Rattail is free software: you can redistribute it and/or modify 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.
#
# Rattail 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 Affero General Public License for
# more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with Rattail. If not, see <http://www.gnu.org/licenses/>.
#
################################################################################
"""
``rattail.pyramid.views.batches.params.printlabels`` -- Print Labels Batch
"""
from edbob.pyramid import Session
import rattail
from rattail.pyramid.views.batches.params import BatchParamsView
class PrintLabels(BatchParamsView):
provider_name = 'print_labels'
def render_kwargs(self):
q = Session.query(rattail.LabelProfile)
q = q.order_by(rattail.LabelProfile.ordinal)
profiles = [(x.code, x.description) for x in q]
return {'label_profiles': profiles}
def includeme(config):
config.add_route('batch_params.print_labels', '/batches/params/print-labels')
config.add_view(PrintLabels, route_name='batch_params.print_labels',
renderer='/batches/params/print_labels.mako',
permission='batches.print_labels')

View file

@ -1,220 +0,0 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
################################################################################
#
# Rattail -- Retail Software Framework
# Copyright © 2010-2012 Lance Edgar
#
# This file is part of Rattail.
#
# Rattail is free software: you can redistribute it and/or modify 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.
#
# Rattail 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 Affero General Public License for
# more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with Rattail. If not, see <http://www.gnu.org/licenses/>.
#
################################################################################
"""
``rattail.pyramid.views.batches.rows`` -- Batch Row Views
"""
from pyramid.httpexceptions import HTTPFound
from edbob.pyramid import Session
from edbob.pyramid.views import SearchableAlchemyGridView, CrudView
import rattail
from rattail.pyramid.forms import GPCFieldRenderer
def field_with_renderer(field, column):
if column.sil_name == 'F01': # UPC
field = field.with_renderer(GPCFieldRenderer)
elif column.sil_name == 'F95': # Shelf Tag Type
q = Session.query(rattail.LabelProfile)
q = q.order_by(rattail.LabelProfile.ordinal)
field = field.dropdown(options=[(x.description, x.code) for x in q])
return field
def BatchRowsGrid(request):
uuid = request.matchdict['uuid']
batch = Session.query(rattail.Batch).get(uuid) if uuid else None
if not batch:
return HTTPFound(location=request.route_url('batches'))
class BatchRowsGrid(SearchableAlchemyGridView):
mapped_class = batch.rowclass
config_prefix = 'batch.%s' % batch.uuid
sort = 'ordinal'
def filter_map(self):
fmap = self.make_filter_map()
for column in batch.columns:
if column.visible:
if column.data_type.startswith('CHAR'):
fmap[column.name] = self.filter_ilike(
getattr(batch.rowclass, column.name))
else:
fmap[column.name] = self.filter_exact(
getattr(batch.rowclass, column.name))
return fmap
def filter_config(self):
config = self.make_filter_config()
for column in batch.columns:
if column.visible:
config['filter_label_%s' % column.name] = column.display_name
return config
def grid(self):
g = self.make_grid()
include = [g.ordinal.label("Row")]
for column in batch.columns:
if column.visible:
field = getattr(g, column.name)
field = field_with_renderer(field, column)
field = field.label(column.display_name)
include.append(field)
g.column_titles[field.key] = '%s - %s - %s' % (
column.sil_name, column.description, column.data_type)
g.configure(include=include, readonly=True)
route_kwargs = lambda x: {'batch_uuid': x.batch.uuid, 'uuid': x.uuid}
if self.request.has_perm('batch_rows.read'):
g.clickable = True
g.click_route_name = 'batch_row.read'
g.click_route_kwargs = route_kwargs
if self.request.has_perm('batch_rows.update'):
g.editable = True
g.edit_route_name = 'batch_row.update'
g.edit_route_kwargs = route_kwargs
if self.request.has_perm('batch_rows.delete'):
g.deletable = True
g.delete_route_name = 'batch_row.delete'
g.delete_route_kwargs = route_kwargs
return g
def render_kwargs(self):
return {'batch': batch}
grid = BatchRowsGrid(request)
grid.batch = batch
return grid
def batch_rows_grid(request):
grid = BatchRowsGrid(request)
return grid()
def batch_rows_delete(request):
grid = BatchRowsGrid(request)
grid._filter_config = grid.filter_config()
rows = grid.make_query()
count = rows.count()
rows.delete(synchronize_session=False)
grid.batch.rowcount -= count
request.session.flash("Deleted %d rows from batch." % count)
return HTTPFound(location=request.route_url('batch.rows', uuid=grid.batch.uuid))
def batch_row_crud(request, attr):
batch_uuid = request.matchdict['batch_uuid']
batch = Session.query(rattail.Batch).get(batch_uuid)
if not batch:
return HTTPFound(location=request.route_url('batches'))
row_uuid = request.matchdict['uuid']
row = Session.query(batch.rowclass).get(row_uuid)
if not row:
return HTTPFound(location=request.route_url('batch', uuid=batch.uuid))
class BatchRowCrud(CrudView):
mapped_class = batch.rowclass
pretty_name = "Batch Row"
@property
def home_url(self):
return self.request.route_url('batch.rows', uuid=batch.uuid)
@property
def cancel_url(self):
return self.home_url
def fieldset(self, model):
fs = self.make_fieldset(model)
include = [fs.ordinal.label("Row Number").readonly()]
for column in batch.columns:
field = getattr(fs, column.name)
field = field_with_renderer(field, column)
field = field.label(column.display_name)
include.append(field)
fs.configure(include=include)
return fs
def flash_delete(self, row):
self.request.session.flash("Batch Row %d has been deleted."
% row.ordinal)
def post_delete(self, model):
batch.rowcount -= 1
crud = BatchRowCrud(request)
return getattr(crud, attr)()
def batch_row_read(request):
return batch_row_crud(request, 'read')
def batch_row_update(request):
return batch_row_crud(request, 'update')
def batch_row_delete(request):
return batch_row_crud(request, 'delete')
def includeme(config):
config.add_route('batch.rows', '/batches/{uuid}/rows')
config.add_view(batch_rows_grid, route_name='batch.rows',
renderer='/batches/rows/index.mako',
permission='batches.read')
config.add_route('batch.rows.delete', '/batches/{uuid}/rows/delete')
config.add_view(batch_rows_delete, route_name='batch.rows.delete',
permission='batch_rows.delete')
config.add_route('batch_row.read', '/batches/{batch_uuid}/{uuid}')
config.add_view(batch_row_read, route_name='batch_row.read',
renderer='/batches/rows/crud.mako',
permission='batch_rows.read')
config.add_route('batch_row.update', '/batches/{batch_uuid}/{uuid}/edit')
config.add_view(batch_row_update, route_name='batch_row.update',
renderer='/batches/rows/crud.mako',
permission='batch_rows.update')
config.add_route('batch_row.delete', '/batches/{batch_uuid}/{uuid}/delete')
config.add_view(batch_row_delete, route_name='batch_row.delete',
permission='batch_rows.delete')

View file

@ -1,108 +0,0 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
################################################################################
#
# Rattail -- Retail Software Framework
# Copyright © 2010-2012 Lance Edgar
#
# This file is part of Rattail.
#
# Rattail is free software: you can redistribute it and/or modify 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.
#
# Rattail 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 Affero General Public License for
# more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with Rattail. If not, see <http://www.gnu.org/licenses/>.
#
################################################################################
"""
``rattail.pyramid.views.brands`` -- Brand Views
"""
from edbob.pyramid.views import SearchableAlchemyGridView, CrudView
import rattail
class BrandsGrid(SearchableAlchemyGridView):
mapped_class = rattail.Brand
config_prefix = 'brands'
sort = 'name'
def filter_map(self):
return self.make_filter_map(ilike=['name'])
def filter_config(self):
return self.make_filter_config(
include_filter_name=True,
filter_type_name='lk')
def sort_map(self):
return self.make_sort_map('name')
def grid(self):
g = self.make_grid()
g.configure(
include=[
g.name,
],
readonly=True)
if self.request.has_perm('brands.read'):
g.clickable = True
g.click_route_name = 'brand.read'
if self.request.has_perm('brands.update'):
g.editable = True
g.edit_route_name = 'brand.update'
if self.request.has_perm('brands.delete'):
g.deletable = True
g.delete_route_name = 'brand.delete'
return g
class BrandCrud(CrudView):
mapped_class = rattail.Brand
home_route = 'brands'
def fieldset(self, model):
fs = self.make_fieldset(model)
fs.configure(
include=[
fs.name,
])
return fs
def includeme(config):
config.add_route('brands', '/brands')
config.add_view(BrandsGrid, route_name='brands',
renderer='/brands/index.mako',
permission='brands.list')
config.add_route('brand.create', '/brands/new')
config.add_view(BrandCrud, attr='create', route_name='brand.create',
renderer='/brands/crud.mako',
permission='brands.create')
config.add_route('brand.read', '/brands/{uuid}')
config.add_view(BrandCrud, attr='read', route_name='brand.read',
renderer='/brands/crud.mako',
permission='brands.read')
config.add_route('brand.update', '/brands/{uuid}/edit')
config.add_view(BrandCrud, attr='update', route_name='brand.update',
renderer='/brands/crud.mako',
permission='brands.update')
config.add_route('brand.delete', '/brands/{uuid}/delete')
config.add_view(BrandCrud, attr='delete', route_name='brand.delete',
permission='brands.delete')

View file

@ -1,88 +0,0 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
################################################################################
#
# Rattail -- Retail Software Framework
# Copyright © 2010-2012 Lance Edgar
#
# This file is part of Rattail.
#
# Rattail is free software: you can redistribute it and/or modify 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.
#
# Rattail 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 Affero General Public License for
# more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with Rattail. If not, see <http://www.gnu.org/licenses/>.
#
################################################################################
"""
``rattail.pyramid.views.categories`` -- Category Views
"""
from edbob.pyramid.views import GridView
from edbob.pyramid.views.crud import Crud
import rattail
class CategoryGrid(GridView):
mapped_class = rattail.Category
route_name = 'categories.list'
route_prefix = 'category'
def filter_map(self):
return self.make_filter_map(
exact=['number'],
ilike=['name'])
def search_config(self, fmap):
return self.make_search_config(
fmap,
include_filter_name=True,
filter_type_name='lk')
def grid_config(self, search, fmap):
return self.make_grid_config(search, fmap,
sort='number')
def sort_map(self):
return self.make_sort_map('number', 'name')
def grid(self, data, config):
g = self.make_grid(data, config)
g.configure(
include=[
g.number,
g.name,
],
readonly=True)
return g
class CategoryCrud(Crud):
mapped_class = rattail.Category
home_route = 'categories.list'
url_prefix = '/categories'
def fieldset(self, obj):
fs = self.make_fieldset(obj)
fs.configure(
include=[
fs.number,
fs.name,
])
return fs
def includeme(config):
CategoryGrid.add_route(config, 'categories.list', '/categories')
CategoryCrud.add_routes(config)

View file

@ -1,88 +0,0 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
################################################################################
#
# Rattail -- Retail Software Framework
# Copyright © 2010-2012 Lance Edgar
#
# This file is part of Rattail.
#
# Rattail is free software: you can redistribute it and/or modify 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.
#
# Rattail 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 Affero General Public License for
# more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with Rattail. If not, see <http://www.gnu.org/licenses/>.
#
################################################################################
"""
``rattail.pyramid.views.customergroups`` -- CustomerGroup Views
"""
from edbob.pyramid.views import SearchableAlchemyGridView, CrudView
import rattail
class CustomerGroupsGrid(SearchableAlchemyGridView):
mapped_class = rattail.CustomerGroup
config_prefix = 'customer_groups'
sort = 'name'
def filter_map(self):
return self.make_filter_map(ilike=['name'])
def filter_config(self):
return self.make_filter_config(
include_filter_name=True,
filter_type_name='lk')
def sort_map(self):
return self.make_sort_map('id', 'name')
def grid(self):
g = self.make_grid()
g.configure(
include=[
g.id.label("ID"),
g.name,
],
readonly=True)
return g
class CustomerGroupCrud(CrudView):
mapped_class = rattail.CustomerGroup
home_route = 'customer_groups'
pretty_name = "Customer Group"
def fieldset(self, model):
fs = self.make_fieldset(model)
fs.configure(
include=[
fs.id.label("ID"),
fs.name,
])
return fs
def includeme(config):
config.add_route('customer_groups', '/customer-groups')
config.add_view(CustomerGroupsGrid, route_name='customer_groups',
renderer='/customer_groups/index.mako',
permission='customer_groups.list')
config.add_route('customer_group.read', '/customer-groups/{uuid}')
config.add_view(CustomerGroupCrud, attr='read', route_name='customer_group.read',
renderer='/customer_groups/crud.mako',
permission='customer_groups.read')

View file

@ -1,121 +0,0 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
################################################################################
#
# Rattail -- Retail Software Framework
# Copyright © 2010-2012 Lance Edgar
#
# This file is part of Rattail.
#
# Rattail is free software: you can redistribute it and/or modify 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.
#
# Rattail 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 Affero General Public License for
# more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with Rattail. If not, see <http://www.gnu.org/licenses/>.
#
################################################################################
"""
``rattail.pyramid.views.customers`` -- Customer Views
"""
from sqlalchemy import and_
import edbob
from edbob.pyramid.views import SearchableAlchemyGridView, CrudView
from edbob.pyramid.forms import EnumFieldRenderer
import rattail
class CustomersGrid(SearchableAlchemyGridView):
mapped_class = rattail.Customer
config_prefix = 'customers'
sort = 'name'
clickable = True
def join_map(self):
return {
'email':
lambda q: q.outerjoin(rattail.CustomerEmailAddress, and_(
rattail.CustomerEmailAddress.parent_uuid == rattail.Customer.uuid,
rattail.CustomerEmailAddress.preference == 1)),
'phone':
lambda q: q.outerjoin(rattail.CustomerPhoneNumber, and_(
rattail.CustomerPhoneNumber.parent_uuid == rattail.Customer.uuid,
rattail.CustomerPhoneNumber.preference == 1)),
}
def filter_map(self):
return self.make_filter_map(
exact=['id'],
ilike=['name'],
email=self.filter_ilike(rattail.CustomerEmailAddress.address),
phone=self.filter_ilike(rattail.CustomerPhoneNumber.number))
def filter_config(self):
return self.make_filter_config(
include_filter_name=True,
filter_type_name='lk',
filter_label_phone="Phone Number",
filter_label_email="Email Address",
filter_label_id="ID")
def sort_map(self):
return self.make_sort_map(
'id', 'name',
email=self.sorter(rattail.CustomerEmailAddress.address),
phone=self.sorter(rattail.CustomerPhoneNumber.number))
def grid(self):
g = self.make_grid()
g.configure(
include=[
g.id.label("ID"),
g.name,
g.phone.label("Phone Number"),
g.email.label("Email Address"),
],
readonly=True)
g.click_route_name = 'customer.read'
return g
class CustomerCrud(CrudView):
mapped_class = rattail.Customer
home_route = 'customers'
def fieldset(self, model):
fs = self.make_fieldset(model)
fs.email_preference.set(renderer=EnumFieldRenderer(edbob.EMAIL_PREFERENCE))
fs.configure(
include=[
fs.id.label("ID"),
fs.name,
fs.phone.label("Phone Number"),
fs.email.label("Email Address"),
fs.email_preference,
])
return fs
def includeme(config):
config.add_route('customers', '/customers')
config.add_view(CustomersGrid, route_name='customers',
renderer='/customers/index.mako',
permission='customers.list')
config.add_route('customer.read', '/customers/{uuid}')
config.add_view(CustomerCrud, attr='read', route_name='customer.read',
renderer='/customers/read.mako',
permission='customers.read')

View file

@ -1,99 +0,0 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
################################################################################
#
# Rattail -- Retail Software Framework
# Copyright © 2010-2012 Lance Edgar
#
# This file is part of Rattail.
#
# Rattail is free software: you can redistribute it and/or modify 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.
#
# Rattail 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 Affero General Public License for
# more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with Rattail. If not, see <http://www.gnu.org/licenses/>.
#
################################################################################
"""
``rattail.pyramid.views.departments`` -- Department Views
"""
from edbob.pyramid.views import SearchableAlchemyGridView, AlchemyGridView
import rattail
class DepartmentsGrid(SearchableAlchemyGridView):
mapped_class = rattail.Department
config_prefix = 'departments'
sort = 'name'
def filter_map(self):
return self.make_filter_map(ilike=['name'])
def filter_config(self):
return self.make_filter_config(
include_filter_name=True,
filter_type_name='lk')
def sort_map(self):
return self.make_sort_map('number', 'name')
def grid(self):
g = self.make_grid()
g.configure(
include=[
g.number,
g.name,
],
readonly=True)
return g
class DepartmentsByVendorGrid(AlchemyGridView):
mapped_class = rattail.Department
config_prefix = 'departments.by_vendor'
checkboxes = True
partial_only = True
def query(self):
q = self.make_query()
q = q.outerjoin(rattail.Product)
q = q.join(rattail.ProductCost)
q = q.join(rattail.Vendor)
q = q.filter(rattail.Vendor.uuid == self.request.params['uuid'])
q = q.distinct()
q = q.order_by(rattail.Department.name)
return q
def grid(self):
g = self.make_grid()
g.configure(
include=[
g.name,
],
readonly=True)
return g
def includeme(config):
config.add_route('departments', '/departments')
config.add_view(DepartmentsGrid, route_name='departments',
renderer='/departments/index.mako',
permission='departments.list')
config.add_route('departments.by_vendor', '/departments/by-vendor')
config.add_view(DepartmentsByVendorGrid, route_name='departments.by_vendor',
permission='departments.list')

View file

@ -1,98 +0,0 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
################################################################################
#
# Rattail -- Retail Software Framework
# Copyright © 2010-2012 Lance Edgar
#
# This file is part of Rattail.
#
# Rattail is free software: you can redistribute it and/or modify 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.
#
# Rattail 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 Affero General Public License for
# more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with Rattail. If not, see <http://www.gnu.org/licenses/>.
#
################################################################################
"""
``rattail.pyramid.views.employees`` -- Employee Views
"""
from sqlalchemy import and_
import edbob
from edbob.pyramid.forms import AssociationProxyField
from edbob.pyramid.views import SearchableAlchemyGridView
import rattail
class EmployeesGrid(SearchableAlchemyGridView):
mapped_class = rattail.Employee
config_prefix = 'employees'
sort = 'first_name'
def join_map(self):
return {
'phone':
lambda q: q.outerjoin(rattail.EmployeePhoneNumber, and_(
rattail.EmployeePhoneNumber.parent_uuid == rattail.Employee.uuid,
rattail.EmployeePhoneNumber.preference == 1)),
}
def filter_map(self):
return self.make_filter_map(
first_name=self.filter_ilike(edbob.Person.first_name),
last_name=self.filter_ilike(edbob.Person.last_name),
phone=self.filter_ilike(rattail.EmployeePhoneNumber.number))
def filter_config(self):
return self.make_filter_config(
include_filter_first_name=True,
filter_type_first_name='lk',
include_filter_last_name=True,
filter_type_last_name='lk',
filter_label_phone="Phone Number")
def sort_map(self):
return self.make_sort_map(
first_name=self.sorter(edbob.Person.first_name),
last_name=self.sorter(edbob.Person.last_name),
phone=self.sorter(rattail.EmployeePhoneNumber.number))
def query(self):
q = self.make_query()
q = q.join(edbob.Person)
if not self.request.has_perm('employees.edit'):
q = q.filter(rattail.Employee.status == rattail.EMPLOYEE_STATUS_CURRENT)
return q
def grid(self):
g = self.make_grid()
g.append(AssociationProxyField('first_name'))
g.append(AssociationProxyField('last_name'))
g.configure(
include=[
g.first_name,
g.last_name,
g.phone.label("Phone Number"),
],
readonly=True)
return g
def includeme(config):
config.add_route('employees', '/employees')
config.add_view(EmployeesGrid, route_name='employees',
renderer='/employees/index.mako',
permission='employees.list')

View file

@ -1,172 +0,0 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
################################################################################
#
# Rattail -- Retail Software Framework
# Copyright © 2010-2012 Lance Edgar
#
# This file is part of Rattail.
#
# Rattail is free software: you can redistribute it and/or modify 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.
#
# Rattail 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 Affero General Public License for
# more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with Rattail. If not, see <http://www.gnu.org/licenses/>.
#
################################################################################
"""
``rattail.pyramid.views.labels`` -- Label Views
"""
from pyramid.httpexceptions import HTTPFound
import formalchemy
from webhelpers.html import HTML
from edbob.pyramid import Session
from edbob.pyramid.views import SearchableAlchemyGridView, CrudView
import rattail
class ProfilesGrid(SearchableAlchemyGridView):
mapped_class = rattail.LabelProfile
config_prefix = 'label_profiles'
sort = 'ordinal'
def filter_map(self):
return self.make_filter_map(
exact=['code'],
ilike=['description'])
def sort_map(self):
return self.make_sort_map('ordinal', 'code', 'description')
def grid(self):
g = self.make_grid()
g.configure(
include=[
g.ordinal,
g.code,
g.description,
],
readonly=True)
if self.request.has_perm('label_profiles.read'):
g.clickable = True
g.click_route_name = 'label_profile.read'
if self.request.has_perm('label_profiles.update'):
g.editable = True
g.edit_route_name = 'label_profile.update'
if self.request.has_perm('label_profiles.delete'):
g.deletable = True
g.delete_route_name = 'label_profile.delete'
return g
class ProfileCrud(CrudView):
mapped_class = rattail.LabelProfile
home_route = 'label_profiles'
pretty_name = "Label Profile"
update_cancel_route = 'label_profile.read'
def fieldset(self, model):
class FormatFieldRenderer(formalchemy.TextAreaFieldRenderer):
def render_readonly(self, **kwargs):
value = self.raw_value
if not value:
return ''
return HTML.tag('pre', c=value)
def render(self, **kwargs):
kwargs.setdefault('size', (80, 8))
return super(FormatFieldRenderer, self).render(**kwargs)
fs = self.make_fieldset(model)
fs.format.set(renderer=FormatFieldRenderer)
fs.configure(
include=[
fs.ordinal,
fs.code,
fs.description,
fs.printer_spec,
fs.formatter_spec,
fs.format,
])
return fs
def post_save_url(self, form):
return self.request.route_url('label_profile.read',
uuid=form.fieldset.model.uuid)
def printer_settings(request):
uuid = request.matchdict['uuid']
profile = Session.query(rattail.LabelProfile).get(uuid) if uuid else None
if not profile:
return HTTPFound(location=request.route_url('label_profiles'))
read_profile = HTTPFound(location=request.route_url(
'label_profile.read', uuid=profile.uuid))
printer = profile.get_printer()
if not printer:
request.session.flash("Label profile \"%s\" does not have a functional "
"printer spec." % profile)
return read_profile
if not printer.required_settings:
request.session.flash("Printer class for label profile \"%s\" does not "
"require any settings." % profile)
return read_profile
if request.POST:
for setting in printer.required_settings:
if setting in request.POST:
profile.save_printer_setting(setting, request.POST[setting])
return read_profile
return {'profile': profile, 'printer': printer}
def includeme(config):
config.add_route('label_profiles', '/labels/profiles')
config.add_view(ProfilesGrid, route_name='label_profiles',
renderer='/labels/profiles/index.mako',
permission='label_profiles.list')
config.add_route('label_profile.create', '/labels/profiles/new')
config.add_view(ProfileCrud, attr='create', route_name='label_profile.create',
renderer='/labels/profiles/crud.mako',
permission='label_profiles.create')
config.add_route('label_profile.read', '/labels/profiles/{uuid}')
config.add_view(ProfileCrud, attr='read', route_name='label_profile.read',
renderer='/labels/profiles/read.mako',
permission='label_profiles.read')
config.add_route('label_profile.update', '/labels/profiles/{uuid}/edit')
config.add_view(ProfileCrud, attr='update', route_name='label_profile.update',
renderer='/labels/profiles/crud.mako',
permission='label_profiles.update')
config.add_route('label_profile.delete', '/labels/profiles/{uuid}/delete')
config.add_view(ProfileCrud, attr='delete', route_name='label_profile.delete',
permission='label_profiles.delete')
config.add_route('label_profile.printer_settings', '/labels/profiles/{uuid}/printer')
config.add_view(printer_settings, route_name='label_profile.printer_settings',
renderer='/labels/profiles/printer.mako',
permission='label_profiles.update')

View file

@ -1,294 +0,0 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
################################################################################
#
# Rattail -- Retail Software Framework
# Copyright © 2010-2012 Lance Edgar
#
# This file is part of Rattail.
#
# Rattail is free software: you can redistribute it and/or modify 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.
#
# Rattail 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 Affero General Public License for
# more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with Rattail. If not, see <http://www.gnu.org/licenses/>.
#
################################################################################
"""
``rattail.pyramid.views.products`` -- Product Views
"""
import threading
from sqlalchemy import and_
from sqlalchemy.orm import joinedload
from webhelpers.html.tags import link_to
from pyramid.httpexceptions import HTTPFound
from pyramid.renderers import render_to_response
import edbob
from edbob.pyramid import Session
from edbob.pyramid.progress import SessionProgress
from edbob.pyramid.views import SearchableAlchemyGridView, CrudView
import rattail
import rattail.labels
from rattail import sil
from rattail import batches
from rattail.exceptions import LabelPrintingError
from rattail.pyramid.forms import GPCFieldRenderer, PriceFieldRenderer
class ProductsGrid(SearchableAlchemyGridView):
mapped_class = rattail.Product
config_prefix = 'products'
sort = 'description'
clickable = True
def join_map(self):
def join_vendor(q):
q = q.outerjoin(
rattail.ProductCost,
and_(
rattail.ProductCost.product_uuid == rattail.Product.uuid,
rattail.ProductCost.preference == 1,
))
q = q.outerjoin(rattail.Vendor)
return q
return {
'brand':
lambda q: q.outerjoin(rattail.Brand),
'department':
lambda q: q.outerjoin(rattail.Department,
rattail.Department.uuid == rattail.Product.department_uuid),
'subdepartment':
lambda q: q.outerjoin(rattail.Subdepartment,
rattail.Subdepartment.uuid == rattail.Product.subdepartment_uuid),
'regular_price':
lambda q: q.outerjoin(rattail.ProductPrice,
rattail.ProductPrice.uuid == rattail.Product.regular_price_uuid),
'current_price':
lambda q: q.outerjoin(rattail.ProductPrice,
rattail.ProductPrice.uuid == rattail.Product.current_price_uuid),
'vendor':
join_vendor,
}
def filter_map(self):
return self.make_filter_map(
exact=['upc'],
ilike=['description', 'size'],
brand=self.filter_ilike(rattail.Brand.name),
department=self.filter_ilike(rattail.Department.name),
subdepartment=self.filter_ilike(rattail.Subdepartment.name),
vendor=self.filter_ilike(rattail.Vendor.name))
def filter_config(self):
return self.make_filter_config(
include_filter_upc=True,
filter_type_upc='eq',
filter_label_upc="UPC",
include_filter_brand=True,
filter_type_brand='lk',
include_filter_description=True,
filter_type_description='lk',
include_filter_department=True,
filter_type_department='lk',
include_filter_vendor=True,
filter_type_vendor='lk')
def sort_map(self):
return self.make_sort_map(
'upc', 'description', 'size',
brand=self.sorter(rattail.Brand.name),
department=self.sorter(rattail.Department.name),
subdepartment=self.sorter(rattail.Subdepartment.name),
regular_price=self.sorter(rattail.ProductPrice.price),
current_price=self.sorter(rattail.ProductPrice.price),
vendor=self.sorter(rattail.Vendor.name))
def query(self):
q = self.make_query()
q = q.options(joinedload(rattail.Product.brand))
q = q.options(joinedload(rattail.Product.department))
q = q.options(joinedload(rattail.Product.subdepartment))
q = q.options(joinedload(rattail.Product.regular_price))
q = q.options(joinedload(rattail.Product.current_price))
q = q.options(joinedload(rattail.Product.vendor))
return q
def grid(self):
g = self.make_grid()
g.upc.set(renderer=GPCFieldRenderer)
g.regular_price.set(renderer=PriceFieldRenderer)
g.current_price.set(renderer=PriceFieldRenderer)
g.configure(
include=[
g.upc.label("UPC"),
g.brand,
g.description,
g.size,
g.subdepartment,
g.vendor,
g.regular_price.label("Reg. Price"),
g.current_price.label("Cur. Price"),
],
readonly=True)
g.click_route_name = 'product.read'
q = Session.query(rattail.LabelProfile)
if q.count():
def labels(row):
return link_to("Print", '#', class_='print-label')
g.add_column('labels', "Labels", labels)
return g
def render_kwargs(self):
q = Session.query(rattail.LabelProfile)
q = q.order_by(rattail.LabelProfile.ordinal)
return {'label_profiles': q.all()}
class ProductCrud(CrudView):
mapped_class = rattail.Product
home_route = 'products'
def fieldset(self, model):
fs = self.make_fieldset(model)
fs.upc.set(renderer=GPCFieldRenderer)
fs.regular_price.set(renderer=PriceFieldRenderer)
fs.current_price.set(renderer=PriceFieldRenderer)
fs.configure(
include=[
fs.upc.label("UPC"),
fs.brand,
fs.description,
fs.size,
fs.department,
fs.subdepartment,
fs.regular_price,
fs.current_price,
])
return fs
def print_labels(request):
profile = request.params.get('profile')
profile = Session.query(rattail.LabelProfile).get(profile) if profile else None
if not profile:
return {'error': "Label profile not found"}
product = request.params.get('product')
product = Session.query(rattail.Product).get(product) if product else None
if not product:
return {'error': "Product not found"}
quantity = request.params.get('quantity')
if not quantity.isdigit():
return {'error': "Quantity must be numeric"}
quantity = int(quantity)
printer = profile.get_printer()
if not printer:
return {'error': "Couldn't get printer from label profile"}
try:
printer.print_labels([(product, quantity)])
except LabelPrintingError, error:
return {'error': str(error)}
return {}
class CreateProductsBatch(ProductsGrid):
def make_batch(self, provider):
session = edbob.Session()
self._filter_config = self.filter_config()
self._sort_config = self.sort_config()
products = self.make_query(session)
progress = SessionProgress(self.request.session, 'products.batch')
batch = provider.make_batch(session, products, progress)
if not batch:
session.rollback()
session.close()
return
session.commit()
session.refresh(batch)
session.close()
progress.session.load()
progress.session['success_url'] = self.request.route_url('batch', uuid=batch.uuid)
progress.session['success_msg'] = "Batch \"%s\" has been created." % batch.description
progress.session.save()
def __call__(self):
if self.request.POST:
provider = self.request.POST.get('provider')
if provider:
provider = batches.get_provider(provider)
if provider:
if self.request.POST.get('params') == 'True':
provider.set_params(Session(), **self.request.POST)
else:
try:
url = self.request.route_url('batch_params.%s' % provider.name)
except KeyError:
pass
else:
self.request.session['referer'] = self.request.current_route_url()
return HTTPFound(location=url)
thread = threading.Thread(target=self.make_batch, args=(provider,))
thread.start()
kwargs = {
'key': 'products.batch',
'cancel_url': self.request.route_url('products'),
'cancel_msg': "Batch creation was cancelled.",
}
return render_to_response('/progress.mako', kwargs, request=self.request)
providers = [(x.name, x.description) for x in batches.iter_providers()]
return {'providers': providers}
def includeme(config):
config.add_route('products', '/products')
config.add_view(ProductsGrid, route_name='products',
renderer='/products/index.mako',
permission='products.list')
config.add_route('products.print_labels', '/products/labels')
config.add_view(print_labels, route_name='products.print_labels',
renderer='json', permission='products.print_labels')
config.add_route('products.create_batch', '/products/batch')
config.add_view(CreateProductsBatch, route_name='products.create_batch',
renderer='/products/batch.mako',
permission='batches.create')
config.add_route('product.read', '/products/{uuid}')
config.add_view(ProductCrud, attr='read', route_name='product.read',
renderer='/products/read.mako',
permission='products.read')

Some files were not shown because too many files have changed in this diff Show more