Exemplo n.º 1
0
    def test_archiving(self):
        siteroot = self.providing_stub([IAttributeAnnotatable])
        self.mock_utility(siteroot, ISiteRoot)

        dossier = self.stub_dossier()
        sub1 = self.stub_dossier()
        sub2 = self.stub_dossier()
        subsub1 = self.stub_dossier()

        objs = [dossier, sub1, sub2, subsub1]
        self.expect(dossier.get_subdossiers()).result([sub1, sub2])
        self.expect(sub1.get_subdossiers()).result([subsub1])
        self.expect(subsub1.get_subdossiers()).result([])
        self.expect(sub2.get_subdossiers()).result([])

        for obj in objs:
            self.expect(obj.reindexObject(idxs=ANY))
            self.expect(obj.getObject()).result(obj)

        self.replay()

        archiver = IDossierArchiver(dossier)
        archiver.archive('administration', '2013')

        number = 'SKA ARCH-Administration-2013-1'
        self.assertEquals(dossier.filing_no, number)
        self.assertEquals(sub1.filing_no, 'SKA ARCH-Administration-2013-1.1')
        self.assertEquals(sub2.filing_no, 'SKA ARCH-Administration-2013-1.2')
        self.assertEquals(subsub1.filing_no,
                          'SKA ARCH-Administration-2013-1.1.1')
Exemplo n.º 2
0
    def test_archiving_with_existing_number(self):
        siteroot = self.providing_stub([IAttributeAnnotatable])
        self.mock_utility(siteroot, ISiteRoot)

        dossier = self.stub_dossier()
        sub1 = self.stub_dossier()
        sub2 = self.stub_dossier()
        subsub1 = self.stub_dossier()

        objs = [dossier, sub1, sub2, subsub1]
        self.expect(dossier.get_subdossiers()).result([sub1, sub2])
        self.expect(sub1.get_subdossiers()).result([subsub1])
        self.expect(subsub1.get_subdossiers()).result([])
        self.expect(sub2.get_subdossiers()).result([])

        for obj in objs:
            self.expect(obj.getObject()).result(obj)
            self.expect(obj.reindexObject(idxs=ANY))

        self.replay()

        archiver = IDossierArchiver(dossier)
        number = 'FAKE NUMBER'
        archiver.archive('administration', '2013', number=number)

        self.assertEquals(dossier.filing_no, 'FAKE NUMBER')
        self.assertEquals(sub1.filing_no, 'FAKE NUMBER.1')
        self.assertEquals(sub2.filing_no, 'FAKE NUMBER.2')
        self.assertEquals(subsub1.filing_no, 'FAKE NUMBER.1.1')
Exemplo n.º 3
0
    def test_update_prefix(self):
        dossier = self.stub_dossier()
        sub1 = self.stub_dossier()
        sub2 = self.stub_dossier()
        subsub1 = self.stub_dossier()

        objs = [dossier, sub1, sub2, subsub1]
        self.expect(dossier.get_subdossiers()).result([sub1, sub2])
        self.expect(sub1.get_subdossiers()).result([subsub1])
        self.expect(subsub1.get_subdossiers()).result([])
        self.expect(sub2.get_subdossiers()).result([])

        for obj in objs:
            self.expect(obj.getObject()).result(obj)
            self.expect(obj.reindexObject(idxs=ANY))

        self.replay()

        archiver = IDossierArchiver(dossier)
        archiver.update_prefix('FAKE PREFIX')

        self.assertEquals(dossier.filing_prefix, 'FAKE PREFIX')
        self.assertEquals(sub1.filing_prefix, 'FAKE PREFIX')
        self.assertEquals(sub2.filing_prefix, 'FAKE PREFIX')
        self.assertEquals(subsub1.filing_prefix, 'FAKE PREFIX')
