Just a heads up, while break/fix and bug support will not slow down at all in the near term, feature work (including refactoring and redesign) for the legacy app is going to slow down quite a bit over the next few months: between work on the The Watcher and the fact that I'm moving this spring/summer, I don't feel like I will have the free time to keep up with the kind of insane release schedule that I kept up during November/December/January 2016.
That said, we're still full steam ahead on The Watcher and should have some real news on that very soon!
Thanks again for using the Manager!
- The API method models.users.User.get_friends() no longer throws an exception when attempting to serialize a user with no assets. -khoa
- Resolved an issue where Sunstalker "Jowls" and the Manhunter's "Crimson Vial" could cause tracebacks during Settlement Sheet rendering. -hindenfurg
- The legacy application's api.py module now uses the /login route for JWT auth (rather than the /auth route). See below for specifics.
- Updated the API documentation to describe the /login route and the correct usage of the "Authorization" header.
- Updated the API documentation to also describe the new user action route.
- Deprecated the use of the api_keys file completely. Authorization will only happen through headers and JWT.
- Installed flask_jwt_extended for lazier/better JWT operations. I think the plan going forward will be to standardize on these methods, because bare-backing flask_jwt or pyjwt is not something I'm interested in doing.
- Created a new route called /login to replace /auth (i.e. the built-in flask_jwt route) that handles token creation and user auth. -khoa
- Punched up the generic __repr__() method of the Models.UserAsset() class so that it complains (i.e. WARNs in the logs) when you initialize an object without a "name" attribute. Gotta police that data model, yo.
- The /login route accepts POST and OPTIONS requests and gives a pass to the "Authorization" header.
- The /login route now return the user's MDB _id value on auth (just in case we don't have it, e.g. at first login, etc.)
- Created the /user/get/<user_id> route so that it functions basically like our "get" action routes for settlements and survivors (i.e. calls the Models.py method for serializing the object according to its own self.serialize() method, etc.).
- models.users.get_friends() now returns an int of 0 if the user has no friends (rather than a None/null type).