Exemplo n.º 1
0
    def test_zipfile_structure(self):
        dossier_a = create(Builder("dossier").within(self.folder))
        dossier_b = create(Builder("dossier").within(self.folder))
        create(Builder("document").with_dummy_content().within(dossier_a))
        create(Builder("document").with_dummy_content().attach_archival_file_containing("TEST DATA").within(dossier_b))

        with freeze(datetime(2016, 6, 11)):
            tmpfile = TemporaryFile()
            zip_file = ZipFile(tmpfile, "w")

            package = SIPPackage([dossier_a, dossier_b])
            package.write_to_zipfile(zip_file)

            self.assertItemsEqual(
                [
                    "SIP_20160611_PLONE_MyRef/header/xsd/ablieferung.xsd",
                    "SIP_20160611_PLONE_MyRef/header/xsd/archivischeNotiz.xsd",
                    "SIP_20160611_PLONE_MyRef/header/xsd/archivischerVorgang.xsd",
                    "SIP_20160611_PLONE_MyRef/header/xsd/arelda.xsd",
                    "SIP_20160611_PLONE_MyRef/header/xsd/base.xsd",
                    "SIP_20160611_PLONE_MyRef/header/xsd/datei.xsd",
                    "SIP_20160611_PLONE_MyRef/header/xsd/dokument.xsd",
                    "SIP_20160611_PLONE_MyRef/header/xsd/dossier.xsd",
                    "SIP_20160611_PLONE_MyRef/header/xsd/ordner.xsd",
                    "SIP_20160611_PLONE_MyRef/header/xsd/ordnungssystem.xsd",
                    "SIP_20160611_PLONE_MyRef/header/xsd/ordnungssystemposition.xsd",
                    "SIP_20160611_PLONE_MyRef/header/xsd/paket.xsd",
                    "SIP_20160611_PLONE_MyRef/header/xsd/provenienz.xsd",
                    "SIP_20160611_PLONE_MyRef/header/xsd/zusatzDaten.xsd",
                    "SIP_20160611_PLONE_MyRef/content/d000001/p000001.doc",
                    "SIP_20160611_PLONE_MyRef/content/d000002/p000002.pdf",
                    "SIP_20160611_PLONE_MyRef/header/metadata.xml",
                ],
                zip_file.namelist(),
            )
Exemplo n.º 2
0
    def test_sip_folder_name_correspond_to_ech0160_definition(self):
        """See chapter 5.4 Aufbau eines SIP in eCH-0160 definition.

        SIP_[Ablieferungsdatum]_[Name der ablieferenden Stelle]_[Referenz].
        """
        dossier = create(Builder("dossier").within(self.folder))

        with freeze(datetime(2016, 11, 6)):
            package = SIPPackage([dossier])
            self.assertEquals("SIP_20161106_PLONE_MyRef", package.get_folder_name())
Exemplo n.º 3
0
    def test_sip_folder_name_correspond_to_ech0160_definition(self):
        """See chapter 5.4 Aufbau eines SIP in eCH-0160 definition.

        SIP_[Ablieferungsdatum]_[Name der ablieferenden Stelle]_[Referenz].
        """
        self.login(self.records_manager)
        package = SIPPackage(self.disposition)

        with freeze(datetime(2016, 11, 6)):
            self.assertEquals('SIP_20161106_PLONE', package.get_folder_name())

        self.disposition.transfer_number = u'10\xe434'
        with freeze(datetime(2016, 11, 6)):
            self.assertEquals(u'SIP_20161106_PLONE_10\xe434',
                              package.get_folder_name())
Exemplo n.º 4
0
    def __call__(self):
        BindingDOMSupport.SetDefaultNamespace(u'http://bar.admin.ch/arelda/v4')

        package = SIPPackage(self.context)
        tmpfile = self.create_zipfile(package)

        size = tmpfile.tell()
        response = self.request.response
        response.setHeader(
            "Content-Disposition",
            'inline; filename="%s.zip"' % package.get_folder_name())
        response.setHeader("Content-type", "application/zip")
        response.setHeader("Content-Length", size)

        return TempfileStreamIterator(tmpfile, size)
Exemplo n.º 5
0
    def __call__(self):
        BindingDOMSupport.SetDefaultNamespace(u'http://bar.admin.ch/arelda/v4')

        package = SIPPackage(self.get_dossiers())
        tmpfile = self.create_zipfile(package)

        size = tmpfile.tell()
        response = self.request.response
        response.setHeader(
            "Content-Disposition",
            'inline; filename="%s.zip"' % package.get_folder_name())
        response.setHeader("Content-type", "application/zip")
        response.setHeader("Content-Length", size)

        return TempfileStreamIterator(tmpfile, size)
