Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-06-26 08:40:25

0001 from django.db import migrations
0002 
0003 
0004 def _vt(v):
0005     return tuple(int(p) if p.isdigit() else -1 for p in str(v or '').split('.'))
0006 
0007 
0008 def reclassify_future_releases(apps, schema_editor):
0009     """A past-imported release whose version is newer than the current campaign
0010     is a future release, not past. The importer forced everything to 'past';
0011     move the newer ones to 'future' (catches e.g. RECO/26.06.0 while current is
0012     26.05.0). No-op when there is no current campaign."""
0013     Campaign = apps.get_model('pcs', 'Campaign')
0014     current = Campaign.objects.filter(lifecycle='current').first()
0015     if not current:
0016         return
0017     cur = _vt(current.name)
0018     for c in Campaign.objects.filter(lifecycle='past'):
0019         version = c.name.split('/', 1)[1] if '/' in c.name else c.name
0020         if _vt(version) > cur:
0021             c.lifecycle = 'future'
0022             c.save(update_fields=['lifecycle'])
0023 
0024 
0025 class Migration(migrations.Migration):
0026 
0027     dependencies = [
0028         ('pcs', '0014_complete_physics_schema'),
0029     ]
0030 
0031     operations = [
0032         migrations.RunPython(reclassify_future_releases, migrations.RunPython.noop),
0033     ]