Exemplo n.º 4
0
    def test_update_prefix(self):
        dossier = self.stub_dossier()
        sub1 = self.stub_dossier()
        sub2 = self.stub_dossier()
        subsub1 = self.stub_dossier()

        objs = [dossier, sub1, sub2, subsub1]
        self.expect(dossier.get_subdossiers()).result([sub1, sub2])
        self.expect(sub1.get_subdossiers()).result([subsub1])
        self.expect(subsub1.get_subdossiers()).result([])
        self.expect(sub2.get_subdossiers()).result([])

        for obj in objs:
            self.expect(obj.getObject()).result(obj)
            self.expect(obj.reindexObject(idxs=ANY))

        self.replay()

        archiver = IDossierArchiver(dossier)
        archiver.update_prefix('FAKE PREFIX')

        self.assertEquals(dossier.filing_prefix, 'FAKE PREFIX')
        self.assertEquals(sub1.filing_prefix, 'FAKE PREFIX')
        self.assertEquals(sub2.filing_prefix, 'FAKE PREFIX')
        self.assertEquals(subsub1.filing_prefix, 'FAKE PREFIX')
Exemplo n.º 5
0
    def test_number_generation(self):
        self.login(self.dossier_responsible)
        self.assertEquals(
            'Hauptmandant-Department-2011-1',
            IDossierArchiver(self.dossier).generate_number(
                'department', '2011'))

        self.assertEquals(
            'Hauptmandant-Department-2011-2',
            IDossierArchiver(self.dossier).generate_number(
                'department', '2011'))

        self.assertEquals(
            'Hauptmandant-Administration-2011-1',
            IDossierArchiver(self.dossier).generate_number(
                'administration', '2011'))

        self.assertEquals(
            'Hauptmandant-Administration-2011-2',
            IDossierArchiver(self.dossier).generate_number(
                'administration', '2011'))

        self.assertEquals(
            'Hauptmandant-Administration-2012-1',
            IDossierArchiver(self.dossier).generate_number(
                'administration', '2012'))
Exemplo n.º 6
0
    def archive(self, action):
        """Try to archive this dossier.

        For that to happen, first all subdossiers need to have filing_no
        and end_date set, and then be resolved. If resolving any of the
        subdossier fails, we'll throw and error and return.
        """

        data, errors = self.extractData()

        # Abort if there were errors
        if len(errors) > 0:
            return
        self.ptool = getToolByName(self.context, 'plone_utils')
        self.wft = self.context.portal_workflow

        action = data.get('filing_action')
        filing_year = data.get('filing_year')
        filing_no = None
        filing_prefix = data.get('filing_prefix')
        end_date = data.get('dossier_enddate')

        if action == METHOD_FILING:
            # allready resolved only give a filing number
            IDossierArchiver(self.context).archive(filing_prefix, filing_year)
            self.ptool.addPortalMessage(_("The filing number has been given"),
                                        type="info")
            return self.request.RESPONSE.redirect(self.context.absolute_url())

        # archiving must passed to the resolving view
        resolver = IDossierResolver(self.context)
        if resolver.is_resolve_possible():
            raise TypeError
        if resolver.are_enddates_valid():
            raise TypeError

        if action == METHOD_RESOLVING_AND_FILING:
            IDossierArchiver(self.context).archive(filing_prefix, filing_year)

        if action == METHOD_RESOLVING_EXISTING_FILING:
            # archive all with the existing filing number
            filing_no = IFilingNumber(self.context).filing_no
            filing_prefix = IDossier(self.context).filing_prefix
            IDossierArchiver(self.context).archive(filing_prefix,
                                                   filing_year,
                                                   number=filing_no)

        if action == METHOD_RESOLVING:
            # only update the prefixes
            if filing_prefix:
                IDossierArchiver(self.context).update_prefix(filing_prefix)

        # If everything went well, resolve the main dossier
        resolver.resolve(end_date=end_date)

        self.ptool.addPortalMessage(_("The Dossier has been resolved"),
                                    type="info")
        return self.request.RESPONSE.redirect(self.context.absolute_url())
