Coverage for app/venv/lib/python3.14/site-packages/weblate/memory/migrations/0001_squashed_weblate_5.py: 39%
30 statements
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-07 07:15 +0000
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-07 07:15 +0000
1# Copyright © Michal Čihař <michal@weblate.org>
2#
3# SPDX-License-Identifier: GPL-3.0-or-later
5# Generated by Django 4.2.5 on 2023-09-18 08:24
7import django.db.models.deletion
8from django.conf import settings
9from django.core.exceptions import ImproperlyConfigured
10from django.db import migrations, models
13def create_index(apps, schema_editor) -> None:
14 vendor = schema_editor.connection.vendor
15 if vendor == "postgresql": 15 ↛ 21line 15 didn't jump to line 21 because the condition on line 15 was always true
16 # Fulltext for translation memory search
17 schema_editor.execute(
18 "CREATE INDEX memory_source_trgm ON memory_memory USING GIN "
19 "(source gin_trgm_ops, target_language_id, source_language_id)"
20 )
21 elif vendor == "mysql":
22 # Fulltext for translation memory search
23 schema_editor.execute(
24 "CREATE FULLTEXT INDEX memory_source_fulltext ON memory_memory(source)"
25 )
26 # Substring index to faster lookup existing entries instead of MD5 index which is
27 # not supported on MariaDB
28 schema_editor.execute(
29 "CREATE INDEX memory_lookup_index ON "
30 "memory_memory(source(255), target(255), origin(255))"
31 )
32 else:
33 msg = f"Unsupported database: {vendor}"
34 raise ImproperlyConfigured(msg)
37def drop_index(apps, schema_editor) -> None:
38 vendor = schema_editor.connection.vendor
39 if vendor == "postgresql":
40 schema_editor.execute("DROP INDEX memory_source_trgm")
41 schema_editor.execute("DROP INDEX memory_source_index")
42 schema_editor.execute("DROP INDEX memory_target_index")
43 schema_editor.execute("DROP INDEX memory_origin_index")
44 elif vendor == "mysql":
45 schema_editor.execute(
46 "ALTER TABLE memory_memory DROP INDEX memory_source_fulltext"
47 )
48 schema_editor.execute(
49 "ALTER TABLE memory_memory DROP INDEX memory_lookup_index"
50 )
51 else:
52 msg = f"Unsupported database: {vendor}"
53 raise ImproperlyConfigured(msg)
56class Migration(migrations.Migration):
57 replaces = [
58 ("memory", "0001_squashed_0006_memory_update"),
59 ("memory", "0007_use_trigram"),
60 ("memory", "0008_adjust_similarity"),
61 ("memory", "0009_pg_index"),
62 ("memory", "0010_auto_20210506_1439"),
63 ("memory", "0011_alter_memory_options"),
64 ("memory", "0012_remove_blank"),
65 ("memory", "0013_reindex"),
66 ("memory", "0014_rename_index"),
67 ("memory", "0015_remove_blank"),
68 ("memory", "0016_remove_blank"),
69 ]
71 initial = True
73 dependencies = [
74 ("weblate_auth", "0002_squashed_weblate_5"),
75 ("lang", "0001_squashed_weblate_5"),
76 ("trans", "0001_squashed_weblate_5"),
77 migrations.swappable_dependency(settings.AUTH_USER_MODEL),
78 ]
80 operations = [
81 migrations.CreateModel(
82 name="Memory",
83 fields=[
84 (
85 "id",
86 models.AutoField(
87 auto_created=True,
88 primary_key=True,
89 serialize=False,
90 verbose_name="ID",
91 ),
92 ),
93 ("source", models.TextField()),
94 ("target", models.TextField()),
95 ("origin", models.TextField()),
96 ("from_file", models.BooleanField(default=False)),
97 ("shared", models.BooleanField(default=False)),
98 (
99 "project",
100 models.ForeignKey(
101 blank=True,
102 default=None,
103 null=True,
104 on_delete=django.db.models.deletion.CASCADE,
105 to="trans.project",
106 ),
107 ),
108 (
109 "source_language",
110 models.ForeignKey(
111 on_delete=django.db.models.deletion.CASCADE,
112 related_name="memory_source_set",
113 to="lang.language",
114 ),
115 ),
116 (
117 "target_language",
118 models.ForeignKey(
119 on_delete=django.db.models.deletion.CASCADE,
120 related_name="memory_target_set",
121 to="lang.language",
122 ),
123 ),
124 (
125 "user",
126 models.ForeignKey(
127 blank=True,
128 default=None,
129 null=True,
130 on_delete=django.db.models.deletion.CASCADE,
131 to=settings.AUTH_USER_MODEL,
132 ),
133 ),
134 ],
135 options={
136 "verbose_name": "Translation memory entry",
137 "verbose_name_plural": "Translation memory entries",
138 },
139 ),
140 migrations.RunPython(
141 code=create_index,
142 reverse_code=drop_index,
143 atomic=False,
144 elidable=False,
145 ),
146 ]