| | @@ -0,0 +1,232 @@ |
| 1 | +# Generated by Django 5.2.12 on 2026-04-07 04:25
|
| 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 | +00)),
|
| 11 | + ("r "update),
|
| 12 | + ),
|
| 13 | + ("version", models.PositiveIntegerField(default=1, editable=False)),
|
| 14 | + ("created_at", models.DateTimeField(blank=True, editable=False)),
|
| 15 | + ("updated_at", models.DateTimeField(blank=True, editable=False)),
|
| 16 | + ("deleted_at", models.DateTimeField(blank=True, null=True)),
|
| 17 | + (
|
| 18 | + "event_filter",
|
| 19 | + models.CharField(
|
| 20 | + choices=[
|
| 21 | + ("all", "All Events"),
|
| 22 | + ("checkins", "Checkins Only"),
|
| 23 | + ("tickets", "Tickets Only"),
|
| 24 | + ("wiki", "Wiki Only"),
|
| 25 | + ],
|
| 26 | + default="all",
|
| 27 | + max_length=20,
|
| 28 | + ),
|
| 29 | + ),
|
| 30 | + ("email_enabled", models.BooleanField(default=True)),
|
| 31 | + ("history_id", models.AutoField(primary_key=True, serialize=False)),
|
| 32 | + ("history_date", models.DateTimeField(db_index=True)),
|
| 33 | + ("history_change_reason", models.CharField(max_length=100, null=True)),
|
| 34 | + (
|
| 35 | + "history_type",
|
| 36 | + models.CharField(
|
| 37 | + choices=[("+", "Created"), ("~", "Changed"), ("-", "Deleted")],
|
| 38 | + max_length=1,
|
| 39 | + ),
|
| 40 | + ),
|
| 41 | + (
|
| 42 | + "created_by",
|
| 43 | + models.ForeignKey(
|
| 44 | + blank=True,
|
| 45 | + db_constraint=False,
|
| 46 | + null=True,
|
| 47 | + on_delete=django.db.models.deletion.DO_NOTHING,
|
| 48 | + related_name="+",
|
| 49 | + to=settings.AUTH_USER_MODEL,
|
| 50 | + ),
|
| 51 | + ),
|
| 52 | + (
|
| 53 | + "deleted_by",
|
| 54 | + models.ForeignKey(
|
| 55 | + blank=True,
|
| 56 | + db_constraint=False,
|
| 57 | + null=True,
|
| 58 | + on_delete=django.db.models.deletion.DO_NOTHING,
|
| 59 | + related_name="+",
|
| 60 | + to=settings.AUTH_USER_MODEL,
|
| 61 | + ),
|
| 62 | + ),
|
| 63 | + (
|
| 64 | + "history_user",
|
| 65 | + models.ForeignKey(
|
| 66 | + null=True,
|
| 67 | + on_delete=django.db.models.deletion.SET_NULL,
|
| 68 | + related_name="+",
|
| 69 | + to=settings.AUTH_USER_MODEL,
|
| 70 | + ),
|
| 71 | + ),
|
| 72 | + (
|
| 73 | + "project",
|
| 74 | + models.ForeignKey(
|
| 75 | + blank=True,
|
| 76 | + db_constraint=False,
|
| 77 | + null=True,
|
| 78 | + on_delete=django.db.models.deletion.DO_NOTHING,
|
| 79 | + related_name="+",
|
| 80 | + to="projects.project",
|
| 81 | + ),
|
| 82 | + ),
|
| 83 | + (
|
| 84 | + "updated_by",
|
| 85 | + models.ForeignKey(
|
| 86 | + blank=True,
|
| 87 | + db_constraint=False,
|
| 88 | + null=True,
|
| 89 | + on_delete=django.db.models.deletion.DO_NOTHING,
|
| 90 | + related_name="+",
|
| 91 | + to=settings.AUTH_USER_MODEL,
|
| 92 | + ),
|
| 93 | + ),
|
| 94 | + (
|
| 95 | + "user",
|
| 96 | + models.ForeignKey(
|
| 97 | + blank=True,
|
| 98 | + db_constraint=False,
|
| 99 | + null=True,
|
| 100 | + on_delete=django.db.models.deletion.DO_NOTHING,
|
| 101 | + related_name="+",
|
| 102 | + to=settings.AUTH_USER_MODEL,
|
| 103 | + ),
|
| 104 | + ),
|
| 105 | + ],
|
| 106 | + options={
|
| 107 | + "verbose_name": "historical project watch",
|
| 108 | + "verbose_name_plural": "historical project watchs",
|
| 109 | + "ordering": ("-history_date", "-history_id"),
|
| 110 | + "get_latest_by": ("history_date", "history_id"),
|
| 111 | + },
|
| 112 | + bases=(simple_history.models.HistoricalChanges, models.Model),
|
| 113 | + ),
|
| 114 | + migrations.CreateModel(
|
| 115 | + name="Notification",
|
| 116 | + fields=[
|
| 117 | + (
|
| 118 | + "id",
|
| 119 | + models.BigAutoField(
|
| 120 | + auto_created=True,
|
| 121 | + primary_key=True,
|
| 122 | + serialize=False,
|
| 123 | + verbose_name="ID",
|
| 124 | + ),
|
| 125 | + ),
|
| 126 | + ("event_type", models.CharField(max_length=20)),
|
| 127 | + ("title", models.CharField(max_length=300)),
|
| 128 | + ("body", models.TextField(blank=True, default="")),
|
| 129 | + ("url", models.CharField(blank=True, default="", max_length=500)),
|
| 130 | + ("read", models.BooleanField(default=False)),
|
| 131 | + ("emailed", models.BooleanField(default=False)),
|
| 132 | + ("created_at", models.DateTimeField(auto_now_add=True)),
|
| 133 | + (
|
| 134 | + "project",
|
| 135 | + models.ForeignKey(
|
| 136 | + on_delete=django.db.models.deletion.CASCADE,
|
| 137 | + related_name="notifications",
|
| 138 | + to="projects.project",
|
| 139 | + ),
|
| 140 | + ),
|
| 141 | + (
|
| 142 | + "user",
|
| 143 | + models.ForeignKey(
|
| 144 | + on_delete=django.db.models.deletion.CASCADE,
|
| 145 | + related_name="notifications",
|
| 146 | + to=settings.AUTH_USER_MODEL,
|
| 147 | + ),
|
| 148 | + ),
|
| 149 | + ],
|
| 150 | + options={
|
| 151 | + "ordering": ["-created_at"],
|
| 152 | + },
|
| 153 | + ),
|
| 154 | + migrations.CreateModel(
|
| 155 | + name="ProjectWatch",
|
| 156 | + fields=[
|
| 157 | + (
|
| 158 | + "id",
|
| 159 | + models.BigAutoField(
|
| 160 | + auto_created=True,
|
| 161 | + primary_key=True,
|
| 162 | + serialize=False,
|
| 163 | + verbose_name="ID",
|
| 164 | + ),
|
| 165 | + ),
|
| 166 | + ("version", models.PositiveIntegerField(default=1, editable=False)),
|
| 167 | + ("created_at", models.DateTimeField(auto_now_add=True)),
|
| 168 | + ("updated_at", models.DateTimeField(auto_now=True)),
|
| 169 | + ("deleted_at", models.DateTimeField(blank=True, null=True)),
|
| 170 | + (
|
| 171 | + "event_filter",
|
| 172 | + models.CharField(
|
| 173 | + choices=[
|
| 174 | + ("all", "All Events"),
|
| 175 | + ("checkins", "Checkins Only"),
|
| 176 | + ("tickets", "Tickets Only"),
|
| 177 | + ("wiki", "Wiki Only"),
|
| 178 | + ],
|
| 179 | + default="all",
|
| 180 | + max_length=20,
|
| 181 | + ),
|
| 182 | + ),
|
| 183 | + ("email_enabled", models.BooleanField(default=True)),
|
| 184 | + (
|
| 185 | + "created_by",
|
| 186 | + models.ForeignKey(
|
| 187 | + blank=True,
|
| 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 | + "deleted_by",
|
| 196 | + models.ForeignKey(
|
| 197 | + blank=True,
|
| 198 | + null=True,
|
| 199 | + on_delete=django.db.models.deletion.SET_NULL,
|
| 200 | + related_name="+",
|
| 201 | + to=settings.AUTH_USER_MODEL,
|
| 202 | + ),
|
| 203 | + ),
|
| 204 | + (
|
| 205 | + "project",
|
| 206 | + models.ForeignKey(
|
| 207 | + on_delete=django.db.models.deletion.CASCADE,
|
| 208 | + related_name="watchers",
|
| 209 | + to="projects.project",
|
| 210 | + ),
|
| 211 | + ),
|
| 212 | + (
|
| 213 | + "updated_by",
|
| 214 | + models.ForeignKey(
|
| 215 | + blank=True,
|
| 216 | + null=True,
|
| 217 | + on_delete=django.db.models.deletion.SET_NULL,
|
| 218 | + related_name="+",
|
| 219 | + to=settings.AUTH_USER_MODEL,
|
| 220 | + ),
|
| 221 | + ),
|
| 222 | + (
|
| 223 | + "user",
|
| 224 | + models.ForeignKey(
|
| 225 | + on_delete=django.db.models.deletion.CASCADE,
|
| 226 | + related_name="project_watches",
|
| 227 | + to=settings.AUTH_USER_MODEL,
|
| 228 | + ),
|
| 229 | + ),
|
| 230 | + ],
|
| 231 | + options={
|
| 232 | + "unique_together": { |