]> jfr.im git - irc/weechat/weechat.org.git/commitdiff
Remove primary key on Release.version
authorSébastien Helleu <redacted>
Sat, 15 Apr 2023 22:08:57 +0000 (00:08 +0200)
committerSébastien Helleu <redacted>
Sat, 15 Apr 2023 22:15:54 +0000 (00:15 +0200)
weechat/dev/migrations/0002_task_version_1.py [new file with mode: 0644]
weechat/dev/migrations/0003_task_version_2.py [new file with mode: 0644]
weechat/dev/views.py
weechat/download/migrations/0003_release_package_version_1.py [new file with mode: 0644]
weechat/download/migrations/0004_release_package_version_2.py [new file with mode: 0644]
weechat/download/migrations/0005_release_package_version_3.py [new file with mode: 0644]
weechat/download/models.py
weechat/download/views.py

diff --git a/weechat/dev/migrations/0002_task_version_1.py b/weechat/dev/migrations/0002_task_version_1.py
new file mode 100644 (file)
index 0000000..6c5ad05
--- /dev/null
@@ -0,0 +1,23 @@
+# Generated by Django 2.2.28 on 2023-04-15 22:40
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('dev', '0001_initial'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='task',
+            name='version_string',
+            field=models.CharField(max_length=64, null=True),
+        ),
+        migrations.RunSQL("UPDATE dev_task SET version_string = version_id;"),
+        migrations.RemoveField(
+            model_name='task',
+            name='version',
+        ),
+    ]
diff --git a/weechat/dev/migrations/0003_task_version_2.py b/weechat/dev/migrations/0003_task_version_2.py
new file mode 100644 (file)
index 0000000..40e65c2
--- /dev/null
@@ -0,0 +1,26 @@
+# Generated by Django 2.2.28 on 2023-04-15 23:33
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('dev', '0002_task_version_1'),
+        ('download', '0005_release_package_version_3'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='task',
+            name='version',
+            field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='download.Release'),
+            preserve_default=False,
+        ),
+        migrations.RunSQL("UPDATE dev_task task SET version_id = (SELECT id FROM download_release WHERE download_release.version = task.version_string);"),
+        migrations.RemoveField(
+            model_name='task',
+            name='version_string',
+        ),
+    ]
index d13acfe25ce11acaa748a850694e26f72230ebc8..31192756ceaab50e6930eb8f43c3fd193645b934 100644 (file)
@@ -114,13 +114,13 @@ def roadmap(request, versions='future'):
         if versions == 'future':
             # future versions
             task_list = (Task.objects.all().filter(visible=1)
-                         .filter(version__gt=Release.objects.get(
+                         .filter(version__version__gt=Release.objects.get(
                              version='stable').description)
                          .order_by('version__date', 'priority'))
         else:
             # already released versions
             task_list = (Task.objects.all().filter(visible=1)
-                         .filter(version__lte=Release.objects.get(
+                         .filter(version__version__lte=Release.objects.get(
                              version='stable').description)
                          .order_by('-version__date', 'priority'))
     except ObjectDoesNotExist:
diff --git a/weechat/download/migrations/0003_release_package_version_1.py b/weechat/download/migrations/0003_release_package_version_1.py
new file mode 100644 (file)
index 0000000..11702e5
--- /dev/null
@@ -0,0 +1,51 @@
+# Generated by Django 2.2.28 on 2023-04-15 22:40
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('download', '0002_remove_release_progress_todo'),
+        ('dev', '0002_task_version_1'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='package',
+            name='version_string',
+            field=models.CharField(max_length=64, null=True),
+        ),
+        migrations.AlterModelOptions(
+            name='package',
+            options={'ordering': ['version_string', '-type__priority']},
+        ),
+        migrations.RunSQL("UPDATE download_package SET version_string = version_id;"),
+        migrations.RemoveField(
+            model_name='package',
+            name='version',
+        ),
+        migrations.AlterField(
+            model_name='release',
+            name='version',
+            field=models.CharField(max_length=64),
+        ),
+        migrations.RunSQL(
+            "ALTER TABLE download_release ADD COLUMN id SERIAL PRIMARY KEY;",
+            state_operations=[
+                migrations.AddField(
+                    model_name='release',
+                    name='id',
+                    field=models.AutoField(auto_created=True, default=1, primary_key=True, serialize=False, verbose_name='ID'),
+                    preserve_default=False,
+                ),
+            ],
+        ),
+        migrations.AddField(
+            model_name='package',
+            name='version',
+            field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='download.Release'),
+            preserve_default=False,
+        ),
+    ]
diff --git a/weechat/download/migrations/0004_release_package_version_2.py b/weechat/download/migrations/0004_release_package_version_2.py
new file mode 100644 (file)
index 0000000..14fbd95
--- /dev/null
@@ -0,0 +1,14 @@
+# Generated by Django 2.2.28 on 2023-04-15 23:22
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('download', '0003_release_package_version_1'),
+    ]
+
+    operations = [
+        migrations.RunSQL("UPDATE download_package pkg SET version_id = (SELECT id FROM download_release WHERE download_release.version = pkg.version_string);"),
+    ]
diff --git a/weechat/download/migrations/0005_release_package_version_3.py b/weechat/download/migrations/0005_release_package_version_3.py
new file mode 100644 (file)
index 0000000..d964980
--- /dev/null
@@ -0,0 +1,21 @@
+# Generated by Django 2.2.28 on 2023-04-15 23:22
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('download', '0004_release_package_version_2'),
+    ]
+
+    operations = [
+        migrations.AlterModelOptions(
+            name='package',
+            options={'ordering': ['version', '-type__priority']},
+        ),
+        migrations.RemoveField(
+            model_name='package',
+            name='version_string',
+        ),
+    ]
index bb51b35e58a23f25980a3bbecdfa5b0d83b58cd8..edb03504509b17a3c20322683c1445e2e16a91e0 100644 (file)
@@ -35,7 +35,7 @@ from weechat.common.utils import version_to_tuple
 
 class Release(models.Model):
     """A WeeChat release."""