Exemplo n.º 6
0
    def test_sip_folder_name_correspond_to_ech0160_definition(self):
        """See chapter 5.4 Aufbau eines SIP in eCH-0160 definition.

        SIP_[Ablieferungsdatum]_[Name der ablieferenden Stelle]_[Referenz].
        """
        self.login(self.records_manager)
        package = SIPPackage(self.disposition)

        with freeze(datetime(2016, 11, 6)):
            self.assertEquals(
                'SIP_20161106_PLONE', package.get_folder_name())

        self.disposition.transfer_number = u'10\xe434'
        with freeze(datetime(2016, 11, 6)):
            self.assertEquals(
                u'SIP_20161106_PLONE_10\xe434', package.get_folder_name())
Exemplo n.º 7
0
    def test_ablieferungs_metadata(self):
        self.login(self.records_manager)
        package = SIPPackage(self.disposition)

        self.assertEquals(u'GEVER', package.ablieferung.ablieferungstyp)
        self.assertEquals('Hauptmandant, ramon.flucht',
                          package.ablieferung.ablieferndeStelle)
        self.assertEquals(u'Hauptmandant',
                          package.ablieferung.provenienz.aktenbildnerName)
        self.assertEquals(u'Ordnungssystem',
                          package.ablieferung.provenienz.registratur)
Exemplo n.º 8
0
    def test_sip_folder_name_correspond_to_ech0160_definition(self):
        """See chapter 5.4 Aufbau eines SIP in eCH-0160 definition.

        SIP_[Ablieferungsdatum]_[Name der ablieferenden Stelle]_[Referenz].
        """
        dossier = create(Builder('dossier').within(self.folder).as_expired())
        disposition = create(Builder('disposition')
                             .having(dossiers=[dossier])
                             .within(self.folder))

        with freeze(datetime(2016, 11, 6)):
            package = SIPPackage(disposition)
            self.assertEquals(
                'SIP_20161106_PLONE', package.get_folder_name())

        disposition.transfer_number = u'10\xe434'
        with freeze(datetime(2016, 11, 6)):
            package = SIPPackage(disposition)
            self.assertEquals(
                u'SIP_20161106_PLONE_10\xe434', package.get_folder_name())
Exemplo n.º 9
0
    def test_zipfile_structure(self):
        dossier_a = create(Builder('dossier').within(self.folder).as_expired())
        dossier_b = create(Builder('dossier').within(self.folder).as_expired())
        create(Builder('document').with_dummy_content().within(dossier_a))
        create(
            Builder('document').with_dummy_content().
            attach_archival_file_containing('TEST DATA').within(dossier_b))
        disposition = create(
            Builder('disposition').having(dossiers=[dossier_a, dossier_b],
                                          transfer_number=u'10xy').within(
                                              self.folder))

        with freeze(datetime(2016, 6, 11)):
            tmpfile = TemporaryFile()
            zip_file = ZipFile(tmpfile, 'w')

            package = SIPPackage(disposition)
            package.write_to_zipfile(zip_file)

            self.assertItemsEqual([
                'SIP_20160611_PLONE_10xy/header/xsd/ablieferung.xsd',
                'SIP_20160611_PLONE_10xy/header/xsd/archivischeNotiz.xsd',
                'SIP_20160611_PLONE_10xy/header/xsd/archivischerVorgang.xsd',
                'SIP_20160611_PLONE_10xy/header/xsd/arelda.xsd',
                'SIP_20160611_PLONE_10xy/header/xsd/base.xsd',
                'SIP_20160611_PLONE_10xy/header/xsd/datei.xsd',
                'SIP_20160611_PLONE_10xy/header/xsd/dokument.xsd',
                'SIP_20160611_PLONE_10xy/header/xsd/dossier.xsd',
                'SIP_20160611_PLONE_10xy/header/xsd/ordner.xsd',
                'SIP_20160611_PLONE_10xy/header/xsd/ordnungssystem.xsd',
                'SIP_20160611_PLONE_10xy/header/xsd/ordnungssystemposition.xsd',
                'SIP_20160611_PLONE_10xy/header/xsd/paket.xsd',
                'SIP_20160611_PLONE_10xy/header/xsd/provenienz.xsd',
                'SIP_20160611_PLONE_10xy/header/xsd/zusatzDaten.xsd',
                'SIP_20160611_PLONE_10xy/content/d000001/p000001.doc',
                'SIP_20160611_PLONE_10xy/content/d000002/p000002.pdf',
                'SIP_20160611_PLONE_10xy/content/d000002/p000003.doc',
                'SIP_20160611_PLONE_10xy/header/metadata.xml'
            ], zip_file.namelist())
