Coverage for app/venv/lib/python3.14/site-packages/weblate/auth/migrations/0002_squashed_weblate_5.py: 100%
12 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 07:58
7import uuid
9import django.db.models.deletion
10from django.conf import settings
11from django.db import migrations, models
13import weblate.auth.models
14import weblate.trans.fields
15import weblate.utils.fields
16import weblate.utils.validators
19class Migration(migrations.Migration):
20 replaces = [
21 (
22 "weblate_auth",
23 "0002_auto_20180507_1540_squashed_0011_auto_20180509_0739_squashed_0007_group_components",
24 ),
25 ("weblate_auth", "0008_auto_20200611_1232"),
26 ("weblate_auth", "0009_migrate_componentlist"),
27 ("weblate_auth", "0010_migrate_componentlist"),
28 ("weblate_auth", "0011_unique_case_insensitive"),
29 ("weblate_auth", "0012_auto_20200729_1200"),
30 ("weblate_auth", "0013_rename_sources_group"),
31 ("weblate_auth", "0014_auto_20210512_1955"),
32 ("weblate_auth", "0015_userblock"),
33 ("weblate_auth", "0016_alter_userblock_unique_together"),
34 ("weblate_auth", "0017_alter_user_email"),
35 ("weblate_auth", "0018_fixup_role"),
36 ("weblate_auth", "0019_alter_role_name"),
37 ("weblate_auth", "0020_group_defining_project"),
38 ("weblate_auth", "0021_migrate_internal_groups"),
39 ("weblate_auth", "0022_alter_user_managers"),
40 ("weblate_auth", "0023_user_is_bot"),
41 ("weblate_auth", "0024_bot_users"),
42 ("weblate_auth", "0025_group_admins"),
43 ("weblate_auth", "0026_remove_selection_lists"),
44 ("weblate_auth", "0027_alter_group_components"),
45 ("weblate_auth", "0028_alter_autogroup_match"),
46 ("weblate_auth", "0029_invitation"),
47 ("weblate_auth", "0030_alter_invitation_group_alter_user_groups"),
48 ("weblate_auth", "0031_alter_userblock_user"),
49 ]
51 dependencies = [
52 ("weblate_auth", "0001_initial"),
53 ("lang", "0001_squashed_weblate_5"),
54 ("authtoken", "0002_auto_20160226_1747"),
55 ("trans", "0001_squashed_weblate_5"),
56 ]
58 operations = [
59 migrations.CreateModel(
60 name="Permission",
61 fields=[
62 (
63 "id",
64 models.AutoField(
65 auto_created=True,
66 primary_key=True,
67 serialize=False,
68 verbose_name="ID",
69 ),
70 ),
71 ("codename", models.CharField(max_length=100, unique=True)),
72 ("name", models.CharField(max_length=200)),
73 ],
74 options={
75 "verbose_name": "Permission",
76 "verbose_name_plural": "Permissions",
77 },
78 ),
79 migrations.CreateModel(
80 name="Role",
81 fields=[
82 (
83 "id",
84 models.AutoField(
85 auto_created=True,
86 primary_key=True,
87 serialize=False,
88 verbose_name="ID",
89 ),
90 ),
91 (
92 "name",
93 models.CharField(max_length=200, unique=True, verbose_name="Name"),
94 ),
95 (
96 "permissions",
97 models.ManyToManyField(
98 blank=True,
99 help_text="Choose permissions granted to this role.",
100 to="weblate_auth.permission",
101 verbose_name="Permissions",
102 ),
103 ),
104 ],
105 options={
106 "verbose_name": "Role",
107 "verbose_name_plural": "Roles",
108 },
109 ),
110 migrations.CreateModel(
111 name="Group",
112 fields=[
113 (
114 "id",
115 models.AutoField(
116 auto_created=True,
117 primary_key=True,
118 serialize=False,
119 verbose_name="ID",
120 ),
121 ),
122 ("name", models.CharField(max_length=150, verbose_name="Name")),
123 (
124 "project_selection",
125 models.IntegerField(
126 choices=[
127 (0, "As defined"),
128 (1, "All projects"),
129 (3, "All public projects"),
130 (4, "All protected projects"),
131 (2, "From component list"),
132 ],
133 default=0,
134 verbose_name="Project selection",
135 ),
136 ),
137 (
138 "language_selection",
139 models.IntegerField(
140 choices=[(0, "As defined"), (1, "All languages")],
141 default=0,
142 verbose_name="Language selection",
143 ),
144 ),
145 (
146 "internal",
147 models.BooleanField(
148 default=False, verbose_name="Internal Weblate group"
149 ),
150 ),
151 (
152 "languages",
153 models.ManyToManyField(
154 blank=True, to="lang.language", verbose_name="Languages"
155 ),
156 ),
157 (
158 "projects",
159 models.ManyToManyField(
160 blank=True, to="trans.project", verbose_name="Projects"
161 ),
162 ),
163 (
164 "roles",
165 models.ManyToManyField(
166 blank=True,
167 help_text="Choose roles granted to this group.",
168 to="weblate_auth.role",
169 verbose_name="Roles",
170 ),
171 ),
172 (
173 "components",
174 models.ManyToManyField(
175 blank=True, to="trans.component", verbose_name="Components"
176 ),
177 ),
178 (
179 "componentlists",
180 models.ManyToManyField(
181 blank=True,
182 to="trans.componentlist",
183 verbose_name="Component lists",
184 ),
185 ),
186 (
187 "defining_project",
188 models.ForeignKey(
189 blank=True,
190 null=True,
191 on_delete=django.db.models.deletion.CASCADE,
192 related_name="defined_groups",
193 to="trans.project",
194 ),
195 ),
196 ],
197 options={
198 "verbose_name": "Group",
199 "verbose_name_plural": "Groups",
200 },
201 ),
202 migrations.AlterField(
203 model_name="user",
204 name="email",
205 field=models.EmailField(
206 max_length=190,
207 unique=True,
208 validators=[weblate.utils.validators.EmailValidator()],
209 verbose_name="E-mail",
210 ),
211 ),
212 migrations.AddField(
213 model_name="user",
214 name="groups",
215 field=weblate.auth.models.GroupManyToManyField(
216 blank=True,
217 help_text="The user is granted all permissions included in membership of these groups.",
218 to="weblate_auth.group",
219 verbose_name="Groups",
220 ),
221 ),
222 migrations.AlterField(
223 model_name="user",
224 name="email",
225 field=models.EmailField(
226 max_length=190,
227 null=True,
228 unique=True,
229 validators=[weblate.utils.validators.EmailValidator()],
230 verbose_name="E-mail",
231 ),
232 ),
233 migrations.AlterField(
234 model_name="user",
235 name="email",
236 field=weblate.utils.fields.EmailField(
237 max_length=190,
238 null=True,
239 unique=True,
240 validators=[weblate.utils.validators.EmailValidator()],
241 verbose_name="E-mail",
242 ),
243 ),
244 migrations.AlterField(
245 model_name="user",
246 name="username",
247 field=weblate.utils.fields.UsernameField(
248 error_messages={"unique": "A user with that username already exists."},
249 help_text="Username may only contain letters, numbers or the following characters: @ . + - _",
250 max_length=150,
251 unique=True,
252 validators=[weblate.utils.validators.validate_username],
253 verbose_name="Username",
254 ),
255 ),
256 migrations.AlterModelOptions(
257 name="user",
258 options={"verbose_name": "User", "verbose_name_plural": "Users"},
259 ),
260 migrations.AlterField(
261 model_name="user",
262 name="email",
263 field=weblate.utils.fields.EmailField(
264 max_length=190, null=True, unique=True, verbose_name="E-mail"
265 ),
266 ),
267 migrations.AlterModelManagers(
268 name="user",
269 managers=[],
270 ),
271 migrations.AddField(
272 model_name="user",
273 name="is_bot",
274 field=models.BooleanField(
275 db_index=True, default=False, verbose_name="Robot user"
276 ),
277 ),
278 migrations.AddField(
279 model_name="user",
280 name="date_expires",
281 field=models.DateTimeField(
282 blank=True, default=None, null=True, verbose_name="Expires"
283 ),
284 ),
285 migrations.AddField(
286 model_name="group",
287 name="admins",
288 field=models.ManyToManyField(
289 blank=True,
290 help_text="The administrator can add or remove users from a team.",
291 related_name="administered_group_set",
292 to=settings.AUTH_USER_MODEL,
293 verbose_name="Team administrators",
294 ),
295 ),
296 migrations.AlterField(
297 model_name="group",
298 name="components",
299 field=models.ManyToManyField(
300 blank=True,
301 help_text="Empty selection grants access to all components in project scope.",
302 to="trans.component",
303 verbose_name="Components",
304 ),
305 ),
306 migrations.CreateModel(
307 name="AutoGroup",
308 fields=[
309 (
310 "id",
311 models.AutoField(
312 auto_created=True,
313 primary_key=True,
314 serialize=False,
315 verbose_name="ID",
316 ),
317 ),
318 (
319 "match",
320 weblate.trans.fields.RegexField(
321 default="^$",
322 help_text="Users with e-mail addresses found to match will be added to this group.",
323 max_length=200,
324 verbose_name="Regular expression for e-mail address",
325 ),
326 ),
327 (
328 "group",
329 models.ForeignKey(
330 on_delete=django.db.models.deletion.CASCADE,
331 to="weblate_auth.group",
332 verbose_name="Group to assign",
333 ),
334 ),
335 ],
336 options={
337 "verbose_name": "Automatic group assignment",
338 "verbose_name_plural": "Automatic group assignments",
339 },
340 ),
341 migrations.CreateModel(
342 name="Invitation",
343 fields=[
344 (
345 "uuid",
346 models.UUIDField(
347 default=uuid.uuid4,
348 editable=False,
349 primary_key=True,
350 serialize=False,
351 ),
352 ),
353 ("timestamp", models.DateTimeField(auto_now_add=True)),
354 (
355 "email",
356 weblate.utils.fields.EmailField(
357 blank=True, max_length=190, verbose_name="E-mail"
358 ),
359 ),
360 (
361 "is_superuser",
362 models.BooleanField(
363 default=False,
364 help_text="User has all possible permissions.",
365 verbose_name="Superuser status",
366 ),
367 ),
368 (
369 "group",
370 models.ForeignKey(
371 help_text="The user is granted all permissions included in membership of these teams.",
372 on_delete=django.db.models.deletion.CASCADE,
373 to="weblate_auth.group",
374 verbose_name="Team",
375 ),
376 ),
377 (
378 "user",
379 models.ForeignKey(
380 help_text="Please type in an existing Weblate account name or e-mail address.",
381 null=True,
382 on_delete=django.db.models.deletion.CASCADE,
383 to=settings.AUTH_USER_MODEL,
384 verbose_name="User to add",
385 ),
386 ),
387 (
388 "author",
389 models.ForeignKey(
390 on_delete=django.db.models.deletion.CASCADE,
391 related_name="created_invitation_set",
392 to=settings.AUTH_USER_MODEL,
393 ),
394 ),
395 ],
396 ),
397 migrations.AlterField(
398 model_name="user",
399 name="groups",
400 field=weblate.auth.models.GroupManyToManyField(
401 blank=True,
402 help_text="The user is granted all permissions included in membership of these teams.",
403 to="weblate_auth.group",
404 verbose_name="Teams",
405 ),
406 ),
407 migrations.CreateModel(
408 name="UserBlock",
409 fields=[
410 (
411 "id",
412 models.AutoField(
413 auto_created=True,
414 primary_key=True,
415 serialize=False,
416 verbose_name="ID",
417 ),
418 ),
419 (
420 "expiry",
421 models.DateTimeField(null=True, verbose_name="Block expiry"),
422 ),
423 (
424 "project",
425 models.ForeignKey(
426 on_delete=django.db.models.deletion.CASCADE,
427 to="trans.project",
428 verbose_name="Project",
429 ),
430 ),
431 (
432 "user",
433 models.ForeignKey(
434 db_index=False,
435 on_delete=django.db.models.deletion.CASCADE,
436 to=settings.AUTH_USER_MODEL,
437 verbose_name="User to block",
438 ),
439 ),
440 ],
441 options={
442 "verbose_name": "Blocked user",
443 "verbose_name_plural": "Blocked users",
444 "unique_together": {("user", "project")},
445 },
446 ),
447 migrations.AddConstraint(
448 model_name="user",
449 constraint=models.UniqueConstraint(
450 django.db.models.functions.text.Upper("username"),
451 name="weblate_auth_user_username_ci",
452 ),
453 ),
454 migrations.AddConstraint(
455 model_name="user",
456 constraint=models.UniqueConstraint(
457 django.db.models.functions.text.Upper("email"),
458 name="weblate_auth_user_email_ci",
459 ),
460 ),
461 ]