from oscar.core.loading import get_class, get_classes OrderReportGenerator = get_class('order.reports', 'OrderReportGenerator') ProductReportGenerator, UserReportGenerator = get_classes('analytics.reports', ['ProductReportGenerator', 'UserReportGenerator']) OpenBasketReportGenerator, SubmittedBasketReportGenerator = get_classes( 'basket.reports', ['OpenBasketReportGenerator', 'SubmittedBasketReportGenerator']) OfferReportGenerator = get_class('offer.reports', 'OfferReportGenerator') VoucherReportGenerator = get_class('voucher.reports', 'VoucherReportGenerator') class GeneratorRepository(object): generators = [OrderReportGenerator, ProductReportGenerator, UserReportGenerator, OpenBasketReportGenerator, SubmittedBasketReportGenerator, VoucherReportGenerator, OfferReportGenerator] def get_report_generators(self): return self.generators def get_generator(self, code): for generator in self.generators: if generator.code == code: return generator return None