def test_list_labbooks_modified_date(self, mock_config_file): """Test list modified dated sorted labbooks""" inv_manager = InventoryManager(mock_config_file[0]) lb1 = inv_manager.create_labbook("user1", "user1", "labbook3", description="my first labbook") time.sleep(1.2) lb2 = inv_manager.create_labbook("user1", "user1", "asdf", description="my second labbook") time.sleep(1.2) lb3 = inv_manager.create_labbook("user1", "user2", "labbook1", description="my other labbook") time.sleep(1.2) lb4 = inv_manager.create_labbook("user1", "user1", "hhghg", description="my other labbook") inv_manager = InventoryManager(mock_config_file[0]) labbooks = inv_manager.list_labbooks(username="******", sort_mode="modified_on") assert len(labbooks) == 4 assert labbooks[0].name == 'labbook3' assert labbooks[1].name == 'asdf' assert labbooks[2].name == 'labbook1' assert labbooks[3].name == 'hhghg' # modify a repo time.sleep(1.2) with open(os.path.join(lb2.root_dir, "code", "test.txt"), 'wt') as tf: tf.write("asdfasdf") lb2.git.add_all() lb2.git.commit("Changing the repo") labbooks = inv_manager.list_labbooks(username="******", sort_mode="modified_on") assert len(labbooks) == 4 assert labbooks[0].name == 'labbook3' assert labbooks[1].name == 'labbook1' assert labbooks[2].name == 'hhghg' assert labbooks[3].name == 'asdf'
def test_list_labbooks_az(self, mock_config_file): """Test list az labbooks""" inv_manager = InventoryManager(mock_config_file[0]) lb1 = inv_manager.create_labbook("user1", "user1", "labbook0", description="my first labbook") lb2 = inv_manager.create_labbook("user1", "user1", "labbook12", description="my second labbook") lb3 = inv_manager.create_labbook("user1", "user2", "labbook3", description="my other labbook") lb4 = inv_manager.create_labbook("user2", "user1", "labbook4", description="my other labbook") labbooks = inv_manager.list_labbooks(username="******") assert len(labbooks) == 3 assert labbooks[0].name == 'labbook0' assert labbooks[1].name == 'labbook3' assert labbooks[2].name == 'labbook12'
def clean_dataset_file_cache(logged_in_username: str, dataset_owner: str, dataset_name: str, cache_location: str, config_file: str = None) -> None: """Method to import a dataset from a zip file Args: logged_in_username: username for the currently logged in user dataset_owner: Owner of the labbook if this dataset is linked dataset_name: Name of the labbook if this dataset is linked cache_location: Absolute path to the file cache (inside the container) for this dataset config_file: Returns: None """ logger = LMLogger.get_logger() p = os.getpid() try: logger.info( f"(Job {p}) Starting clean_dataset_file_cache(logged_in_username={logged_in_username}," f"dataset_owner={dataset_owner}, dataset_name={dataset_name}") im = InventoryManager(config_file=config_file) # Check for dataset try: im.load_dataset(logged_in_username, dataset_owner, dataset_name) logger.info( f"{logged_in_username}/{dataset_owner}/{dataset_name} still exists. Skipping file cache clean." ) return except InventoryException: # Dataset not found, move along pass # Check for submodule references for lb in im.list_labbooks(logged_in_username): for ds in im.get_linked_datasets(lb): if ds.namespace == dataset_owner and ds.name == dataset_name: logger.info( f"{logged_in_username}/{dataset_owner}/{dataset_name} still referenced by {str(lb)}." f" Skipping file cache clean.") return # If you get here the dataset no longer exists and is not used by any projects, clear files shutil.rmtree(cache_location) except Exception as err: logger.error(f"(Job {p}) Error in clean_dataset_file_cache job") logger.exception(err) raise
def test_list_labbooks_create_date_no_metadata(self, mock_config_file): """Test list create dated sorted labbooks""" inv_manager = InventoryManager(mock_config_file[0]) lb1 = inv_manager.create_labbook("user1", "user1", "labbook3", description="my first labbook") time.sleep(1.1) lb2 = inv_manager.create_labbook("user1", "user1", "asdf", description="my second labbook") time.sleep(1.1) lb3 = inv_manager.create_labbook("user1", "user2", "labbook1", description="my other labbook") time.sleep(1.1) labbooks = inv_manager.list_labbooks(username="******", sort_mode="created_on") assert len(labbooks) == 3 assert labbooks[0].name == 'labbook3' assert labbooks[1].name == 'asdf' assert labbooks[2].name == 'labbook1' labbooks2 = inv_manager.list_labbooks(username="******", sort_mode="created_on") assert len(labbooks2) == 3 assert labbooks2[0].name == 'labbook3' assert labbooks2[1].name == 'asdf' assert labbooks2[2].name == 'labbook1' os.remove(os.path.join(lb2.root_dir, '.gigantum', 'project.yaml')) labbooks3 = inv_manager.list_labbooks(username="******", sort_mode='modified_on') assert len(labbooks3) == 2
def resolve_local_labbooks(self, info, order_by: str, sort: str, **kwargs): """Method to return all graphene Labbook instances for the logged in user available locally Uses the "currently logged in" user Args: order_by(str): String specifying how labbooks should be sorted sort(str): 'desc' for descending (default) 'asc' for ascending Returns: list(Labbook) """ username = get_logged_in_username() if sort == "desc": reverse = True elif sort == "asc": reverse = False else: raise ValueError(f"Unsupported sort_str: {sort}. Use `desc`, `asc`") # Collect all labbooks for all owners inv_manager = InventoryManager() local_lbs = inv_manager.list_labbooks(username=username, sort_mode=order_by) if reverse: local_lbs.reverse() edges = [(inv_manager.query_owner(lb), lb.name) for lb in local_lbs] cursors = [base64.b64encode("{}".format(cnt).encode("UTF-8")).decode("UTF-8") for cnt, x in enumerate(edges)] # Process slicing and cursor args lbc = ListBasedConnection(edges, cursors, kwargs) lbc.apply() # Get Labbook instances edge_objs = [] for edge, cursor in zip(lbc.edges, lbc.cursors): create_data = {"id": "{}&{}".format(edge[0], edge[1]), "name": edge[1], "owner": edge[0]} edge_objs.append(LabbookConnection.Edge(node=Labbook(**create_data), cursor=cursor)) return LabbookConnection(edges=edge_objs, page_info=lbc.page_info)
def test_list_labbooks_create_date(self, mock_config_file): """Test list create dated sorted labbooks""" inv_manager = InventoryManager(mock_config_file[0]) lb1 = inv_manager.create_labbook("user1", "user1", "labbook3", description="my first labbook") time.sleep(1.5) lb2 = inv_manager.create_labbook("user1", "user1", "asdf", description="my second labbook") time.sleep(1.5) lb3 = inv_manager.create_labbook("user1", "user2", "labbook1", description="my other labbook") labbooks = inv_manager.list_labbooks(username="******", sort_mode="created_on") assert len(labbooks) == 3 assert labbooks[0].name == 'labbook3' assert labbooks[1].name == 'asdf' assert labbooks[2].name == 'labbook1'