def handle(self, dump_name, *pks, **options): # Get the primary object dump_settings = settings.CUSTOM_DUMPS[dump_name] (app_label, model_name) = dump_settings['primary'].split('.') dump_me = loading.get_model(app_label, model_name) objs = dump_me.objects.filter(pk__in=[int(i) for i in pks]) for obj in objs: # get the dependent objects and add to serialize list for dep in dump_settings['dependents']: try: thing = Variable("thing.%s" % dep).resolve({'thing': obj}) add_to_serialize_list([thing]) except VariableDoesNotExist: sys.stderr.write('%s not found' % dep) if not dump_settings['dependents']: add_to_serialize_list([obj]) serialize_fully() data = serialize('json', [o for o in serialize_me if o is not None]) data = reorder_json(json.loads(data), dump_settings.get('order', []), ordering_cond=dump_settings.get('order_cond',{})) print json.dumps(data, indent=4)
def handle(self, object_class, *ids, **options): (app_label, model_name) = object_class.split('.') dump_me = loading.get_model(app_label, model_name) try: objs = dump_me.objects.filter(pk__in=[int(i) for i in ids]) except ValueError: # We might have primary keys thar are just strings... objs = dump_me.objects.filter(pk__in=ids) if options.get('kitchensink'): related_fields = [rel.get_accessor_name() for rel in dump_me._meta.get_all_related_objects()] for obj in objs: for rel in related_fields: try: add_to_serialize_list(obj.__getattribute__(rel).all()) except FieldError: pass except ObjectDoesNotExist: pass add_to_serialize_list(objs) serialize_fully() print serialize('json', [o for o in serialize_me if o is not None], indent=4)
def handle(self, *args, **options): error_text = ('%s\nTry calling dump_object with --help argument or ' + 'use the following arguments:\n %s' %self.args) try: #verify input is valid (app_label, model_name) = args[0].split('.') query = options['query'] ids = args[1:] if ids and query: raise CommandError(error_text % 'either use query or id list, not both') if not (ids or query): raise CommandError(error_text % 'must pass list of ids or a json --query') except IndexError: raise CommandError(error_text %'No object_class or filter clause supplied.') except ValueError: raise CommandError(error_text %("object_class must be provided in" " the following format: app_name.model_name")) except AssertionError: raise CommandError(error_text %'No filter argument supplied.') dump_me = loading.get_model(app_label, model_name) if query: objs = dump_me.objects.filter(**json.loads(query)) else: if ids[0] == '*': objs = dump_me.objects.all() else: for parser in int, long, str: try: objs = dump_me.objects.filter(pk__in=map(parser, ids)) except ValueError: pass else: break if options.get('kitchensink'): related_fields = [rel.get_accessor_name() for rel in dump_me._meta.get_all_related_objects()] for obj in objs: for rel in related_fields: try: if hasattr(getattr(obj, rel), 'all'): add_to_serialize_list(getattr(obj, rel).all()) else: add_to_serialize_list([getattr(obj, rel)]) except FieldError: pass except ObjectDoesNotExist: pass add_to_serialize_list(objs) serialize_fully() self.stdout.write(serialize('json', [o for o in serialize_me if o is not None], indent=4, use_natural_foreign_keys=options.get('natural', False), use_natural_primary_keys=options.get('natural', False))) # Clear the list. Useful for when calling multiple dump_object commands with a single execution of django del serialize_me[:]
def handle(self, *args, **options): error_text = ('%s\nTry calling dump_object with --help argument or ' + 'use the following arguments:\n %s' %self.args) try: #verify input is valid (app_label, model_name) = args[0].split('.') ids = args[1:] assert(ids) except IndexError: raise CommandError(error_text %'No object_class or filter clause supplied.') except ValueError: raise CommandError(error_text %("object_class must be provided in"+ " the following format: app_name.model_name")) except AssertionError: raise CommandError(error_text %'No filter argument supplied.') dump_me = loading.get_model(app_label, model_name) if ids[0] == '*': objs = dump_me.objects.all() else: try: objs = dump_me.objects.filter(pk__in=[int(i) for i in ids]) except ValueError: # We might have primary keys that are longs... try : objs = dump_me.objects.filter(pk__in=[long(i) for i in ids]) except ValueError: # or json objects for better filter control try: objs = dump_me.objects.filter(**json.loads(ids[0])) except ValueError: # Finally, we might have primary keys that are strings... objs = dump_me.objects.filter(pk__in=ids) if options.get('kitchensink'): related_fields = [rel.get_accessor_name() for rel in dump_me._meta.get_all_related_objects()] for obj in objs: for rel in related_fields: try: add_to_serialize_list(obj.__getattribute__(rel).all()) except FieldError: pass except ObjectDoesNotExist: pass add_to_serialize_list(objs) serialize_fully() self.stdout.write(serialize('json', [o for o in serialize_me if o is not None], indent=4))
def handle(self, *args, **options): error_text = ( "%s\nTry caling dump_object with --help argument or use" + " the following arguments:\n %s" % self.args ) try: # verify input is valid (app_label, model_name) = args[0].split(".") ids = args[1:] assert ids except IndexError: raise CommandError(error_text % "No object_class or id arguments supplied.") except ValueError: raise CommandError( error_text % ("object_class must be provided in" + " the following format: app_name.model_name") ) except AssertionError: raise CommandError(error_text % "No id arguments supplied.") dump_me = loading.get_model(app_label, model_name) try: if ids[0] == "*": objs = dump_me.objects.all() else: objs = dump_me.objects.filter(pk__in=[int(i) for i in ids]) except ValueError: # We might have primary keys thar are just strings... objs = dump_me.objects.filter(pk__in=ids) if options.get("kitchensink"): related_fields = [rel.get_accessor_name() for rel in dump_me._meta.get_all_related_objects()] for obj in objs: for rel in related_fields: try: add_to_serialize_list(obj.__getattribute__(rel).all()) except AttributeError: # maybe it's manytoone add_to_serialize_list([obj.__getattribute__(rel)]) except FieldError: pass except ObjectDoesNotExist: pass add_to_serialize_list(objs) serialize_fully() print serialize("json", [o for o in serialize_me if o is not None], indent=4)
def handle(self, dump_name, pk, **options): # Get the primary object dump_settings = settings.CUSTOM_DUMPS[dump_name] (app_label, model_name) = dump_settings['primary'].split('.') dump_me = loading.get_model(app_label, model_name) obj = dump_me.objects.get(pk=pk) # get the dependent objects and add to serialize list for dep in dump_settings['dependents']: thing = Variable("thing.%s" % dep).resolve({'thing': obj}) add_to_serialize_list([thing]) serialize_fully() data = serialize('json', [o for o in serialize_me if o is not None]) data = reorder_json(json.loads(data), dump_settings.get('order', [])) print json.dumps(data, indent=4)
def handle(self, dump_name, *ids, **options): # Get the primary object dump_settings = settings.CUSTOM_DUMPS[dump_name] (app_label, model_name) = dump_settings["primary"].split(".") dump_me = loading.get_model(app_label, model_name) if ids[0] == "*": objs = dump_me.objects.all() else: try: objs = dump_me.objects.filter(pk__in=[int(i) for i in ids]) except ValueError: # We might have primary keys that are longs... try: objs = dump_me.objects.filter(pk__in=[long(i) for i in ids]) except ValueError: # or json objects for better filter control try: objs = dump_me.objects.filter(**json.loads(ids[0])) except ValueError: # Finally, we might have primary keys that are strings... objs = dump_me.objects.filter(pk__in=ids) for obj in objs: # get the dependent objects and add to serialize list for dep in dump_settings["dependents"]: try: thing = Variable("thing.%s" % dep).resolve({"thing": obj}) add_to_serialize_list([thing]) except VariableDoesNotExist: sys.stderr.write("%s not found" % dep) if not dump_settings["dependents"]: add_to_serialize_list([obj]) serialize_fully() data = serialize("json", [o for o in serialize_me if o is not None]) data = reorder_json( json.loads(data), dump_settings.get("order", []), ordering_cond=dump_settings.get("order_cond", {}) ) print json.dumps(data, indent=4)
def handle(self, *args, **options): # Get the primary object dump_name = options['dump_name'] pks = options['pk'] dump_settings = settings.CUSTOM_DUMPS[dump_name] (app_label, model_name) = dump_settings['primary'].split('.') include_primary = dump_settings.get("include_primary", False) dump_me = loading.get_model(app_label, model_name) objs = dump_me.objects.filter(pk__in=[int(i) for i in pks]) for obj in objs.all(): # get the dependent objects and add to serialize list for dep in dump_settings['dependents']: try: thing = Variable("thing.%s" % dep).resolve({'thing': obj}) if hasattr(thing, 'all'): # Related managers can't be iterated over thing = thing.all() add_to_serialize_list([thing]) except VariableDoesNotExist: sys.stderr.write('%s not found' % dep) if include_primary or not dump_settings['dependents']: add_to_serialize_list([obj]) serialize_fully() data = serialize('json', [o for o in serialize_me if o is not None], indent=4, use_natural_foreign_keys=options.get('natural', False), use_natural_primary_keys=options.get('natural', False), ) data = reorder_json( json.loads(data), dump_settings.get('order', []), ordering_cond=dump_settings.get('order_cond', {}) ) print(json.dumps(data, indent=4))
def handle(self, *args, **options): serialize_me = [] seen = set() error_text = ('%s\nTry calling dump_object with --help argument or ' + 'use the following arguments:\n %s' % self.args) try: # verify input is valid try: (app_label, model_name) = options['model'].split('.') except AttributeError: raise CommandError("Specify model as `appname.modelname") query = options['query'] ids = options['ids'] if options['order']: options['order'] = json.loads(options['order']) ignore = [] if options['ignore']: ignore = json.loads(options['ignore']) related_ignore = [] if options['related_ignore']: related_ignore = json.loads(options['related_ignore']) if ids and query: raise CommandError(error_text % 'either use query or id list, not both') if not (ids or query): raise CommandError(error_text % 'must pass list of --ids or a json --query') except IndexError: raise CommandError(error_text % 'No object_class or filter clause supplied.') except ValueError as e: raise CommandError( error_text % "object_class must be provided in the following format: app_name.model_name" ) except AssertionError: raise CommandError(error_text % 'No filter argument supplied.') dump_me = loading.get_model(app_label, model_name) if query: objs = dump_me.objects.filter(**json.loads(query)) else: if ids[0] == '*': objs = dump_me.objects.all() else: try: parsers = int, long, str except NameError: parsers = int, str for parser in parsers: try: objs = dump_me.objects.filter(pk__in=map(parser, ids)) except ValueError: pass else: break else: objs = [] if options.get('kitchensink'): fields = get_all_related_objects(dump_me) # if there are no related ignores for this model include the field # or if this related field is not in the related ignores include the field related_fields = [rel.get_accessor_name() for rel in fields if model_name not in related_ignore or rel.name not in related_ignore[model_name]] for obj in objs: for rel in related_fields: try: if hasattr(getattr(obj, rel), 'all'): add_to_serialize_list(getattr(obj, rel).all(), serialize_me, seen, ignore=ignore) else: add_to_serialize_list([getattr(obj, rel)], serialize_me, seen, ignore=ignore) except FieldError: pass except ObjectDoesNotExist: pass add_to_serialize_list(objs, serialize_me, seen, prepend=True, ignore=ignore) if options.get('follow_fk', True): serialize_fully(serialize_me, seen, ignore) else: # reverse list to match output of serializez_fully serialize_me.reverse() natural_foreign = (options.get('natural', False) or options.get('natural_foreign', False)) natural_primary = (options.get('natural', False) or options.get('natural_primary', False)) data = serialize(options.get('format', 'json'), [o for o in serialize_me if o is not None], indent=4, use_natural_foreign_keys=natural_foreign, use_natural_primary_keys=natural_primary) data = reorder_json( json.loads(data), options.get('order', []), ) self.stdout.write(json.dumps(data, indent=4))
def handle(self, *args, **options): error_text = ('%s\nTry calling dump_object with --help argument or ' + 'use the following arguments:\n %s' % self.args) try: # verify input is valid try: (app_label, model_name) = options['model'].split('.') except AttributeError: raise CommandError("Specify model as `appname.modelname") query = options['query'] ids = options['ids'] if ids and query: raise CommandError(error_text % 'either use query or id list, not both') if not (ids or query): raise CommandError(error_text % 'must pass list of --ids or a json --query') except IndexError: raise CommandError(error_text % 'No object_class or filter clause supplied.') except ValueError: raise CommandError( error_text % "object_class must be provided in the following format: app_name.model_name" ) except AssertionError: raise CommandError(error_text % 'No filter argument supplied.') dump_me = loading.get_model(app_label, model_name) if query: objs = dump_me.objects.filter(**json.loads(query)) else: if ids[0] == '*': objs = dump_me.objects.all() elif 'limit:' in ids[0]: try: limit = int(ids[0].replace('limit:', '')) objs = dump_me.objects.all()[:limit] except: raise CommandError( 'Recheck the command it should be limit:N, N is the limit.' ) else: try: parsers = int, long, str except NameError: parsers = int, str for parser in parsers: try: objs = dump_me.objects.filter(pk__in=map(parser, ids)) except ValueError: pass else: break if options.get('kitchensink'): fields = get_all_related_objects(dump_me) related_fields = [rel.get_accessor_name() for rel in fields] for obj in objs: for rel in related_fields: try: if hasattr(getattr(obj, rel), 'all'): add_to_serialize_list(getattr(obj, rel).all()) else: add_to_serialize_list([getattr(obj, rel)]) except FieldError: pass except ObjectDoesNotExist: pass add_to_serialize_list(objs) if options.get('follow_fk', True): serialize_fully() else: # reverse list to match output of serializez_fully serialize_me.reverse() natural_foreign = (options.get('natural', False) or options.get('natural_foreign', False)) natural_primary = (options.get('natural', False) or options.get('natural_primary', False)) self.stdout.write( serialize(options.get('format', 'json'), [o for o in serialize_me if o is not None], indent=4, use_natural_foreign_keys=natural_foreign, use_natural_primary_keys=natural_primary)) # Clear the list. Useful for when calling multiple # dump_object commands with a single execution of django del serialize_me[:] seen.clear()
def dump_object(model, query, ids, order=[], ignore=[], related_ignore={}, additional_serialization_objects_fnc=None, format='json', kitchensink=True, follow_fk=True, natural=False, natural_foreign=False, natural_primary=False): serialize_me = [] seen = set() error_text = ('Error\n') try: # verify input is valid try: (app_label, model_name) = model.split('.') except AttributeError: raise CommandError("Specify model as `appname.modelname") if ids and query: raise CommandError(error_text % 'either use query or id list, not both') if not (ids or query): raise CommandError(error_text % 'must pass list of --ids or a json --query') except IndexError: raise CommandError(error_text % 'No object_class or filter clause supplied.') except ValueError as e: raise CommandError( error_text % "object_class must be provided in the following format: app_name.model_name" ) except AssertionError: raise CommandError(error_text % 'No filter argument supplied.') dump_me = loading.get_model(app_label, model_name) if query: objs = dump_me.objects.filter(**json.loads(query)) else: if ids[0] == '*': objs = dump_me.objects.all() else: try: parsers = int, long, str except NameError: parsers = int, str for parser in parsers: try: objs = dump_me.objects.filter(pk__in=map(parser, ids)) except ValueError: pass else: break if kitchensink: fields = get_all_related_objects(dump_me) # if there are no related ignores for this model include the field # or if this related field is not in the related ignores include the field related_fields = [rel.get_accessor_name() for rel in fields if model_name not in related_ignore or rel.name not in related_ignore[model_name]] generic_foreign_key_fields = get_all_generic_foreign_keys(dump_me) for field in generic_foreign_key_fields: if model_name not in related_ignore or field.name not in related_ignore[model_name]: related_fields.append(field.name) for obj in objs: for rel in related_fields: try: if hasattr(getattr(obj, rel), 'all'): add_to_serialize_list(getattr(obj, rel).all(), serialize_me, seen, ignore=ignore) else: add_to_serialize_list([getattr(obj, rel)], serialize_me, seen, ignore=ignore) # allow user to add additional data apart from standard foreign keys if additional_serialization_objects_fnc and \ callable(additional_serialization_objects_fnc): extra_objs = additional_serialization_objects_fnc(getattr(obj, rel)) if extra_objs: add_to_serialize_list(extra_objs, serialize_me, seen, ignore=ignore) except FieldError: pass except ObjectDoesNotExist: pass add_to_serialize_list(objs, serialize_me, seen, prepend=True, ignore=ignore) if follow_fk: serialize_fully(serialize_me, seen, ignore, additional_serialization_objects_fnc) else: # reverse list to match output of serializez_fully serialize_me.reverse() natural_foreign = (natural or natural_foreign) natural_primary = (natural or natural_primary) if format: if format == "json": data = CustomJsonSerializer().serialize( [o for o in serialize_me if o is not None], indent=4, use_natural_foreign_keys=natural_foreign, use_natural_primary_keys=natural_primary) else: data = serialize(format, [o for o in serialize_me if o is not None], indent=4, use_natural_foreign_keys=natural_foreign, use_natural_primary_keys=natural_primary) data = reorder_json( json.loads(data), order, ) return json.dumps(data, indent=4) # return unserialized objs return [o for o in serialize_me if o is not None]
def handle(self, *args, **options): error_text = ( "%s\nTry calling dump_object with --help argument or " + "use the following arguments:\n %s" % self.args ) try: # verify input is valid try: (app_label, model_name) = options["model"].split(".") except AttributeError: raise CommandError("Specify model as `appname.modelname") query = options["query"] ids = options["ids"] if ids and query: raise CommandError(error_text % "either use query or id list, not both") if not (ids or query): raise CommandError( error_text % "must pass list of --ids or a json --query" ) except IndexError: raise CommandError( error_text % "No object_class or filter clause supplied." ) except ValueError: raise CommandError( error_text % "object_class must be provided in the following format: app_name.model_name" ) except AssertionError: raise CommandError(error_text % "No filter argument supplied.") dump_me = loading.get_model(app_label, model_name) if query: objs = dump_me.objects.filter(**json.loads(query)) else: if ids[0] == "*": objs = dump_me.objects.all() else: try: parsers = int, long, str except NameError: parsers = int, str for parser in parsers: try: objs = dump_me.objects.filter(pk__in=map(parser, ids)) except ValueError: pass else: break if options.get("kitchensink"): fields = get_all_related_objects(dump_me) related_fields = [rel.get_accessor_name() for rel in fields] for obj in objs: for rel in related_fields: try: if hasattr(getattr(obj, rel), "all"): add_to_serialize_list(getattr(obj, rel).all()) else: add_to_serialize_list([getattr(obj, rel)]) except FieldError: pass except ObjectDoesNotExist: pass if options["count"] is not None: objs = objs.all()[: options["count"]] add_to_serialize_list(objs) if options.get("follow_fk", True): serialize_fully() else: # reverse list to match output of serializez_fully serialize_me.reverse() natural_foreign = options.get("natural", False) or options.get( "natural_foreign", False ) natural_primary = options.get("natural", False) or options.get( "natural_primary", False ) self.stdout.write( serialize( options.get("format", "json"), [o for o in serialize_me if o is not None], indent=4, use_natural_foreign_keys=natural_foreign, use_natural_primary_keys=natural_primary, ) ) # Clear the list. Useful for when calling multiple # dump_object commands with a single execution of django del serialize_me[:] seen.clear()
def handle(self, *args, **options): error_text = ('%s\nTry calling dump_object with --help argument or ' + 'use the following arguments:\n %s' % self.args) try: #verify input is valid (app_label, model_name) = args[0].split('.') query = options['query'] ids = args[1:] if ids and query: raise CommandError(error_text % 'either use query or id list, not both') if not (ids or query): raise CommandError(error_text % 'must pass list of ids or a json --query') except IndexError: raise CommandError(error_text % 'No object_class or filter clause supplied.') except ValueError: raise CommandError(error_text % ("object_class must be provided in" " the following format: app_name.model_name")) except AssertionError: raise CommandError(error_text % 'No filter argument supplied.') dump_me = loading.get_model(app_label, model_name) if query: objs = dump_me.objects.filter(**json.loads(query)) else: if ids[0] == '*': objs = dump_me.objects.all() else: for parser in int, long, str: try: objs = dump_me.objects.filter(pk__in=map(parser, ids)) except ValueError: pass else: break if options.get('kitchensink'): related_fields = [ rel.get_accessor_name() for rel in dump_me._meta.get_all_related_objects() ] for obj in objs: for rel in related_fields: try: if hasattr(getattr(obj, rel), 'all'): add_to_serialize_list(getattr(obj, rel).all()) else: add_to_serialize_list([getattr(obj, rel)]) except FieldError: pass except ObjectDoesNotExist: pass add_to_serialize_list(objs) serialize_fully() self.stdout.write( serialize('json', [o for o in serialize_me if o is not None], indent=4, use_natural_keys=options.get('natural', False)))
def handle(self, *args, **options): error_text = ( "%s\nTry calling dump_object with --help argument or " + "use the following arguments:\n %s" % self.args ) try: # verify input is valid try: (app_label, model_name) = options["model"].split(".") except AttributeError: raise CommandError("Specify model as `appname.modelname") query = options["query"] ids = options["ids"] if ids and query: raise CommandError(error_text % "either use query or id list, not both") if not (ids or query): raise CommandError(error_text % "must pass list of --ids or a json --query") except IndexError: raise CommandError(error_text % "No object_class or filter clause supplied.") except ValueError: raise CommandError( error_text % ("object_class must be provided in" " the following format: app_name.model_name") ) except AssertionError: raise CommandError(error_text % "No filter argument supplied.") dump_me = loading.get_model(app_label, model_name) if query: objs = dump_me.objects.filter(**json.loads(query)) else: if ids[0] == "*": objs = dump_me.objects.all() else: try: parsers = int, long, str except NameError: parsers = int, str for parser in parsers: try: objs = dump_me.objects.filter(pk__in=map(parser, ids)) except ValueError: pass else: break if options.get("kitchensink"): if django.VERSION >= (1, 8): fields = (f for f in dump_me._meta.get_fields() if (f.one_to_many or f.one_to_one) and f.auto_created) else: fields = dump_me._meta.get_all_related_objects() related_fields = [rel.get_accessor_name() for rel in fields] for obj in objs: for rel in related_fields: try: if hasattr(getattr(obj, rel), "all"): add_to_serialize_list(getattr(obj, rel).all()) else: add_to_serialize_list([getattr(obj, rel)]) except FieldError: pass except ObjectDoesNotExist: pass add_to_serialize_list(objs) serialize_fully() self.stdout.write( serialize( options.get("format", "json"), [o for o in serialize_me if o is not None], indent=4, use_natural_foreign_keys=options.get("natural", False), use_natural_primary_keys=options.get("natural", False), ) ) # Clear the list. Useful for when calling multiple dump_object commands with a single execution of django del serialize_me[:] seen.clear()
def handle(self, *args, **options): error_text = ( "%s\nTry calling dump_object with --help argument or " + "use the following arguments:\n %s" % self.args ) try: # verify input is valid (app_label, model_name) = args[0].split(".") query = options["query"] ids = args[1:] if ids and query: raise CommandError(error_text % "either use query or id list, not both") if not (ids or query): raise CommandError(error_text % "must pass list of ids or a json --query") except IndexError: raise CommandError(error_text % "No object_class or filter clause supplied.") except ValueError: raise CommandError( error_text % ("object_class must be provided in" " the following format: app_name.model_name") ) except AssertionError: raise CommandError(error_text % "No filter argument supplied.") dump_me = loading.get_model(app_label, model_name) if query: objs = dump_me.objects.filter(**json.loads(query)) else: if ids[0] == "*": objs = dump_me.objects.all() else: for parser in int, long, str: try: objs = dump_me.objects.filter(pk__in=map(parser, ids)) except ValueError: pass else: break if options.get("kitchensink"): related_fields = [rel.get_accessor_name() for rel in dump_me._meta.get_all_related_objects()] for obj in objs: for rel in related_fields: try: if hasattr(getattr(obj, rel), "all"): add_to_serialize_list(getattr(obj, rel).all()) else: add_to_serialize_list([getattr(obj, rel)]) except FieldError: pass except ObjectDoesNotExist: pass add_to_serialize_list(objs) serialize_fully() self.stdout.write( serialize( "json", [o for o in serialize_me if o is not None], indent=4, use_natural_keys=options.get("natural", False), ) )
def handle(self, *args, **options): error_text = ('%s\nTry calling dump_object with --help argument or ' + 'use the following arguments:\n %s' % self.args) try: #verify input is valid try: (app_label, model_name) = options['model'].split('.') except AttributeError: raise CommandError("Specify model as `appname.modelname") query = options['query'] ids = options['ids'] config_name = options['config_name'] if ids and query: raise CommandError(error_text % 'either use query or id list, not both') if not (ids or query): raise CommandError(error_text % 'must pass list of --ids or a json --query') except IndexError: raise CommandError(error_text % 'No object_class or filter clause supplied.') except ValueError: raise CommandError(error_text % ("object_class must be provided in" " the following format: app_name.model_name")) except AssertionError: raise CommandError(error_text % 'No filter argument supplied.') dump_me = loading.get_model(app_label, model_name) if query: objs = dump_me.objects.filter(**json.loads(query)) else: if ids[0] == '*': objs = dump_me.objects.all() else: try: parsers = int, long, str except NameError: parsers = int, str for parser in parsers: try: objs = dump_me.objects.filter(pk__in=map(parser, ids)) except ValueError: pass else: break if options.get('kitchensink'): if django.VERSION >= (1, 8): fields = ( f for f in dump_me._meta.get_fields() if (f.one_to_many or f.one_to_one) and f.auto_created) else: fields = dump_me._meta.get_all_related_objects() related_fields = [rel.get_accessor_name() for rel in fields] for obj in objs: for rel in related_fields: try: if hasattr(getattr(obj, rel), 'all'): add_to_serialize_list(getattr(obj, rel).all()) else: add_to_serialize_list([getattr(obj, rel)]) except FieldError: pass except ObjectDoesNotExist: pass try: dump_settings = settings.CUSTOM_DUMPS[config_name] except Exception: dump_settings = None add_to_serialize_list(objs) serialize_fully() data = serialize( options.get('format', 'json'), [o for o in serialize_me if o is not None], indent=4, use_natural_foreign_keys=options.get('natural', False), use_natural_primary_keys=options.get('natural', False)) if dump_settings and dump_settings.get('order', []): data = reorder_json(json.loads(data), dump_settings.get('order', []), ordering_cond=dump_settings.get( 'order_cond', {})) self.stdout.write(json.dumps(data)) # Clear the list. Useful for when calling multiple dump_object commands with a single execution of django del serialize_me[:] seen.clear()