def setUpClass(cls): cls.mapped_module = mapper.MappedModule('TestDjangoOneToOneFieldConversion') cls.mapped_module.add_mapped_model(OneToOneParentTestModel.generate_protocol_buffer()) cls.mapped_module.add_mapped_model(OneToOneChildTestModel.generate_protocol_buffer()) util.generate_pb2_module(cls.mapped_module) cls.pb2 = cls.mapped_module.load_pb2() cls.converter = Converter(cls.mapped_module)
def setUpClass(cls): cls.mapped_module = mapper.MappedModule('TestDjangoNoDecoratorForeignKeyConversion') cls.mapped_module.add_mapped_model(NoDecoratorForeignKeyChildTestModel.generate_protocol_buffer()) # cls.mapped_module.add_mapped_model(ForeignKeyChildTestFollowRelatedFalseModel.generate_protocol_buffer()) util.generate_pb2_module(cls.mapped_module) cls.pb2 = cls.mapped_module.load_pb2() cls.converter = Converter(cls.mapped_module)
def setUpClass(cls): cls.mapped_module = mapper.MappedModule('TestDjangoManyToManyConversion') cls.mapped_module.add_mapped_model(ManyToManyParentTestModel.generate_protocol_buffer()) cls.mapped_module.add_mapped_model(ManyToManyChildTestModel.generate_protocol_buffer()) cls.mapped_module.add_mapped_model(ManyToManyChildTestFollowRelatedFalseModel.generate_protocol_buffer()) util.generate_pb2_module(cls.mapped_module) cls.pb2 = cls.mapped_module.load_pb2() cls.converter = Converter(cls.mapped_module)
def handle(self, app=None, **options): ### Start of code copied from south apps convert_to_south.py # Make sure we have an app if not app: print "Please specify an app." return # See if the app exists app = app.split(".")[-1] try: app_module = models.get_app(app) except ImproperlyConfigured: print "There is no enabled application matching '%s'." % app return # Try to get its list of models model_list = models.get_models(app_module) if not model_list: print "This application has no models." ### End of code copied from south apps convert_to_south.py pb2_path = options.get('pb2') pb2_mod = None field_number_map = {} if pb2_path: mod_name, file_ext = os.path.splitext(os.path.split(pb2_path)[-1]) if file_ext == '.py': pb2_mod = imp.load_source(mod_name, pb2_path) elif file_ext == '.pyc': pb2_mod = imp.load_compiled(mod_name, pb2_path) else: print "Don't understand pb2 value %s" % pb2_path sys.exit(1) field_number_map = util.generate_field_number_map(pb2_mod) mapped_module = mapper.MappedModule(app) mapped_models = [ model.generate_protocol_buffer(old_pb2_mod=pb2_mod, field_number_map=field_number_map) for model in model_list if hasattr(model, '__PBANDJ') ] for mapped_model in mapped_models: mapped_module.add_mapped_model(mapped_model) proto = mapped_module.generate_proto() util.generate_pb2_module(mapped_module) app_path, module_file = os.path.split(app_module.__file__) util.save_module(mapped_module, path=app_path)
def setUpClass(cls): cls.mapped_module = mapper.MappedModule('TestDjangoCharChoicesEnumConversion') cls.mapped_module.add_mapped_model(EnumTest.generate_protocol_buffer()) util.generate_pb2_module(cls.mapped_module) cls.pb2 = cls.mapped_module.load_pb2() cls.converter = Converter(cls.mapped_module)
def setUpClass(cls): cls.mapped_module = mapper.MappedModule('TestExcludeConversion') cls.mapped_module.add_mapped_model(ExcludeTest.generate_protocol_buffer()) util.generate_pb2_module(cls.mapped_module) cls.pb2 = cls.mapped_module.load_pb2() cls.converter = Converter(cls.mapped_module)
def setUpClass(cls): cls.mapped_module = mapper.MappedModule('TestDjangoFieldConversion') cls.mapped_module.add_mapped_model(test_models.OneOfEverything.generate_protocol_buffer()) util.generate_pb2_module(cls.mapped_module) cls.converter = Converter(cls.mapped_module) cls.pb2 = cls.mapped_module.load_pb2()
class Command(BaseCommand): option_list = BaseCommand.option_list + ( make_option( '--out', dest='out', default='.', help='Set the output location'), make_option('--target', dest='target', default=None, help='Set the name of the generated .proto file'), make_option('--pb2', dest='pb2', default=None, help='Maintain field nubering from existing pb2 module'), make_option('--external', dest='external', default=None, help='External .proto files needed as import')) help = "Generated Protocol Buffer service definitions and bindings" args = "[appname]" def handle(self, app=None, **options): # Make sure we have an app if not app: print "Please specify an app." return # See if the app exists app = app.split(".")[-1] try: app_module = models.get_app(app) except ImproperlyConfigured: print "There is no enabled application matching '%s'." % app service_mod = PBANDJ_SERVICE_MODULES.get( app, app + "." + PBANDJ_SERVICE_MODULE) try: # service_mod = __import__(service_mod, fromlist=[app]) service_mod = __import__(service_mod, fromlist=[app_module.__package__]) except Exception, e: print e return # pb = proto.Proto(app + '_' + 'services') # pb.imports.append(app + '.proto') mapped_module = mapper.MappedModule(app + '_' + 'services') mapped_module.add_import(app + '.proto') for xtra_import in service_registry.proto_imports: mapped_module.add_import(xtra_import) if options.get('external', None) != None: mapped_module.add_import(options.get('external')) for service_name, handlers in service_registry.services.items(): pb_service = service.Service(service_name) service_handlers = {} for handler in handlers: meta = handler._pbandj service_in = meta.input if isinstance(service_in, type) and models.Model in service_in.__bases__: service_in = service_in.generate_protocol_buffer( ).pb_msg.name service_out = meta.output if isinstance(service_out, type) and models.Model in service_out.__bases__: service_out = service_out.generate_protocol_buffer( ).pb_msg.name pb_service.add_rpc(meta.method_name, service_in, service_out) # Add a handler entry for this service method service_handlers[meta.method_name] = handler mapped_module.add_service(pb_service, service_handlers) # pb.add_service(pb_service) # print pb proto = mapped_module.generate_proto() print proto util.generate_pb2_module(mapped_module) # util.write_proto_file(pb) pathtomodule = os.path.split(app_module.__file__)[0] util.save_service_module(mapped_module, path=pathtomodule)