Files
hrms/base/manage/commands/horilladumpdata.py
2026-01-16 15:39:39 +01:00

56 lines
2.0 KiB
Python

import os
from django.apps import apps as django_apps
from django.conf import settings
from django.core.management import call_command
from django.core.management.base import BaseCommand
class Command(BaseCommand):
help = "Dump all relevant data to JSON files."
def handle(self, *args, **options):
folder_name = input("Enter the name of the folder to save JSON files: ").strip()
if not folder_name:
self.stderr.write(self.style.ERROR("Folder name cannot be empty."))
return
dump_dir = os.path.join(settings.BASE_DIR, folder_name)
os.makedirs(dump_dir, exist_ok=True)
data_files = [
("auth.User", "user_data.json"),
("employee.Employee", "employee_info_data.json"),
("base", "base_data.json"),
("employee.employeeworkinformation", "work_info_data.json"),
("employee.employeebankdetails", "bank_info_data.json"),
]
optional_apps = [
("attendance", "attendance_data.json"),
("leave", "leave_data.json"),
("asset", "asset_data.json"),
("recruitment", "recruitment_data.json"),
("onboarding", "onboarding_data.json"),
("offboarding", "offboarding_data.json"),
("pms", "pms_data.json"),
("payroll", "payroll_data.json"),
("payroll", "payroll_loanaccount_data.json"),
("project", "project_data.json"),
]
data_files += [
(app, file) for app, file in optional_apps if django_apps.is_installed(app)
]
for data in data_files:
output_path = os.path.join(dump_dir, data[1])
try:
with open(output_path, "w") as f:
call_command("dumpdata", data[0], stdout=f, indent=4)
self.stdout.write(self.style.SUCCESS(f"Dumped: {data[0]}"))
except Exception as e:
self.stderr.write(self.style.ERROR(f"Error dumping {data[0]}: {e}"))