def test_Title_on_brains_returns_title_in_preferred_language(self, browser):
        self.login(self.regular_user)

        set_preferred_language(self.portal.REQUEST, 'fr-ch')

        self.assertEquals('Syst\xc3\xa8me de classement',
                          obj2brain(self.repository_root).Title)
    def test_filename_conflicts_are_avoided_by_prefixing_attachment_number(self, browser):
        set_preferred_language(self.portal.REQUEST, 'de-ch')
        browser.append_request_header('Accept-Language', 'de-ch')
        self.login(self.committee_responsible, browser)

        documents = [
            create(Builder('document')
                   .within(self.dossier)
                   .titled('The same title')
                   .with_dummy_content())
            for i in range(3)]
        proposal, submitted_proposal = create(Builder('proposal')
                          .within(self.dossier)
                          .having(committee=self.committee.load_model())
                          .with_submitted()
                          .relate_to(*documents))
        self.schedule_proposal(self.meeting, submitted_proposal)

        browser.open(self.meeting, view='export-meeting-zip')
        self.assertEquals('application/zip', browser.contenttype)
        zip_file = ZipFile(StringIO(browser.contents), 'r')
        meeting_json = json.loads(zip_file.read('meeting.json'))

        expected_file_names = [u'Traktandum 1/Beilage/1_The same title.doc',
                               u'Traktandum 1/Beilage/2_The same title.doc',
                               u'Traktandum 1/Beilage/3_The same title.doc']
        json_file_names = [attachment.get("file") for attachment in
                           meeting_json["meetings"][0]['agenda_items'][0]["attachments"]]

        self.assertItemsEqual(expected_file_names, json_file_names)

        expected_file_names.extend(['meeting.json', 'Traktandum 1/Fooo.docx'])

        file_names = zip_file.namelist()
        self.assertItemsEqual(expected_file_names, file_names)
Пример #3
0
    def test_Title_on_brains_uses_Title_when_type_does_not_support_translated_title(self, browser):
        dossier = create(Builder('dossier').titled(u'F\xfchrung'))
        set_preferred_language(self.portal.REQUEST, 'de')
        self.assertEquals("F\xc3\xbchrung", obj2brain(dossier).Title)

        set_preferred_language(self.portal.REQUEST, 'fr')
        self.assertEquals("F\xc3\xbchrung", obj2brain(dossier).Title)
    def test_Title_on_brains_returns_title_in_preferred_language(
            self, browser):
        self.login(self.regular_user)

        set_preferred_language(self.portal.REQUEST, 'fr-ch')

        self.assertEquals('Syst\xc3\xa8me de classement',
                          obj2brain(self.repository_root).Title)
    def test_Title_on_brains_uses_Title_when_type_does_not_support_translated_title(
            self, browser):
        dossier = create(Builder('dossier').titled(u'F\xfchrung'))
        set_preferred_language(self.portal.REQUEST, 'de')
        self.assertEquals("F\xc3\xbchrung", obj2brain(dossier).Title)

        set_preferred_language(self.portal.REQUEST, 'fr')
        self.assertEquals("F\xc3\xbchrung", obj2brain(dossier).Title)
    def test_translated_title_returns_title_in_asked_language(self, browser):
        self.login(self.regular_user, browser=browser)

        set_preferred_language(self.portal.REQUEST, 'de-ch')

        self.assertEquals(
            u"Syst\xe8me de classement",
            ITranslatedTitle(self.repository_root).translated_title(language='fr'))
    def test_Title_returns_title_in_current_language(self):
        self.login(self.regular_user)
        set_preferred_language(self.portal.REQUEST, 'fr-ch')
        self.assertEquals('1.1. Contrats et accords', self.leaf_repofolder.Title())

        set_preferred_language(self.portal.REQUEST, 'de-ch')
        self.assertEquals('1.1. Vertr\xc3\xa4ge und Vereinbarungen',
                          self.leaf_repofolder.Title())
