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("/")
Esempio n. 2
0
    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)
Esempio n. 3
0
    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])
Esempio n. 4
0
    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
Esempio n. 5
0
    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)
Esempio n. 6
0
    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]
Esempio n. 7
0
    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("/")
Esempio n. 9
0
    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)
Esempio n. 10
0
    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)
Esempio n. 11
0
    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]
Esempio n. 12
0
    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
Esempio n. 13
0
    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