In addition to eliminating 12 - 30 second dashboard page load times entirely, the cut-over will also improve the timeliness and accuracy of "World" data.
(I also touched up the presentation of the V1 "World" panel on the dashboard while I was mucking around in there, and made a few more Material Design-inspired tweaks.)
As far as the general progress towards a functional V2 application is concerned, this release is a pretty major milestone: the /world route is complete, accurate, extensible and ready to support the new V2 webapp. This release also pushes a handful of new modules for user and game asset management in the V2 framework, so this release represents progress on that front as well.
I know I said that I was going to focus on back-end/architecture improvements related to V2 until Black Friday (or whenever we have a beta release of V2 ready to go), but my Dragon King showed up (from Europe) the other day, and I've kind of got a hankering to add support for that before I do too much else.
No promises though.
Hit the jump for full change notes.
Corrections and Fixes
- V1: fixed a few tablet-width presentation issues:
- one affecting the campaign summary view where long settlement names could be obscured by survivor management/creation controls.
- one affecting the Settlement Sheet where long settlement names did not display completely (due to input field width).
- one affecting the Survivor Sheet where the survivor's name could obscure top-right control buttons
- V1: corrected timestamp info on the "World" panel of the dashboard (used to say CT; the new prod machine does UTC timestamps).
- V2: refactored the /world return's killboard element to sort monsters according to their 'sort_order' attrib from assets/monsters.py
- V1: dashboard "World" panel has been refactored to use API data. Also, during the refactor, I made a few presentation improvements:
- killboard is completely redone and breaks defeated monsters up into quarries and nemeses
- latest fatality and latest survivor have also been refactored for better presentation (and include more info)
- redid the color scheme to incorporate material design concepts (including emphasis colors)
- removed horizontal rule delimiters and styled the h3's to break up the space instead
- V1: changed color schemes to use material design colors for "About" panel on the dashboard.
- V1: the pickle-based warehousing system is completely deprecated (bizarrely long page loads when the MDB misbehaves are now a thing of the past!)
- V2: updates to /world output:
- added total_settlements element
- dead_survivors and live_survivors are both counts in the mdb.survivors database (mdb.the_dead is no longer used).
- added a removed_settlements element and changed the abandoned_settlements query so that it literally only counts abandoned settlements. Also added an abandoned_and_removed_settlements element
- the world.py daemon and the World object now have separate log level controls in settings.cfg.
- added settlement_popularity_context_expansions elements
- Revised the query and methodology for determining which settlements are currently hunting monsters (world.World.current_hunt())
- email values are stripped from data (for user privacy)
- V2: created an expansions assets module (assets/expansions.py) and a model for accessing it and initializing an asset for general use (models/expansions.py). Also transposed assets from the V1 game_assets.py file.
- V2: created a campaign assets module (assets/campaigns.py) to collect all assets related to campaigns (e.g. generic milestones, timelines, principles, etc.). Transposed assets. Started working on the object initialization methods, etc.
- V1: created a handful of new methods in world.py for working with API results, such as api_world() (to get all data from /world) api_survivor_to_html(), api_survivor_to_monster(), etc.
- V2: refactored the world CLI options to support listing warehoused asset keys; removed the redundant dump method (for warehoused assets). Also revised option parsing help and metavars to be more useful to people who aren't me.
- V2: created a generic base class for initializing and doing basic work with user assets (Models.UserAsset class).
- V2: created a model for settlements (models/settlements.Settlement class) and started fleshing out with ports of V1 methods for working with settlements:
- ported the get_campaigns() method from V1 to models/settlements.Settlement() class. Improved it by adding a "object" return type (in addition to a "dict" return type).
- ported get_expansions()
- ported get_players() and left out the HTML methods. Feels good to deprecate HTML-generation code. Punched up the method so that it returns mdb.user objects in a list, if no return_type is specified
- V2: finished writing Models.GameAsset.initialize_from_name().
- V1: refactored admin panel slightly to include new killboard, some new user/asset stats from the /world route and world daemon status info.