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 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()