|
|
@@ -0,0 +1,48 @@
|
|
|
+# Generated by Django 5.2.5 on 2025-09-09 16:48
|
|
|
+
|
|
|
+from django.db import migrations, models
|
|
|
+
|
|
|
+
|
|
|
+def get_active(apps, schema_editor):
|
|
|
+ from django.core.cache import cache
|
|
|
+ ConfigRevision = apps.get_model('core', 'ConfigRevision')
|
|
|
+ version = None
|
|
|
+ revision = None
|
|
|
+
|
|
|
+ # Try and get the latest version from cache
|
|
|
+ try:
|
|
|
+ version = cache.get('config_version')
|
|
|
+ except Exception:
|
|
|
+ pass
|
|
|
+
|
|
|
+ # If there is a version in cache, attempt to set revision to the current version from cache
|
|
|
+ # If the version in cache does not exist or there is no version, try the lastest revision in the database
|
|
|
+ if not version or (version and not (revision := ConfigRevision.objects.filter(pk=version).first())):
|
|
|
+ revision = ConfigRevision.objects.order_by('-created').first()
|
|
|
+
|
|
|
+ # If there is a revision set, set the active revision
|
|
|
+ if revision:
|
|
|
+ revision.active = True
|
|
|
+ revision.save()
|
|
|
+
|
|
|
+
|
|
|
+class Migration(migrations.Migration):
|
|
|
+
|
|
|
+ dependencies = [
|
|
|
+ ('core', '0018_concrete_objecttype'),
|
|
|
+ ]
|
|
|
+
|
|
|
+ operations = [
|
|
|
+ migrations.AddField(
|
|
|
+ model_name='configrevision',
|
|
|
+ name='active',
|
|
|
+ field=models.BooleanField(default=False),
|
|
|
+ ),
|
|
|
+ migrations.RunPython(code=get_active, reverse_code=migrations.RunPython.noop),
|
|
|
+ migrations.AddConstraint(
|
|
|
+ model_name='configrevision',
|
|
|
+ constraint=models.UniqueConstraint(
|
|
|
+ condition=models.Q(('active', True)), fields=('active',), name='unique_active_config_revision'
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ]
|