Exemplo n.º 7
0
 def test_update_prefix(self):
     self.login(self.dossier_responsible)
     IDossierArchiver(self.dossier).update_prefix('FAKE PREFIX')
     self.assertEquals('FAKE PREFIX', IDossier(self.dossier).filing_prefix)
     self.assertEquals('FAKE PREFIX',
                       IDossier(self.subdossier).filing_prefix)
     self.assertEquals('FAKE PREFIX',
                       IDossier(self.subdossier2).filing_prefix)
Exemplo n.º 8
0
 def test_searchable_filing_no_index(self):
     self.login(self.regular_user)
     IDossierArchiver(self.dossier).archive('admin', '2013', 'Foo')
     self.assert_index_value(['foo'], 'searchable_filing_no', self.dossier)
     self.assert_index_value(['foo', u'1'], 'searchable_filing_no',
                             self.subdossier)
     self.assert_index_value(['foo', u'2'], 'searchable_filing_no',
                             self.subdossier2)
Exemplo n.º 9
0
    def test_number_generation(self):

        siteroot = self.providing_stub([IAttributeAnnotatable])
        self.mock_utility(siteroot, ISiteRoot)

        dossier = self.providing_stub([IDossier, IDossierMarker])

        self.replay()

        archiver = IDossierArchiver(dossier)

        self.assertEquals(archiver.generate_number('department', '2011'),
                          'SKA ARCH-Department-2011-1')

        self.assertEquals(archiver.generate_number('department', '2011'),
                          'SKA ARCH-Department-2011-2')

        self.assertEquals(archiver.generate_number('administration', '2011'),
                          'SKA ARCH-Administration-2011-1')

        self.assertEquals(archiver.generate_number('administration', '2011'),
                          'SKA ARCH-Administration-2011-2')

        self.assertEquals(archiver.generate_number('administration', '2012'),
                          'SKA ARCH-Administration-2012-1')
Exemplo n.º 10
0
    def test_archiving(self):
        self.login(self.dossier_responsible)
        IDossierArchiver(self.dossier).archive('administration', '2013')

        self.assertEquals('Hauptmandant-Administration-2013-1',
                          IFilingNumber(self.dossier).filing_no)
        self.assertEquals('Hauptmandant-Administration-2013-1.1',
                          IFilingNumber(self.subdossier).filing_no)
        self.assertEquals('Hauptmandant-Administration-2013-1.2',
                          IFilingNumber(self.subdossier2).filing_no)
Exemplo n.º 11
0
 def test_archiving_with_existing_number(self):
     self.login(self.dossier_responsible)
     number = 'FAKE NUMBER'
     IDossierArchiver(self.dossier).archive('administration',
                                            '2013',
                                            number=number)
     self.assertEquals('FAKE NUMBER', IFilingNumber(self.dossier).filing_no)
     self.assertEquals('FAKE NUMBER.1',
                       IFilingNumber(self.subdossier).filing_no)
     self.assertEquals('FAKE NUMBER.2',
                       IFilingNumber(self.subdossier2).filing_no)
Exemplo n.º 12
0
    def setUp(self):
        super(TestArchiver, self).setUp()
        activate_filing_number(self.portal)
        self.admin_unit = create(
            Builder('admin_unit').having(
                title=u'SKA ARCH',
                unit_id=u'ska_arch').as_current_admin_unit())
        self.user = create(Builder('ogds_user'))
        self.org_unit = create(
            Builder('org_unit').id('client1').having(
                title=u'Client1',
                admin_unit=self.admin_unit).as_current_org_unit().
            with_default_groups().assign_users([self.user]))

        self.dossier = create(Builder('dossier'))
        self.sub1 = create(Builder('dossier').within(self.dossier))
        self.sub2 = create(Builder('dossier').within(self.dossier))
        self.subsub1 = create(Builder('dossier').within(self.sub1))

        self.archiver = IDossierArchiver(self.dossier)
