def directory_update(dir_id): if "admin" in session and session["admin"]: directory = storage.dirs()[dir_id] name = request.args.get("name") name = directory.name if name is None else name enabled = request.args.get("enabled") enabled = directory.enabled if enabled is None else int(enabled) path = request.args.get("path") path = directory.path if path is None else path # Only name and enabled status can be updated updated_dir = Directory(path, enabled, directory.options, name) updated_dir.id = dir_id try: storage.update_directory(updated_dir) flash("<strong>Updated directory</strong>", "success") except DuplicateDirectoryException: flash( "<strong>The directory couldn't be updated</strong> Make the that the path is unique", "danger") return redirect("/directory/" + str(dir_id)) flash("You are not authorized to access this page", "warning") return redirect("/")
def test_reject_duplicate_path(self): s = LocalStorage(dir_name + "/test_database.db") d1 = Directory("/some/directory", True, [Option("key1", "val1"), Option("key2", "val2")], "An excellent name") d2 = Directory("/some/directory", True, [Option("key1", "val1"), Option("key2", "val2")], "An excellent name") s.save_directory(d1) with self.assertRaises(DuplicateDirectoryException) as e: s.save_directory(d2)
def test_set_access(self): s = LocalStorage(dir_name + "/test_database.db") dir_id = s.save_directory(Directory("/some/dir", True, [], "my dir")) dir_id2 = s.save_directory(Directory("/some/dir2", True, [], "my dir2")) dir_id3 = s.save_directory(Directory("/some/dir3", True, [], "my dir3")) s.save_user(User("bob", b"", False)) s.set_access("bob", dir_id, True) s.set_access("bob", dir_id2, True) s.set_access("bob", dir_id3, True) s.set_access("bob", dir_id3, False) self.assertEqual(s.get_access("bob"), [dir_id, dir_id2])
def execute_thumbnails(self, directory: Directory, total_files: Value, counter: Value, done: Value): dest_path = os.path.join("static/thumbnails", str(directory.id)) if os.path.exists(dest_path): shutil.rmtree(dest_path) docs = Search(config.elasticsearch_index).get_all_documents( directory.id) tn_generator = ThumbnailGenerator( int(directory.get_option("ThumbnailSize")), int(directory.get_option("ThumbnailQuality")), directory.get_option("ThumbnailColor")) tn_generator.generate_all(docs, dest_path, counter, directory, total_files) done.value = 1
def test_save_task(self): s = LocalStorage(dir_name + "/test_database.db") dir_id = s.save_directory(Directory("/some/dir", True, [], "my dir")) task_id = s.save_task(Task(0, dir_id)) self.assertEqual(s.tasks()[task_id].dir_id, dir_id) self.assertEqual(task_id, 1)
def test_remove_dir(self): s = LocalStorage(dir_name + "/test_database.db") d = Directory("/some/directory", True, [Option("key1", "val1"), Option("key2", "val3")], "An excellent name") dir_id = s.save_directory(d) s.remove_directory(dir_id) with self.assertRaises(KeyError): _ = s.dirs()[dir_id]
def test_update_option(self): s = LocalStorage(dir_name + "/test_database.db") d = Directory("/some/directory", True, [Option("key1", "val1"), Option("key2", "val2")], "An excellent name") dir_id = s.save_directory(d) s.update_option(Option("key1", "newVal", dir_id, 1)) self.assertEqual(s.dirs()[dir_id].options[0].value, "newVal")
def directory_add(): if "admin" in session and session["admin"]: path = request.args.get("path") name = request.args.get("name") if path is not None and name is not None: d = Directory(path, True, [], name) try: d.set_default_options() storage.save_directory(d) flash("<strong>Directory created</strong>", "success") except DuplicateDirectoryException: flash( "<strong>The directory couldn't be created</strong> Make sure to chose a unique name", "danger") return redirect("/directory") flash("You are not authorized to access this page", "warning") return redirect("/")
def test_save_and_retrieve_dir(self): storage = LocalStorage(dir_name + "/test_database.db") d = Directory("/some/directory", True, [Option("key1", "val1"), Option("key2", "val2")], "An excellent name") dir_id = storage.save_directory(d) self.assertEqual(storage.dirs()[dir_id].enabled, True) self.assertEqual(storage.dirs()[dir_id].options[0].key, "key1") self.assertEqual(storage.dirs()[dir_id].options[0].value, "val1") self.assertEqual(storage.dirs()[dir_id].options[0].dir_id, 1)
def test_save_option(self): s = LocalStorage(dir_name + "/test_database.db") d = Directory("/some/directory", True, [Option("key1", "val1"), Option("key2", "val2")], "An excellent name") dir_id = s.save_directory(d) opt_id = s.save_option(Option("key3", "val3", dir_id)) self.assertEqual(s.dirs()[dir_id].options[2].key, "key3") self.assertEqual(s.dirs()[dir_id].options[2].value, "val3") self.assertEqual(s.dirs()[dir_id].options[2].dir_id, dir_id) self.assertEqual(opt_id, 3)
def test_del_task(self): s = LocalStorage(dir_name + "/test_database.db") dir_id = s.save_directory(Directory("/some/dir", True, [], "my dir")) task_id = s.save_task(Task(0, dir_id)) s2 = LocalStorage(dir_name + "/test_database.db") s2.tasks() s2.del_task(task_id) self.assertEqual(len(s2.tasks()), 0) with self.assertRaises(KeyError): _ = s2.tasks()[task_id]
def execute_crawl(self, directory: Directory, counter: Value, done: Value, total_files: Value): Search(config.elasticsearch_index).delete_directory(directory.id) chksum_calcs = self.make_checksums_list(directory) mime_guesser = ExtensionMimeGuesser() if directory.get_option("MimeGuesser") == "extension" \ else ContentMimeGuesser() c = Crawler(self.make_parser_list(chksum_calcs, directory), mime_guesser, self.indexer, directory.id) c.crawl(directory.path, counter, total_files) done.value = 1
def test_update_directory(self): s = LocalStorage(dir_name + "/test_database.db") d = Directory("/some/directory", True, [Option("key1", "val1"), Option("key2", "val2")], "An excellent name") dir_id = s.save_directory(d) d.name = "A modified name" d.enabled = False d.path = "/another/directory" d.id = dir_id s.update_directory(d) s2 = LocalStorage(dir_name + "/test_database.db") self.assertEqual(s2.dirs()[dir_id].name, "A modified name") self.assertEqual(len(s2.dirs()[dir_id].options), 2) self.assertEqual(s2.dirs()[dir_id].path, "/another/directory") self.assertEqual(s2.dirs()[dir_id].enabled, 0) # enabled = false