FossilRepo

fossilrepo / fossil / migrations / 0009_historicalticketfielddefinition_and_more.py
Blame History Raw 431 lines
1
# Generated by Django 5.2.12 on 2026-04-07 15:23
2
3
import django.db.models.deletion
4
import simple_history.models
5
from django.conf import settings
6
from django.db import migrations, models
7
8
9
class Migration(migrations.Migration):
10
dependencies = [
11
("fossil", "0008_apitoken_historicalapitoken_and_more"),
12
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
13
]
14
15
operations = [
16
migrations.CreateModel(
17
name="HistoricalTicketFieldDefinition",
18
fields=[
19
(
20
"id",
21
models.BigIntegerField(auto_created=True, blank=True, db_index=True, verbose_name="ID"),
22
),
23
("version", models.PositiveIntegerField(default=1, editable=False)),
24
("created_at", models.DateTimeField(blank=True, editable=False)),
25
("updated_at", models.DateTimeField(blank=True, editable=False)),
26
("deleted_at", models.DateTimeField(blank=True, null=True)),
27
(
28
"name",
29
models.CharField(
30
help_text="Field name (used in Fossil ticket system)",
31
max_length=100,
32
),
33
),
34
("label", models.CharField(help_text="Display label", max_length=200)),
35
(
36
"field_type",
37
models.CharField(
38
choices=[
39
("text", "Text"),
40
("textarea", "Multi-line Text"),
41
("select", "Select (dropdown)"),
42
("checkbox", "Checkbox"),
43
("date", "Date"),
44
("url", "URL"),
45
],
46
default="text",
47
max_length=20,
48
),
49
),
50
(
51
"choices",
52
models.TextField(
53
blank=True,
54
default="",
55
help_text="Options for select fields, one per line",
56
),
57
),
58
("is_required", models.BooleanField(default=False)),
59
("sort_order", models.IntegerField(default=0)),
60
("history_id", models.AutoField(primary_key=True, serialize=False)),
61
("history_date", models.DateTimeField(db_index=True)),
62
("history_change_reason", models.CharField(max_length=100, null=True)),
63
(
64
"history_type",
65
models.CharField(
66
choices=[("+", "Created"), ("~", "Changed"), ("-", "Deleted")],
67
max_length=1,
68
),
69
),
70
(
71
"created_by",
72
models.ForeignKey(
73
blank=True,
74
db_constraint=False,
75
null=True,
76
on_delete=django.db.models.deletion.DO_NOTHING,
77
related_name="+",
78
to=settings.AUTH_USER_MODEL,
79
),
80
),
81
(
82
"deleted_by",
83
models.ForeignKey(
84
blank=True,
85
db_constraint=False,
86
null=True,
87
on_delete=django.db.models.deletion.DO_NOTHING,
88
related_name="+",
89
to=settings.AUTH_USER_MODEL,
90
),
91
),
92
(
93
"history_user",
94
models.ForeignKey(
95
null=True,
96
on_delete=django.db.models.deletion.SET_NULL,
97
related_name="+",
98
to=settings.AUTH_USER_MODEL,
99
),
100
),
101
(
102
"repository",
103
models.ForeignKey(
104
blank=True,
105
db_constraint=False,
106
null=True,
107
on_delete=django.db.models.deletion.DO_NOTHING,
108
related_name="+",
109
to="fossil.fossilrepository",
110
),
111
),
112
(
113
"updated_by",
114
models.ForeignKey(
115
blank=True,
116
db_constraint=False,
117
null=True,
118
on_delete=django.db.models.deletion.DO_NOTHING,
119
related_name="+",
120
to=settings.AUTH_USER_MODEL,
121
),
122
),
123
],
124
options={
125
"verbose_name": "historical ticket field definition",
126
"verbose_name_plural": "historical ticket field definitions",
127
"ordering": ("-history_date", "-history_id"),
128
"get_latest_by": ("history_date", "history_id"),
129
},
130
bases=(simple_history.models.HistoricalChanges, models.Model),
131
),
132
migrations.CreateModel(
133
name="HistoricalTicketReport",
134
fields=[
135
(
136
"id",
137
models.BigIntegerField(auto_created=True, blank=True, db_index=True, verbose_name="ID"),
138
),
139
("version", models.PositiveIntegerField(default=1, editable=False)),
140
("created_at", models.DateTimeField(blank=True, editable=False)),
141
("updated_at", models.DateTimeField(blank=True, editable=False)),
142
("deleted_at", models.DateTimeField(blank=True, null=True)),
143
("title", models.CharField(max_length=200)),
144
("description", models.TextField(blank=True, default="")),
145
(
146
"sql_query",
147
models.TextField(help_text="SQL query against the Fossil ticket table. Use {status}, {type} as placeholders."),
148
),
149
(
150
"is_public",
151
models.BooleanField(default=True, help_text="Visible to all project members"),
152
),
153
("history_id", models.AutoField(primary_key=True, serialize=False)),
154
("history_date", models.DateTimeField(db_index=True)),
155
("history_change_reason", models.CharField(max_length=100, null=True)),
156
(
157
"history_type",
158
models.CharField(
159
choices=[("+", "Created"), ("~", "Changed"), ("-", "Deleted")],
160
max_length=1,
161
),
162
),
163
(
164
"created_by",
165
models.ForeignKey(
166
blank=True,
167
db_constraint=False,
168
null=True,
169
on_delete=django.db.models.deletion.DO_NOTHING,
170
related_name="+",
171
to=settings.AUTH_USER_MODEL,
172
),
173
),
174
(
175
"deleted_by",
176
models.ForeignKey(
177
blank=True,
178
db_constraint=False,
179
null=True,
180
on_delete=django.db.models.deletion.DO_NOTHING,
181
related_name="+",
182
to=settings.AUTH_USER_MODEL,
183
),
184
),
185
(
186
"history_user",
187
models.ForeignKey(
188
null=True,
189
on_delete=django.db.models.deletion.SET_NULL,
190
related_name="+",
191
to=settings.AUTH_USER_MODEL,
192
),
193
),
194
(
195
"repository",
196
models.ForeignKey(
197
blank=True,
198
db_constraint=False,
199
null=True,
200
on_delete=django.db.models.deletion.DO_NOTHING,
201
related_name="+",
202
to="fossil.fossilrepository",
203
),
204
),
205
(
206
"updated_by",
207
models.ForeignKey(
208
blank=True,
209
db_constraint=False,
210
null=True,
211
on_delete=django.db.models.deletion.DO_NOTHING,
212
related_name="+",
213
to=settings.AUTH_USER_MODEL,
214
),
215
),
216
],
217
options={
218
"verbose_name": "historical ticket report",
219
"verbose_name_plural": "historical ticket reports",
220
"ordering": ("-history_date", "-history_id"),
221
"get_latest_by": ("history_date", "history_id"),
222
},
223
bases=(simple_history.models.HistoricalChanges, models.Model),
224
),
225
migrations.CreateModel(
226
name="NotificationPreference",
227
fields=[
228
(
229
"id",
230
models.BigAutoField(
231
auto_created=True,
232
primary_key=True,
233
serialize=False,
234
verbose_name="ID",
235
),
236
),
237
(
238
"delivery_mode",
239
models.CharField(
240
choices=[
241
("immediate", "Immediate (per event)"),
242
("daily", "Daily Digest"),
243
("weekly", "Weekly Digest"),
244
("off", "Off"),
245
],
246
default="immediate",
247
max_length=20,
248
),
249
),
250
("notify_checkins", models.BooleanField(default=True)),
251
("notify_tickets", models.BooleanField(default=True)),
252
("notify_wiki", models.BooleanField(default=True)),
253
("notify_releases", models.BooleanField(default=True)),
254
("notify_forum", models.BooleanField(default=False)),
255
(
256
"user",
257
models.OneToOneField(
258
on_delete=django.db.models.deletion.CASCADE,
259
related_name="notification_prefs",
260
to=settings.AUTH_USER_MODEL,
261
),
262
),
263
],
264
options={
265
"verbose_name": "Notification Preference",
266
},
267
),
268
migrations.CreateModel(
269
name="TicketReport",
270
fields=[
271
(
272
"id",
273
models.BigAutoField(
274
auto_created=True,
275
primary_key=True,
276
serialize=False,
277
verbose_name="ID",
278
),
279
),
280
("version", models.PositiveIntegerField(default=1, editable=False)),
281
("created_at", models.DateTimeField(auto_now_add=True)),
282
("updated_at", models.DateTimeField(auto_now=True)),
283
("deleted_at", models.DateTimeField(blank=True, null=True)),
284
("title", models.CharField(max_length=200)),
285
("description", models.TextField(blank=True, default="")),
286
(
287
"sql_query",
288
models.TextField(help_text="SQL query against the Fossil ticket table. Use {status}, {type} as placeholders."),
289
),
290
(
291
"is_public",
292
models.BooleanField(default=True, help_text="Visible to all project members"),
293
),
294
(
295
"created_by",
296
models.ForeignKey(
297
blank=True,
298
null=True,
299
on_delete=django.db.models.deletion.SET_NULL,
300
related_name="+",
301
to=settings.AUTH_USER_MODEL,
302
),
303
),
304
(
305
"deleted_by",
306
models.ForeignKey(
307
blank=True,
308
null=True,
309
on_delete=django.db.models.deletion.SET_NULL,
310
related_name="+",
311
to=settings.AUTH_USER_MODEL,
312
),
313
),
314
(
315
"repository",
316
models.ForeignKey(
317
on_delete=django.db.models.deletion.CASCADE,
318
related_name="ticket_reports",
319
to="fossil.fossilrepository",
320
),
321
),
322
(
323
"updated_by",
324
models.ForeignKey(
325
blank=True,
326
null=True,
327
on_delete=django.db.models.deletion.SET_NULL,
328
related_name="+",
329
to=settings.AUTH_USER_MODEL,
330
),
331
),
332
],
333
options={
334
"ordering": ["title"],
335
},
336
),
337
migrations.CreateModel(
338
name="TicketFieldDefinition",
339
fields=[
340
(
341
"id",
342
models.BigAutoField(
343
auto_created=True,
344
primary_key=True,
345
serialize=False,
346
verbose_name="ID",
347
),
348
),
349
("version", models.PositiveIntegerField(default=1, editable=False)),
350
("created_at", models.DateTimeField(auto_now_add=True)),
351
("updated_at", models.DateTimeField(auto_now=True)),
352
("deleted_at", models.DateTimeField(blank=True, null=True)),
353
(
354
"name",
355
models.CharField(
356
help_text="Field name (used in Fossil ticket system)",
357
max_length=100,
358
),
359
),
360
("label", models.CharField(help_text="Display label", max_length=200)),
361
(
362
"field_type",
363
models.CharField(
364
choices=[
365
("text", "Text"),
366
("textarea", "Multi-line Text"),
367
("select", "Select (dropdown)"),
368
("checkbox", "Checkbox"),
369
("date", "Date"),
370
("url", "URL"),
371
],
372
default="text",
373
max_length=20,
374
),
375
),
376
(
377
"choices",
378
models.TextField(
379
blank=True,
380
default="",
381
help_text="Options for select fields, one per line",
382
),
383
),
384
("is_required", models.BooleanField(default=False)),
385
("sort_order", models.IntegerField(default=0)),
386
(
387
"created_by",
388
models.ForeignKey(
389
blank=True,
390
null=True,
391
on_delete=django.db.models.deletion.SET_NULL,
392
related_name="+",
393
to=settings.AUTH_USER_MODEL,
394
),
395
),
396
(
397
"deleted_by",
398
models.ForeignKey(
399
blank=True,
400
null=True,
401
on_delete=django.db.models.deletion.SET_NULL,
402
related_name="+",
403
to=settings.AUTH_USER_MODEL,
404
),
405
),
406
(
407
"repository",
408
models.ForeignKey(
409
on_delete=django.db.models.deletion.CASCADE,
410
related_name="ticket_fields",
411
to="fossil.fossilrepository",
412
),
413
),
414
(
415
"updated_by",
416
models.ForeignKey(
417
blank=True,
418
null=True,
419
on_delete=django.db.models.deletion.SET_NULL,
420
related_name="+",
421
to=settings.AUTH_USER_MODEL,
422
),
423
),
424
],
425
options={
426
"ordering": ["sort_order", "name"],
427
"unique_together": {("repository", "name")},
428
},
429
),
430
]
431

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button