Ejemplo n.º 1
0
    def model_factory(self):
        """The factory for creating data models

        """
        settings = self.registry.settings
        model_factory_func = settings.get("model_factory_func")
        if model_factory_func is not None:
            return model_factory_func()
        processor_factory = get_processor_factory(settings)
        return ModelFactory(session=self.session, processor_factory=processor_factory, settings=settings)
Ejemplo n.º 2
0
    def model_factory(self):
        """The factory for creating data models

        """
        settings = self.registry.settings
        model_factory_func = settings.get('model_factory_func')
        if model_factory_func is not None:
            return model_factory_func()
        processor_factory = get_processor_factory(settings)
        return ModelFactory(
            session=self.session,
            processor_factory=processor_factory,
            settings=settings,
        )
def main(argv=sys.argv, processor=None):
    logger = logging.getLogger(__name__)

    if len(argv) != 2:
        usage(argv)
    config_uri = argv[1]
    setup_logging(config_uri)
    settings = get_appsettings(config_uri)
    settings = setup_database({}, **settings)

    session = settings['session']
    try:
        if processor is None:
            processor_factory = get_processor_factory(settings)
        else:
            processor_factory = lambda: processor
        factory = ModelFactory(
            session=session,
            processor_factory=processor_factory,
            settings=settings,
        )
        subscription_model = factory.create_subscription_model()
        tx_model = factory.create_transaction_model()

        # yield all transactions and commit before we process them, so that
        # we won't double process them.
        with db_transaction.manager:
            logger.info('Yielding transaction ...')
            subscription_model.yield_invoices()

        with db_transaction.manager:
            logger.info('Processing transaction ...')
            tx_model.process_transactions()
        logger.info('Done')
    finally:
        session.close()