App-Dochazka-REST
view release on metacpan or search on metacpan
- Model/Employee.pm: fix bug "get 500 Server Error when I send a request for
bogus resource 'privhistory/eid/asdf'"
- t/dispatch/privhistory/: add quite a few tests
0.212 2014-10-25 23:23 CEST
- update MANIFEST to current state
- change 'privhistory' to 'priv'
- add new 'priv/current/?:ts' resource
- t/: start adapting tests
0.213 2014-10-26 22:36 CET
- config/dispatch/priv_Config.pm: add "priv/current/eid/:eid/?:ts" and
"priv/current/nick/:nick/?:ts" resources; unclear how privhistory records
will be added and deleted
- dispatch_Message_en.conf: remove duplicate message
- Dispatch/Privhistory.pm: repurpose _current_priv so it works for the new
resources added in this commit; rename _eid and _nick to _history_eid and
_history_nick, respectively
0.214 2014-10-27 13:12 CET
- config/dispatch/top_Config.pm: add 'cli' property to all top-level
resource definitions; put into alphabetical order; rename 'privhistory'
to 'priv'
- Dispatch.pm: make 'docu' resource return "resource => ''" when called
without an argument, instead of "resource => undef"; make
"not_implemented" resource include HTTP method in payload
0.215 2014-10-27 13:39 CET
- config/dispatch/employee_Config.pm, config/dispatch/priv_Config.pm: add
'cli' properties to all resource definitions
- ../development-checklist: complete manual CLI testing of all top-level
and employee resources
0.216 2014-10-27 14:29 CET
- config/dispatch/priv_Config.pm: fix 'priv/eid/:eid/?:ts' and
'priv/nick/:nick/?:ts' resource definitions
- config/dispatch_Message_en.conf: add DISPATCH_EMPLOYEE_CURRENT_PRIV_AT_TIMESTAMP
- Dispatch/Privhistory.pm: fix bugs in _current_priv
- Model/Shared.pm: fix bugs in priv_by_eid and _st_by_eid
0.217 2014-10-27 17:53 CET
- config/dispatch/priv_Config.pm: eliminate duplicate 'priv' resource
definition that was giving me grief; fix two wrong ACL profiles;
eliminate 'priv/history/?:tsrange' and replace it with
'priv/history/current/?:tsrange'; add 'priv/history/phid/:phid' resource
- config/dispatch/top_Config.pm: tweak resource documentation
- dispatch_Message_en.conf: tweak priv-related messages
- Dispatch/Privhistory.pm: tweak priv-related messages, add
'priv/history/phid/:phid' resource target
- t/: add new tests; adapt existing tests to current state
0.218 2014-10-27 20:31 CET
- config/dispatch_Message_en.conf: tweak bad/missing parameter message
- Dispatch/Employee.pm: handle non-integer EID values more gracefully
- Test.pm: add descriptions to docu_check tests
- t/dispatch/employee/eid.t: add descriptions to tests; add some new "negative"
test cases
0.219 2014-10-27 22:33 CET
- t/: clean up units; merge all employee tests into a single unit (employee.t);
merge all priv tests into a single unit (priv.t)
- config/dispatch/priv_Config.pm: alphabetical order tweak
- Test.pm: export all the test functions (EXPORT instead of EXPORT_OK); bring
in create_testing_employee and delete_testing_employee
- STATUS: all top-level, employee, and priv resources implemented and tested,
ready to start work on activity, interval, etc. resources
0.220 2014-10-28 09:35 CET
- MANIFEST: add Dispatch/Activity.pm
- config/dispatch/activity_Config.pm: add 'activity/all' resource definition
- config/dispatch/top_Config.pm: add 'activity' resource definition; rename
'_not_implemented' target to 'not_implemented' because we are now exporting
it from Dispatch/Shared.pm
- config/dispatch_Config.pm: uncomment DISPATCH_RESOURCES_ACTIVITY
- Dispatch.pm: import not_implemented target from Dispatch/Shared.pm
- Dispatch/Employee.pm: fix debug messages
- Dispatch/Privhistory.pm: import priv_by_eid from the right module
- Dispatch/Shared.pm: export 'not_implemented' routine
- Resource.pm: add 'use App::Dochazka::REST::Dispatch::Activity' so activity
targets will work
0.221 2014-10-28 12:08 CET
- MANIFEST: add t/dispatch/activity.t
- config/sql/: add 'SQL_ACTIVITY_SELECT_ALL'; add 'disabled'
field to 'activities' table; adapt SQL statements where appropriate
- t/dispatch/activity.t: new unit for activity dispatch tests
0.222 2014-10-28 21:51 CET
- config/dispatch/activity_Config.pm: activate 'activity/all' resource for GET
requests
- config/sql/activity_Config.pm: divide 'activity/all' SELECT into two variants
(with and without disabled activities)
- Dispatch/Activity.pm: implement _get_all_without_disabled and
_get_all_including_disabled dispatch targets
- Model/Activity.pm: eliminate superfluous 'use' lines; implement
'get_all_activities' routine
- t/dispatch/activity.t: add tests for GET activity/all
0.223 2014-10-28 22:37 CET
- REST_MetaConfig.pm: add META_DOCHAZKA_RESOURCE_ACLS
- config/dispatch/top_Config.pm: bring comments up-to-date
- Dispatch.pm: modify "_help_post" ('docu' dispatch target) to display ACL
profile of queried resource as well as its documentation
- Resource.pm: modify path initializer to populate META_DOCHAZKA_RESOURCE_ACLS
0.224 2014-10-29 08:07 CET
- activity_Config.pm: add 'activity/all/disabled' resource definition
- Dispatch/Activity.pm: comment out 'get_all' target
- t/dispatch/activity.t: add basic tests for 'activity/all/disabled'; add FIXME
lines for future tests
0.225 2014-10-29 09:33 CET
- dispatch/activity_Config.pm: add 'activity/aid/:aid' resource definition
- t/dispatch/activity.t: add initial tests for 'activity/aid/:aid'
0.226 2014-10-29 10:34 CET
- Build.PL: require 0.172 of App::Dochazka (for 'disabled' field)
- config/sql/activity_Config.pm: make SELECTs return disabled field
- t/dispatch/activity.t: add some tests for 'activity/aid/:aid' resource (GET)
- Dispatch/Activity.pm: implement 'activity/aid/:aid' resource for GET requests
0.227 2014-10-29 13:54 CET
- Dispatch/{Employee,Activity}.pm: fix bug where PUT request with request body
consisting of just a number or just a string (e.g. '9', or '"asdf"') was
causing the server to vomit 500
- activity_Config.pm: support PUT and DELETE requests for 'activity/aid/:aid';
add resource definition for 'activity/code/:code'
- dispatch_Message_en.conf: add DISPATCH_CODE_DOES_NOT_EXIST
- Dispatch/Activity.pm: support PUT and DELETE requests for 'activity/aid/:aid';
add support for 'activity/code/:code'
- Model/Activity.pm: fix 'update' routine to support the new 'disabled' field
- Model/Shared.pm: make a note in 'cud' routine that order of attrs must match
the '?' characters in the SQL statement
- Test.pm: add 'create_testing_activity' and 'delete_testing_activity'
- t/dispatch/activity.t: add a bunch of tests
0.228 2014-10-29 16:43 CET
- Dispatch/Activity.pm: trying to get _insert_activity to deal gracefully with
bogus JSON
- t/: add DELETE tests for 'activity/aid/:aid'; add tests for
'activity/code/:code'; tweak tests
0.229 2014-10-30 13:07 CET
- Build.PL: require App::Dochazka 0.174 for new 'filter' routine
- config/sql/dbinit_Config.pm: add check constraints for 'nick' (employees) and
'code' (activities) fields because folks might try to insert an activity code
like '!!!' or commit other similar bogusness
- Dispatch/Shared.pm: add new 'pre_update_comparison' routine for validating
updates
- Dispatch/Activity.pm: refactor _update_activity and _insert_activity so they
filter out bogus properties
- Dispatch/Employee.pm: refactor _update_employee and _insert_employee so they
filter out bogus properties
- t/: adapt tests to current state; add some tests that attempt to
insert/update bogus properties
0.230 2014-10-30 18:21 CET
- activity_Config.pm: add resource definitions for 'activity/aid' and 'activity/code'
- t/dispatch/activity.t: add DELETE tests for 'activity/code/:code'
0.231 2014-10-30 19:37 CET
- Dispatch/Employee.pm: handle an edge case ($eid might be undefined due to
bogus user input)
- t/dispatch/employee.t: label some tests; add tests for some edge cases
- t/dispatch/activity.t: add tests for some edge cases
0.232 2014-10-30 22:07 CET
- activity_Config.pm: activate 'activity/code' dispatch target
- Dispatch/Activity.pm: adapt '_code' dispatch target to handle POST
- t/dispatch/activity.t: add tests
0.233 2014-10-31 13:30 CET
- realize that there are resources where the GET method needs ACL profile of,
e.g., "active" but the remaining methods (PUT, POST, DELETE) need to be
available only to administrators
- Resource.pm: modify 'forbidden' method to handle resources with ACL profiles
defined for each HTTP method separately
- config/dispatch/activity_Config.pm: define per-method ACL profiles where needed
- Model/Privhistory.pm: improve documentation of 'get_privhistory' routine
- Test.pm: add 'req_active', 'req_json_active', 'create_active_employee', and
'delete_active_employee' routines
- t/dispatch/activity.t: adapt tests to use the new routines in Test.pm and to
test the per-method ACL profile definitions
0.234 2014-10-31 16:48 CET
- config/dispatch/: convert 'documentation' property of resource definitions
from HTML to POD
- t/dispatch/activity.t: provide some tests for 'activity/aid' and
'activity/code' resources
0.235 2014-10-31 17:29 CET
- Dispatch.pm: do not chomp off linebreaks when processing resource
documentation string
0.236 2014-10-31 21:29 CET
- Build.PL: require Pod::Simple::HTML (needed by 'docu/html' target)
- config/dispatch/: activate 'activity/aid' resource for POST; add '=pod'
line at top of documentation string on each resource; rename 'docu' target
from '_help_post' to '_docu'; add 'docu/html' resource definition; convert
some remaining documentation from HTML to POD
- Dispatch.pm: add a '_docu_html' target
- Dispatch/Activity.pm: adapt '_aid' target for POST
- Test.pm: expand 'docu_check' routine to cover 'docu/html' resource as well as
straight 'docu'
- Util.pm: add a 'pod_to_html' conversion routine
- t/dispatch/activity.t: fill in remaining tests necessary to meet minimal
workflow expectations
- t/dispatch/top.t: add battery of 'docu/html' tests, mostly plagiarized from
'docu'
0.237 2014-11-01 14:11 CET
- rename Dispatch/Privhistory.pm to Dispatch/Priv.pm to match 'priv' resource
0.238 2014-11-03 10:30 CET
- add many schedule-related resources to development-checklist
- in new schedule_Config.pm file with schedule resource definitions
copied from priv_Config.pm, edit resource descriptions and documentation
strings
- in Model/Privhistory.pm, move 'get_privhistory' routine to Model/Shared.pm
and generalize into 'get_history'; make 'get_privhistory' and
'get_schedhistory' in Model/{Privhistory, Schedhistory}.pm be wrappers for this
new shared routine
- t/: adapt to current state
0.239 2014-11-03 12:15 CET
- renamed all 'priv/current/...' and 'schedule/current/...' resources
to 'priv/self/...' and 'schedule/self/...', respectively
- Dispatch/Priv.pm: renamed _get_current to _get_history_self; move
_current_priv logic to Dispatch/Shared.pm->current because we will call it
from Dispatch/Schedule.pm as well;
- Dispatch/Schedule.pm: ongoing adaptations
- t/: adapt to current state
0.240 2014-11-03 16:19 CET
- MANIFEST: add Dispatch/Schedule.pm, t/dispatch/schedule.t
- activity_Config.pm: add 'activity/help' resource definition
- priv_Config.pm, etc.: rename some resources and targets
(in particular s/current/self/ in resource names)
- dispatch_Config.pm, Resource.pm: activate schedule resources
- dispatch_Message_en.pm: add new DISPATCH_EMPLOYEE_SCHEDULE and
DISPATCH_EMPLOYEE_SCHEDULE_AS_AT messages
- config/sql/schedule_Config.pm: add new SQL_SCHEDHISTORY_SELECT_RANGE_BY_EID
and SQL_SCHEDHISTORY_SELECT_RANGE_BY_NICK params
- Dispatch/Shared.pm: adapt 'current' routine to work for both priv and
schedule resources
- Model/Shared.pm: fix some bugs
- Resource.pm: activate schedule resources
- t/dispatch/activity.t: add tests for 'activity/help'
- t/dispatch/schedule.t: add tests for "/schedule/eid/:eid/?:ts",
"/schedule/help", "/schedule/nick/:nick/?:ts", and "/schedule/self/?:ts"
resources
0.241 2014-11-03 22:32 CET
- Dispatch/Shared.pm: "numify" $eid in return value payload from dispatch
target 'current'; check for hashref instead of scalar now that we are
converting the schedule from JSON string into Perl hashref
- Model/Schedule.pm: rename 'get_json' to 'get_schedule_json' and add
'decode_schedule_json' for converting the schedule JSON string into a Perl
hashref
- Model/Shared.pm: return decoded schedule (hashref) from schedule_by_eid
- t/dispatch/schedule.t: uncomment/adapt some tests
- t/: get model units to run cleanly again
0.242 2014-11-04 08:30 CET
- config/dispatch/schedule_Config.pm: put resource definitions in alphabetical order;
add missing POD; add missing 'schedule/intervals' resource definition
0.243 2014-11-04 09:56 CET
- schedule_Config.pm, Dispatch/Schedule.pm: make 'schedule/history/...'
resources use "not_implemented" dispatch target so they don't vomit 500
0.244 2014-11-04 11:32 CET
- schedule_Config.pm: split 'schedule/intervals/?:shid' into two separate
resources for parsing clarity
0.245 2014-11-04 17:50 CET
- Build.PL: require App::Dochazka 0.175 for 'ssid' (instead of 'scratch_sid')
- schedule_Config.pm: 'schedule/intervals' is POST and DELETE only; activate
DELETE on 'schedule/intervals/:sid'; rename ':shid' parameter to ':sid'
- rename 'scratch_sid' field/property of intervals to 'ssid'
- dispatch_Message_en.conf: add DISPATCH_SCHEDINTVLS_MISSING,
DISPATCH_SCHEDULE_INSERT_OK, DISPATCH_SCHEDULE_NO_UPDATE
- Dispatch/Schedule.pm: add _intervals_post and _intervals_delete dispatch
targets
- move 'expurgate' logic to Model/Shared.pm and implement a wrapper method
in each model module
- Model/Schedintvls.pm: fix 'insert' method so it returns a sensible status
payload
- Test.pm: in docu_check, run 'payload' tests only if there is a payload;
add as-yet untested 'create_testing_schedule' and 'delete_testing_schedule'
routines
- t/: add new 'intervals.t' unit; adapt existing units to current state
0.246 2014-11-04 21:08 CET
- stabilization after the last commit
- t/dispatch/intervals.t: add some tests called for by development workflow
0.247 2014-11-04 22:21 CET
- add 'DISPATCH_SCHEDULE_EXISTS' message
- add 'schedule/all' and 'schedule/all/disabled' resource definitions
- add 'disabled' field to 'schedules' table
- Dispatch/Schedule.pm: when schedule already exists, return
'DISPATCH_SCHEDULE_OK'
- t/dispatch/intervals.t: test for 'DISPATCH_SCHEDULE_OK' when inserting the
same schedule a second time
0.248 2014-11-05 11:05 CET
- Build.PL: require App::Dochazka 0.176 to ensure Schedule objects have a
'disabled' property
- config/dispatch/schedule_Config.pm: activate 'schedule/all' and
'schedule/all/disabled' resources
- config/sql/schedule_Config.pm: add 'disabled' field to SQL statements;
add two new SQL statements to get all schedule records
- Dispatch/Schedule.pm: import 'get_all_schedules' and
'get_all_schedules_including_disabled' routines
- Model/Schedule.pm: implement 'get_all_schedules' and
'get_all_schedules_including_disabled' routines
0.249 2014-11-05 12:18 CET
- give 'schedule/all/...' dispatch targets more sensible names
- enable POST on 'schedule/intervals/:sid', including documentation
- t/dispatch/schedule.t: add 405 tests for 'schedule/all/...'
0.250 2014-11-05 17:54 CET
- Build.PL: require App::Dochazka 0.177 for TO_JSON method; require
App::CELL 0.201 to get rid of Data::Structure::Util
- Resource.pm: get rid of wacky debug code; add 'convert_blessed' to our
JSON 'encode' method call now that we have TO_JSON methods in all models;
this obviates the need to call 'unblessed'
- Data::Structure::Util does not work with perl 5.20, so it needs to go;
remove all mentions of it; fix resulting brokenness
- Util.pm: get rid of jury-rigged 'deep_copy' routine (use Storable::dclone
instead!)
0.251 2014-11-06 09:42 CET
- Dispatch/Schedule.pm->_intervals_delete was reporting success even when
nothing was actually deleted - fixed
- Model/Schedule.pm->schedule_all was crashing when no records found (because
$counter was not initialized) - fixed
- t/104-employee.t: deprecate expurgate in favor of TO_JSON
- t/dispatch/intervals.t: when no schedule records are in the database,
'schedule/all/...' will return 404 - fixed
- t/dispatch/schedule.t: add basic tests for 'schedule/all' and
'schedule/all/disabled'
0.252 2014-11-06 16:43 CET
- Build.PL: require App::Dochazka 0.181 for new boilerplate code
- schedule_Config.pm: rename '/schedule/intervals/:sid' to
'/schedule/sid/:sid'
- dbinit_Config.pm: add a trigger to make immutable/unupdatable the 'schedule'
field of the 'shedules' table
- add a 'SQL_SCHEDULE_UPDATE' statement to support updates on the
'schedules' table
- replace calls to 'expurgate' method with 'TO_JSON'
- Dispatch/Schedule.pm: implement _intervals_get and _schedule_post dispatch
targets and '_update_schedule' routine adapted from Employee.pm
- Model/Shedule.pm: override the boilerplate 'compare' method for this
model because the 'disabled' field needs special handling; implement
an 'update' method
- Resource.pm: fix a debug message
- t/107-schedule.t: add test case for 'update' method
- t/dispatch/intervals.t: add GET test case for '/schedule/sid/:sid' resource
0.253 2014-11-07 14:33 CET
- Test.pm: make a new 'req' routine that to replace the current rag-tag
collection of kludgey routines for generating HTTP requests against the
Plack::Test object
- t/dispatch/intervals.t: add 'POST schedule/sid/:sid' test cases; migrate the
entire unit to the new 'req' routine
- t/: move model tests into their own subdirectory and comment out 'skip_all'
so they run
- Model/: remove 'expurgate' method from all model modules (replaced by TO_JSON);
remove 'compare' method overlay (replaced by compare_disabled)
- t/model/activity.t: adapt tests, remove deprecated tests, add new tests
0.254 2014-11-07 16:19 CET
- t/dispatch/activity.t: migrate to new 'req' function
0.255 2014-11-07 22:12 CET
- t/dispatch/employee.t: strenuously migrate to the new 'req' routine
0.256 2014-11-08 20:30 CET
- t/dispatch/priv.t: migrate another unit to 'req'
0.257 2014-11-08 21:35 CET
- t/dispatch/schedule.t: migrate unit to 'req'
0.258 2014-11-09 09:10 CET
- t/dispatch/top.t: migrate unit to 'req'
- Test.pm: deprecate and eliminate kludgey testing routines (replaced by 'req')
0.259 2014-11-10 08:54 CET
- Model/Shared.pm: finally get up the courage to return 'NOTICE' status level
instead of 'OK' when SELECT statements return no records - this makes
"nothing found" easy to distinguish from "something found", while keeping "ERR"
reserved for DBI errors; add 'make_test_exists' to generate 'nick_exists',
'eid_exists', etc. etc. (to be used in all model modules)
- Dispatch/Activity.pm: adapt to above change
- Model/Employee.pm: revamp nick_exists and eid_exists (generalize these routines
and generate them at runtime for code re-use)
- Resource.pm: adapt to above change
- t/dispatch/activity.t: cleanup
- t/model/employee.t: cleanup
- not testing cleanly
0.260 2014-11-10 11:29 CET
- Dispatch/: cleanup
- Dispatch/Priv.pm: break out common code from _history_eid and _history_nick
into a separate '_history_end_game' routine
- Model/: cleanup
- Model/Shared.pm: fix make_test_exists; make get_history include both
EID and nick in the payload
- t/: adapt tests to current state
- tests running cleanly again
0.261 2014-11-10 12:14 CET
- Model/: add 'aid_exists', 'code_exists', 'iid_exists', etc. runtime-generated
boilerplate functions to all models where they make sense
- Model/Employee.pm: cleanup
- Model/{Schedule,Shared}.pm: eliminate circular dependency and clean up aftermath
- t/model/: add test cases for new boilerplate
0.262 2014-11-10 14:02 CET
- release/: new docgen.plx to auto-generate POD documentation on all resources;
adapt release.sh to use the new docgen.plx script
- docs/Resources.pm: auto-generated POD documentation
- config/docgen_Config.pm: special params for use in docgen.plx
- config/dispatch/: clean up some of the docs
- config/dispatch_Config.pm: add POD to DISPATCH_RESOURCE_LISTS
- Resource.pm: adapt 'init_router' routine to new DISPATCH_RESOURCE_LISTS
format
0.263 2014-11-10 14:40 CET
- REST.pm: eliminate obsolete POD; add new POD about
App::Dochazka::REST::Docs::Resources
- config/dispatch/: add some asterisks
- config/docgen_Config.pm: add DOCHAZKA_DOCGEN_EPITAPH to make
Docs/Resources.pm a valid module
- ../release/docgen.plx: process the epitaph
0.264 2014-11-10 17:13 CET
- ../release/docgen.plx, config/docgen_Config.pm: POD module generated by
docgen.plx not rendering correctly on metacpan.org - tweak; add DESCRIPTION
section
- Model/Schedule.pm: fix broken schedule_all routine (it wasn't using the right
SQL statement)
- t/dispatch/schedules.t: add proper minimal test cases for 'schedule/all' and
'schedule/all/disabled'
0.265 2014-11-11 17:45 CET
- config/dispatch/schedule_Config.pm: rewrite documentation of
'schedule/intervals' resource
- Dispatch/Schedule.pm: cleanup
- major refactor of history-related dispatch targets and supporting
code for code sharing between Privhistory and Schedhistory
- lots of regressions; not testing cleanly yet
- config/dispatch/schedule_Config.pm: activate history resources,
etc.
- experimenting with metacpan POD rendering glitch
0.266 2014-11-11 10:10 CET
- docgen.plx: flesh out auto-generated resource documentation by adding
permitted methods and CLI command
- more trial-and-error on metacpan POD rendering issue (change all heredocs
so the end flags are unique)
- Model/Shared.pm: implement new 'load_multiple' routine to eliminate some
creeping code duplication
- Model/Activity.pm: make get_all_activities use 'load_multiple'
- Model/Schedule.pm: replace 'schedule_all' and 'schedule_all_disabled' with
a single 'get_all_schedules' routine based on 'load_multiple'
- Dispatch/Schedule.pm: adapt to the new routines
- t/: adapt to current state; add test cases for get_all_activities
0.267 2014-11-11 22:51 CET
- complete refactor of shared history-related dispatch targets
- integrate intervals.t into schedule.t
- split history.t off from priv.t
- remove history-related tests from schedule.t
- (now ready to add schedhistory tests to history.t)
0.268 2014-11-12 09:13 CET
- t/dispatch/history.t: adapt to test both 'priv/history' and
'schedule/history' resources
- ../release/docgen.plx: add ACL profile to each resource; tweak display of
HTTP methods
- t/dispatch/history.t: clean up comments, variable and function names
0.269 2014-11-12 11:15 CET
- ../release/release.sh not incrementing version number of Docs/Resources.pm -
attempt to fix
0.270 2014-11-12 11:39 CET
- ../release/docgen.plx: tweak POD formatting
0.271 2014-11-12 11:43 CET
- cleanup distro infrastructure
0.272 2014-11-12 13:38 CET
- Dispatch/Employee.pm, t/dispatch/employee.t: add current schedule to payload
of 'employee/current/priv' resource
- Docs/Workflow.pm: new POD module describing workflow scenarios from an
end-user perspective
- dispatch_Message_en.conf: add DISPATCH_EMPLOYEE_CURRENT_PRIV
- Test.pm: add 'create_inactive_employee'; rename 'delete_active_employee' to
'delete_employee_by_nick' (complete re-write)
- t/dispatch/activity.t: add some tests for 'activity/help'; prepare for this
resource to handle resources where 'acl_profile' is a HASHREF
- ../release/docgen.plx: tweak POD formatting some more
0.273 2014-11-12 16:49 CET
- Dispatch/Shared.pm: make 'make_default' handle resources that use
fine-grained acl_profile definition
- t/dispatch/activity.t: test above handler
0.274 2014-11-13 10:43 CET
- config/dispatch/: allow 'inactive' to view own priv/schedule history
- Dispatch/Shared.pm: refactor 'current' routine to use a dispatch table
- Docs/Workflow.pm: add verbiage
- Test.pm: create_{active,inactive}_employee return $eid
- t/: start fixing regressions
0.275 2014-11-13 15:01 CET
- fix regression: "GET schedule/eid/:eid vomits 500 or returns nonsense"
- Dispatch/Shared.pm: the regression was caused by not saving the return
value from the call to {priv,schedule}_by_eid in the 'current' routine
- t/dispatch/schedule.t: add test case for this regression
0.276 2014-11-13 15:37 CET
- t/dispatch/schedule.t: add more positive tests focused on 'current' dispatch
target
0.277 2014-11-13 16:30 CET
- Dispatch/Schedule.pm: cleanup
- t/dispatch/schedule.t: add negative tests for 'schedule/eid/:eid/?:ts'
0.278 2014-11-13 22:32 CET
- t/dispatch/schedule.t: add more negative tests
- ../development-checklist, Docs/Workflow.pm: start blocking in interval
and lock resources; add verbiage
- config/dispatch/: make 'employee/self' be a synonym for 'employee/current'
and enable POST requests on these resources so employees can, e.g., change
their own password; update documentation of history resources
- REST_Config.pm: add 'DOCHAZKA_PROFILE_EDITABLE_FIELDS' for POST requests
on 'employee/self'
- t/dispatch/employee.t: run all 'employee/current' tests on 'employee/self'
as well; realize that if a resource returns 405 it will do so regardless
of which user we authenticate as (even non-existent user)
0.279 2014-11-14 10:39 CET
- Dispatch/Employee.pm: add _post_current (dispatch target for POST
'employee/{current, self}'
- t/dispatch/employee.t: ACL checks are not working for resources with
fine-grained ACL profile definition: add a test case for this
0.280 2014-11-14 11:29 CET
- employee_Config.pm: fix 'employee/self' acl_profile property
- Dispatch/Employee.pm: request body needs to be a hashref - check for that
where we really care about it - in _put_post_delete_employee_by_eid
- Dispatch/Shared.pm: pre_update_comparison was causing DOCHAZKA_BAD_INPUT to
be returned if no fields would actually change on update, but this might be
confusing - change it to allow updates in such cases
- t/dispatch/employee.t: add test cases for POST employee/{current,self} by
inactive and active employees; adapt tests to current state
0.281 2014-11-14 16:42 CET
- finish implementation (including test cases) of POST dispatch
target for 'employee/{current,self}' resource
0.282 2014-11-14 21:36 CET
- dbinit_Config.pm: add trigger clause to make 'sid' field immutable
- Docs/Workflow.pm: add verbiage
- t/model/schedule.t: add test case verifying that 'update' method does not
change the database even if the 'sid' field is changed
0.283 2014-11-18 07:45 CET
- REST_Message_en.conf: add finer-grained notice messages for 'cud'
- Model/Shared.pm: in cud, check return value of '$sth->execute' and
return finer-grained notices to distinguish various edge cases
- t/: adapt to current state
0.284 2014-11-18 11:01 CET
- unit tests: move existing '002-root' and '003-current-priv' units to
new t/sql directory; add new 't/sql/immutable_id.t' unit to test
new triggers to make 'eid', 'iid', etc. fields immutable
- config/sql/dbinit_Config.pm: add "immutability" triggers for 'employees.eid',
'schedhistory.shid' and 'privhistory.phid'
0.285 2014-11-18 11:53 CET
- dbinit_Config.pm, t/sql/immutable_id.t: finish making '*id' fields immutable
0.286 2014-11-18 12:49 CET
- dispatch_Config.pm, interval_Config.pm: add basic set of 'intervals'
resources
0.287 2014-11-18 15:33 CET
- config/dispatch/HTTP_Message_en.conf: make a separate message file for codes
that map directly to an HTTP error code
- config/, lib/: transform DOCHAZKA_BAD_INPUT and DOCHAZKA_INSUFFICENT_PRIV into
special status codes that map directly to HTTP error codes
- Resource.pm: when target returns certain status codes (see package variable
%status_http_map), translate them directly into HTTP error codes
- t/: adapt to current state
0.288 2014-11-19 10:05 CET
- Dispatch/Lock.pm: lay groundwork for locks
- t/dispatch/interval.t: new tests
- interval_Config.pm, dispatch_Message_en.conf: minor fixes
- Dispatch/Interval.pm: add special ACL handling
- Model/Interval.pm: fix bug (wrong order of properties in call to 'cud')
- Test.pm: let 'req' handle any user as long as "passhash" property is
set the same as "nick"
0.289 2014-11-19 11:08 CET
- interval_Config.pm: make not-implemented resources use 'not_implemented'
dispatch target
- t/dispatch/interval.pm: add some missing boilerplate tests
0.290 2014-11-19 11:23 CET
- interval_Config.pm: 'interval/nick/:nick/:tsrange' resource was broken due to
missing EOH - fixed
- t/dispatch/interval.t: $base for 'interval/nick/:nick/:tsrange' resource was
set to wrong value - fixed
0.291 2014-11-19 15:19 CET
- HTTP_Message_en.conf, Resources.pm: add 404 status trigger
- interval_Config.pm: call the hypothetical error code DISPATCH_TOO_MANY_RECORDS_FOUND
- top_Config.pm: fix factual error in documentation
- dispatch_Message_en.conf: add DISPATCH_TOO_MANY_RECORDS_FOUND definition
- Dispatch/Shared.pm->history: trigger 404 when no records found
- Model/Employee.pm: return DISPATCH_NO_RECORDS_FOUND with status level 'NOTICE'
- t/dispatch/history.t: explore more possibilities for entering an invalid EID;
adapt to current state (status-triggered 404 errors)
- t/dispatch/interval.t: add basic tests for 'interval/self/:tsrange'
0.292 2014-11-19 16:40 CET
- dispatch/interval_Config.pm: enable _fetch_* dispatch targets
- sql/interval_Config.pm: add SQL_INTERVAL_SELECT_BY_EID_AND_TSRANGE
- Dispatch/Interval.pm: implement _fetch_* dispatch targets
- Model/Interval.pm: implement a fetch_by_eid_and_tsrange function
- Model/Shared.pm: load_multiple had no provision for binding parameters -
fixed
- t/dispatch/interval.t: add some basic tests for
'/interval/eid/:eid/:tsrange', 'interval/nick/:nick/:tsrange' and
'/interval/self/:tsrange'
0.293 2014-11-19 18:05 CET
- Dispatch/Interval.pm: let _new set EID to that of current user
if no EID specified in request body
- t/dispatch/interval.t: add tests under 'interval/new' resource
0.294 2014-11-19 22:59 CET
- Dispatch.pm: adapt _docu* dispatch targets so they expect to receive argument
in 'resource' property
- Dispatch/Interval.pm: pass argument with DISPATCH_PARAMETER_BAD_OR_MISSING to
report which property is missing
- Resource.pm: only that JSON is not malformed that converts into a hashref
- Test.pm: adapt to current state
- t/dispatch/intervals.t: add two tests under 'interval/new'
0.295 2014-11-20 11:50 CET
- rename resource 'schedule/interval' to 'schedule/new'
- Resource.pm: no longer accept content bodies that do not convert cleanly into
a hashref - this required some minor retooling of the following resources that
had been accepting bare scalars or JSON arrays:
- 'docu' and 'docu/html'
- 'metaparam' and 'siteparam'
- 'schedule/new'
- Dispatch.pm->_param_post now saves the pre-change value and attempts to
restore it if the new value is not set properly
- t/: adapt to current state
0.296 2014-11-20 14:01 CET
- split 'metaparam' / 'metaparam/:param'
0.297 2014-11-20 18:21 CET
- config/dispatch/lock_Config.pm: add lock resource definitions
(very similar to interval_Config.pm)
- dispatch/interval_Config.pm: adapt to generalized dispatch targets
- dispatch_Config.pm: enable lock resources
- sql/lock_Config.pm: add missing SQL statements
- Dispatch/: remove bogus "use App::Dochazka::REST::Dispatch::ACL qw( check_acl);"
line from all dispatch modules
- Dispatch/ACL.pm: add 'check_acl_context' routine (shared between interval
and lock dispatch targets)
- Dispatch/{Interval,Shared}.pm: generalize most of the dispatch targets
- Dispatch/Lock.pm: get it ready for business
- Model/Lock.pm: add missing fetch_by_eid_and_tsrange routine
- t/dispatch/: rename 'interval.t' to 'interval_lock.t' and start running
each resource's tests in a foreach loop so the same tests are run for
'interval/..' and 'lock/..' counterparts
0.298 2014-11-20 21:51 CET
- sql/lock_Config.pm: fix typos in SQL_LOCK_UPDATE
- Dispatch/Lock.pm: in '_new', make eid not required in request body
- Dispatch/Shared.pm: fix bugs in interval+lock shared routines
- add several debug log messages; comment out one debug log message
- t/dispatch/interval_lock.t: test both 'interval/..' and 'lock/..'
for all resources
0.299 2014-11-23 12:13 CET
- REST.pm: add caveat about tsranges with unbounded intervals
- Test.pm: add dbi_err routine to eliminate code duplication in units
- t/dispatch/: use the new 'dbi_err' routine everywhere
0.300 2014-11-23 14:50 CET
- t/300-ACL.t: add unit to vet the 'check_acl' routine
- Dispatch/ACL.pm: refactor the 'check_acl' routine
- Dispatch/Shared.pm: stop re-implementing check_acl in the 'make_default'
routine
- Resource.pm: fix bug: "ACL profile of '/forbidden' resource is set to
bogus scalar 'undefined' instead of undef"; adapt to check_acl refactor
- t/dispatch/history.t: add more tests; improve comments
0.301 2014-11-23 23:24 CET
- Dispatch/ACL.pm: make 'check_acl_context' return OK status when the
request passes its check
- Dispatch/Shared.pm: block out an 'interval_sanity' routine (WIP)
- Dispatch/{Interval,Lock}.pm: adapt to current state
0.302 2014-11-24 14:43 CET
- dbinit_Config.pm: add 'no_intervals_after' and 'intvl_ok' stored PL/pgSQL procedures
- Dispatch/Interval.pm: make '_insert_interval' validate its arguments using Params::Validate
- Dispatch/Shared.pm: test attendance and lock intervals for bad string 'infinity';
add 'lock_sanity' routine to perform analogous role to 'interval_sanity'
0.303 2014-11-24 16:47 CET
- config/sql/: globally replace tsrange with tstzrange and TIMESTAMP
WITHOUT TIME ZONE to TIMESTAMP WITH TIME ZONE, etc.; add triggers to
'intervals' and 'locsk' so all new 'intvl' values are vetted at insert/update
using the 'intvl_ok' stored procedure
- Dispatch/Shared.pm: tweak '_no_infinity'
- t/: with the change to "WITH TIME ZONE", some return values have "+01"
appended, so adapt tests in those cases
- t/dispatch/interval_lock.t: add a new section tests that examine handling
of bogus tstzrange values that might be provided by the user
0.304 2014-11-24 17:13 CET
- Dispatch/Shared.pm: export lock_sanity
- Dispatch/Lock.pm: add 'lock_sanity' call to '_new'
- t/dispatch/interval_lock.t: fix tests broken by migration to 'WITH TIME ZONE';
add a positive test illustrating a suspicious-looking interval that is acceptable
- t/model/: add '+01' to some timestamp literals because they are now timestamptz
0.305 2014-11-24 18:11 CET
- dbinit_Config.pm: notice that we already have a 'valid_intvl' trigger; revamp
'intervals' and 'locks' triggers to use it
- t/dispatch/interval_lock.t: add a group of tests to keep track of which
pathological tsranges ('intervals' in Dochazka terms) we are successfully
checking for
0.306 2014-11-26 09:31 CET
- dbinit_Config.pm: add 'intvl_not_locked' trigger before update or insert on
'intervals' table - checks to make sure the interval would not overlap with
any existing lock
- Model/Shared.pm: fix bug where 'load' routine was needlessly adding
'count => 1' to the payload, which is supposed to be just an object
- t/: some tests started to fail because we were creating intervals and locks
with the same intervals - fixed by changing the lock interval
- t/dispatch/interval_lock.t: now that we have a functioning trigger, add tests
that attempt to insert intervals that conflict with a lock
- t/model/triggers: add new subdirectory for trigger tests
- t/model/triggers/immutable_id.t: new unit to test triggers that make ID
fields immutable
0.307 2014-11-26 16:40 CET
- Model/: make 'update' methods return 'DOCHAZKA_ID_MISSING_IN_UPDATE' if id
property missing
- Test.pm: add new 'gen_$class' multi-purpose routines
- t/model/general/id.t: use 'gen_$class' routines
- t/model/general/reset.t: expand to test 'reset' method in all classes
0.308 2014-11-27 11:11 CET
- Build.PL: require App::Dochazka 0.184 for 'attrs' and 'get' methods
- dbinit_Config.pm: add checks for presence of 'infinity' in tsranges
- Test.pm: bring in 'test_sql_success' and 'test_sql_failure' functions
so we aren't duplicating them in the units
- t/model/employee.t: cleanup; eliminate some duplicated code (low-hanging
fruit)
- t/model/general/reset.t: finishing touches
- t/sql/: cleanup
- t/sql/schedintvl.t: new tests for intvl triggers
0.309 2014-11-27 17:09 CET
- dbinit_Config.pm: have 'schedule_at_timestamp' return NULL instead of {} when
there is no schedule in effect
- Model/Shared.pm: make decode_schedule_json handle the above NULL value
- t/: fix all the tests that were expecting {} but now get undef instead
0.310 2014-11-27 22:04 CET
- dbinit_Config.pm: add 'schedule_policy' trigger function to prevent users
from introducing intervals in time periods when the employee has no or
ambiguous scheduling
- t/dispatch/interval_lock.t: adapt to the above trigger (ensure testing user
has a schedule and the schedule is in effect)
- t/: disable a bunch of tests broken by introduction of this trigger
0.311 2014-11-27 23:04 CET
- dbinit_Config.pm: expand no_lock_conflict to handle DELETE as well as INSERT/UPDATE
- t/model/{interval,lock}.t: adapt to current state
- t/model/lock.t: add test confirming that it is no longer possible to delete a
locked interval
0.312 2014-11-28 11:27 CET
- t/dispatch/interval_lock.t: add some tests simulating: (1) create interval,
(2) lock it, (3) attempt to update it - interval is locked, (4) attempt to
delete it - interval is locked
- dbinit_Config.pm: add another trigger and run into problems because I didn't realize PostgreSQL
executes triggers in alphabetical order
0.313 2014-11-28 12:20 CET
- dbinit_Config.pm: rename triggers so "alphabetical order" is aligned with
"order of intended execution"
- Dispatch/{Interval,Lock,Shared}.pm: since all sanity checks will be
implemented via triggers, the sanity stuff we put here before is unnecessary,
so delete it
- t/dispatch/interval_lock.t: we are no longer returning 400 when intervals
are malformed or non-compliant
- t/model/interval.t: now that we have enabled the 'priv_policy' trigger, make
sure the testing user has a proper privhistory before attempting to add
intervals in his name
- t/model/: both interval.t and lock.t required the same setup/teardown code,
so move the lock tests to interval.t and get rid of lock.t
0.314 2014-11-28 15:23 CET
- rename t/model/interval.t -> t/model/interval_lock.t
- dbinit_Config.pm: add 'history_policy' trigger function to ensure that
privhistory/schedhistory records are not entered if they conflict with an
existing interval
- t/model/interval_lock.t: add minimal tests for the 'history_policy' trigger
0.315 2014-11-28 16:23 CET
- got Path::Router validations to work!!!
- config/dispatch/activity_Config.pm: added validations clauses
- config/dispatch/employee_Config.pm: added validations clauses
- config/dispatch_Message_en.conf: delete DISPATCH_AID_DOES_NOT_EXIST and
DISPATCH_CODE_DOES_NOT_EXIST
- dbinit_Config.pm: change 'kosher_code' constraint on 'activities' table to
match the validations clause
- Dispatch/Activity.pm: noticed that we were still returning custom codes (e.g.
DISPATCH_AID_DOES_NOT_EXIST) instead of a simple 404 (405 on PUT) -- fixed
- t/dispatch/activity.t: fix tests broken by the above changes
0.316 2014-11-28 16:48 CET
- dispatch/employee_Config.pm: add validations clause to the
'employee/count/:priv' resource definition
- Dispatch/Employee.pm: handle upper/mixed case priv strings gracefully
- Model/Employee.pm: noof_employees_by_priv was written long ago - update it to
use best practices
- t/dispatch/employee.t: add 'employee/count/:priv' test cases
0.317 2014-11-28 17:26 CET
- dispatch/employee_Config.pm: add validations clause to 'employee/nick/:nick'
resource definition
- sql/dbinit_Config.pm: change 'kosher_nick' constraint to match the above
validations clause
- t/dispatch/: add some more tests demonstrating invalid codes caught
by the new validations clauses
0.318 2014-11-28 18:12 CET
- Build.PL: require latest version of App::CELL
- dispatch/{interval,lock}_Config.pm: add validations clause
- dispatch/top_Config.pm: added missing 'interval' and 'lock' top-level
resource definitions
- t/dispatch/interval_lock.t: add some test cases for the above validations
clause
0.319 2014-11-28 18:30 CET
- dispatch/{interval,lock}_Config.pm: add validations clauses
- t/dispatch/interval_lock.t: adapt existing tests to new validations clauses;
add new tests to demonstrate the new validations clauses; one resource
(lock/nick/:nick/:tsrange) was completely missing - added it
0.320 2014-11-28 19:33 CET
- config/dispatch/: add remaining validations clauses
- t/: adapt existing tests to the new validations clauses without getting hung
up about adding new tests, because if I were to implement tests for all cases
I'd never get this thing finished
0.321 2014-11-28 21:59 CET
- dispatch/employee_Config.pm: adjust ACLs so 'inactive' and 'active' employees
can do various operations - trusting that later logic will prevent them from
seeing or modifying any data but their own
- Dispatch/Employee.pm: eliminate _post_current routine after moving ACL code
into _put_post_delete_employee_by_eid
- t/dispatch/employee.t: adapt to current state
0.322 2014-11-29 23:03 CET
- config/dispatch/employee_Config.pm: change ACL profiles of all the resources
for which we want to let 'inactive' and 'active' employees edit certain
fields of their own employee profile - this opens something of a bag of worms
because we have to let these requests through to Dispatch/Employee.pm
- config/dispatch_Message_en.conf: eliminate deprecated messages
- Dispatch/Employee.pm: refactor several routines to let 'inactive' and
'active' users update certain fields of their own employee profiles
- Dispatch/Shared.pm: eliminate deprecated messages
- t/dispatch/employee.t: adapt existing tests; add some tests to probe the
feature we just added
- t/dispatch/schedule.t: adapt to current state
0.323 2014-12-01 10:45 CET
- t/dispatch/interval_lock.t: have an active user try to create a lock on
someone else's attendance
0.324 2014-12-03 09:03 CET
- Build.PL: require App::Dochazka 0.185 so employees have a sec_id property
- config/dispatch/employee_Config.pm: fix validations clause so it allows %
sign, which we use as a wildcard in the GET method
- config/sql/{dbinit,employee}_Config.pm: add sec_id property to employees table
- REST.pm: write some POD to explain our approach to ACLs; do not mention a
'policies' table since we never implemented it; explain how employees are
identified (with mention of 'sec_id')
- Model/Employee.pm, Dispatch/Employee.pm: enable sec_id
- t/dispatch/interval_lock.t: add tests for some lock edge cases
- t/{dispatch,model}/employee: adapt to the new 'sec_id' property
0.325 2014-12-03 09:40 CET
- t/dispatch/employee.t: add a basic test for GET employee/nick/:nick with a
wildcard in the search key
0.326 2014-12-03 16:46 CET
- Dispatch/Shared.pm: make it so introspection resources do not return
'acl_profile' property because some resources now have "mixed" acl_profiles
0.327 2014-12-03 22:26 CET
- start a substantial refactor to make each employee have her own database
connection (thanks to DBIx::Connector)
- (test suite failing)
0.328 2014-12-05 08:57 CET
- REST.pm: refactor database (re-)initialization routines
- t/001-init.t: adapt to new routines
- dbh.pm: attempt to make get_conn handle all DBI connection scenarios
correctly
- start migrating modules to new dbh.pm, which will be renamed to ConnBank.pm
0.329 2014-12-05 16:40 CET
- config/sql/session_Config.pm: delete (deprecated)
- rename dbh.pm to ConnBank.pm
- move Timestamp.pm (App::Dochazka::REST::Util::Timestamp) to ../staging/ as it
is not used and the DBI calls need to be rewritten
- removed all mentions of App::Dochazka::REST::dbh from modules outside of Model/
- config/sql/dbinit_Config.pm: add SQL_NOOF_CONNECTIONS; set DEFAULT PRIVILEGES
so user connections will work (in order to be able to revoke a user's
privileges, it will be better to set the privileges via a trigger)
- introduce roles, fix privilege problems so now our "production" roles
('dochazka' and numeric "EID" roles) can see tables, etc.
0.330 2014-12-05 17:11 CET
- rename DBINIT_CONNECT_USER/DBINIT_CONNECT_AUTH to
DBINIT_CONNECT_SUPERUSER/DBINI_CONNECT_SUPERAUTH, respectively
- ConnBank.pm: remove the $site->DOCHAZKA_DBNAME connection option,
which was confusing - either use 'superuser' or the root EID
- REST.pm: remove deprecated 'connect_db' and 'connect_db_pristine' routines
- t/001-init.t: adapt to current state
0.331 2014-12-05 18:03 CET
- embark on a quest to eliminate all instances of the string 'dbh' from the
entire codebase
0.332 2014-12-06 07:47 CET
- Model/Shared.pm: start converting DBI calls to DBIx::Connector; clean up some
cruft along the way; add select_single routine for SELECT statements expected
to return 0 or 1 record
- Test.pm: add a 'do_select_single' wrapper for 'select_single'
- t/sql/current_priv.t: refactor tests to use 'do_select_single'
0.333 2014-12-06 11:59 CET
- massive refactor ongoing to migrate the codebase to DBIx::Connector
- restore Timestamp.pm as we need it for unit tests
- t/004-shared-paramvalid.t, t/011-tsrange_equal.t, t/203-util-timestamp.t -
move three old and probably unnecessary units to staging because I don't have
the patience to adapt them to the current state
- REST.pm: initialize DOCHAZKA_EID_OF_... site params in 'init'
- Dispatch.pm: fix _get_dbstatus so the module compiles
- Dispatch/Schedule.pm, Model/Activity.pm, Model/Schedintvls.pm,
Model/Schedule.pm, Model/Shared.pm: adapt to DBIx::Connector; cleanup
- Test.pm: add 'initialize_unit' routine to mitigate code duplication in the
units, adapt 'test_sql_success' and 'test_sql_failure' to DBIx::Connector,
- t/sql/: adapt all units to DBIx::Connector
- t/dispatch/: start adapting to DBIx::Connector (WIP)
0.334 2014-12-06 14:39 CET
- fix Changes munge from last commit
- config/dispatch/employee_Config.pm, Dispatch/Employee.pm: re-enable 'count'
resources
- Dispatch/: start migration to DBIx::Connector
- Model/: finish migration to DBIx::Connector
- Model/Schedule.pm: use 'select_single' in 'insert' method
- Model/Shared.pm: fix 'DISPATCH_RECORDS_FOUND' statuses; fix { isa =>
'DBIx::Connector' } clauses
- Test.pm: finish migration to DBIx::Connector
- t/sql/, t/model/: migrate to DBIx::Connector; all tests running cleanly now
- NEXT: migrate Dispatch methods and t/dispatch/ units to DBIx::Connector
0.335 2014-12-06 21:11 CET
- REST.pm: deprecate the DOCHAZKA_DBUSER user (we are no longer using it)
- Dispatch/: migrate all modules to DBIx::Connector
- Model/Employee.pm: add $SIG{__WARN__} handler; when employee is created,
set up the corresponding role
- Model/Shared.pm: fix bugs in make_test_exists and get_history
- Resource.pm: fix bugs introduced during migration to DBIx::Connector
- t/dispatch/activity.t now running cleanly
0.336 2014-12-07 18:37 CET
- hunt down and fix remaining bugs/errors/typos introduced during migration
- test suite running cleanly again
0.337 2014-12-08 11:26 CET
- config/sql/audit_Config.pm: bring in Audit Trigger from
https://wiki.postgresql.org/wiki/Audit_trigger_91plus
- Build.PL: add 'meta_merge' clause as recommended by Randy Stauner at
https://github.com/CPAN-API/metacpan-web/issues/1418#issuecomment-62546169
- config/sql/dbinit_Config.pm: the DBINIT_CREATE parameter, where we create all
tables, functions, triggers, etc., is a bit disorganized -- start adding
'COMMENT' statements and taking other cleanup measures
- REST.pm: work on documentation; add code to load and create the audit triggers
- Resource.pm: fixed bug (uncovered by the audit triggers) "all incoming HTTP
connections are using PostgreSQL user '1', which should be reserved for the
root employee"
0.338 2014-12-08 15:17 CET
- work on transaction auditing feature:
- no more "shadow" db roles
- all traffic goes through a single connection (which can be pooled)
- pass EID to audit trigger via "SET LOCAL dochazka.eid"
0.339 2014-12-08 22:30 CET
- after discussions, reconsider my idea of creating a "shadow db role" for each
employee; instead, I will try to get the EID into the audit trigger via a
custom GUC (session variable)
- REST.pm: eliminate 'create_tables' routine; all database initialization now
takes place in 'reset_db'
- ConnBank.pm: refactor 'get_conn'
- adapt all instances of 'get_conn' throughout the code base
- {Dispatch,Model}/Employee.pm: eliminate 'select_multiple_by_nick' routine;
call load_multiple directly from the dispatch target
- t/: adapt to current state
0.340 2014-12-09 11:09 CET
- for auditing purposes we need to send not only the DBIx::Connector object,
but also the current EID in all 'cud' calls
- Model/Shared.pm: in cud routine, add 'eid' to PARAMHASH and run
SQL_SET_DOCHAZKA_EID_GUC to set 'dochazka.eid' GUC session variable
- {Dispatch,Model}/Activity.pm: carry out necessary modifications
0.341 2014-12-09 17:17 CET
- work on getting the current EID into Model/Shared.pm->cud
- send request context in all 'insert', 'update' and 'delete' method calls on
datamodel objects; these methods then split out the DBIx::Connector object
and the current EID
- Model/: make all necessary modifications
- Test.pm, Dispatch/: deal with cascade effects (WIP)
- t/sql/, t/model/: adapt tests to current state
- t/dispatch/: WIP
0.342 2014-12-10 10:52 CET
- audit_Config.pm: DROP SCHEMA is not necessary here, since the immediately
preceding command is DROP DATABASE
- Dispatch/: completed the migration described above
- Model/: fix some lingering migration-related issues
- Test.pm, t/: migration broke lots of tests; we are now expected to send the
request context, but with Plack::Test there is none(!); fortunately, it is
trivial to simulate such a context ($faux_context)
- dispatch_Message_en.conf: get rid of
DISPATCH_EMPLOYEE_{INSERT,UPDATE,DELETE}_OK message (DOCHAZKA_CUD_OK is
sufficient)
0.343 2014-12-10 16:43 CET
- dbinit_Config.pm: fix names of parameters used to store PostgreSQL superuser
credentials for testing purposes
- ConnBank.pm: refactor the entire module
- REST.pm: adapt to the new ConnBank.pm code; make 'init' routine return a
status object with the Plack application in the payload
- Dispatch/, Model/, Test.pm, t/: adapt to the new ConnBank.pm code
0.344 2014-12-10 18:01 CET
- bin/dochazka-rest: adapt to recent modifications to REST.pm->init
- REST_Message_en.conf: add DOCHAZKA_NO_DBIX_CONNECTOR
- dbinit_Config.pm: sum(numbackends) is not working for some reason; work
around the problem
- REST/Dispatch.pm: add missing 'use Try::Tiny'; add some debugging messages to
'_get_dbstatus'; numify number of connections
- Test.pm: add some error checking;
- t/dispatch/top.t: add subtest for 'dbstatus' resource
0.345 2014-12-11 11:35 CET
- REST.pm: add verbiage to POD
- Resource.pm, Dispatch/Employee.pm: prepare for Blowfish
0.346 2014-12-11 18:36 CET
- hash passwords using Authen::Passphrase::SaltedDigest
- App::Dochazka::CLI authentication works fine
- tests in t/dispatch/ are broken
- Dispatch/Employee.pm: implement 'hash_the_password' routine, call it from
_insert_employee and _update_employee; export it for use in Test.pm
- Resource.pm: in _authenticate, compare password with stored salted hash
- Test.pm: import hash_the_password and use it in create_testing_employee;
adapt calls
- dbinit_Config.pm, t/sql/root.t: use the real hash+salt instead of the
plaintext password
0.347 2014-12-11 20:13 CET
- REST_Config.pm: modify DOCHAZKA_PROFILE_EDITABLE_FIELDS so inactives and
actives can still change their password now that we are hashing
- config/dispatch/employee_Config.pm: 'GET employee/nick/:nick' acl_profile was
set too restrictive - fix
- dbinit_Config.pm: use real hash/salt when INSERTing 'root' and 'demo'
employees
- Dispatch/Employee.pm: fix hash_the_password function calls
- Resource.pm: put call to Authen::Passphrase::SaltedDigest into a try/catch
block; add some basic error-checking
- t/: adapt to current state
0.348 2014-12-12 09:39 CET
- REST_Config.pm: add DOCHAZKA_AUDITING and DOCHAZKA_AUDIT_TABLES to (1) make
auditing optional, and (2) give site admin control over which tables are
audited
- REST.pm: make auditing optional; implement 'create_audit_triggers' and
'delete_audit_triggers' routines to enable auditing to be disabled and
re-enabled as and when desired
0.349 2014-12-12 16:43 CET
- get rid of DOCHAZKA_AUDITING
- Resource.pm: try to eliminate suspected double-encoding problem
0.350 2014-12-12 18:06 CET
- config/dispatch/interval_Config.pm: add resource definition for
'interval/summary/?:qualifiers'
- dbinit_Config.pm: work on valid_schedintvl ticket
- config/REST_Config.pm: add DOCHAZKA_DBHOST, DOCHAZKA_DBPORT,
DOCHAZKA_DBSSLMODE params
- ConnBank.pm: use the new site params in construction of data source string,
provided they are set
- t/dispatch/interval_lock.t: start adding tests for the new
'interval/summary/?:qualifiers' resource
0.351 2014-12-12 21:59 CET
- dbinit_Config.pm: the valid_schedintvl() function we had before was bogus -
write a proper one
- t/model/schedintvls.t: add some tests that try to enter sets of intervals
spanning more than 168 hours (which is banned by policy, enforced by the
valid_schedintvl function)
0.352 2014-12-13 14:51 CET
- Build.PL: require Authen::Passphrase::SaltedDigest
0.353 2014-12-13 22:19 CET
- t/202-qualifiers.t: new unit to test Dispatch/Intervals->process_quals routine
- Dispatch/Intervals.pm: implmement 'process_quals' routine to parse qualifiers;
start writing _get_summary (dispatch target for /interval/summary/?:qualifiers)
0.354 2014-12-14 22:47 CET
- config/dispatch/interval_Config.pm: activate the new 'interval/summary/..."
resource
- Dispatch/Interval.pm: work on dispatch target for the new resource
- Util/Timestamp.pm: export '$current_month' and '$current_year'
0.355 2014-12-18 10:07 CET
- REST.pm: work on POD
0.356 2014-12-18 18:40 CET
- Resource.pm: add 'finish_request' routine to add 'no_cache' headers
- t/301-resource.t: test for presence of "no-cache" headers in HTTP response
===============================================
SPLIT OFF App::MREST into separate distribution
===============================================
0.357 2015-01-27 11:32 CET
- eviscerate Resource.pm and rename it to Auth.pm -> most of the Resource.pm
functionality has been moved to Web::MREST
0.358 2015-01-29 20:00 CET
- REST.pm: emasculate init routine
- Auth.pm: inherit from Web::MREST::Entity; call init routine from is_authorized
so we can get access to the database
- Dispatch.pm: bring in top-level resources from Web::MREST and add a couple of
our own
0.359 2015-01-30 10:47 CET
- REST_MetaConfig.pm: delete deprecated params
- Dispatch.pm: resource defs and :ALL from Dispatch/Employee.pm
- Dispatch/Employee.pm: implement 'whoami' resource
0.360 2015-01-30 17:12 CET
- config/, Employee/Dispatch.pm: migrate four resource definitions
0.361 2015-01-30 21:02 CET
- Test.pm, t/model/, t/sql/: get all non-resource tests running again
0.362 2015-02-02 10:20 CET
- Auth.pm, ACL.pm: migrate 'forbidden' method to Web::MREST; handle cases when
acl_profile property does not exist, is undefined, is invalid
- Dispatch.pm: give 'forbidden' resource an invalid acl_profile; add note about
this to resource documentation string
0.363 2015-02-02 11:44 CET
- t/301-resource.t: finish migrating unit to Web::MREST
- bin/dochazka-rest: migrate server startup script to Web::MREST
- Dispatch.pm: improve documentation of docu resource
- Employee.pm: fix typo
- Test.pm: migrate 'docu_check' routine to Web::MREST
- t/dispatch/top.t: start migrating unit to Web::MREST
0.364 2015-02-02 17:03 CET
- migrate 'priv/history/...' resource definitions
- Dispatch/Priv.pm: migrate '/priv/history/self/?:tsrange' handler (working
nicely)
0.365 2015-02-02 21:44 CET
- Dispatch/Priv.pm: rewrite the main privhistory handler (split into three parts)
0.366 2015-02-03 07:26 CET
- Dispatch/Priv.pm: get handler_priv_history_post into a working state
0.367 2015-02-03 12:23 CET
- Dispatch/: split off History.pm from Priv.pm and make it work for both
'priv/history/...' and 'schedule/history/...' resources
- Dispatch.pm: load resource definitions from Dispatch/History.pm
- remove old, pre-migration code obsoleted by these changes
0.368 2015-02-04 17:04 CET
- migrate 'schedule/new' resource definition
- migrate 'schedule/new' resource handler (WIP)
- t/dispatch/schedule.t: migrate (WIP)
0.369 2015-02-04 18:08 CET
- Dispatch/History.pm: handle errors
- Dispatch/Schedule.pm: in handler_schedule_new, do the work in pass two,
because in pass one 'request_entity' is not yet populated
- Test.pm: migrate dbi_err and create_testing_schedule
- t/dispatch/history.pm: migrate (WIP)
0.370 2015-02-05 09:44 CET
- Dispatch/History.pm, Dispatch/Shared.pm, t/dispatch/history.t: migrate (WIP)
0.371 2015-02-05 15:10 CET
- migrate 'priv/...' (non-history) resources (WIP)
- iron out last bugs, t/dispatch/history.t runs cleanly now
0.372 2015-02-06 06:12 CET
- Dispatch/Priv.pm: implement separate handler for 'priv/{eid,nick}'
- Dispatch/Schedule.pm: migrate 'schedule/all' and 'schedule/all/disabled' resources
- Dispatch/Shared.pm: migrate the not-very-aptly-named 'current' routine
- t/dispatch/{priv,schedule}.t: remove 'noop'/'help' tests
- t/dispatch/priv.t: unit runs cleanly
0.373 2015-02-06 15:23 CET
- migrate 'schedule/...' resources (WIP)
0.374 2015-02-08 19:49 CET
- Dispatch/Schedule.pm: migrate 'schedule/eid/...' and 'schedule/nick/...';
start migrating 'schedule/sid/:sid'
- Dispatch/Employee.pm: migrate 'employee/count/?:priv'; move hash_the_password
to Util.pm
- t/dispatch/schedule.t: migrate unit tests
0.375 2015-02-09 08:52 CET
- Dispatch/Shared.pm: make a generalized method ('handler_first_pass_lookup')
for fetching objects from the database based on URI mapping
- start migrating resource handlers to the new method
0.376 2015-02-09 15:15 CET
- migrating resources to 'handler_first_pass_lookup'
0.377 2015-02-09 20:33 CET
- debugging WIP
0.378 2015-02-10 08:40 CET
- migrate 'employee/...' resources (WIP)
- get rid of 'make_default', which was used to implement 'help' resources
but is not compatible with Web::MREST
0.379 2015-02-10 17:29 CET
- massive reorganization: move handler routines to Dispatch.pm
0.380 2015-02-10 18:27 CET
- Dispatch.pm: merge 'current' into 'handler_get_privsched'; fix _update_schedule
- t/dispatch/schedule.t: migrate unit tests - unit runs cleanly again
0.381 2015-02-11 10:42 CET
- work on employee handlers (PUT employee/eid/:eid and PUT employee/nick/:nick)
with two-pass additional ACL check for updates; insert is working, too
- TODO: migrate rest of employee resources and t/dispatch/employee.t
0.382 2015-02-11 14:41 CET
- ResourceDefs.pm: new module; move all migrated resource defs into it;
add missing acl_profile properties to top-level resource defs;
- Test.pm: include location header in return status (a-la Web::MREST)
- t/dispatch/top.t: migrate unit
0.383 2015-02-11 16:43 CET
- migrate Employee resources (WIP)
0.384 2015-02-12 07:31 CET
- support 'employee/search/nick/:key'
0.385 2015-02-12 09:22 CET
- Dispatch.pm: make 404 explanation in 'handler_get_employee_search_nick' more
descriptive
- move ACL.pm up one level in the directory structure, since the Dispatch/
directory will soon be gone
0.386 2015-02-12 09:44 CET
- Dispatch.pm: in 'GET employee/search/nick/:key', add '%' characters to :key
implicitly if none are provided (and note this in resource documentation)
- Model/Shared.pm: in load_multiple, mention search keys in the result
0.387 2015-02-12 10:13 CET
- Dispatch.pm: make 404 explanation more descriptive
- t/dispatch/employee.t: get unit running cleanly
0.388 2015-02-12 11:22 CET
- move Dispatch/Shared.pm up one directory level
- convert insert_employee and update_employee into ordinary functions and move
them to Shared.pm - to be manageable, Dispatch.pm should contain resource
handlers only
0.389 2015-02-12 14:40 CET
- Dispatch.pm, Shared.pm: migrating shared (non-handler) routines to Shared.pm
0.390 2015-02-12 15:05 CET
- drop 'test/?:specs' routine, which is specific to Web::MREST testing
0.391 2015-02-12 15:15 CET
- Dispatch.pm, Shared.pm: move shared employee ACL check routines to Shared.pm
0.392 2015-02-12 16:04 CET
- Dispatch.pm, Shared.pm: eliminate "history boilerplate" by integrating its
functionality directly into two history handlers
0.393 2015-02-12 21:16 CET
- ResourceDefs.pm, Dispatch.pm: start migrating 'activity/...' resources
- config/dispatch_Message_en.conf: replace hard-coded strings with message
object codes
- Shared.pm: implement 'shared_entity_check'
0.394 2015-02-13 08:28 CET
- continue migrating 'activity/...' resources
- finished moving shared routines from Dispatch.pm to Shared.pm
0.395 2015-02-13 09:04 CET
- finish migrating 'activity/...' resources
- cleanup
0.396 2015-02-13 15:15 CET
- major migration push (just four handlers left to go)
0.397 2015-02-13 21:51 CET
- migrate last resources
- cleanup (WIP)
0.398 2015-02-16 08:25 CET
- Dispatch.pm: fix syntax error
- ResourceDefs.pm: add missing resources 'activity', 'employee', 'interval', 'lock'
- Shared.pm: fix function name 'shared_process_quals'
- t/model/: clean up tests (WIP)
0.399 2015-02-16 11:01 CET
- all tests running cleanly again
- ACL.pm, Auth.pm: return to previous behavior where resources default to "403
Forbidden" in absence of a valid acl_profile property
0.400 2015-02-16 14:42 CET
- Test.pm, t/: comment out 'diag' statements so test output is clean
- docgen.plx, Docs/Resources.pm: first shot at migrating script that generates
resource documentation
- ResourceDefs.pm: fix 'documentation' properties so all resources have a
"preamble"
0.401 2015-02-16 21:59 CET
- docgen.plx: tweak to extract allowed methods for each resource
- Docs/Resource.pm: re-generate POD by latest docgen.plx
0.402 2015-02-17 18:30 CET
- t/model/schedule.t: fix brokenness previously hidden by a stale module file
in /usr/lib/perl5/site_perl
0.403 2015-02-18 11:59 CET
- use normalize_filespec to avoid $ENV{'HOME'}, which does not work on Windows
systems
0.404 2015-02-18 17:59 CET
- dispatch_Messages_en.conf, Auth.pm: define and use DISPATCH_ACL_CHECK_FAILED message
- Dispatch.pm: remove extraneous 'my'
0.405 2015-02-20 15:24 CET
- ACL.pm: add 'acl_check_is_me' - generalized check for handlers that have
acl_profile "passerby" but may only used to operate on one's own records
- ResourceDefs.pm, Dispatch.pm: use 'acl_check_is_me' in several handlers
0.406 2015-02-20 20:55 CET
- config/sql: add SQL_EMPLOYEE_SELECT_BY_SEC_ID
- ResourceDefs.pm: add employee/sec_id/:sec_id
0.407 2015-02-21 15:30 CET
- t/dispatch/employee.t: adapt tests to new ACL policy
0.408 2015-02-21 15:58 CET
- Model/Employee.pm: add load_by_sec_id routine
- t/model/employee.t: add rudimentary unit tests for load_by_sec_id
- Shared.pm: change all instances of $self to $d_obj since none of the routines
in this module use method calls; add sec_id to shared_first_pass_lookup
0.409 2015-02-22 16:36 CET
- implement shared_get_employee and use it to implement three resource handlers
0.410 2015-02-23 20:42 CET
- t/dispatch/employee.t: add rudimentary tests of "employee/sec_id/:sec_id"
resource
0.411 2015-02-24 10:55 CET
- Build.PL: no longer re-create README on each build
- README: instead, point would-be readers to metacpan.org
- REST.pm: work on POD
0.412 2015-03-20 21:35 CET
- config/sql/dbinit_Config.pm: add disabled_to_zero trigger to convert NULL
values to "false" in the disabled field
- t/sql/disabled_to_zero.t: test disabled_to_zero trigger
0.413 2015-03-24 21:30 CET
- allow single-character nicks
0.414 2015-03-25 16:24 CET
- Dispatch.pm: convert "hardcoded text as status codes" into proper status
codes
0.415 2015-03-30 17:29 CEST
- require App::Dochazka 0.186 for 'scode' property in schedule class
- make test suite tolerate 'scode' property
- t/sql/schedule_Config.pm: add scode property to all SQL statements where it
makes sense
- implement 'schedule/scode/:scode' property with basic test cases
- config/REST_SiteConfig.pm: override MREST_APPNAME
0.499 2016-12-08 15:42 CEST
- README.rst: start documenting release workflow
- README.md: rename to README.rst
- README: remove deprecated README file
- Model/Tempintvls.pm: make variable names less confusing
- t/: cleanup
- LICENSE: work continues in 2015
0.500 2015-12-08 16:24 CET
- prerelease.sh: automatically update Changes file, add tag
- README.rst: describe the new release workflow in more detail
0.501 2015-12-09 14:40 CET
- README.rst: fix literal code blocks
- README.rst: add reminder to push using --follow-tags
- implement Dockerized testing environment
- docker-test.sh: bootstrap script for Dockerized testing env
0.502 2015-12-10 14:02 CET
- several Dockerfile tweaks
- Fix https://github.com/smithfarm/dochazka-rest/issues/26
- config/REST_Config.pm: add DOCHAZKA_TIMEZONE config param
- t/001-init.t: check DOCHAZKA_TIMEZONE sanity
- Test.pm: check DOCHAZKA_TIMEZONE in every unit
- Ensure PGTZ environment variable is set
- Fix https://github.com/smithfarm/dochazka-rest/issues/28
- t/: be more careful about timezone
0.503 2015-12-10 21:04 CET
- Fix https://github.com/smithfarm/dochazka-rest/issues/30
- t/001-init.t: bail out if DOCHAZKA_TIMEZONE not set
- Fix https://github.com/smithfarm/dochazka-rest/issues/31
- Test.pm: initialize_unit() return PSGI app instead of status obj
- t/: move "pure" unit tests to t/unit/
- t/: simplify regression test init boilerplate
- tests: rename initialize_unit() to initialize_regression_test()
0.504 2015-12-11 21:40 CET
- Make release and prerelease scripts executable
- MANIFEST.bak: remove superfluous file
- Build.PL: require App::Dochazka::Common 0.194
- docgen_Config.pm: do not convert warnings into errors
- tests: use Test::Warning to test for unexpected warnings
(except in 001-init.t)
- dbinit_Config.pm: remove spurious warning
0.505 2016-01-01 15:42 CET
- doc: minor clarifications
- REST.pm: add Report Generation section to POD
- Build.PL: require 0.195 for Component class
- Add Component class, resources, handlers, basic tests
- t/dispatch/: add missing LogToFile lines
- Dispatch.pm: improve error checking
0.506 2016-01-02 02:36 CET
- MANIFEST: add t/dispatch/component.t
- REST.pm: name the genreport resource
- Remove component/path/:path, add component/all
- t/dispatch/component.t: add path_exists() helper function
- t/dispatch/component.t: use path_exists() to test
- component.t: rename path_exists() -> path_exists_by_dispatch()
- prerelease.sh: fix timestamp
- Component: check for invalid ACL profile
- ACL.pm: fix uninitialized value in string eq warnings
- t/dispatch/employee.t: fix "Wide char in print" warning
- Implement Feature #37:
- Dispatch.pm: add init() function that populates Mason directory
- Test.pm: call Dispatch.pm->init() in initialize_regression_test()
- t/dispatch/component.t: test the sample component
0.507 2016-01-02 19:39 CET
- Mason.pm: add module for Mason interpreter singleton
- Mason.pm->init_singleton(): improve error-checking
- Mason.pm: add $comp_root package variable
- Util/Date.pm: drop unused dependency
- REST/Test.pm: skip tests if Mason initialization fails
- Implement Feature #39:
- REST.pm: implement, use, test reset_mason_dir() routine
- REST.pm->reset_mason_dir(): return comp_root in payload
- REST.pm->reset_mason_dir(): return payload only on success
- Model/Component.pm: add create_file method
- Model/Component.pm: call create_file on successful insert and update
- Model/Component.pm: add delete_file method
0.508 2016-01-02 20:24 CET
- Build.PL: add Mason dependency
- docker: add Mason dependency
- t/mason.t: skip tests if state directory inaccessible
0.509 2016-01-02 21:56 CET
- docker: add new dependencies and create state directory
- ResourceDefs.pm: add genreport resource definition
- Implement basic "POST genreport" operation
0.510 2016-01-02 23:24 CET
- Model/Component.pm: improve error handling in generate method
- Add sample/site_param.mc Mason template
- Mason.pm: add basic class_header parameter
- t/dispatch/component.t: do not complain when we add sample templates
- Dispatch.pm->handler_genreport: pass arguments to generate method
- Model/Component.pm->generate: accept and process template arguments
0.511 2016-01-04 00:43 CET
- various documentation fixes
- bin/docgen.plx: reinstate resource POD generation script (lost in
migration from SourceForge to GitHub)
- REST/Test.pm: use accessors to get employee EID
- Docs/Workflow.pm: cover report generation and Mason components
- Model/Shared.pm->tsrange_equal(): return true or false
- Model/Shared.pm: implement tsrange_intersection()
- Partial intervals feature (#43)
- Build.PL: require Common 0.196 for partial intervals
- interval_Config.pm: use overlap instead of contained by
- sql: define SQL_INTERVAL_SELECT_BY_EID_AND_TSRANGE_PARTIAL_INTERVALS
- sql: make SQL_INTERVAL_SELECT_BY_EID_AND_TSRANGE ignore partial intervals
- config/sql/interval_Config.pm: fix syntax error
- Model/Interval.pm: get whole and partial intervals
- Model/Interval.pm: use tsrange_intersection() to create partial intervals
- t/model/interval_lock.t: add partial interval tests
0.512 2016-01-04 11:43 CET
- Fix "Partial intervals not shown in temporal order" (#46)
- bin/create_active_employee.t: script to create employee in empty database
- sql/interval_Config.pm: refrain from sorting intervals
- Model/Interval.pm: sort concatenated set of intervals
- Model/Shared.pm: use tstzrange instead of tsrange
- t/model/interval_lock.t: test case for #46
0.513 2016-01-04 20:39 CET
- Implement feature "No database operations on partial intervals" (#47)
- config/: add DOCHAZKA_PARTIAL_INTERVAL_ILLEGAL_OPERATION message
- Model/Interval.pm: no database operations on partial intervals
- Implement "Test function to delete all attendance data" (#49)
- REST.pm: split insert initial set of activities code into separate function
- Model/Shared.pm->cud_generic(): make bind_params parameter optional
- REST/Test.pm: delete_all_attendance_data() function
- t/{dispatch,model}: use delete_all_attendance_data()
0.514 2016-01-05 11:41 CET
- Fix "INTERVAL DELETE operations clobber partial intervals" (#50)
- Model/Shared.pm: improve cud() and cud_generic() return status
- t/: adapt tests to current state
- config: SQL_INTERVAL_DELETE_BY_EID_AND_TSRANGE ignore partial intervals
- sql/interval_Config.pm: do not apply LIMIT when selecting partial intervals
- Dispatch.pm: fix a double my
- REST.pm: rearrange sections; new high-level content; move details to
REST/Guide.pm
0.515 2016-01-06 21:15 CET
- doc: fix GitHub issue tracker URL
- Model/Interval.pm: drop obsolete comment
- ResourceDefs.pm: rethink interval/summary/...
- interval/summary/eid/:eid/:tsrange skeleton implementation
- Dispatch.pm: make _handler_intlock aware of interval/summary
- Implement handler for interval/summary/eid/:eid/:tsrange
- Util/Date.pm: implement calculate_hours() function
- Model/Activity.pm: implement code_by_aid() function
- Improve interval/summary/eid/:eid/:tsrange handling
0.516 2016-01-09 20:42 CET
- cleanup: merge Utils::Date into Utils::Holiday
- cleanup: move REST::Util::Holiday to REST::Holiday
- cleanup: refrain from using the /a modifier
- Component_Config.pm: enclose siteparam template in HTML 4.0
- doc: improve comments in Util.pm
- doc: expand documentation of genreport resource
- Model/Interval.pm: simplify interval summary data structure
- Dispatch.pm: require 'source', 'acl' properties for insert only
- t/dispatch/interval_lock.t: add interval/summary tests
- Implement feature "Component class: add validations property" (#54)
- sql/component_Config.pm: add validations to SQL statements
- sql/dbinit_Config.pm: add validations to components table
- REST.pm->reset_db: add validations to SQL_COMPONENT_INSERT
- Model/Component.pm: add validations property
- t/dispatch/component.t: add validations property
- Build.PL: require App::Dochazka::Common 0.199 for component validations
- Fix bug "genreport resource does not validate parameters" (#53)
- genreport resource: apply validations, if any
- REST/Dispatch.pm->handler_genreport(): vet parameters more carefully
0.517 2016-01-11 00:29 CET
- config/Component_Config.pm: use Data::Dumper in component
- config/Component_Config.pm: beginnings of monthly report template
- t/model/tempintvls.t: change Util::Date to Holiday
- Dispatch.pm->handler_genreport(): refactor function
- Revamp Docker testing environment:
- version.plx: Perl script to print App::Dochazka::REST version
- .gitignore: ignore docker/Dockerfile
- bin/dochazka-dbinit: add database reset script
- docker: Makefile to generate 3 different images from a single
Dockerfile.in
- docker-test.sh: adapt to current state
0.518 2016-01-11 18:29 CET
- version.plx: use the right library directory
- docker/: split into two separate subdirs "production" and "testing"
- docker/: fix CMD so it runs dochazka-rest --initialize
- bin/dochazka-rest: finish adding --initialize option
0.519 2016-01-14 19:42 CET
- docker:
- Dockerfile: delete file which should not be here
- .gitignore: adapt to current state
- Makefile: push the images/tags to dochazka organization
- test-drive.sh: rename test drive script and update README
- test-drive.sh: remove silly exit statement
- test-drive.sh: use longer --link form
- test-drive.sh: increase wait times
- documentation:
- ACL.pm: fix POD
- Model/Employee.pm: adapt POD to current state
- REST/Guide.pm: adapt INSTALLATION chapter to current state
0.520 2016-01-19 15:17 CET
- dispatch: vastly simplify interval/fillup resource(s)
- t/dispatch/fillup.t: drop all tests
- Dispatch: rename handler_post_interval_fillup -> handler_fillup
- Dispatch.pm: delete employee key fields after employee has been determined
- dispatch_Message_en.conf: DISPATCH_EMPLOYEE_CANNOT_BE_DETERMINED
- refactor Tempintvl and Fillup modules
- Model/Tempintlvs.pm: support date lists
- t/model/tempintvls.t: wipe out database at beginning as well as at end
- Model/Interval.pm: tweak POD
- Model/Tempintvls.pm: fix syntax error
- Model/Tempintvls.pm: drop include_holidays parameter
- Model/Tempintvls.pm: drop deprecated SQL_TEMPINTVLS_SELECT_EXCLUSIVE
- Rename Tempintvls->Fillup and add Tempintvl class
- Rename ::Model::Fillup to just plain ::Fillup
- Fillup.pm: refactor accessors and reset() method
- t/unit/holiday.t: add canonicalized interval test case
- Holiday.pm->calculate_hours(): return 0 if problem
- Fillup.pm, Tempintvl.pm: refactor
- Build.PL: require latest App::Dochazka::Common
0.521 2016-01-19 16:28 CET
- Dispatch.pm: remove references to deprecated Tempintvls.pm
0.522 2016-01-20 10:02 CET
- MANIFEST.SKIP: ignore test-drive.sh
- Implement "fillup needs to gracefully avoid existing intervals"
https://github.com/smithfarm/dochazka-rest/issues/22
- Fillup.pm->commit: collect basic statistics (success/failure)
- Fillup.pm->new(): correctly set boolean attributes
- t/fillup.t: new test case - conflicting interval
0.523 2016-01-20 10:15 CET
- Docs/Resources.pm: re-generate resource documentation
- release.sh: automatically fill in OBS commit message
0.524 2016-01-20 15:55 CET
- WISHLIST: holding area for stale feature requests
- Fillup.pm->new(): fix date_list and tsrange validations
- t/fillup.pm: add a date_list test case
- Fix bug "interval/fillup returns wrong intervals for very short tsrange"
https://github.com/smithfarm/dochazka-rest/issues/21
- Fillup.pm: remove too-short tsrange check
- t/fillup.t: add too-short tsrange test cases
- Fix bug "fillup: enforce configurable limit on length of date_list"
https://github.com/smithfarm/dochazka-rest/issues/65
- config/: add "date_list too long" config param and message
- Fillup.pm: complain when date_list is too long
0.525 2016-01-22 09:26 CET
- Fillup.pm: "clobber conflicting intervals" feature
0.526 2016-01-24 23:55 CET
- Test.pm: add create_testing_interval and delete_testing_interval
- t/dispatch/interval_lock.t: rename helper function
- t/dispatch/fillup.t: get ready to start adding test cases
- Dispatch.pm: re-implement interval/fillup resource (#61)
- Fix bug "Holiday problems when employee has weekend work scheduled"
(#67)
- t/fillup-bug-67.t: add test case demonstrating the bug
- t/unit/holiday.t: add test confirming bug #67
- Holiday.pm: get holidays that fall on weekends
- Fillup.pm: fix various date_list bugs
0.527 2016-01-30 23:59 CET
- MANIFEST: add t/fillup-bug-67.t
- Fillup.pm->commit: return OK even if no intervals created
- Fillup.pm: give fillup intervals a fig leaf
- Fillup.pm->commit(): do not overwrite long_desc parameter
- document the DBIx::Connector object in the request context
- factory-progress: working document for Factory submission
0.528 2016-02-01 00:58 CET
- factory-progress: submit Starman to Factory
- Dispatch.pm: do not reinitialize Path::Router object on every request
0.529 2016-04-23 18:26 CEST
- factory-progress: add dependencies missing from SLES-12-SP1
- Guide.pm: add some clarifications from testing on humans
- systemd: add dochazka-rest.service file (#59)
- Build.PL: bump Date::Holidays::CZ dependency to 0.12 (#76)
0.530 2016-09-01 23:38 CEST
0.546 2016-09-25 09:44 CEST
- Revamp session management
- doc: update session management section of Guide
0.547 2016-09-26 14:00 CEST
- run-tests.sh: do not make an empty "1" file
- Auth.pm: require 'eid' property in _validate_session()
- model: stricter match for system users in ldap_sync()
- dispatch: improve error messages generated by LDAP handlers
0.548 2016-11-01 15:43 CET
- build/ops: move project back to Application:Dochazka (in OBS)
- Dispatch.pm: fix session resource
- Implement new "session/terminate" resource
0.549 2017-03-02 00:57 CET
- tests: fix top-level resource sanity test
- doc: dump session to log in Auth.pm
- scripts: cleanup dochazka-rest startup script
- build/ops: require Web::MREST 0.287
- doc: clarify schedule/scode/:scode
- make POST schedule/history accept scode as well as sid
- doc: clean up comments in Model/Shared.pm
- Make dbinit create DEFAULT schedule
- tests: add scode tests to t/sql/schedhistory.t
- tests: adapt tests to preserve DEFAULT schedule
- Model/Shared: make canonicalize_tsrange() fail on empty tsranges
- fillup: get conflicting intervals list in chronological order
0.553 2017-10-25 23:37 CEST
- WISHLIST: add "GET ldap/info"
- Dispatch: implement POST interval/scheduled
- Shared.pm: rip out dead code
- t/fillup.t: expand test coverage of Fillup
- Fix {priv,schedule}_change_during_range, {priv,sched}history_at_timestamp
0.554 2017-10-31 14:31 CET
- Fillup: return different code when dry_run is set
- tests: add 'interval/scheduled' coverage to t/dispatch/fillup.t
- Fillup: fix success and failure messages
- dbinit_Config: disallow modification of root supervisor field
0.555 2017-11-02 20:23 CET
- Model/Shared: introduce DOCHAZKA_SQL_TRACE to control SQL debugging info
- sql: add trigger preventing employees from supervising themselves
- Resource "POST interval/scheduled" no longer requires AID
- ResourceDefs: adjust POD of "interval/scheduled"
0.556 2017-11-02 23:20 CET
- Fillup: fix status code when no intervals created/identified
- Dispatch: fix regression in POST interval/fillup
0.557 2017-11-15 12:07 CET
- Add has_reports property to GET employee/.../full
- doc: ResourceDefs: mention URI encoding in employee/search/nick/:key
- ResourceDefs: let inactive and above search employee profiles
- Dispatch: refrain from returning 400 on certain harmless updates
0.558 2020-02-11 19:49 CET
- ResourceDefs: allow inactives to get full employee profiles of supervisees
- Dispatch: allow supervisor to generate scheduled intervals of supervisee
- build/ops: drop Makefile.PL, add t/critic.t and t/manifest.t
0.559 2022-06-29 17:49 CEST
- bootstrap: add bootstrap scripts
- ext/docker/testing/Makefile: convert from docker to podman
- bootstrap.sh: run tests recursively
- Guide.pm: use correct POD comment syntax
- t/: adapt tests to "invalid input syntax for type integer" error message
( run in 0.479 second using v1.01-cache-2.11-cpan-49f99fa48dc )