def test_status_enumeration(self): Entity, session = self.Entity, self.session # begin status enumeration definition from camelot.model import type_and_status class Invoice(Entity, type_and_status.StatusMixin): book_date = schema.Column(types.Date(), nullable=False) status = type_and_status.Status(enumeration=[(1, "DRAFT"), (2, "READY")]) class Admin(EntityAdmin): list_display = ["book_date", "current_status"] list_actions = [type_and_status.ChangeStatus("DRAFT"), type_and_status.ChangeStatus("READY")] form_actions = list_actions # end status enumeration definition self.create_all() self.assertTrue(issubclass(Invoice._status_history, type_and_status.StatusHistory)) # begin status enumeration use invoice = Invoice(book_date=datetime.date.today()) self.assertEqual(invoice.current_status, None) invoice.change_status("DRAFT", status_from_date=datetime.date.today()) self.assertEqual(invoice.current_status, "DRAFT") self.assertEqual(invoice.get_status_from_date("DRAFT"), datetime.date.today()) draft_invoices = Invoice.query.filter(Invoice.current_status == "DRAFT").count() ready_invoices = Invoice.query.filter(Invoice.current_status == "READY").count() # end status enumeration use self.assertEqual(draft_invoices, 1) self.assertEqual(ready_invoices, 0) ready_action = Invoice.Admin.list_actions[-1] model_context = MockModelContext() model_context.obj = invoice list(ready_action.model_run(model_context)) self.assertTrue(invoice.current_status, "READY")
def test_i18n(self): from camelot.model.i18n import Translation, ExportAsPO session = Session() session.execute(Translation.__table__.delete()) self.assertEqual(Translation.translate('bucket', 'nl_BE'), None) # run twice to check all branches in the code Translation.translate_or_register('bucket', 'nl_BE') Translation.translate_or_register('bucket', 'nl_BE') self.assertEqual(Translation.translate('bucket', 'nl_BE'), 'bucket') self.assertEqual(Translation.translate('', 'nl_BE'), '') self.assertEqual(Translation.translate_or_register('', 'nl_BE'), '') # clear the cache Translation._cache.clear() # fill the cache again translation = Translation(language='nl_BE', source='bucket', value='emmer', uid=1) orm.object_session(translation).flush() self.assertEqual(Translation.translate('bucket', 'nl_BE'), 'emmer') export_action = ExportAsPO() model_context = MockModelContext() model_context.obj = translation try: generator = export_action.model_run(model_context) file_step = generator.next() generator.send(['/tmp/test.po']) except StopIteration: pass
def test_i18n( self ): from camelot.model.i18n import Translation, ExportAsPO session = Session() session.execute( Translation.__table__.delete() ) self.assertEqual( Translation.translate( 'bucket', 'nl_BE' ), None ) # run twice to check all branches in the code Translation.translate_or_register( 'bucket', 'nl_BE' ) Translation.translate_or_register( 'bucket', 'nl_BE' ) self.assertEqual( Translation.translate( 'bucket', 'nl_BE' ), 'bucket' ) self.assertEqual( Translation.translate( '', 'nl_BE' ), '' ) self.assertEqual( Translation.translate_or_register( '', 'nl_BE' ), '' ) # clear the cache Translation._cache.clear() # fill the cache again translation = Translation( language = 'nl_BE', source = 'bucket', value = 'emmer', uid=1 ) orm.object_session( translation ).flush() self.assertEqual( Translation.translate( 'bucket', 'nl_BE' ), 'emmer' ) export_action = ExportAsPO() model_context = MockModelContext() model_context.obj = translation try: generator = export_action.model_run( model_context ) file_step = generator.next() generator.send( ['/tmp/test.po'] ) except StopIteration: pass
def test_status_enumeration(self): Entity, session = self.Entity, self.session #begin status enumeration definition from camelot.model import type_and_status class Invoice(Entity, type_and_status.StatusMixin): book_date = schema.Column(types.Date(), nullable=False) status = type_and_status.Status(enumeration=[(1, 'DRAFT'), (2, 'READY')]) class Admin(EntityAdmin): list_display = ['book_date', 'current_status'] list_actions = [ type_and_status.ChangeStatus('DRAFT'), type_and_status.ChangeStatus('READY') ] form_actions = list_actions #end status enumeration definition self.create_all() self.assertTrue( issubclass(Invoice._status_history, type_and_status.StatusHistory)) #begin status enumeration use invoice = Invoice(book_date=datetime.date.today()) self.assertEqual(invoice.current_status, None) invoice.change_status('DRAFT', status_from_date=datetime.date.today()) self.assertEqual(invoice.current_status, 'DRAFT') self.assertEqual(invoice.get_status_from_date('DRAFT'), datetime.date.today()) draft_invoices = Invoice.query.filter( Invoice.current_status == 'DRAFT').count() ready_invoices = Invoice.query.filter( Invoice.current_status == 'READY').count() #end status enumeration use self.assertEqual(draft_invoices, 1) self.assertEqual(ready_invoices, 0) ready_action = Invoice.Admin.list_actions[-1] model_context = MockModelContext() model_context.obj = invoice list(ready_action.model_run(model_context)) self.assertTrue(invoice.current_status, 'READY')