OpenDroneMap-WebODM/app/migrations/0012_public_task_uuids.py

61 wiersze
1.5 KiB
Python

# -*- coding: utf-8 -*-
# Generated by Django 1.11.1 on 2017-11-30 15:41
from __future__ import unicode_literals
from django.db import migrations, models
import uuid, os, pickle, tempfile
from webodm import settings
tasks = []
task_ids = {} # map old task IDs --> new task IDs
def dump(apps, schema_editor):
global tasks, task_ids
Task = apps.get_model('app', 'Task')
tasks = list(Task.objects.all().values('id', 'project'))
# Generate UUIDs
for task in tasks:
new_id = uuid.uuid4()
# Save reference to it
task['new_id'] = new_id
# Populate map
task_ids[task['id']] = new_id
tmp_path = os.path.join(tempfile.gettempdir(), "public_task_uuids_migration.pickle")
pickle.dump((tasks, task_ids), open(tmp_path, 'wb'))
if len(tasks) > 0: print("Dumped tasks")
class Migration(migrations.Migration):
dependencies = [
('app', '0011_auto_20171109_1237'),
]
operations = [
migrations.AddField(
model_name='task',
name='public',
field=models.BooleanField(default=False, help_text='A flag indicating whether this task is available to the public'),
),
migrations.RunPython(dump),
migrations.RemoveField(
model_name='imageupload',
name='task'
),
migrations.AddField(
model_name='task',
name='new_id',
field=models.UUIDField(null=True)
),
]