Пример #8
0
    def test_Title_returns_title_in_current_language(self):
        set_preferred_language(self.portal.REQUEST, 'fr-ch')
        self.assertEquals('1.1. Contrats et accords',
                          self.leaf_repofolder.Title())

        set_preferred_language(self.portal.REQUEST, 'de-ch')
        self.assertEquals('1.1. Vertr\xc3\xa4ge und Vereinbarungen',
                          self.leaf_repofolder.Title())
    def test_translated_title_returns_title_in_asked_language(self, browser):
        repository_root = create(
            Builder('repository_root').having(title_de=u"Ablage",
                                              title_fr=u"syst\xe8me d'ordre"))

        set_preferred_language(self.portal.REQUEST, 'de-ch')
        self.assertEquals(
            u"syst\xe8me d'ordre",
            ITranslatedTitle(repository_root).translated_title(language='fr'))
Пример #10
0
    def test_Title_on_brains_returns_title_in_preferred_language(self, browser):
        repository_root = create(Builder('repository_root')
                                 .having(title_de=u"Ablage",
                                         title_fr=u"syst\xe8me d'ordre"))

        set_preferred_language(self.portal.REQUEST, 'fr-ch')

        self.assertEquals("syst\xc3\xa8me d'ordre",
                          obj2brain(repository_root).Title)
Пример #11
0
    def test_translated_title_returns_title_in_asked_language(self, browser):
        repository_root = create(Builder('repository_root')
                                 .having(title_de=u"Ablage",
                                         title_fr=u"syst\xe8me d'ordre"))

        set_preferred_language(self.portal.REQUEST, 'de-ch')
        self.assertEquals(
            u"syst\xe8me d'ordre",
            ITranslatedTitle(repository_root).translated_title(language='fr'))
    def test_translated_title_returns_title_in_asked_language(self, browser):
        self.login(self.regular_user, browser=browser)

        set_preferred_language(self.portal.REQUEST, 'de-ch')

        self.assertEquals(
            u"Syst\xe8me de classement",
            ITranslatedTitle(
                self.repository_root).translated_title(language='fr'))
    def test_Title_on_brains_returns_title_in_preferred_language(
            self, browser):
        repository_root = create(
            Builder('repository_root').having(title_de=u"Ablage",
                                              title_fr=u"syst\xe8me d'ordre"))

        set_preferred_language(self.portal.REQUEST, 'fr-ch')

        self.assertEquals("syst\xc3\xa8me d'ordre",
                          obj2brain(repository_root).Title)
    def test_Title_on_brains_uses_Title_when_type_does_not_support_translated_title(self, browser):
        self.login(self.regular_user)

        set_preferred_language(self.portal.REQUEST, 'de-ch')
        self.assertEquals('Vertr\xc3\xa4ge mit der kantonalen Finanzverwaltung',
                          obj2brain(self.dossier).Title)

        set_preferred_language(self.portal.REQUEST, 'fr-ch')
        self.assertEquals('Vertr\xc3\xa4ge mit der kantonalen Finanzverwaltung',
                          obj2brain(self.dossier).Title)
    def test_meeting_data_for_zip_export_json(self):
        set_preferred_language(self.portal.REQUEST, 'de-ch')
        self.login(self.committee_responsible)
        self.schedule_paragraph(self.meeting, u'A Gesch\xfcfte')
        with freeze(localized_datetime(2017, 12, 13)):
            self.schedule_ad_hoc(self.meeting, u'Ad-hoc Traktand\xfem')
        self.schedule_proposal(self.meeting, self.submitted_proposal)

        serializer = MeetingJSONSerializer(
            self.meeting.model,
            MeetingDocumentZipper(self.meeting.model, None))
        serializer.traverse()
        expected_agenda_items = {
            'agenda_items': [
                {'opengever_id': 2, 'sort_order': 1, 'title': u'A Gesch\xfcfte'},
                {
                    'number': '1.', 'number_raw': 1, 'opengever_id': 3, 'proposal': {
                        'checksum': 'e00d6c8fb32c30d3ca3a3f8e5d873565482567561023016d9ca18243ff1cfa14',
                        'file': 'Traktandum 1/Ad-hoc Traktandthm.docx',
                        'modified': u'2017-12-13T00:00:00+01:00',
                    },
                    'sort_order': 2,
                    'title': u'Ad-hoc Traktand\xfem'
                },
                {
                    'attachments': [{
                        'checksum': '51d6317494eccc4a73154625a6820cb6b50dc1455eb4cf26399299d4f9ce77b2',
                        'file': 'Traktandum 2/Beilage/1_Vertraegsentwurf.docx',
                        'modified': u'2016-08-31T16:09:37+02:00',
                        'title': u'Vertr\xe4gsentwurf',
                    }],
                    'number': '2.',
                    'number_raw': 2,
                    'opengever_id': 4,
                    'proposal': {
                        'checksum': '114e7a059dc34c7459dab90904685584e331089d80bb6310183a0de009b66c3b',
                        'file': 'Traktandum 2/Vertraege.docx',
                        'modified': u'2016-08-31T16:09:35+02:00',
                    },
                    'sort_order': 3,
                    'title': u'Vertr\xe4ge',
                },
            ],
            'committee': {'oguid': u'plone:1009313300', 'title': u'Rechnungspr\xfcfungskommission'},
            'end': u'2016-09-12T17:00:00+00:00',
            'location': u'B\xfcren an der Aare',
            'opengever_id': 1,
            'start': u'2016-09-12T15:30:00+00:00',
            'title': u'9. Sitzung der Rechnungspr\xfcfungskommission',
        }

        self.assertEquals(expected_agenda_items, serializer.data)
