from django.db import migrations
from django.db import models
-from django.db import transaction
from documents.templating.utils import convert_format_str_to_template_format
def convert_from_format_to_template(apps, schema_editor):
- WorkflowActions = apps.get_model("documents", "WorkflowAction")
-
- with transaction.atomic():
- for WorkflowAction in WorkflowActions.objects.all():
- if not WorkflowAction.assign_title:
- continue
- WorkflowAction.assign_title = convert_format_str_to_template_format(
- WorkflowAction.assign_title,
- )
- logger.debug(
- "Converted WorkflowAction id %d title to template format: %s",
- WorkflowAction.id,
- WorkflowAction.assign_title,
- )
- WorkflowAction.save()
+ WorkflowAction = apps.get_model("documents", "WorkflowAction")
+
+ batch_size = 500
+ actions_to_update = []
+
+ queryset = (
+ WorkflowAction.objects.filter(assign_title__isnull=False)
+ .exclude(assign_title="")
+ .only("id", "assign_title")
+ )
+
+ for action in queryset:
+ action.assign_title = convert_format_str_to_template_format(
+ action.assign_title,
+ )
+ logger.debug(
+ "Converted WorkflowAction id %d title to template format: %s",
+ action.id,
+ action.assign_title,
+ )
+ actions_to_update.append(action)
+
+ if actions_to_update:
+ WorkflowAction.objects.bulk_update(
+ actions_to_update,
+ ["assign_title"],
+ batch_size=batch_size,
+ )
class Migration(migrations.Migration):