mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
76 lines
2.8 KiB
Python
76 lines
2.8 KiB
Python
import uuid
|
|
|
|
import django.contrib.postgres.fields.jsonb
|
|
import django.db.models.deletion
|
|
from django.conf import settings
|
|
from django.db import migrations, models
|
|
|
|
import extras.utils
|
|
from extras.choices import JobResultStatusChoices
|
|
|
|
|
|
def convert_job_results(apps, schema_editor):
|
|
"""
|
|
Convert ReportResult objects to JobResult objects
|
|
"""
|
|
Report = apps.get_model('extras', 'Report')
|
|
ReportResult = apps.get_model('extras', 'ReportResult')
|
|
JobResult = apps.get_model('extras', 'JobResult')
|
|
ContentType = apps.get_model('contenttypes', 'ContentType')
|
|
report_content_type = ContentType.objects.get_for_model(Report)
|
|
|
|
job_results = []
|
|
for report_result in ReportResult.objects.all():
|
|
if report_result.failed:
|
|
status = JobResultStatusChoices.STATUS_FAILED
|
|
else:
|
|
status = JobResultStatusChoices.STATUS_COMPLETED
|
|
job_results.append(
|
|
JobResult(
|
|
name=report_result.report,
|
|
obj_type=report_content_type,
|
|
created=report_result.created,
|
|
completed=report_result.created,
|
|
user=report_result.user,
|
|
status=status,
|
|
data=report_result.data,
|
|
job_id=uuid.uuid4()
|
|
)
|
|
)
|
|
JobResult.objects.bulk_create(job_results)
|
|
|
|
|
|
class Migration(migrations.Migration):
|
|
|
|
dependencies = [
|
|
('contenttypes', '0002_remove_content_type_name'),
|
|
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
|
('extras', '0043_report'),
|
|
]
|
|
|
|
operations = [
|
|
migrations.CreateModel(
|
|
name='JobResult',
|
|
fields=[
|
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False)),
|
|
('name', models.CharField(max_length=255)),
|
|
('created', models.DateTimeField(auto_now_add=True)),
|
|
('completed', models.DateTimeField(blank=True, null=True)),
|
|
('status', models.CharField(default='pending', max_length=30)),
|
|
('data', django.contrib.postgres.fields.jsonb.JSONField(blank=True, null=True)),
|
|
('job_id', models.UUIDField(unique=True)),
|
|
('obj_type', models.ForeignKey(limit_choices_to=extras.utils.FeatureQuery('job_results'), on_delete=django.db.models.deletion.CASCADE, related_name='job_results', to='contenttypes.ContentType')),
|
|
('user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL)),
|
|
],
|
|
options={
|
|
'ordering': ['obj_type', 'name', '-created'],
|
|
},
|
|
),
|
|
migrations.RunPython(
|
|
code=convert_job_results
|
|
),
|
|
migrations.DeleteModel(
|
|
name='ReportResult'
|
|
)
|
|
]
|