设置给gui显示的任务 的参数的具体值 :return:
(self, task: str, group: str, argument: str, value)
| 153 | return self.config.model.gui_task(task=task) |
| 154 | |
| 155 | def gui_set_task(self, task: str, group: str, argument: str, value) -> bool: |
| 156 | """ |
| 157 | 设置给gui显示的任务 的参数的具体值 |
| 158 | :return: |
| 159 | """ |
| 160 | # 验证参数 |
| 161 | task = convert_to_underscore(task) |
| 162 | group = convert_to_underscore(group) |
| 163 | argument = convert_to_underscore(argument) |
| 164 | # pandtic验证 |
| 165 | if isinstance(value, str): |
| 166 | if len(value) == 8: |
| 167 | try: |
| 168 | value = datetime.strptime(value, '%H:%M:%S').time() |
| 169 | except ValueError: |
| 170 | pass |
| 171 | |
| 172 | |
| 173 | path = f'{task}.{group}.{argument}' |
| 174 | task_object = getattr(self.config.model, task, None) |
| 175 | group_object = getattr(task_object, group, None) |
| 176 | argument_object = getattr(group_object, argument, None) |
| 177 | |
| 178 | if argument_object is None: |
| 179 | logger.error(f'Set arg {task}.{group}.{argument}.{value} failed') |
| 180 | return False |
| 181 | |
| 182 | try: |
| 183 | setattr(group_object, argument, value) |
| 184 | argument_object = getattr(group_object, argument, None) |
| 185 | logger.info(f'Set arg {task}.{group}.{argument}.{argument_object}') |
| 186 | self.config.save() # 我是没有想到什么方法可以使得属性改变自动保存的 |
| 187 | return True |
| 188 | except ValidationError as e: |
| 189 | logger.error(e) |
| 190 | return False |
| 191 | |
| 192 | @zerorpc.stream |
| 193 | def gui_mirror_image(self): |
nothing calls this directly
no test coverage detected