Monday, October 31, 2016

Change Log: 1.44.900 / 2.10.38

Split-release 1.44.900 / 2.10.38 deprecates the old, file-system based warehousing scheme (introduced in 1.42.856)  in favor of calls to the V2 API.

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

Improvements


  • 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.

No comments:

Post a Comment