from django.core.management.base import BaseCommand import json from service import models def create_fixture(name, file_path, merge): if merge: with open(file_path, 'r') as f: old_data = json.load(f) max_pk = max([x['pk'] for x in old_data]) else: max_pk = 0 model = getattr(models, name) model_default_data = { f.name: { "label": f.verbose_name, "legend": f.verbose_name, "help": f.verbose_name } for f in model._meta.fields } data = { "model": "service.config", "pk": max_pk + 1, "fields": { "name": f"{name}", "data": model_default_data } } with open(file_path, 'w') as f: if merge: old_data.append(data) json.dump(old_data, f, ensure_ascii=False, indent=4) else: json.dump([data], f, ensure_ascii=False, indent=4) class Command(BaseCommand): requires_system_checks = False def add_arguments(self, parser): parser.add_argument('-n', '--name', type=str) parser.add_argument('-f', '--file', type=str) parser.add_argument('-m', '--merge', type=bool, default=False) def handle(self, name, file, merge, *args, **options): create_fixture(name, file, merge)