Exemplo n.º 13
0
    def test_number_generation(self):

        siteroot = self.providing_stub([IAttributeAnnotatable])
        self.mock_utility(siteroot, ISiteRoot)

        dossier = self.providing_stub(
            [IDossier, IDossierMarker])

        self.replay()

        archiver = IDossierArchiver(dossier)

        self.assertEquals(
            archiver.generate_number('department', '2011'),
            'SKA ARCH-Department-2011-1')

        self.assertEquals(
            archiver.generate_number('department', '2011'),
            'SKA ARCH-Department-2011-2')

        self.assertEquals(
            archiver.generate_number('administration', '2011'),
            'SKA ARCH-Administration-2011-1')

        self.assertEquals(
            archiver.generate_number('administration', '2011'),
            'SKA ARCH-Administration-2011-2')

        self.assertEquals(
            archiver.generate_number('administration', '2012'),
            'SKA ARCH-Administration-2012-1')
Exemplo n.º 14
0
    def setUp(self):
        super(TestArchiver, self).setUp()
        activate_filing_number(self.portal)
        self.admin_unit = create(
            Builder('admin_unit').having(title=u'SKA ARCH',
                                         unit_id=u'ska_arch')
                                 .as_current_admin_unit()
        )
        self.user = create(Builder('ogds_user'))
        self.org_unit = create(
            Builder('org_unit').id('client1')
                               .having(title=u'Client1',
                                       admin_unit=self.admin_unit)
                               .as_current_org_unit()
                               .with_default_groups()
                               .assign_users([self.user])
        )

        self.dossier = create(Builder('dossier'))
        self.sub1 = create(Builder('dossier').within(self.dossier))
        self.sub2 = create(Builder('dossier').within(self.dossier))
        self.subsub1 = create(Builder('dossier').within(self.sub1))

        self.archiver = IDossierArchiver(self.dossier)
Exemplo n.º 15
0
class TestArchiver(FunctionalTestCase):
    use_default_fixture = False

    def setUp(self):
        super(TestArchiver, self).setUp()
        activate_filing_number(self.portal)
        self.admin_unit = create(
            Builder('admin_unit').having(
                title=u'SKA ARCH',
                unit_id=u'ska_arch').as_current_admin_unit())
        self.user = create(Builder('ogds_user'))
        self.org_unit = create(
            Builder('org_unit').id('client1').having(
                title=u'Client1',
                admin_unit=self.admin_unit).as_current_org_unit().
            with_default_groups().assign_users([self.user]))

        self.dossier = create(Builder('dossier'))
        self.sub1 = create(Builder('dossier').within(self.dossier))
        self.sub2 = create(Builder('dossier').within(self.dossier))
        self.subsub1 = create(Builder('dossier').within(self.sub1))

        self.archiver = IDossierArchiver(self.dossier)

    def tearDown(self):
        inactivate_filing_number(self.portal)
        super(TestArchiver, self).tearDown()

    def test_number_generation(self):
        self.assertEquals('SKA ARCH-Department-2011-1',
                          self.archiver.generate_number('department', '2011'))

        self.assertEquals('SKA ARCH-Department-2011-2',
                          self.archiver.generate_number('department', '2011'))

        self.assertEquals(
            'SKA ARCH-Administration-2011-1',
            self.archiver.generate_number('administration', '2011'))

        self.assertEquals(
            'SKA ARCH-Administration-2011-2',
            self.archiver.generate_number('administration', '2011'))

        self.assertEquals(
            'SKA ARCH-Administration-2012-1',
            self.archiver.generate_number('administration', '2012'))

    def test_archiving(self):
        self.archiver.archive('administration', '2013')

        self.assertEquals('SKA ARCH-Administration-2013-1',
                          IFilingNumber(self.dossier).filing_no)
        self.assertEquals('SKA ARCH-Administration-2013-1.1',
                          IFilingNumber(self.sub1).filing_no)
        self.assertEquals('SKA ARCH-Administration-2013-1.2',
                          IFilingNumber(self.sub2).filing_no)
        self.assertEquals('SKA ARCH-Administration-2013-1.1.1',
                          IFilingNumber(self.subsub1).filing_no)

    def test_archiving_with_existing_number(self):
        number = 'FAKE NUMBER'
        self.archiver.archive('administration', '2013', number=number)

        self.assertEquals('FAKE NUMBER', IFilingNumber(self.dossier).filing_no)
        self.assertEquals('FAKE NUMBER.1', IFilingNumber(self.sub1).filing_no)
        self.assertEquals('FAKE NUMBER.2', IFilingNumber(self.sub2).filing_no)
        self.assertEquals('FAKE NUMBER.1.1',
                          IFilingNumber(self.subsub1).filing_no)

    def test_update_prefix(self):
        self.archiver.update_prefix('FAKE PREFIX')

        self.assertEquals('FAKE PREFIX', IDossier(self.dossier).filing_prefix)
        self.assertEquals('FAKE PREFIX', IDossier(self.sub1).filing_prefix)
        self.assertEquals('FAKE PREFIX', IDossier(self.sub2).filing_prefix)
        self.assertEquals('FAKE PREFIX', IDossier(self.subsub1).filing_prefix)
