Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 27 additions & 7 deletions docassemble_base/docassemble/base/util.py
Original file line number Diff line number Diff line change
Expand Up @@ -1914,7 +1914,7 @@ def cancel_add_or_edit(self):
continue
new_stack.append(item)
docassemble.base.functions.this_thread.internal['event_stack'][unique_id] = new_stack
if self.complete_elements().number() != self.number_gathered():
if self.complete_elements().number() < self.number_gathered():
self.pop()
self.delattr('doing_gathered_and_complete', '_necessary_length', 'there_is_one_other')

Expand Down Expand Up @@ -2541,7 +2541,7 @@ def complete_elements(self, complete_attribute=None):
else:
try:
str(item)
except:
except Exception:
continue
items.append(item)
items.gathered = True
Expand Down Expand Up @@ -3621,7 +3621,7 @@ def complete_elements(self, complete_attribute=None):
"""Returns a dictionary containing the key/value pairs that are complete."""
if complete_attribute is None and hasattr(self, 'complete_attribute'):
complete_attribute = self.complete_attribute
items = {}
items = self.__class__(self.instanceName)
for key, val in self.elements.items():
if val is None:
continue
Expand All @@ -3636,9 +3636,10 @@ def complete_elements(self, complete_attribute=None):
else:
try:
str(val)
except:
except Exception:
continue
items[key] = val
items.gathered = True
return items

def _sorted_keys(self):
Expand Down Expand Up @@ -3689,6 +3690,24 @@ def _validate(self, item_object_type, complete_attribute, keys=None):
else:
str(elem)

def cancel_add_or_edit(self):
unique_id = docassemble.base.functions.this_thread.current_info['user']['session_uid']
if 'event_stack' in docassemble.base.functions.this_thread.internal and unique_id in docassemble.base.functions.this_thread.internal['event_stack']:
new_stack = []
for item in docassemble.base.functions.this_thread.internal['event_stack'][unique_id]:
if 'arguments' in item:
if 'dict' in item['arguments'] and item['arguments']['dict'] == self.instanceName:
continue
if 'group' in item['arguments'] and item['arguments']['group'] == self.instanceName:
continue
if 'action' in item and item['action'].startswith(self.instanceName + '['):
continue
new_stack.append(item)
docassemble.base.functions.this_thread.internal['event_stack'][unique_id] = new_stack
if self.complete_elements().number() < self.number_gathered():
self.popitem()
self.delattr('doing_gathered_and_complete', 'there_is_one_other', 'new_item_name')

def gathered_and_complete(self):
"""Ensures all items in the dictionary are complete and then returns True."""
if not hasattr(self, 'doing_gathered_and_complete'):
Expand Down Expand Up @@ -4262,10 +4281,10 @@ def gathered_and_complete(self):
return True

def complete_elements(self, complete_attribute=None):
"""Returns a subset with the elements that are complete."""
"""Returns a set of the elements that are complete."""
if complete_attribute is None and hasattr(self, 'complete_attribute'):
complete_attribute = self.complete_attribute
items = set()
items = self.__class__(self.instanceName)
for item in self.elements:
if item is None:
continue
Expand All @@ -4280,9 +4299,10 @@ def complete_elements(self, complete_attribute=None):
else:
try:
str(item)
except:
except Exception:
continue
items.add(item)
items.gathered = True
return items

def filter(self, *pargs, **kwargs):
Expand Down
Loading