Ticket #5423: dumpdata_streamed_output_django1.0.diff
File dumpdata_streamed_output_django1.0.diff, 5.8 KB (added by , 16 years ago) |
---|
-
django/core/serializers/json.py
21 21 """ 22 22 internal_use_only = False 23 23 24 def start_serialization(self): 25 self._current = None 26 self.json_kwargs = self.options.copy() 27 self.json_kwargs.pop('stream', None) 28 self.json_kwargs.pop('fields', None) 29 self.stream.write("[") 30 24 31 def end_serialization(self): 25 self.options.pop('stream', None) 26 self.options.pop('fields', None) 27 simplejson.dump(self.objects, self.stream, cls=DjangoJSONEncoder, **self.options) 28 32 if self.options.get("indent"): 33 self.stream.write("\n") 34 self.stream.write("]") 35 if self.options.get("indent"): 36 self.stream.write("\n") 37 38 def end_object(self, obj): 39 # self._current has the field data 40 if not self.first: 41 self.stream.write(",") 42 if not self.options.get("indent"): 43 self.stream.write(" ") 44 if self.options.get("indent"): 45 self.stream.write("\n") 46 simplejson.dump(self.get_dump_object(obj), self.stream, 47 cls=DjangoJSONEncoder, **self.json_kwargs) 48 self._current = None 49 29 50 def getvalue(self): 51 # overwrite PythonSerializer.getvalue() with base Serializer.getvalue() 30 52 if callable(getattr(self.stream, 'getvalue', None)): 31 53 return self.stream.getvalue() 32 54 -
django/core/serializers/base.py
37 37 self.start_serialization() 38 38 for obj in queryset: 39 39 self.start_object(obj) 40 self.first = True 40 41 for field in obj._meta.local_fields: 41 42 if field.serialize: 42 43 if field.rel is None: … … 50 51 if self.selected_fields is None or field.attname in self.selected_fields: 51 52 self.handle_m2m_field(obj, field) 52 53 self.end_object(obj) 54 if self.first: 55 self.first = False 53 56 self.end_serialization() 54 57 return self.getvalue() 55 58 -
django/core/serializers/python.py
27 27 self._current = {} 28 28 29 29 def end_object(self, obj): 30 self.objects.append({ 30 self.objects.append(self.get_dump_object(obj)) 31 self._current = None 32 33 def get_dump_object (self, obj): 34 return { 31 35 "model" : smart_unicode(obj._meta), 32 36 "pk" : smart_unicode(obj._get_pk_val(), strings_only=True), 33 37 "fields" : self._current 34 }) 35 self._current = None 38 } 36 39 37 40 def handle_field(self, obj, field): 38 self._current[field.name] = smart_unicode(getattr(obj, field.name), strings_only=True) 41 value = smart_unicode(getattr(obj, field.name), strings_only=True) 42 self._current[field.name] = value 39 43 40 44 def handle_fk_field(self, obj, field): 41 45 related = getattr(obj, field.name) -
django/core/management/commands/dumpdata.py
2 2 from django.core import serializers 3 3 4 4 from optparse import make_option 5 import sys 5 6 6 7 class Command(BaseCommand): 7 8 option_list = BaseCommand.option_list + ( … … 40 41 except KeyError: 41 42 raise CommandError("Unknown serialization format: %s" % format) 42 43 43 objects = [] 44 for app in app_list: 45 for model in get_models(app): 46 objects.extend(model._default_manager.all()) 44 def get_objects (): 45 for app in app_list: 46 for model in get_models(app): 47 for obj in model._default_manager.order_by(model._meta.pk.attname).iterator(): 48 yield obj 47 49 try: 48 return serializers.serialize(format, objects, indent=indent)50 serializers.serialize(format, get_objects(), indent=indent, stream=sys.stdout) 49 51 except Exception, e: 50 52 if show_traceback: 51 53 raise -
tests/modeltests/fixtures/models.py
81 81 82 82 # Dump the current contents of the database as a JSON fixture 83 83 >>> management.call_command('dumpdata', 'fixtures', format='json') 84 [{"pk": 3, "model": "fixtures.article", "fields": {"headline": "Time to reform copyright", "pub_date": "2006-06-16 13:00:00"}}, {"pk": 2, "model": "fixtures.article", "fields": {"headline": "Poker has no place on ESPN", "pub_date": "2006-06-16 12:00:00"}}, {"pk": 1, "model": "fixtures.article", "fields": {"headline": "Python program becomes self aware", "pub_date": "2006-06-16 11:00:00"}}]84 [{"pk": 1, "model": "fixtures.article", "fields": {"headline": "Python program becomes self aware", "pub_date": "2006-06-16 11:00:00"}}, {"pk": 2, "model": "fixtures.article", "fields": {"headline": "Poker has no place on ESPN", "pub_date": "2006-06-16 12:00:00"}}, {"pk": 3, "model": "fixtures.article", "fields": {"headline": "Time to reform copyright", "pub_date": "2006-06-16 13:00:00"}}] 85 85 """ 86 86 87 87 from django.test import TestCase