authentik.enterprise.providers.google_workspace.migrations.0001_initial

  1# Generated by Django 5.0.4 on 2024-05-07 16:03
  2
  3import django.db.models.deletion
  4import uuid
  5from django.conf import settings
  6from django.db import migrations, models
  7
  8
  9class Migration(migrations.Migration):
 10
 11    initial = True
 12
 13    dependencies = [
 14        ("authentik_core", "0035_alter_group_options_and_more"),
 15        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
 16    ]
 17
 18    operations = [
 19        migrations.CreateModel(
 20            name="GoogleWorkspaceProviderMapping",
 21            fields=[
 22                (
 23                    "propertymapping_ptr",
 24                    models.OneToOneField(
 25                        auto_created=True,
 26                        on_delete=django.db.models.deletion.CASCADE,
 27                        parent_link=True,
 28                        primary_key=True,
 29                        serialize=False,
 30                        to="authentik_core.propertymapping",
 31                    ),
 32                ),
 33            ],
 34            options={
 35                "verbose_name": "Google Workspace Provider Mapping",
 36                "verbose_name_plural": "Google Workspace Provider Mappings",
 37            },
 38            bases=("authentik_core.propertymapping",),
 39        ),
 40        migrations.CreateModel(
 41            name="GoogleWorkspaceProvider",
 42            fields=[
 43                (
 44                    "provider_ptr",
 45                    models.OneToOneField(
 46                        auto_created=True,
 47                        on_delete=django.db.models.deletion.CASCADE,
 48                        parent_link=True,
 49                        primary_key=True,
 50                        serialize=False,
 51                        to="authentik_core.provider",
 52                    ),
 53                ),
 54                ("delegated_subject", models.EmailField(max_length=254)),
 55                ("credentials", models.JSONField()),
 56                (
 57                    "scopes",
 58                    models.TextField(
 59                        default="https://www.googleapis.com/auth/admin.directory.user,https://www.googleapis.com/auth/admin.directory.group,https://www.googleapis.com/auth/admin.directory.group.member,https://www.googleapis.com/auth/admin.directory.domain.readonly"
 60                    ),
 61                ),
 62                ("default_group_email_domain", models.TextField()),
 63                ("exclude_users_service_account", models.BooleanField(default=False)),
 64                (
 65                    "user_delete_action",
 66                    models.TextField(
 67                        choices=[
 68                            ("do_nothing", "Do Nothing"),
 69                            ("delete", "Delete"),
 70                            ("suspend", "Suspend"),
 71                        ],
 72                        default="delete",
 73                    ),
 74                ),
 75                (
 76                    "group_delete_action",
 77                    models.TextField(
 78                        choices=[
 79                            ("do_nothing", "Do Nothing"),
 80                            ("delete", "Delete"),
 81                            ("suspend", "Suspend"),
 82                        ],
 83                        default="delete",
 84                    ),
 85                ),
 86                (
 87                    "filter_group",
 88                    models.ForeignKey(
 89                        default=None,
 90                        null=True,
 91                        on_delete=django.db.models.deletion.SET_DEFAULT,
 92                        to="authentik_core.group",
 93                    ),
 94                ),
 95                (
 96                    "property_mappings_group",
 97                    models.ManyToManyField(
 98                        blank=True,
 99                        default=None,
100                        help_text="Property mappings used for group creation/updating.",
101                        to="authentik_core.propertymapping",
102                    ),
103                ),
104            ],
105            options={
106                "verbose_name": "Google Workspace Provider",
107                "verbose_name_plural": "Google Workspace Providers",
108            },
109            bases=("authentik_core.provider", models.Model),
110        ),
111        migrations.CreateModel(
112            name="GoogleWorkspaceProviderGroup",
113            fields=[
114                (
115                    "id",
116                    models.UUIDField(
117                        default=uuid.uuid4, editable=False, primary_key=True, serialize=False
118                    ),
119                ),
120                ("google_id", models.TextField()),
121                (
122                    "group",
123                    models.ForeignKey(
124                        on_delete=django.db.models.deletion.CASCADE, to="authentik_core.group"
125                    ),
126                ),
127                (
128                    "provider",
129                    models.ForeignKey(
130                        on_delete=django.db.models.deletion.CASCADE,
131                        to="authentik_providers_google_workspace.googleworkspaceprovider",
132                    ),
133                ),
134            ],
135            options={
136                "unique_together": {("google_id", "group", "provider")},
137            },
138        ),
139        migrations.CreateModel(
140            name="GoogleWorkspaceProviderUser",
141            fields=[
142                (
143                    "id",
144                    models.UUIDField(
145                        default=uuid.uuid4, editable=False, primary_key=True, serialize=False
146                    ),
147                ),
148                ("google_id", models.TextField()),
149                (
150                    "provider",
151                    models.ForeignKey(
152                        on_delete=django.db.models.deletion.CASCADE,
153                        to="authentik_providers_google_workspace.googleworkspaceprovider",
154                    ),
155                ),
156                (
157                    "user",
158                    models.ForeignKey(
159                        on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL
160                    ),
161                ),
162            ],
163            options={
164                "unique_together": {("google_id", "user", "provider")},
165            },
166        ),
167    ]
class Migration(django.db.migrations.migration.Migration):
 10class Migration(migrations.Migration):
 11
 12    initial = True
 13
 14    dependencies = [
 15        ("authentik_core", "0035_alter_group_options_and_more"),
 16        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
 17    ]
 18
 19    operations = [
 20        migrations.CreateModel(
 21            name="GoogleWorkspaceProviderMapping",
 22            fields=[
 23                (
 24                    "propertymapping_ptr",
 25                    models.OneToOneField(
 26                        auto_created=True,
 27                        on_delete=django.db.models.deletion.CASCADE,
 28                        parent_link=True,
 29                        primary_key=True,
 30                        serialize=False,
 31                        to="authentik_core.propertymapping",
 32                    ),
 33                ),
 34            ],
 35            options={
 36                "verbose_name": "Google Workspace Provider Mapping",
 37                "verbose_name_plural": "Google Workspace Provider Mappings",
 38            },
 39            bases=("authentik_core.propertymapping",),
 40        ),
 41        migrations.CreateModel(
 42            name="GoogleWorkspaceProvider",
 43            fields=[
 44                (
 45                    "provider_ptr",
 46                    models.OneToOneField(
 47                        auto_created=True,
 48                        on_delete=django.db.models.deletion.CASCADE,
 49                        parent_link=True,
 50                        primary_key=True,
 51                        serialize=False,
 52                        to="authentik_core.provider",
 53                    ),
 54                ),
 55                ("delegated_subject", models.EmailField(max_length=254)),
 56                ("credentials", models.JSONField()),
 57                (
 58                    "scopes",
 59                    models.TextField(
 60                        default="https://www.googleapis.com/auth/admin.directory.user,https://www.googleapis.com/auth/admin.directory.group,https://www.googleapis.com/auth/admin.directory.group.member,https://www.googleapis.com/auth/admin.directory.domain.readonly"
 61                    ),
 62                ),
 63                ("default_group_email_domain", models.TextField()),
 64                ("exclude_users_service_account", models.BooleanField(default=False)),
 65                (
 66                    "user_delete_action",
 67                    models.TextField(
 68                        choices=[
 69                            ("do_nothing", "Do Nothing"),
 70                            ("delete", "Delete"),
 71                            ("suspend", "Suspend"),
 72                        ],
 73                        default="delete",
 74                    ),
 75                ),
 76                (
 77                    "group_delete_action",
 78                    models.TextField(
 79                        choices=[
 80                            ("do_nothing", "Do Nothing"),
 81                            ("delete", "Delete"),
 82                            ("suspend", "Suspend"),
 83                        ],
 84                        default="delete",
 85                    ),
 86                ),
 87                (
 88                    "filter_group",
 89                    models.ForeignKey(
 90                        default=None,
 91                        null=True,
 92                        on_delete=django.db.models.deletion.SET_DEFAULT,
 93                        to="authentik_core.group",
 94                    ),
 95                ),
 96                (
 97                    "property_mappings_group",
 98                    models.ManyToManyField(
 99                        blank=True,
100                        default=None,
101                        help_text="Property mappings used for group creation/updating.",
102                        to="authentik_core.propertymapping",
103                    ),
104                ),
105            ],
106            options={
107                "verbose_name": "Google Workspace Provider",
108                "verbose_name_plural": "Google Workspace Providers",
109            },
110            bases=("authentik_core.provider", models.Model),
111        ),
112        migrations.CreateModel(
113            name="GoogleWorkspaceProviderGroup",
114            fields=[
115                (
116                    "id",
117                    models.UUIDField(
118                        default=uuid.uuid4, editable=False, primary_key=True, serialize=False
119                    ),
120                ),
121                ("google_id", models.TextField()),
122                (
123                    "group",
124                    models.ForeignKey(
125                        on_delete=django.db.models.deletion.CASCADE, to="authentik_core.group"
126                    ),
127                ),
128                (
129                    "provider",
130                    models.ForeignKey(
131                        on_delete=django.db.models.deletion.CASCADE,
132                        to="authentik_providers_google_workspace.googleworkspaceprovider",
133                    ),
134                ),
135            ],
136            options={
137                "unique_together": {("google_id", "group", "provider")},
138            },
139        ),
140        migrations.CreateModel(
141            name="GoogleWorkspaceProviderUser",
142            fields=[
143                (
144                    "id",
145                    models.UUIDField(
146                        default=uuid.uuid4, editable=False, primary_key=True, serialize=False
147                    ),
148                ),
149                ("google_id", models.TextField()),
150                (
151                    "provider",
152                    models.ForeignKey(
153                        on_delete=django.db.models.deletion.CASCADE,
154                        to="authentik_providers_google_workspace.googleworkspaceprovider",
155                    ),
156                ),
157                (
158                    "user",
159                    models.ForeignKey(
160                        on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL
161                    ),
162                ),
163            ],
164            options={
165                "unique_together": {("google_id", "user", "provider")},
166            },
167        ),
168    ]

