| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- import os
- import pkgutil
- from django.conf import settings
- from django.db import migrations, models
- import extras.models.mixins
- def create_files(cls, root_name, root_path):
- modules = list(pkgutil.iter_modules([root_path]))
- filenames = []
- for importer, module_name, ispkg in modules:
- try:
- module = importer.find_module(module_name).load_module(module_name)
- rel_path = os.path.relpath(module.__file__, root_path)
- filenames.append(rel_path)
- except ImportError:
- pass
- managed_files = [
- cls(file_root=root_name, file_path=filename)
- for filename in filenames
- ]
- cls.objects.bulk_create(managed_files)
- def replicate_scripts(apps, schema_editor):
- ScriptModule = apps.get_model('extras', 'ScriptModule')
- create_files(ScriptModule, 'scripts', settings.SCRIPTS_ROOT)
- def replicate_reports(apps, schema_editor):
- ReportModule = apps.get_model('extras', 'ReportModule')
- create_files(ReportModule, 'reports', settings.REPORTS_ROOT)
- class Migration(migrations.Migration):
- dependencies = [
- ('core', '0002_managedfile'),
- ('extras', '0090_objectchange_index_request_id'),
- ]
- operations = [
- # Create proxy models
- migrations.CreateModel(
- name='ReportModule',
- fields=[
- ],
- options={
- 'proxy': True,
- 'indexes': [],
- 'constraints': [],
- },
- bases=(extras.models.mixins.PythonModuleMixin, 'core.managedfile', models.Model),
- ),
- migrations.CreateModel(
- name='ScriptModule',
- fields=[
- ],
- options={
- 'proxy': True,
- 'indexes': [],
- 'constraints': [],
- },
- bases=(extras.models.mixins.PythonModuleMixin, 'core.managedfile', models.Model),
- ),
- # Instantiate ManagedFiles to represent scripts & reports
- migrations.RunPython(
- code=replicate_scripts,
- reverse_code=migrations.RunPython.noop
- ),
- migrations.RunPython(
- code=replicate_reports,
- reverse_code=migrations.RunPython.noop
- ),
- ]
|