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'))
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())
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')
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')
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')
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)
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)
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)
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)
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 filing_no(obj): """filing number indexer""" return IDossierArchiver(obj).get_indexer_value()
def searchable_filing_no(obj): """Searchable filing number indexer""" return IDossierArchiver(obj).get_indexer_value(searchable=True)
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())
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)