0038_webhook_template_support.py 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import json
  2. from django.db import migrations, models
  3. def json_to_text(apps, schema_editor):
  4. """
  5. Convert a JSON representation of HTTP headers to key-value pairs (one header per line)
  6. """
  7. Webhook = apps.get_model('extras', 'Webhook')
  8. for webhook in Webhook.objects.exclude(additional_headers=''):
  9. data = json.loads(webhook.additional_headers)
  10. headers = ['{}: {}'.format(k, v) for k, v in data.items()]
  11. Webhook.objects.filter(pk=webhook.pk).update(additional_headers='\n'.join(headers))
  12. class Migration(migrations.Migration):
  13. dependencies = [
  14. ('extras', '0037_configcontexts_clusters'),
  15. ]
  16. operations = [
  17. migrations.AddField(
  18. model_name='webhook',
  19. name='http_method',
  20. field=models.CharField(default='POST', max_length=30),
  21. ),
  22. migrations.AddField(
  23. model_name='webhook',
  24. name='body_template',
  25. field=models.TextField(blank=True),
  26. ),
  27. migrations.AlterField(
  28. model_name='webhook',
  29. name='additional_headers',
  30. field=models.TextField(blank=True, default=''),
  31. preserve_default=False,
  32. ),
  33. migrations.AlterField(
  34. model_name='webhook',
  35. name='http_content_type',
  36. field=models.CharField(default='application/json', max_length=100),
  37. ),
  38. migrations.RunPython(
  39. code=json_to_text
  40. ),
  41. ]