Skip to content

Commit

Permalink
core/web - fixed processing of nested condition groups
Browse files Browse the repository at this point in the history
  • Loading branch information
superstes committed Apr 2, 2021
1 parent 5ba2a89 commit 915ec2e
Show file tree
Hide file tree
Showing 5 changed files with 13 additions and 17 deletions.
1 change: 1 addition & 0 deletions code/core/device/output/condition/link.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ def _process_links(self, group: GaConditionGroup) -> bool:
last_result = result

self.logger.write(f"Result of condition \"{group.name}\": \"{last_result}\" ", level=6)
self._reset_flags(group)

return last_result

Expand Down
1 change: 1 addition & 0 deletions code/core/device/output/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,7 @@ def _reverse_timer(self, task_dict: dict) -> None:
)
def thread_task(data):
self._process(task_dict=data, reverse=True)
thread.stop_thread(description=device.name)

thread.start()

Expand Down
24 changes: 7 additions & 17 deletions code/core/utils/threader.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,11 +55,7 @@ def run(self) -> None:
if self.once:
while not self.state_stop.wait(self.sleep.total_seconds()):
self.execute(data=self.data)
Loop.stop_thread(
self.loop_instance,
thread_data=self.data,
description=self.description,
)
Loop.stop_thread(self.loop_instance, description=self.description)
break

else:
Expand Down Expand Up @@ -97,7 +93,7 @@ def __init__(self):
self.jobs = []
self.logger = Log()

def start(self, daemon=True, single_thread=None) -> None:
def start(self, daemon=True, single_thread: str = None) -> None:
if daemon:
self.logger.write('Starting threads in background', level=6)

Expand All @@ -109,7 +105,7 @@ def start(self, daemon=True, single_thread=None) -> None:
else:
self.logger.write(f"Starting single thread \"{single_thread}\"", level=6)

if job.name == single_thread:
if job.description == single_thread:
job.daemon = daemon
job.start()

Expand Down Expand Up @@ -164,15 +160,15 @@ def stop(self) -> bool:
self.logger.write('All threads stopped. Exiting loop', level=3)
return True

def stop_thread(self, thread_data, description: str):
def stop_thread(self, description: str):
self.logger.write(f"Stopping thread for \"{description}\"", level=6)
to_process_list = self.jobs

for job in to_process_list:
if job.name == thread_data:
if job.description == description:
job.stop()
self.jobs.remove(job)
self.logger.write(f"Thread {job.name} stopped.", level=2)
self.logger.write(f"Thread {job.description} stopped.", level=2)

def start_thread(self, sleep_time: int, thread_data, description: str) -> None:
self.thread(
Expand All @@ -184,10 +180,7 @@ def start_thread(self, sleep_time: int, thread_data, description: str) -> None:

def reload_thread(self, sleep_time: int, thread_data, description: str) -> None:
self.logger.write(f"Reloading thread for \"{description}\"", level=6)
self.stop_thread(
thread_data=thread_data,
description=description,
)
self.stop_thread(description=description)
self.start_thread(
sleep_time=sleep_time,
thread_data=thread_data,
Expand All @@ -197,6 +190,3 @@ def reload_thread(self, sleep_time: int, thread_data, description: str) -> None:
def list(self) -> list:
self.logger.write('Returning thread list', level=8)
return [job.data for job in self.jobs]

def __del__(self):
self.stop()
2 changes: 2 additions & 0 deletions code/web/base/ga/config/site.py
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,8 @@
'conditionlinkmember': {
'condition_link_member': {'model': MemberConditionLinkModel, 'form': MemberConditionLinkForm, 'member_action': 'conditionobject',
'pretty': 'Condition match', 'member_key': 'condition', 'group_key': 'link', 'url': 'conditionobject'},
'condition_link_member_group': {'model': MemberConditionLinkModel, 'form': MemberConditionLinkForm, 'member_action': 'conditiongroup',
'pretty': 'Nested condition', 'member_key': 'group', 'group_key': 'link', 'url': 'conditiongroup'},
},
'areamember': {
'connection_object': {'model': MemberAreaModel, 'form': MemberAreaForm,
Expand Down
2 changes: 2 additions & 0 deletions code/web/base/ga/subviews/config/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,7 @@ def _get_list(self):
_type_dict = sub_type_dict[member_type]
member_data = {
'condition_link_member': _type_dict['condition_link_member']['model'].objects.all(),
'condition_link_member_group': _type_dict['condition_link_member_group']['model'].objects.all(),
}
group_tbl = {'name': 'name', 'operator': 'operator', '': ''}
member_tbl = {'order': '?order', 'type': '!pretty', 'name': 'name', 'description': 'description'}
Expand All @@ -170,6 +171,7 @@ def _get_list(self):

if member_type is not None:
member_view_active, member_data_dict = member_pre_process(member_data_dict=member_data, request=self.request, type_dict=_type_dict)
print(member_data_dict)
tmpl = 'list/member'
context = {
'dataset': dataset, 'typ': self.type, 'request': self.request, 'member_data_dict': member_data_dict, 'member_type_dict': _type_dict,
Expand Down

0 comments on commit 915ec2e

Please sign in to comment.