Regular enhancements/support for both the Manager and the KDM API have officially resumed, effective immediately!
As I mentioned earlier, release 2.9.318 required a downtime/outage to deploy because it implements a new, unified process for installing the Manager and the API. The updated README.md file on GitHub describes the new process, which, in addition to being greatly simplified/streamlined, should make both planned system updates and unintentional system restarts go much more smoothly.
Additionally, this release pushes a couple of significant bug fixes for the Settlement Sheet, including one that allowed users to add forbidden innovations to the settlement and another that prevented users from adding the "Pictograph" innovation.
Now that I am back to work on the project, I will take a look at the old, planned milestones and the outstanding, open issues in the project and redesign the development roadmap accordingly, so watch this space for updates on that.
And thanks for using the Manager!
Corrections and Fixes
- Fixed a bug where People of the Lantern and The Green Knight campaigns could add Sun Language and Dragon Speech (and Radiating Orb) innovations. -psharpe
- Fixed a typo/character escape issue that prevented the Pictograph innovation from being added to Settlement Sheet innovations: double quotes in asset keys were not escaped properly (e.g. during porting from the old, V1 style of assets). -NON
- Survivor Sheet now shows individual survivors buffs (e.g. from Innovations) in addition to settlement buffs.
- Fixed a bug where attempting to GET a survivor sheet via API failed because the models.survivors module called the old get_json() method instead of return_json().
- Fixed an import bug in the API's models.settlements imports where it tried to import the models.survivors module and then had a recursion meltdown.
- Fixed a bug in models.innovations.Assets.get_principle_from_name() where it returned principle types (rather than specific principles) and broke principle name lookups.
- Revised the README.md file to better cover bare-metal Ubuntu 16.04 installations as well as API server setup.
- Updated dependencies (mostly python ones) in the README.md to reflect the current requirements.
- Created install.sh in the project root for rapid installation of the Manager and the API server.
- Renamed init_script to init and rewrote it in bash; refactored it to use systemd (like we do with the API).
- Created update_settings.py for atomic settings file updates, e.g. during install, etc.
- server.py now supports specific operation requests, e.g. start/stop/restart via the --action arg.
- Added graceful failures to world.py functions for translating API data into webapp HTML: api_survivor_to_html(), api_monster_to_html() and api_settlement_to_html() now fail gracefully if the API doesn't give us a survivor back (but does return valid meta data); added a new helper to world.py called validate_api_return() to keep it neat and DRY.
- Survivor Sheets now show survivor innovation bonuses using API data, rather than the soon-to-deprecated legacy assets.get_bonuses() method, which is a total disaster right now and probably should not survive the next release.
- Additionally, the Survivor Sheet "Bonuses" section only appears if there are bonuses to show.
- Cleaned up some typos and formatting kerfuffles in the documentation.
- Pruned some vestigial/deprecated static files.
- Fixed a bug in the server.sh API init script that caused the service to be disabled incompletely/incorrectly and could leave gunicorn processes stranded
- Updated world.get_eligible_documents() to return a null key (rather than nothing) when it gets no results, i.e. eligible documents.
- Corrected an issue in world.py where utils.WorldQueryError() was initialized incorrectly and failed to log failed queries correctly.
- Corrected a similar issue where world.get_average() would fail to return useful data if it could not find eligible records. It returns None now.
- world.killboard() will now return None if no kills exist in mdb.
- world.latest_settlement() now fails gracefully, e.g. if no settlements match the criteria.
- Improved the logging in the API's models.settlements module around adding innovations to a settlement.
- Implemented a new method in models.settlements called get_bonuses() that returns all survivor bonuses/buffs as either a dict or as JSON. The JSON is front-end-dev friendly, and optimized for easy incorporation into the Survivor Sheet.
- Created a new top-level (i.e. flat) element at the top level of the serialized survivor called "bonuses" that contains settlement, survivor and departure buffs.
- Serialized survivors now have "notes" elements at the top level (i.e. they're flattened out a bit more). -khoa
- models.settlements.get_innovations() can now return principles (using the include_principles flag).