diff -ura Django-1.0-v/django/core/management/commands/dumpdata.py Django-1.0/django/core/management/commands/dumpdata.py
|
old
|
new
|
|
| 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.name).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 |
diff -ura Django-1.0-v/django/core/management/__init__.py Django-1.0/django/core/management/__init__.py
|
old
|
new
|
|
| 22 | 22 | """ |
| 23 | 23 | command_dir = os.path.join(management_dir, 'commands') |
| 24 | 24 | try: |
| 25 | | return [f[:-3] for f in os.listdir(command_dir) |
| 26 | | if not f.startswith('_') and f.endswith('.py')] |
| | 25 | return [f[:f.rfind('.')] for f in os.listdir(command_dir) |
| | 26 | if not f.startswith('_') and (f.endswith('.py') or f.endswith('.pyc'))] |
| 27 | 27 | except OSError: |
| 28 | 28 | return [] |
| 29 | 29 | |
diff -ura Django-1.0-v/django/core/serializers/base.py Django-1.0/django/core/serializers/base.py
|
old
|
new
|
|
| 35 | 35 | self.selected_fields = options.get("fields") |
| 36 | 36 | |
| 37 | 37 | self.start_serialization() |
| | 38 | self.first = True |
| 38 | 39 | for obj in queryset: |
| 39 | 40 | self.start_object(obj) |
| 40 | 41 | for field in obj._meta.local_fields: |
| … |
… |
|
| 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 | |
diff -ura Django-1.0-v/django/core/serializers/json.py Django-1.0/django/core/serializers/json.py
|
old
|
new
|
|
| 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 | |
diff -ura Django-1.0-v/django/core/serializers/python.py Django-1.0/django/core/serializers/python.py
|
old
|
new
|
|
| 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) |
diff -ura Django-1.0-v/tests/modeltests/fixtures/models.py Django-1.0/tests/modeltests/fixtures/models.py
|
old
|
new
|
|
| 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 |