Example #1
0
    def test_exporter(self):
        shutil.rmtree(os.path.join(self.dirs.media_dir, "documents"))
        shutil.copytree(
            os.path.join(os.path.dirname(__file__), "samples", "documents"),
            os.path.join(self.dirs.media_dir, "documents"))

        file = os.path.join(self.dirs.originals_dir, "0000001.pdf")

        Document.objects.create(
            content="Content",
            checksum="42995833e01aea9b3edee44bbfdd7ce1",
            archive_checksum="62acb0bcbfbcaa62ca6ad3668e4e404b",
            title="wow",
            filename="0000001.pdf",
            mime_type="application/pdf")
        Document.objects.create(content="Content",
                                checksum="9c9691e51741c1f4f41a20896af31770",
                                title="wow",
                                filename="0000002.pdf.gpg",
                                mime_type="application/pdf",
                                storage_type=Document.STORAGE_TYPE_GPG)
        Tag.objects.create(name="t")
        DocumentType.objects.create(name="dt")
        Correspondent.objects.create(name="c")

        target = tempfile.mkdtemp()
        self.addCleanup(shutil.rmtree, target)

        call_command('document_exporter', target)

        with open(os.path.join(target, "manifest.json")) as f:
            manifest = json.load(f)

        self.assertEqual(len(manifest), 5)

        for element in manifest:
            if element['model'] == 'documents.document':
                fname = os.path.join(
                    target, element[document_exporter.EXPORTER_FILE_NAME])
                self.assertTrue(os.path.exists(fname))
                self.assertTrue(
                    os.path.exists(
                        os.path.join(
                            target, element[
                                document_exporter.EXPORTER_THUMBNAIL_NAME])))

                with open(fname, "rb") as f:
                    checksum = hashlib.md5(f.read()).hexdigest()
                self.assertEqual(checksum, element['fields']['checksum'])

                if document_exporter.EXPORTER_ARCHIVE_NAME in element:
                    fname = os.path.join(
                        target,
                        element[document_exporter.EXPORTER_ARCHIVE_NAME])
                    self.assertTrue(os.path.exists(fname))

                    with open(fname, "rb") as f:
                        checksum = hashlib.md5(f.read()).hexdigest()
                    self.assertEqual(checksum,
                                     element['fields']['archive_checksum'])

        with paperless_environment() as dirs:
            call_command('document_importer', target)
            messages = check_sanity()
            # everything is alright after the test
            self.assertEqual(len(messages), 0, str([str(m) for m in messages]))
Example #2
0
    def test_exporter(self, use_filename_format=False):
        shutil.rmtree(os.path.join(self.dirs.media_dir, "documents"))
        shutil.copytree(
            os.path.join(os.path.dirname(__file__), "samples", "documents"),
            os.path.join(self.dirs.media_dir, "documents"))

        manifest = self._do_export(use_filename_format=use_filename_format)

        self.assertEqual(len(manifest), 7)
        self.assertEqual(
            len(
                list(
                    filter(lambda e: e['model'] == 'documents.document',
                           manifest))), 4)

        self.assertTrue(
            os.path.exists(os.path.join(self.target, "manifest.json")))

        self.assertEqual(
            self._get_document_from_manifest(manifest,
                                             self.d1.id)['fields']['title'],
            "wow1")
        self.assertEqual(
            self._get_document_from_manifest(manifest,
                                             self.d2.id)['fields']['title'],
            "wow2")
        self.assertEqual(
            self._get_document_from_manifest(manifest,
                                             self.d3.id)['fields']['title'],
            "wow2")
        self.assertEqual(
            self._get_document_from_manifest(manifest,
                                             self.d4.id)['fields']['title'],
            "wow_dec")

        for element in manifest:
            if element['model'] == 'documents.document':
                fname = os.path.join(
                    self.target, element[document_exporter.EXPORTER_FILE_NAME])
                self.assertTrue(os.path.exists(fname))
                self.assertTrue(
                    os.path.exists(
                        os.path.join(
                            self.target, element[
                                document_exporter.EXPORTER_THUMBNAIL_NAME])))

                with open(fname, "rb") as f:
                    checksum = hashlib.md5(f.read()).hexdigest()
                self.assertEqual(checksum, element['fields']['checksum'])

                self.assertEqual(element['fields']['storage_type'],
                                 Document.STORAGE_TYPE_UNENCRYPTED)

                if document_exporter.EXPORTER_ARCHIVE_NAME in element:
                    fname = os.path.join(
                        self.target,
                        element[document_exporter.EXPORTER_ARCHIVE_NAME])
                    self.assertTrue(os.path.exists(fname))

                    with open(fname, "rb") as f:
                        checksum = hashlib.md5(f.read()).hexdigest()
                    self.assertEqual(checksum,
                                     element['fields']['archive_checksum'])

        with paperless_environment() as dirs:
            self.assertEqual(Document.objects.count(), 4)
            Document.objects.all().delete()
            Correspondent.objects.all().delete()
            DocumentType.objects.all().delete()
            Tag.objects.all().delete()
            self.assertEqual(Document.objects.count(), 0)

            call_command('document_importer', self.target)
            self.assertEqual(Document.objects.count(), 4)
            self.assertEqual(Tag.objects.count(), 1)
            self.assertEqual(Correspondent.objects.count(), 1)
            self.assertEqual(DocumentType.objects.count(), 1)
            self.assertEqual(Document.objects.get(id=self.d1.id).title, "wow1")
            self.assertEqual(Document.objects.get(id=self.d2.id).title, "wow2")
            self.assertEqual(Document.objects.get(id=self.d3.id).title, "wow2")
            self.assertEqual(
                Document.objects.get(id=self.d4.id).title, "wow_dec")
            messages = check_sanity()
            # everything is alright after the test
            self.assertEqual(len(messages), 0, str([str(m) for m in messages]))