Source code for django_test_tools.management.commands.generate_serializers

import os

from django.conf import settings
from django.core.management import BaseCommand

from django_test_tools.generators.crud_generator import GenericTemplateWriter
from django_test_tools.generators.model_generator import ModelSerializerGenerator
from ...generators.serializer_gen import AppSerializerGenerator
from ...app_manager import DjangoAppManager


[docs]class Command(BaseCommand): """ $ python manage.py generate_serializers project.app -s ModelSerializer """
[docs] def add_arguments(self, parser): parser.add_argument('app_name') parser.add_argument("-s", "--serializer-class", dest="serializer_class", help="Serializer class", default='ModelSerializer' ) parser.add_argument('-f', "--filename", dest="filename", help="Output filename. Will write it to the settings.TEST_OUTPUT_PATH folder", default=None, )
# parser.add_argument("-a", "--assign", # action='store_true', # dest="assign", # help="Create unit assignments", # ) # # parser.add_argument("--office", # dest="office", # help="Organizational unit short name", # default=None, # ) # parser.add_argument("--start-date", # dest="start_date", # help="Start date for the assignment", # default=None, # ) # parser.add_argument("--fiscal-year", # dest="fiscal_year", # help="Fiscal year for assignments", # default=None, # ) # parser.add_argument("-u", "--username", # dest="usernames", # help="LDAP usernames for employees", # nargs='+', # )
[docs] def handle(self, *args, **options): app_name = options.get('app_name', None) if options.get('filename'): filename = os.path.join(settings.TEST_OUTPUT_PATH, options.get('filename')) generator = ModelSerializerGenerator() factory_data = generator.create_template_data(app_name) template_name = 'serializers.py.j22' writer = GenericTemplateWriter(template_name) writer.write(factory_data, filename) else: serializer_class = options.get('serializer_class') app_manager = DjangoAppManager() app = app_manager.get_app(app_name) if app: app_model_tests = AppSerializerGenerator(app, serializer_class) self.stdout.write(str(app_model_tests))