Exemplo n.º 10
0
    def test_handles_documents_without_a_file_correctly(self):
        dossier_a = create(Builder('dossier').within(self.folder).as_expired())
        create(Builder('document').with_dummy_content().within(dossier_a))
        create(Builder('document').within(dossier_a))
        disposition = create(
            Builder('disposition').having(dossiers=[dossier_a]).within(
                self.folder))

        package = SIPPackage(disposition)

        dossier_a_model = package.content_folder.folders[0]
        self.assertEquals(1, len(dossier_a_model.files))
        self.assertEquals(2, len(package.dossiers[0].documents))
Exemplo n.º 11
0
    def test_zipfile_structure(self):
        dossier_a = create(Builder('dossier').within(self.folder).as_expired())
        dossier_b = create(Builder('dossier').within(self.folder).as_expired())
        create(Builder('document').with_dummy_content().within(dossier_a))
        create(Builder('document')
               .with_dummy_content()
               .attach_archival_file_containing('TEST DATA')
               .within(dossier_b))
        disposition = create(Builder('disposition')
                             .having(dossiers=[dossier_a, dossier_b],
                                     transfer_number=u'10xy')
                             .within(self.folder))

        with freeze(datetime(2016, 6, 11)):
            tmpfile = TemporaryFile()
            zip_file = ZipFile(tmpfile, 'w')

            package = SIPPackage(disposition)
            package.write_to_zipfile(zip_file)

            self.assertItemsEqual(
                ['SIP_20160611_PLONE_10xy/header/xsd/ablieferung.xsd',
                 'SIP_20160611_PLONE_10xy/header/xsd/archivischeNotiz.xsd',
                 'SIP_20160611_PLONE_10xy/header/xsd/archivischerVorgang.xsd',
                 'SIP_20160611_PLONE_10xy/header/xsd/arelda.xsd',
                 'SIP_20160611_PLONE_10xy/header/xsd/base.xsd',
                 'SIP_20160611_PLONE_10xy/header/xsd/datei.xsd',
                 'SIP_20160611_PLONE_10xy/header/xsd/dokument.xsd',
                 'SIP_20160611_PLONE_10xy/header/xsd/dossier.xsd',
                 'SIP_20160611_PLONE_10xy/header/xsd/ordner.xsd',
                 'SIP_20160611_PLONE_10xy/header/xsd/ordnungssystem.xsd',
                 'SIP_20160611_PLONE_10xy/header/xsd/ordnungssystemposition.xsd',
                 'SIP_20160611_PLONE_10xy/header/xsd/paket.xsd',
                 'SIP_20160611_PLONE_10xy/header/xsd/provenienz.xsd',
                 'SIP_20160611_PLONE_10xy/header/xsd/zusatzDaten.xsd',
                 'SIP_20160611_PLONE_10xy/content/d000001/p000001.doc',
                 'SIP_20160611_PLONE_10xy/content/d000002/p000002.pdf',
                 'SIP_20160611_PLONE_10xy/header/metadata.xml'],
                zip_file.namelist())
Exemplo n.º 12
0
    def test_adds_all_dossiers_and_documents(self):
        dossier_a = create(Builder('dossier').within(self.folder).as_expired())
        create(Builder('document').with_dummy_content().within(dossier_a))
        dossier_b = create(Builder('dossier').within(self.folder).as_expired())
        dossier_c = create(Builder('dossier').within(self.folder).as_expired())
        disposition = create(
            Builder('disposition').having(
                dossiers=[dossier_a, dossier_b]).within(self.folder))

        package = SIPPackage(disposition)

        # test that dossier_c is not in package
        self.assertEquals(2, len(package.dossiers))
        self.assertItemsEqual([dossier_a, dossier_b],
                              [dossier.obj for dossier in package.dossiers])
        self.assertEquals(2, len(package.content_folder.folders))

        dossier_a_model, dossier_b_model = package.content_folder.folders
        self.assertEquals(1, len(dossier_a_model.files))
        self.assertEquals(0, len(dossier_b_model.files))
Exemplo n.º 13
0
 def generate_sip_package(self):
     package = SIPPackage(self)
     zip_file = self.create_zipfile(package)
     zip_file.seek(0)
     return NamedBlobFile(zip_file.read(), contentType='application/zip')