Пример #16
0
 def test_task_zip_export_prefix_de(self):
     set_preferred_language(self.request, 'de-ch')
     self.login(self.dossier_responsible)
     task_zip_adapter = getMultiAdapter((self.task, self.request),
                                        interface=IZipRepresentation)
     paths = [
         path_and_file[0] for path_and_file in task_zip_adapter.get_files()
     ]
     expected_paths = [
         u'/Aufgabe - Rechtliche Grundlagen in Vertragsentwurf \xdcberpr\xfcfen',
         u'/Feedback zum Vertragsentwurf.docx',
     ]
     self.assertEqual(paths, expected_paths)
    def test_Title_on_brains_uses_Title_when_type_does_not_support_translated_title(
            self, browser):
        self.login(self.regular_user)

        set_preferred_language(self.portal.REQUEST, 'de-ch')
        self.assertEquals(
            'Vertr\xc3\xa4ge mit der kantonalen Finanzverwaltung',
            obj2brain(self.dossier).Title)

        set_preferred_language(self.portal.REQUEST, 'fr-ch')
        self.assertEquals(
            'Vertr\xc3\xa4ge mit der kantonalen Finanzverwaltung',
            obj2brain(self.dossier).Title)
Пример #18
0
 def test_task_zip_export_prefix_de(self):
     set_preferred_language(self.request, 'de-ch')
     self.login(self.dossier_responsible)
     task_zip_adapter = getMultiAdapter((self.task, self.request), interface=IZipRepresentation)
     paths = [
         path_and_file[0]
         for path_and_file in task_zip_adapter.get_files()
         ]
     expected_paths = [
         u'/Aufgabe - Rechtliche Grundlagen in Vertragsentwurf \xdcberpr\xfcfen',
         u'/Feedback zum Vertragsentwurf.docx',
         ]
     self.assertEqual(paths, expected_paths)