Exemplo n.º 16
0
 def test_filing_no_index_and_metadata(self):
     self.login(self.regular_user)
     IDossierArchiver(self.dossier).archive('admin', '2013', 'Foo')
     self.assert_index_and_metadata('Foo', 'filing_no', self.dossier)
     self.assert_index_and_metadata('Foo.1', 'filing_no', self.subdossier)
     self.assert_index_and_metadata('Foo.2', 'filing_no', self.subdossier2)
Exemplo n.º 17
0
def filing_no(obj):
    """filing number indexer"""
    return IDossierArchiver(obj).get_indexer_value()
Exemplo n.º 18
0
def searchable_filing_no(obj):
    """Searchable filing number indexer"""
    return IDossierArchiver(obj).get_indexer_value(searchable=True)
Exemplo n.º 19
0
class TestArchiver(FunctionalTestCase):
    use_default_fixture = False

    def setUp(self):
        super(TestArchiver, self).setUp()
        activate_filing_number(self.portal)
        self.admin_unit = create(
            Builder('admin_unit').having(title=u'SKA ARCH',
                                         unit_id=u'ska_arch')
                                 .as_current_admin_unit()
        )
        self.user = create(Builder('ogds_user'))
        self.org_unit = create(
            Builder('org_unit').id('client1')
                               .having(title=u'Client1',
                                       admin_unit=self.admin_unit)
                               .as_current_org_unit()
                               .with_default_groups()
                               .assign_users([self.user])
        )

        self.dossier = create(Builder('dossier'))
        self.sub1 = create(Builder('dossier').within(self.dossier))
        self.sub2 = create(Builder('dossier').within(self.dossier))
        self.subsub1 = create(Builder('dossier').within(self.sub1))

        self.archiver = IDossierArchiver(self.dossier)

    def tearDown(self):
        inactivate_filing_number(self.portal)
        super(TestArchiver, self).tearDown()

    def test_number_generation(self):
        self.assertEquals(
            'SKA ARCH-Department-2011-1',
            self.archiver.generate_number('department', '2011'))

        self.assertEquals(
            'SKA ARCH-Department-2011-2',
            self.archiver.generate_number('department', '2011'))

        self.assertEquals(
            'SKA ARCH-Administration-2011-1',
            self.archiver.generate_number('administration', '2011'))

        self.assertEquals(
            'SKA ARCH-Administration-2011-2',
            self.archiver.generate_number('administration', '2011'))

        self.assertEquals(
            'SKA ARCH-Administration-2012-1',
            self.archiver.generate_number('administration', '2012'))

    def test_archiving(self):
        self.archiver.archive('administration', '2013')

        self.assertEquals('SKA ARCH-Administration-2013-1',
                          IFilingNumber(self.dossier).filing_no)
        self.assertEquals('SKA ARCH-Administration-2013-1.1',
                          IFilingNumber(self.sub1).filing_no)
        self.assertEquals('SKA ARCH-Administration-2013-1.2',
                          IFilingNumber(self.sub2).filing_no)
        self.assertEquals('SKA ARCH-Administration-2013-1.1.1',
                          IFilingNumber(self.subsub1).filing_no)

    def test_archiving_with_existing_number(self):
        number = 'FAKE NUMBER'
        self.archiver.archive('administration', '2013', number=number)

        self.assertEquals('FAKE NUMBER',
                          IFilingNumber(self.dossier).filing_no)
        self.assertEquals('FAKE NUMBER.1',
                          IFilingNumber(self.sub1).filing_no)
        self.assertEquals('FAKE NUMBER.2',
                          IFilingNumber(self.sub2).filing_no)
        self.assertEquals('FAKE NUMBER.1.1',
                          IFilingNumber(self.subsub1).filing_no)

    def test_update_prefix(self):
        self.archiver.update_prefix('FAKE PREFIX')

        self.assertEquals('FAKE PREFIX',
                          IDossier(self.dossier).filing_prefix)
        self.assertEquals('FAKE PREFIX',
                          IDossier(self.sub1).filing_prefix)
        self.assertEquals('FAKE PREFIX',
                          IDossier(self.sub2).filing_prefix)
        self.assertEquals('FAKE PREFIX',
                          IDossier(self.subsub1).filing_prefix)
