def add_staged_file_to_dataset(rel_filepath, dataset_id, username, mimetype="application/octet-stream"): """ add file in user's staging path to a dataset may be replaced by main code functions. quick and dirty hack to get it working """ originfilepath = os.path.join(get_full_staging_path(username), rel_filepath) dataset = Dataset.objects.get(pk=dataset_id) newDatafile = Dataset_File() newDatafile.dataset = dataset newDatafile.size = os.path.getsize(originfilepath) newDatafile.protocol = "tardis" newDatafile.mimetype = mimetype file_dir = "/" + str(dataset.experiment.id) + "/" + str(dataset.id) + "/" file_path = file_dir + rel_filepath prelim_full_file_path = settings.FILE_STORE_PATH + file_path full_file_path = duplicate_file_check_rename(prelim_full_file_path) newDatafile.filename = os.path.basename(full_file_path) newDatafile.url = "%s://%s" % (newDatafile.protocol, full_file_path[ len(settings.FILE_STORE_PATH) + len(file_dir):]) if not os.path.exists(os.path.dirname(full_file_path)): os.makedirs(os.path.dirname(full_file_path)) shutil.move(originfilepath, full_file_path) newDatafile.save()
def testDuplicateFileCheckRename(self): from os import path from tempfile import mkdtemp from shutil import rmtree from tardis.tardis_portal.staging import duplicate_file_check_rename test_dir = mkdtemp() path.join(test_dir, "testfile.txt") f1 = open(path.join(test_dir, "testfile.txt"), 'w') f1.close() self.assertEqual( path.basename(duplicate_file_check_rename( path.join(test_dir, "testfile.txt"))), 'testfile_1.txt') f1 = open(path.join(test_dir, "testfile_1.txt"), 'w') f1.close() self.assertEqual( path.basename(duplicate_file_check_rename( path.join(test_dir, "testfile.txt"))), 'testfile_2.txt') rmtree(test_dir)
def testDuplicateFileCheckRename(self): from os import path from tempfile import mkdtemp from shutil import rmtree from tardis.tardis_portal.staging import duplicate_file_check_rename test_dir = mkdtemp() path.join(test_dir, "testfile.txt") f1 = open(path.join(test_dir, "testfile.txt"), 'w') f1.close() self.assertEqual( path.basename( duplicate_file_check_rename(path.join(test_dir, "testfile.txt"))), 'testfile_1.txt') f1 = open(path.join(test_dir, "testfile_1.txt"), 'w') f1.close() self.assertEqual( path.basename( duplicate_file_check_rename(path.join(test_dir, "testfile.txt"))), 'testfile_2.txt') rmtree(test_dir)