-    version = models.CharField(max_length=64, primary_key=True)
+    version = models.CharField(max_length=64)
     description = models.CharField(max_length=64, blank=True)
     date = models.DateField(blank=True, null=True)
     security_issues_fixed = models.IntegerField(default=0)
index af992ce1cc288d42a1a28c66ff9ca43d7b827a7c..efdf27d018ebdbf467be20ad5f4c8b335748cd8e 100644 (file)
@@ -32,21 +32,21 @@ def packages(request, version='stable'):
     try:
         if version == 'stable':
             stable_desc = Release.objects.get(version='stable').description
-            package_list = (Package.objects.all().filter(version=stable_desc)
+            package_list = (Package.objects.all().filter(version__version=stable_desc)
                             .order_by('type__priority'))
         elif version == 'devel':
-            package_list = (Package.objects.all().filter(version='devel')
+            package_list = (Package.objects.all().filter(version__version='devel')
                             .order_by('type__priority'))
         elif version == 'all':
-            package_list = (Package.objects.all().exclude(version='devel')
+            package_list = (Package.objects.all().exclude(version__version='devel')
                             .order_by('-version__date', 'type__priority'))
         elif version == 'old':
             stable_desc = Release.objects.get(version='stable').description
-            package_list = (Package.objects.all().exclude(version='devel')
-                            .exclude(version=stable_desc)
+            package_list = (Package.objects.all().exclude(version__version='devel')
+                            .exclude(version__version=stable_desc)
                             .order_by('-version__date', 'type__priority'))
         else:
-            package_list = (Package.objects.filter(version=version)
+            package_list = (Package.objects.filter(version__version=version)
                             .order_by('type__priority'))
     except ObjectDoesNotExist:
         package_list = None
@@ -62,7 +62,7 @@ def packages(request, version='stable'):
 
 def package_checksums(request, version, checksum_type):
     """Page with checksums of packages in a version."""
-    package_list = (Package.objects.filter(version=version)
+    package_list = (Package.objects.filter(version__version=version)
                     .order_by('type__priority'))
     checksums = []
     for package in package_list: