mirror of
				https://github.com/graphql-python/graphene.git
				synced 2025-10-30 23:47:55 +03:00 
			
		
		
		
	Implement Django command for dumping schema.json
* Implement Django `./manage.py graphql_schema` * Required to have 'graphene.django.contrib' in INSTALLED_APPS setting * Introduces two new optional settings GRAPHENE_SCHEMA and GRAPHENE_SCHEMA_OUTPUT * GRAPHENE_SCHEMA for the Django app containing the schema * GRAPHENE_SCHEMA_OUTPUT for the output file (defaults to schema.json) * Use `./manage.py graphql_schema -h` for help in command line
This commit is contained in:
		
							parent
							
								
									90889ca455
								
							
						
					
					
						commit
						73c04f22c8
					
				
							
								
								
									
										0
									
								
								graphene/contrib/django/management/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								graphene/contrib/django/management/__init__.py
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,38 @@ | ||||||
|  | from django.core.management.base import BaseCommand, CommandError | ||||||
|  | 
 | ||||||
|  | import importlib | ||||||
|  | import json | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | class Command(BaseCommand): | ||||||
|  |     help = 'Dump Graphene schema JSON to file' | ||||||
|  |     can_import_settings = True | ||||||
|  | 
 | ||||||
|  |     def add_arguments(self, parser): | ||||||
|  |         from django.conf import settings | ||||||
|  |         parser.add_argument( | ||||||
|  |             '--schema', | ||||||
|  |             type=str, | ||||||
|  |             dest='schema', | ||||||
|  |             default=getattr(settings, 'GRAPHENE_SCHEMA', ''), | ||||||
|  |             help='Django app containing schema to dump, e.g. myproject.core.schema') | ||||||
|  | 
 | ||||||
|  |         parser.add_argument( | ||||||
|  |             '--out', | ||||||
|  |             type=str, | ||||||
|  |             dest='out', | ||||||
|  |             default=getattr(settings, 'GRAPHENE_SCHEMA_OUTPUT', 'schema.json'), | ||||||
|  |             help='Output file (default: schema.json)') | ||||||
|  | 
 | ||||||
|  |     def handle(self, *args, **options): | ||||||
|  |         schema_module = options['schema'] | ||||||
|  |         if schema_module == '': | ||||||
|  |             raise CommandError('Specify schema on GRAPHENE_SCHEMA setting or by using --schema') | ||||||
|  |         i = importlib.import_module(schema_module) | ||||||
|  | 
 | ||||||
|  |         schema_dict = {'data': i.schema.introspect()} | ||||||
|  | 
 | ||||||
|  |         with open(options['out'], 'w') as outfile: | ||||||
|  |             json.dump(schema_dict, outfile) | ||||||
|  | 
 | ||||||
|  |         self.stdout.write(self.style.SUCCESS('Successfully dumped GraphQL schema to %s' % options['out'])) | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user