theLaborInVain / kdm-manager-api

The API used by https://kdm-manager.com and related Kingdom Death: Monster utilities.
Other
3 stars 0 forks source link

Settlement creation failure #63

Closed toconnell closed 2 years ago

toconnell commented 2 years ago

User OID: 5e93a0a6651593015ff970b4 Method: POST URL: http://api.kdm-manager.com/new/settlement JSON: {'name': None, 'campaign': 'people_of_the_lantern', 'macros': ['create_first_story_survivors'], 'expansions': ['spidicules'], 'survivors': []}

Traceback (most recent call last):
File "/home/toconnell/kdm-manager-api/venv/lib/python3.6/site-packages/flask/app.py", line 1950, in full_dispatch_request
 rv = self.dispatch_request()
File "/home/toconnell/kdm-manager-api/venv/lib/python3.6/site-packages/flask/app.py", line 1936, in dispatch_request
 return self.view_functions[rule.endpoint](**req.view_args)
File "/home/toconnell/kdm-manager-api/app/utils/crossdomain.py", line 56, in wrapped_function
 resp = flask.make_response(func(*args, **kwargs))
File "/home/toconnell/kdm-manager-api/app/routes.py", line 435, in new_asset
 return assets.new_user_asset(asset_type)
File "/home/toconnell/kdm-manager-api/app/assets/__init__.py", line 58, in new_user_asset
 S = settlements.Settlement()
File "/home/toconnell/kdm-manager-api/app/utils/__init__.py", line 285, in not_timed
 return method(*args, **kwargs)
File "/home/toconnell/kdm-manager-api/app/models/settlements.py", line 135, in __init__
 models.UserAsset.__init__(self, *args, **kwargs) # calls load()
File "/home/toconnell/kdm-manager-api/app/models/__init__.py", line 1035, in __init__
 self.new()
File "/home/toconnell/kdm-manager-api/app/models/settlements.py", line 305, in new
 self.add_expansions(all_expansions)
File "/home/toconnell/kdm-manager-api/app/models/settlements.py", line 996, in add_expansions
 normal_add()
File "/home/toconnell/kdm-manager-api/app/models/settlements.py", line 945, in normal_add
 in e_dict["timeline_rm"]
File "/home/toconnell/kdm-manager-api/app/models/settlements.py", line 946, in
 if e["ly"] >= self.get_current_ly()
File "/home/toconnell/kdm-manager-api/app/models/settlements.py", line 1705, in rm_timeline_event
 e.update(self.Events.get_asset(e['handle']))
AttributeError: 'Settlement' object has no attribute 'Events'
toconnell commented 2 years ago

This is a leftover bug from adding version support and preventing settlements from initializing assets until after they've been initialized.

toconnell commented 2 years ago
@@ -907,6 +902,8 @@ class Settlement(models.UserAsset):
         # in case we're creating new
         if not hasattr(self, 'Expansions'):
             self.Expansions = expansions.Assets()
+        if not hasattr(self, 'Events'):
+            self.Events = events.Assets()