Skip to content

Commit 6b54d9a

Browse files
committed
feat(models): add migration to delete UserRole
1 parent bbfc955 commit 6b54d9a

File tree

5 files changed

+124
-66
lines changed

5 files changed

+124
-66
lines changed

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
44

55
[project]
66
name = "cardo-python-utils"
7-
version = "0.5.dev46"
7+
version = "0.5.dev47"
88
description = "Python library enhanced with a wide range of functions for different scenarios."
99
readme = "README.rst"
1010
requires-python = ">=3.8"

python_utils/django/README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,11 @@ OIDC_AUTHENTICATE_CLASS = "python_utils.django.admin.views.TenantAwareOIDCAuthen
124124
LOGIN_REDIRECT_URL = "/admin"
125125
SESSION_COOKIE_AGE = 60 * 30 # 30 minutes
126126
SESSION_SAVE_EVERY_REQUEST = True # Extend session on each request
127+
128+
# If using django-easy-audit
129+
130+
from python_utils.django.db.alias import DynamicDatabaseAlias
131+
DJANGO_EASY_AUDIT_DATABASE_ALIAS = DynamicDatabaseAlias()
127132
```
128133

129134
## urls.py file

python_utils/django/migrations/0001_initial.py

Lines changed: 84 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -11,63 +11,105 @@ class Migration(migrations.Migration):
1111
initial = True
1212

1313
dependencies = [
14-
('auth', '0012_alter_user_first_name_max_length'),
14+
("auth", "0012_alter_user_first_name_max_length"),
1515
]
1616

1717
operations = [
1818
migrations.CreateModel(
19-
name='User',
19+
name="User",
2020
fields=[
21-
('password', models.CharField(max_length=128, verbose_name='password')),
22-
('last_login', models.DateTimeField(blank=True, null=True, verbose_name='last login')),
23-
('is_superuser', models.BooleanField(default=False,
24-
help_text='Designates that this user has all permissions without explicitly assigning them.',
25-
verbose_name='superuser status')),
26-
('username', models.CharField(error_messages={'unique': 'A user with that username already exists.'},
27-
help_text='Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.',
28-
max_length=150, unique=True,
29-
validators=[django.contrib.auth.validators.UnicodeUsernameValidator()],
30-
verbose_name='username')),
31-
('first_name', models.CharField(blank=True, max_length=150, verbose_name='first name')),
32-
('last_name', models.CharField(blank=True, max_length=150, verbose_name='last name')),
33-
('email', models.EmailField(blank=True, max_length=254, verbose_name='email address')),
34-
('is_staff', models.BooleanField(default=False,
35-
help_text='Designates whether the user can log into this admin site.',
36-
verbose_name='staff status')),
37-
('is_active', models.BooleanField(default=True,
38-
help_text='Designates whether this user should be treated as active. Unselect this instead of deleting accounts.',
39-
verbose_name='active')),
40-
('date_joined', models.DateTimeField(default=django.utils.timezone.now, verbose_name='date joined')),
41-
('idp_user_id', models.BigIntegerField(primary_key=True, serialize=False)),
42-
('groups', models.ManyToManyField(blank=True,
43-
help_text='The groups this user belongs to. A user will get all permissions granted to each of their groups.',
44-
related_name='user_set', related_query_name='user', to='auth.Group',
45-
verbose_name='groups')),
46-
('user_permissions', models.ManyToManyField(blank=True, help_text='Specific permissions for this user.',
47-
related_name='user_set', related_query_name='user',
48-
to='auth.Permission', verbose_name='user permissions')),
21+
("password", models.CharField(max_length=128, verbose_name="password")),
22+
("last_login", models.DateTimeField(blank=True, null=True, verbose_name="last login")),
23+
(
24+
"is_superuser",
25+
models.BooleanField(
26+
default=False,
27+
help_text="Designates that this user has all permissions without explicitly assigning them.",
28+
verbose_name="superuser status",
29+
),
30+
),
31+
(
32+
"username",
33+
models.CharField(
34+
error_messages={"unique": "A user with that username already exists."},
35+
help_text="Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.",
36+
max_length=150,
37+
unique=True,
38+
validators=[django.contrib.auth.validators.UnicodeUsernameValidator()],
39+
verbose_name="username",
40+
),
41+
),
42+
("first_name", models.CharField(blank=True, max_length=150, verbose_name="first name")),
43+
("last_name", models.CharField(blank=True, max_length=150, verbose_name="last name")),
44+
("email", models.EmailField(blank=True, max_length=254, verbose_name="email address")),
45+
(
46+
"is_staff",
47+
models.BooleanField(
48+
default=False,
49+
help_text="Designates whether the user can log into this admin site.",
50+
verbose_name="staff status",
51+
),
52+
),
53+
(
54+
"is_active",
55+
models.BooleanField(
56+
default=True,
57+
help_text="Designates whether this user should be treated as active. Unselect this instead of deleting accounts.",
58+
verbose_name="active",
59+
),
60+
),
61+
("date_joined", models.DateTimeField(default=django.utils.timezone.now, verbose_name="date joined")),
62+
("idp_user_id", models.BigIntegerField(primary_key=True, serialize=False)),
63+
(
64+
"groups",
65+
models.ManyToManyField(
66+
blank=True,
67+
help_text="The groups this user belongs to. A user will get all permissions granted to each of their groups.",
68+
related_name="idp_user_set",
69+
related_query_name="user",
70+
to="auth.group",
71+
verbose_name="groups",
72+
),
73+
),
74+
(
75+
"user_permissions",
76+
models.ManyToManyField(
77+
blank=True,
78+
help_text="Specific permissions for this user.",
79+
related_name="idp_user_set",
80+
related_query_name="user",
81+
to="auth.permission",
82+
verbose_name="user permissions",
83+
),
84+
),
4985
],
5086
options={
51-
'verbose_name': 'user',
52-
'verbose_name_plural': 'users',
53-
'abstract': False,
87+
"verbose_name": "user",
88+
"verbose_name_plural": "users",
89+
"abstract": False,
5490
},
5591
managers=[
56-
('objects', django.contrib.auth.models.UserManager()),
92+
("objects", django.contrib.auth.models.UserManager()),
5793
],
5894
),
5995
migrations.CreateModel(
60-
name='UserRole',
96+
name="UserRole",
6197
fields=[
62-
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
63-
('role', models.CharField(max_length=125)),
64-
('app_config', models.JSONField(null=True)),
65-
('permission_restrictions', models.JSONField(default=dict)),
66-
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='user_roles',
67-
to=settings.AUTH_USER_MODEL)),
98+
("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
99+
("role", models.CharField(max_length=125)),
100+
("app_config", models.JSONField(null=True)),
101+
("permission_restrictions", models.JSONField(default=dict)),
102+
(
103+
"user",
104+
models.ForeignKey(
105+
on_delete=django.db.models.deletion.CASCADE,
106+
related_name="user_roles",
107+
to=settings.AUTH_USER_MODEL,
108+
),
109+
),
68110
],
69111
options={
70-
'unique_together': {('user', 'role')},
112+
"unique_together": {("user", "role")},
71113
},
72114
),
73115
]

python_utils/django/migrations/0001_initial_squashed_0005_alter_userrole_id.py

Lines changed: 9 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,7 @@ class Migration(migrations.Migration):
2828
("password", models.CharField(max_length=128, verbose_name="password")),
2929
(
3030
"last_login",
31-
models.DateTimeField(
32-
blank=True, null=True, verbose_name="last login"
33-
),
31+
models.DateTimeField(blank=True, null=True, verbose_name="last login"),
3432
),
3533
(
3634
"is_superuser",
@@ -43,35 +41,25 @@ class Migration(migrations.Migration):
4341
(
4442
"username",
4543
models.CharField(
46-
error_messages={
47-
"unique": "A user with that username already exists."
48-
},
44+
error_messages={"unique": "A user with that username already exists."},
4945
help_text="Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.",
5046
max_length=150,
5147
unique=True,
52-
validators=[
53-
django.contrib.auth.validators.UnicodeUsernameValidator()
54-
],
48+
validators=[django.contrib.auth.validators.UnicodeUsernameValidator()],
5549
verbose_name="username",
5650
),
5751
),
5852
(
5953
"first_name",
60-
models.CharField(
61-
blank=True, max_length=150, verbose_name="first name"
62-
),
54+
models.CharField(blank=True, max_length=150, verbose_name="first name"),
6355
),
6456
(
6557
"last_name",
66-
models.CharField(
67-
blank=True, max_length=150, verbose_name="last name"
68-
),
58+
models.CharField(blank=True, max_length=150, verbose_name="last name"),
6959
),
7060
(
7161
"email",
72-
models.EmailField(
73-
blank=True, max_length=254, verbose_name="email address"
74-
),
62+
models.EmailField(blank=True, max_length=254, verbose_name="email address"),
7563
),
7664
(
7765
"is_staff",
@@ -91,9 +79,7 @@ class Migration(migrations.Migration):
9179
),
9280
(
9381
"date_joined",
94-
models.DateTimeField(
95-
default=django.utils.timezone.now, verbose_name="date joined"
96-
),
82+
models.DateTimeField(default=django.utils.timezone.now, verbose_name="date joined"),
9783
),
9884
(
9985
"id",
@@ -109,7 +95,7 @@ class Migration(migrations.Migration):
10995
models.ManyToManyField(
11096
blank=True,
11197
help_text="The groups this user belongs to. A user will get all permissions granted to each of their groups.",
112-
related_name="user_set",
98+
related_name="idp_user_set",
11399
related_query_name="user",
114100
to="auth.group",
115101
verbose_name="groups",
@@ -120,7 +106,7 @@ class Migration(migrations.Migration):
120106
models.ManyToManyField(
121107
blank=True,
122108
help_text="Specific permissions for this user.",
123-
related_name="user_set",
109+
related_name="idp_user_set",
124110
related_query_name="user",
125111
to="auth.permission",
126112
verbose_name="user permissions",
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# Generated by Django 5.0.8 on 2026-02-13 13:32
2+
3+
from django.db import migrations
4+
5+
6+
class Migration(migrations.Migration):
7+
dependencies = [
8+
("idp_user", "0007_user_demo"),
9+
]
10+
11+
operations = [
12+
migrations.SeparateDatabaseAndState(
13+
state_operations=[
14+
migrations.DeleteModel(
15+
name="UserRole",
16+
),
17+
],
18+
database_operations=[
19+
migrations.RunSQL(
20+
sql="DROP TABLE IF EXISTS idp_user_userrole;",
21+
reverse_sql=migrations.RunSQL.noop,
22+
),
23+
],
24+
),
25+
]

0 commit comments

Comments
 (0)