You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

50 lines
1.3 KiB

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)