Пример #19
0
    def test_Title_returns_title_in_current_language(self):
        set_preferred_language(self.portal.REQUEST, 'fr-ch')
        self.assertEquals('1.1.1. Direction', self.repository_folder.Title())

        set_preferred_language(self.portal.REQUEST, 'de-ch')
        self.assertEquals('1.1.1. F\xc3\xbchrung', self.repository_folder.Title())
    def test_exported_meeting_json_has_correct_file_names(self, browser):
        set_preferred_language(self.portal.REQUEST, 'de-ch')
        browser.append_request_header('Accept-Language', 'de-ch')
        self.login(self.committee_responsible, browser)

        self.meeting.model.title = u'9. Sitzung der Rechnungspr\xfcfungs' \
                                   u'kommission, ordentlich'
        self.schedule_paragraph(self.meeting, u'A Gesch\xfcfte')
        with freeze(localized_datetime(2017, 12, 13)):
            self.schedule_ad_hoc(
                self.meeting, u'Ad-hoc Traktand\xfem'
            ).decide()
        agenda_item = self.schedule_proposal(self.meeting, self.submitted_proposal)
        self.decide_agendaitem_generate_and_return_excerpt(agenda_item)
        with freeze(localized_datetime(2017, 12, 14)):
            self.meeting.model.close()

        browser.open(self.meeting, view='export-meeting-zip')
        self.assertEquals('application/zip', browser.contenttype)

        zip_file = ZipFile(StringIO(browser.contents), 'r')

        meeting_json = json.loads(zip_file.read('meeting.json'))

        # the protocol is generated during the tests and its checksum cannot
        # be predicted
        meeting_json['meetings'][0]['protocol']['checksum'] = 'unpredictable'
        meeting_json['meetings'][0].pop('opengever_id')
        for agenda_item in meeting_json['meetings'][0]['agenda_items']:
            agenda_item.pop('opengever_id')

        expected_meeting_json = {
            u'meetings': [{
                u'agenda_items': [
                    {u'sort_order': 1, u'title': u'A Gesch\xfcfte'},
                    {
                        u'number': u'1.',
                        u'number_raw': 1,
                        u'proposal': {
                            u'checksum': u'e00d6c8fb32c30d3ca3a3f8e5d873565482567561023016d9ca18243ff1cfa14',
                            u'file': u'Traktandum 1/Ad-hoc Traktandthm.docx',
                            u'modified': u'2017-12-13T00:00:00+01:00',
                        },
                        u'sort_order': 2,
                        u'title': u'Ad-hoc Traktand\xfem',
                    },
                    {
                        u'attachments': [{
                            u'checksum': u'51d6317494eccc4a73154625a6820cb6b50dc1455eb4cf26399299d4f9ce77b2',
                            u'file': u'Traktandum 2/Beilage/1_Vertraegsentwurf.docx',
                            u'modified': u'2016-08-31T16:09:37+02:00',
                            u'title': u'Vertr\xe4gsentwurf',
                        }],
                        u'number': u'2.',
                        u'number_raw': 2,
                        u'proposal': {
                            u'checksum': u'114e7a059dc34c7459dab90904685584e331089d80bb6310183a0de009b66c3b',
                            u'file': u'Traktandum 2/Vertraege.docx',
                            u'modified': u'2016-08-31T16:09:35+02:00',
                        },
                        u'sort_order': 3,
                        u'title': u'Vertr\xe4ge',
                    },
                ],
                u'committee': {u'oguid': u'plone:1009313300', u'title': u'Rechnungspr\xfcfungskommission'},
                u'end': u'2016-09-12T17:00:00+00:00',
                u'location': u'B\xfcren an der Aare',
                u'protocol': {
                    u'checksum': 'unpredictable',
                    u'file': u'Protokoll-9. Sitzung der Rechnungspruefungskommission- ordentlich.docx',
                    u'modified': u'2017-12-14T00:00:00+01:00',
                },
                u'start': u'2016-09-12T15:30:00+00:00',
                u'title': u'9. Sitzung der Rechnungspr\xfcfungskommission, ordentlich',
            }],
            u'version': u'1.0.0',
        }
        self.assert_json_structure_equal(expected_meeting_json, meeting_json)

        expected_file_names = [
            'Protokoll-9. Sitzung der Rechnungspruefungskommission- ordentlich.docx',
            'Traktandum 1/Ad-hoc Traktandthm.docx',
            'Traktandum 2/Beilage/1_Vertraegsentwurf.docx',
            'Traktandum 2/Vertraege.docx',
            'meeting.json',
            ]
        file_names = sorted(zip_file.namelist())
        self.assertEqual(expected_file_names, file_names)