The base class for all migrations.

Migration files will import this from django.db.migrations.Migration and subclass it as a class called Migration. It will have one or more of the following attributes:

  • operations: A list of Operation instances, probably from django.db.migrations.operations
  • dependencies: A list of tuples of (app_path, migration_name)
  • run_before: A list of tuples of (app_path, migration_name)
  • replaces: A list of migration_names

Note that all migrations come out of migrations and into the Loader or Graph as instances, having been initialized with their app label and name.

initial = True
dependencies = [('authentik_core', '0035_alter_group_options_and_more'), ('authentik_core', '__first__')]
operations = [<CreateModel name='GoogleWorkspaceProviderMapping', fields=[('propertymapping_ptr', <django.db.models.fields.related.OneToOneField>)], options={'verbose_name': 'Google Workspace Provider Mapping', 'verbose_name_plural': 'Google Workspace Provider Mappings'}, bases=('authentik_core.propertymapping',)>, <CreateModel name='GoogleWorkspaceProvider', fields=[('provider_ptr', <django.db.models.fields.related.OneToOneField>), ('delegated_subject', <django.db.models.fields.EmailField>), ('credentials', <django.db.models.fields.json.JSONField>), ('scopes', <django.db.models.fields.TextField>), ('default_group_email_domain', <django.db.models.fields.TextField>), ('exclude_users_service_account', <django.db.models.fields.BooleanField>), ('user_delete_action', <django.db.models.fields.TextField>), ('group_delete_action', <django.db.models.fields.TextField>), ('filter_group', <django.db.models.fields.related.ForeignKey>), ('property_mappings_group', <django.db.models.fields.related.ManyToManyField>)], options={'verbose_name': 'Google Workspace Provider', 'verbose_name_plural': 'Google Workspace Providers'}, bases=('authentik_core.provider', <class 'django.db.models.base.Model'>)>, <CreateModel name='GoogleWorkspaceProviderGroup', fields=[('id', <django.db.models.fields.UUIDField>), ('google_id', <django.db.models.fields.TextField>), ('group', <django.db.models.fields.related.ForeignKey>), ('provider', <django.db.models.fields.related.ForeignKey>)], options={'unique_together': {('google_id', 'group', 'provider')}}>, <CreateModel name='GoogleWorkspaceProviderUser', fields=[('id', <django.db.models.fields.UUIDField>), ('google_id', <django.db.models.fields.TextField>), ('provider', <django.db.models.fields.related.ForeignKey>), ('user', <django.db.models.fields.related.ForeignKey>)], options={'unique_together': {('google_id', 'user', 'provider')}}>]