Exemplo n.º 20
0
    def archive(self, action):
        """Try to archive this dossier.

        For that to happen, first all subdossiers need to have filing_no
        and end_date set, and then be resolved. If resolving any of the
        subdossier fails, we'll throw and error and return.
        """

        data, errors = self.extractData()

        # Abort if there were errors
        if len(errors) > 0:
            return
        self.ptool = getToolByName(self.context, 'plone_utils')
        self.wft = self.context.portal_workflow

        action = data.get('filing_action')
        filing_year = data.get('filing_year')
        filing_no = None
        filing_prefix = data.get('filing_prefix')
        end_date = data.get('dossier_enddate')

        if action == METHOD_FILING:
            # allready resolved only give a filing number
            IDossierArchiver(self.context).archive(filing_prefix, filing_year)
            self.ptool.addPortalMessage(_("The filing number has been given."),
                                        type="info")
            return self.request.RESPONSE.redirect(self.context.absolute_url())

        # Validate resolving preconditions
        resolver = get_resolver(self.context)
        try:
            resolver.raise_on_failed_preconditions()

        except PreconditionsViolated as exc:
            return self.show_errors(exc.errors)

        except InvalidDates as exc:
            return self.show_invalid_end_dates(
                titles=exc.invalid_dossier_titles)

        if action == METHOD_RESOLVING_AND_FILING:
            IDossierArchiver(self.context).archive(filing_prefix, filing_year)

        if action == METHOD_RESOLVING_EXISTING_FILING:
            # archive all with the existing filing number
            filing_no = IFilingNumber(self.context).filing_no
            filing_prefix = IDossier(self.context).filing_prefix
            IDossierArchiver(self.context).archive(filing_prefix,
                                                   filing_year,
                                                   number=filing_no)

        if action == METHOD_RESOLVING:
            # only update the prefixes
            if filing_prefix:
                IDossierArchiver(self.context).update_prefix(filing_prefix)

        # If everything went well, resolve the main dossier
        resolver.resolve(end_date=end_date)

        self.ptool.addPortalMessage(_("The Dossier has been resolved"),
                                    type="info")
        return self.request.RESPONSE.redirect(self.context.absolute_url())