def materialize_parent(resource_name: str, events: list): """ Materializes the field 'parent' of events that only affect components (such as TestHardDrive or EraseBasic) :param resource_name: :param events: :return: """ if resource_name in Event.resource_types: for event in events: sub_schema = current_app.config["DOMAIN"][resource_name]["schema"] if "parent" in sub_schema: event["parent"] = ComponentDomain.get_parent(event["device"])["_id"]
def materialize_parent(resource_name: str, events: list): """ Materializes the field 'parent' of events that only affect components (such as TestHardDrive or EraseBasic) :param resource_name: :param events: :return: """ if resource_name in Event.resource_types: for event in events: sub_schema = current_app.config['DOMAIN'][resource_name]['schema'] if 'parent' in sub_schema: event['parent'] = ComponentDomain.get_parent(event['device'])['_id']
def get_add_remove(self, device: dict, new_parent: dict): """ Get the changes (events) that will need to be triggered for the given device. Changes will we saved in the same device in the reserved key '_change'. The function doesn't execute any event per se or validate that the user can do it. :param device: The device must have an hid :param new_parent: """ if not device['new']: try: old_parent = ComponentDomain.get_parent(device['_id']) except DeviceNotFound: # The component exists but had no parent device, until now self.events.append_add(device, new_parent) else: if not DeviceDomain.seem_equal(old_parent, new_parent): self.events.append_remove(device, old_parent) self.events.append_add(device, new_parent)