Ticket #5610: dumpdata-additions-5610.diff
File dumpdata-additions-5610.diff, 5.4 KB (added by , 17 years ago) |
---|
-
django/core/management/commands/dumpdata.py
diff --git a/django/core/management/commands/dumpdata.py b/django/core/management/commands/dumpdata.py index e55ae7b..7bdcc42 100644
a b class Command(BaseCommand): 13 13 args = '[appname ...]' 14 14 15 15 def handle(self, *app_labels, **options): 16 from django.db.models import get_app, get_apps, get_models , get_model16 from django.db.models import get_app, get_apps, get_models 17 17 from django.core import serializers 18 18 19 19 format = options.get('format', 'json') 20 20 indent = options.get('indent', None) 21 21 22 22 if len(app_labels) == 0: 23 23 app_list = get_apps() 24 24 else: 25 app_list = {} 26 for app_label in app_labels: 27 app_model_label = app_label.split('.') 28 if len(app_model_label) <= 1: 29 # This is just an app 30 app_list[app_model_label[0]] = None 31 else: 32 # This is app.Model 33 if app_model_label[0] in app_list.keys() and app_list[app_model_label[0]]: 34 app_list[app_model_label[0]].append(app_model_label[1]) 35 else: 36 app_list[app_model_label[0]] = [app_model_label[1]] 25 app_list = [get_app(app_label) for app_label in app_labels] 37 26 38 27 # Check that the serialization format exists; this is a shortcut to 39 28 # avoid collating all the objects and _then_ failing. 40 41 29 try: 42 30 serializers.get_serializer(format) 43 31 except KeyError: 44 32 raise CommandError("Unknown serialization format: %s" % format) 45 33 46 34 objects = [] 47 for app_label in app_list: 48 if app_list[app_label]: 49 for model_label in app_list[app_label]: 50 model = get_model(app_label, model_label) 51 objects.extend(model.objects.all()) 52 else: 53 app = get_app(app_label) 54 for model in get_models(app): 55 objects.extend(model.objects.all()) 56 35 for app in app_list: 36 for model in get_models(app): 37 objects.extend(model.objects.all()) 57 38 try: 58 39 return serializers.serialize(format, objects, indent=indent) 59 40 except Exception, e: -
tests/modeltests/fixtures/models.py
diff --git a/tests/modeltests/fixtures/models.py b/tests/modeltests/fixtures/models.py index 51dad44..5b53115 100644
a b class Article(models.Model): 20 20 21 21 class Meta: 22 22 ordering = ('-pub_date', 'headline') 23 24 class Category(models.Model):25 title = models.CharField(max_length=100)26 description = models.TextField()27 28 def __unicode__(self):29 return self.title30 31 class Meta:32 ordering = ('title',)33 23 34 24 __test__ = {'API_TESTS': """ 35 25 >>> from django.core import management … … Multiple fixtures named 'fixture2' in '...fixtures'. Aborting. 92 82 # Dump the current contents of the database as a JSON fixture 93 83 >>> management.call_command('dumpdata', 'fixtures', format='json') 94 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"}}] 95 96 # Reset Database representation again.97 >>> management.call_command('flush', verbosity=0, interactive=False)98 >>> management.call_command('loaddata', 'fixture4', verbosity=0)99 >>> Article.objects.all()100 [<Article: Time to reform copyright>, <Article: Poker has no place on ESPN>, <Article: Python program becomes self aware>]101 >>> Category.objects.all()102 [<Category: News Stories>]103 104 # Dump the contents of the database as a JSON fixture105 >>> management.call_command('dumpdata', 'fixtures', format='json')106 [{"pk": 1, "model": "fixtures.category", "fields": {"description": "Latest news stories", "title": "News Stories"}}, {"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"}}]107 108 # Try just dumping the contents of fixtures.Category109 >>> management.call_command('dumpdata', 'fixtures.Category', format='json')110 [{"pk": 1, "model": "fixtures.category", "fields": {"description": "Latest news stories", "title": "News Stories"}}]111 112 # ..and just fixtures.Article113 >>> management.call_command('dumpdata', 'fixtures.Article', format='json')114 [{"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"}}]115 85 """ 116 86 117 87 from django.test import TestCase