コード例 #1
0
ファイル: test_model.py プロジェクト: odmsolutions/Camelot
    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")
コード例 #2
0
ファイル: test_model.py プロジェクト: jeroendierckx/Camelot
 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
コード例 #3
0
ファイル: test_model.py プロジェクト: jeroendierckx/Camelot
 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
コード例 #4
0
ファイル: test_model.py プロジェクト: jeroendierckx/Camelot
    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')