def mutate_and_get_payload(cls, root, info, owner, labbook_name, section, directory, client_mutation_id=None): username = get_logged_in_username() lb = InventoryManager().load_labbook(username, owner, labbook_name, author=get_logged_in_author()) with lb.lock(): FileOperations.makedir(lb, os.path.join(section, directory), create_activity_record=True) # Prime dataloader with labbook you already loaded dataloader = LabBookLoader() dataloader.prime(f"{owner}&{labbook_name}&{lb.name}", lb) # Create data to populate edge file_info = FileOperations.get_file_info(lb, section, directory) create_data = {'owner': owner, 'name': labbook_name, 'section': section, 'key': file_info['key'], '_file_info': file_info} # TODO: Fix cursor implementation, this currently doesn't make sense cursor = base64.b64encode(f"{0}".encode('utf-8')) return MakeLabbookDirectory( new_labbook_file_edge=LabbookFileConnection.Edge( node=LabbookFile(**create_data), cursor=cursor))
def _load_file_info(self, dataloader): """Private method to retrieve file info for a given key""" if not self._file_info: # Load file info from LabBook if not self.section or not self.key: raise ValueError( "Must set `section` and `key` on object creation to resolve file info" ) # Load labbook instance lb = dataloader.load( f"{get_logged_in_username()}&{self.owner}&{self.name}").get() # Retrieve file info self._file_info = FileOperations.get_file_info( lb, self.section, self.key) # Set class properties self.is_dir = self._file_info['is_dir'] self.modified_at = self._file_info['modified_at'] self.size = f"{self._file_info['size']}"