diff --git a/docs/HISTORY.txt b/docs/HISTORY.txt index ea18ab811b6..c6c1920abc4 100644 --- a/docs/HISTORY.txt +++ b/docs/HISTORY.txt @@ -5,6 +5,7 @@ Changelog --------------------- - Bump docxcompose version to 1.0.1 [njohner] +- Improve SIP package generation and download. [phgross] - Fix qa tests. [lgraf] - Disable properties action for teams. [deiferni] - Add source vocabularies for workspace invitations and todo responsibles. [njohner] diff --git a/opengever/disposition/browser/configure.zcml b/opengever/disposition/browser/configure.zcml index 9873f2116bc..3ee5cbaa130 100644 --- a/opengever/disposition/browser/configure.zcml +++ b/opengever/disposition/browser/configure.zcml @@ -38,6 +38,20 @@ permission="opengever.disposition.DownloadSIPPackage" /> + + + + \n" "Language-Team: LANGUAGE \n" @@ -273,6 +273,16 @@ msgstr "Angebot abgelehnt durch ${user}" msgid "msg_disposition_updated" msgstr "Aktualisiert durch ${user}" +#. Default: "No SIP Package generated for this disposition." +#: ./opengever/disposition/browser/ech0160.py +msgid "msg_no_sip_package_generated" +msgstr "Es wurde noch kein SIP Paket generiert für dieses Angebot." + +#. Default: "SIP Package generated successfully." +#: ./opengever/disposition/browser/ech0160.py +msgid "msg_sip_package_sucessfully_generated" +msgstr "SIP Paket erfolgreich generiert." + #. Default: "Period" #: ./opengever/disposition/browser/templates/overview.pt msgid "period" diff --git a/opengever/disposition/locales/fr/LC_MESSAGES/opengever.disposition.po b/opengever/disposition/locales/fr/LC_MESSAGES/opengever.disposition.po index 2536f78264d..edc76631f52 100644 --- a/opengever/disposition/locales/fr/LC_MESSAGES/opengever.disposition.po +++ b/opengever/disposition/locales/fr/LC_MESSAGES/opengever.disposition.po @@ -1,21 +1,20 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2018-03-19 12:59+0000\n" +"POT-Creation-Date: 2019-07-25 14:32+0000\n" "PO-Revision-Date: 2018-05-22 10:09+0000\n" "Last-Translator: Niklaus Johner \n" -"Language-Team: French \n" -"Language: fr\n" +"Language-Team: French \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 2.13.1\n" "Language-Code: en\n" "Language-Name: English\n" "Preferred-Encodings: utf-8 latin1\n" "Domain: DOMAIN\n" +"Language: fr\n" +"X-Generator: Weblate 2.13.1\n" #: ./opengever/disposition/browser/excel_export.py msgid "The report could not been generated." @@ -276,6 +275,16 @@ msgstr "Offre refusée par ${user}" msgid "msg_disposition_updated" msgstr "Actualisé par ${user}" +#. Default: "No SIP Package generated for this disposition." +#: ./opengever/disposition/browser/ech0160.py +msgid "msg_no_sip_package_generated" +msgstr "" + +#. Default: "SIP Package generated successfully." +#: ./opengever/disposition/browser/ech0160.py +msgid "msg_sip_package_sucessfully_generated" +msgstr "" + #. Default: "Period" #: ./opengever/disposition/browser/templates/overview.pt msgid "period" diff --git a/opengever/disposition/locales/opengever.disposition.pot b/opengever/disposition/locales/opengever.disposition.pot index 4f3bd00248e..19d22a2c04f 100644 --- a/opengever/disposition/locales/opengever.disposition.pot +++ b/opengever/disposition/locales/opengever.disposition.pot @@ -4,7 +4,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2018-03-19 12:59+0000\n" +"POT-Creation-Date: 2019-07-25 14:32+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI +ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -276,6 +276,16 @@ msgstr "" msgid "msg_disposition_updated" msgstr "" +#. Default: "No SIP Package generated for this disposition." +#: ./opengever/disposition/browser/ech0160.py +msgid "msg_no_sip_package_generated" +msgstr "" + +#. Default: "SIP Package generated successfully." +#: ./opengever/disposition/browser/ech0160.py +msgid "msg_sip_package_sucessfully_generated" +msgstr "" + #. Default: "Period" #: ./opengever/disposition/browser/templates/overview.pt msgid "period" diff --git a/opengever/disposition/tests/test_disposition.py b/opengever/disposition/tests/test_disposition.py index 9516197c4a3..2bcd8dcbf6b 100644 --- a/opengever/disposition/tests/test_disposition.py +++ b/opengever/disposition/tests/test_disposition.py @@ -224,3 +224,40 @@ def test_reset_date_of_submission_for_dropped_dossiers(self, browser): None, ILifeCycle(self.offered_dossier_to_destroy).date_of_submission) self.assertEquals( date.today(), ILifeCycle(self.expired_dossier).date_of_submission) + + @browsing + def test_sip_package_is_genarated_and_stored_on_dispose(self, browser): + self.login(self.records_manager, browser) + + self.set_workflow_state('disposition-state-appraised', self.disposition) + + browser.open(self.disposition, view='overview') + browser.click_on('disposition-transition-dispose') + + self.assertEquals(['Item state changed.'], info_messages()) + self.assertTrue(self.disposition.has_sip_package()) + + # Download is possible + self.assertIn( + 'Download disposition package', browser.css('ul.actions li').text) + + @browsing + def test_sip_package_is_removed_on_close(self, browser): + self.login(self.records_manager, browser) + + self.disposition.store_sip_package() + self.set_workflow_state('disposition-state-appraised', self.disposition) + browser.open(self.disposition, view='overview') + + browser.click_on('disposition-transition-dispose') + self.assertTrue(self.disposition.has_sip_package()) + + with self.login(self.archivist, browser=browser): + browser.open(self.disposition, view='overview') + browser.click_on('disposition-transition-archive') + + browser.open(self.disposition, view='overview') + browser.click_on('disposition-transition-close') + + self.assertEquals(['Item state changed.'], info_messages()) + self.assertFalse(self.disposition.has_sip_package()) diff --git a/opengever/disposition/tests/test_ech0160export.py b/opengever/disposition/tests/test_ech0160export.py index b24263a041e..eb260bc2135 100644 --- a/opengever/disposition/tests/test_ech0160export.py +++ b/opengever/disposition/tests/test_ech0160export.py @@ -1,7 +1,10 @@ from datetime import datetime from ftw.testbrowser import browsing +from ftw.testbrowser.pages.statusmessages import error_messages +from ftw.testbrowser.pages.statusmessages import info_messages from ftw.testing import freeze from opengever.testing import IntegrationTestCase +import os class TesteCH0160Deployment(IntegrationTestCase): @@ -22,3 +25,50 @@ def test_returns_zip_file_stream(self, browser): self.assertEquals( 'inline; filename="SIP_20160611_PLONE_10xy.zip"', self.request.response.headers.get('content-disposition')) + + +class TestECH0160StoreView(IntegrationTestCase): + + @browsing + def test_generates_sip_package_and_stores_it_as_a_blob_on_the_filesystem(self, browser): + self.login(self.records_manager, browser=browser) + + self.set_workflow_state('disposition-state-disposed', self.disposition) + self.disposition.transfer_number = "10xy" + self.assertFalse(self.disposition.has_sip_package()) + + with freeze(datetime(2016, 6, 11)): + browser.open(self.disposition, view='ech0160_store') + + self.assertEquals( + ['SIP Package generated successfully.'], info_messages()) + self.assertTrue(self.disposition.has_sip_package()) + + +class TestECH0160DownloadView(IntegrationTestCase): + + @browsing + def test_shows_status_message_when_no_zip_is_stored(self, browser): + self.login(self.archivist, browser=browser) + + self.set_workflow_state('disposition-state-disposed', self.disposition) + browser.open(self.disposition, view='ech0160_download') + self.assertEquals([u'No SIP Package generated for this disposition.'], + error_messages()) + + @browsing + def test_streams_zip_when_sip_package_is_stored(self, browser): + self.login(self.archivist, browser=browser) + + self.set_workflow_state('disposition-state-disposed', self.disposition) + self.disposition.transfer_number = "10xy" + self.disposition.store_sip_package() + + with freeze(datetime(2016, 6, 11)): + browser.open(self.disposition, view='ech0160_download') + + self.assertEquals( + 'application/zip', browser.headers.get('content-type')) + self.assertEquals( + "attachment; filename*=UTF-8''SIP_20160611_PLONE_10xy.zip", + browser.headers.get('content-disposition')) diff --git a/opengever/disposition/tests/test_overview.py b/opengever/disposition/tests/test_overview.py index 90ab7e7a488..86f8e662401 100644 --- a/opengever/disposition/tests/test_overview.py +++ b/opengever/disposition/tests/test_overview.py @@ -152,11 +152,13 @@ def test_action_availability(self, browser): browser.css('ul.actions li').text) browser.find('disposition-transition-dispose').click() + self.assertEquals(['Export appraisal list as excel', 'Download disposition package'], browser.css('ul.actions li').text) + self.assertEquals( - os.path.join(self.disposition.absolute_url(), 'ech0160_export'), + os.path.join(self.disposition.absolute_url(), 'ech0160_download'), browser.find('Download disposition package').get('href')) self.assertEquals( os.path.join(self.disposition.absolute_url(), 'download_excel'),