Skip to content

Commit 4b8fa6a

Browse files
committed
Remove pk alias and auto fields in favor of a single automatic id PrimaryKeyField
1 parent 897d0da commit 4b8fa6a

File tree

70 files changed

+346
-512
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

70 files changed

+346
-512
lines changed

demos/full/app/users/migrations/0001_initial.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ class Migration(migrations.Migration):
1515
migrations.CreateModel(
1616
name="User",
1717
fields=[
18-
("id", models.BigAutoField(auto_created=True, primary_key=True)),
18+
("id", models.PrimaryKeyField()),
1919
("email", models.EmailField(max_length=254)),
2020
(
2121
"password",

plain-admin/plain/admin/assets/admin/list.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
jQuery(($) => {
22
const $actionCheckbox = $("[data-action-checkbox]");
3-
const $actionPks = $('[name="action_pks"]');
3+
const $actionIds = $('[name="action_ids"]');
44
const $actionSelect = $('[name="action_name"]');
55
const $actionSubmit = $('[data-actions-form] [type="submit"]');
66
let $lastActionCheckboxChecked = null;
77

88
$actionCheckbox.on("change", () => {
9-
const pks = [];
9+
const ids = [];
1010
$actionCheckbox.each(function () {
1111
if ($(this).is(":checked")) {
12-
pks.push($(this).attr("name"));
12+
ids.push($(this).attr("name"));
1313
}
1414
});
15-
$actionPks.val(pks.join(","));
15+
$actionIds.val(ids.join(","));
1616

1717
updateActionSubmit();
1818
});
@@ -22,7 +22,7 @@ jQuery(($) => {
2222
});
2323

2424
function updateActionSubmit() {
25-
if ($actionPks.val() && $actionSelect.val()) {
25+
if ($actionIds.val() && $actionSelect.val()) {
2626
// We've chosen an action
2727
$actionSubmit.prop("disabled", false);
2828
} else {

plain-admin/plain/admin/impersonate/middleware.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@
55
from .views import IMPERSONATE_KEY
66

77

8-
def get_user_by_pk(pk):
8+
def get_user_by_id(id):
99
UserModel = get_user_model()
1010

1111
try:
12-
return UserModel.objects.get(pk=pk)
12+
return UserModel.objects.get(id=id)
1313
except UserModel.DoesNotExist:
1414
return None
1515

@@ -24,7 +24,7 @@ def __call__(self, request):
2424
and request.user
2525
and can_be_impersonator(request.user)
2626
):
27-
user_to_impersonate = get_user_by_pk(request.session[IMPERSONATE_KEY])
27+
user_to_impersonate = get_user_by_id(request.session[IMPERSONATE_KEY])
2828
if user_to_impersonate:
2929
if not can_impersonate_user(request.user, user_to_impersonate):
3030
# Can't impersonate this user, remove it and show an error

plain-admin/plain/admin/impersonate/urls.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,5 @@ class ImpersonateRouter(Router):
77
namespace = "impersonate"
88
urls = [
99
path("stop/", ImpersonateStopView, name="stop"),
10-
path("start/<pk>/", ImpersonateStartView, name="start"),
10+
path("start/<id>/", ImpersonateStartView, name="start"),
1111
]

plain-admin/plain/admin/impersonate/views.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ def get(self):
1111
# We *could* already be impersonating, so need to consider that
1212
impersonator = getattr(self.request, "impersonator", self.request.user)
1313
if impersonator and can_be_impersonator(impersonator):
14-
self.request.session[IMPERSONATE_KEY] = self.url_kwargs["pk"]
14+
self.request.session[IMPERSONATE_KEY] = self.url_kwargs["id"]
1515
return ResponseRedirect(self.request.query_params.get("next", "/"))
1616

1717
return ResponseForbidden()

plain-admin/plain/admin/templates/admin/list.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
<option>{{ action }}</option>
3434
{% endfor %}
3535
</select>
36-
<input type="hidden" name="action_pks" value="" />
36+
<input type="hidden" name="action_ids" value="" />
3737
<button type="submit" disabled>Apply</button>
3838
</form>
3939
{% endif %}
@@ -119,7 +119,7 @@
119119

120120
{% if table_style != "simple" and actions %}
121121
<td class="p-0 pl-1">
122-
<input data-action-checkbox class="rounded-sm bg-white/10" type="checkbox" name="{{ get_object_pk(object) }}" />
122+
<input data-action-checkbox class="rounded-sm bg-white/10" type="checkbox" name="{{ get_object_id(object) }}" />
123123
</td>
124124
{% endif %}
125125

plain-admin/plain/admin/templates/toolbar/request.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242

4343
{% if object|default(false) %}
4444
<dt>Primary object</dt>
45-
<dd class="text-sm text-white/50 inline-flex items-center" title="PK: {{ object.pk|default('unknown') }}">
45+
<dd class="text-sm text-white/50 inline-flex items-center" title="ID: {{ object.id|default('unknown') }}">
4646
<pre><code>{{ object.__repr__() }}</code></pre>
4747
{% if object|get_admin_model_detail_url %}
4848
<a class="ml-2 inline-flex items-center p-1 text-blue-500 hover:text-blue-400" href="{{ object|get_admin_model_detail_url }}">

plain-admin/plain/admin/views/base.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ def get_nav_title(cls) -> str:
118118
@classmethod
119119
def get_view_url(cls, obj=None) -> str:
120120
if obj:
121-
return reverse(f"{URL_NAMESPACE}:" + cls.view_name(), pk=obj.pk)
121+
return reverse(f"{URL_NAMESPACE}:" + cls.view_name(), id=obj.id)
122122
else:
123123
return reverse(f"{URL_NAMESPACE}:" + cls.view_name())
124124

plain-admin/plain/admin/views/models.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,9 @@ class AdminModelListView(AdminListView):
4848

4949
model: "models.Model"
5050

51-
fields: list = ["pk"]
51+
fields: list = ["id"]
5252
queryset_order = []
53-
search_fields: list = ["pk"]
53+
search_fields: list = ["id"]
5454

5555
def get_title(self) -> str:
5656
if title := super().get_title():
@@ -162,7 +162,7 @@ def get_path(cls) -> str:
162162
if path := super().get_path():
163163
return path
164164

165-
return f"{cls.model._meta.model_name}/<int:pk>/"
165+
return f"{cls.model._meta.model_name}/<int:id>/"
166166

167167
def get_fields(self):
168168
if fields := super().get_fields():
@@ -177,7 +177,7 @@ def get_field_value(self, obj, field: str):
177177
return get_model_field(obj, field)
178178

179179
def get_object(self):
180-
return self.model.objects.get(pk=self.url_kwargs["pk"])
180+
return self.model.objects.get(id=self.url_kwargs["id"])
181181

182182

183183
class AdminModelCreateView(AdminCreateView):
@@ -214,10 +214,10 @@ def get_path(cls) -> str:
214214
if path := super().get_path():
215215
return path
216216

217-
return f"{cls.model._meta.model_name}/<int:pk>/update/"
217+
return f"{cls.model._meta.model_name}/<int:id>/update/"
218218

219219
def get_object(self):
220-
return self.model.objects.get(pk=self.url_kwargs["pk"])
220+
return self.model.objects.get(id=self.url_kwargs["id"])
221221

222222

223223
class AdminModelDeleteView(AdminDeleteView):
@@ -231,7 +231,7 @@ def get_path(cls) -> str:
231231
if path := super().get_path():
232232
return path
233233

234-
return f"{cls.model._meta.model_name}/<int:pk>/delete/"
234+
return f"{cls.model._meta.model_name}/<int:id>/delete/"
235235

236236
def get_object(self):
237-
return self.model.objects.get(pk=self.url_kwargs["pk"])
237+
return self.model.objects.get(id=self.url_kwargs["id"])

plain-admin/plain/admin/views/objects.py

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ def get_template_context(self):
4949

5050
context["table_style"] = getattr(self, "_table_style", "default")
5151

52-
context["get_object_pk"] = self.get_object_pk
52+
context["get_object_id"] = self.get_object_id
5353
context["get_field_value"] = self.get_field_value
5454
context["get_field_value_template"] = self.get_field_value_template
5555

@@ -81,8 +81,8 @@ def post(self) -> Response:
8181
action_name = self.request.data.get("action_name")
8282
actions = self.get_actions()
8383
if action_name and action_name in actions:
84-
target_pks = self.request.data["action_pks"].split(",")
85-
response = self.perform_action(action_name, target_pks)
84+
target_ids = self.request.data["action_ids"].split(",")
85+
response = self.perform_action(action_name, target_ids)
8686
if response:
8787
return response
8888
else:
@@ -91,7 +91,7 @@ def post(self) -> Response:
9191

9292
raise ValueError("Invalid action")
9393

94-
def perform_action(self, action: str, target_pks: list) -> Response | None:
94+
def perform_action(self, action: str, target_ids: list) -> Response | None:
9595
raise NotImplementedError
9696

9797
def get_objects(self) -> list:
@@ -130,11 +130,8 @@ def get_field_value(self, obj, field: str):
130130
else:
131131
return attr
132132

133-
def get_object_pk(self, obj):
134-
try:
135-
return self.get_field_value(obj, "pk")
136-
except AttributeError:
137-
return self.get_field_value(obj, "id")
133+
def get_object_id(self, obj):
134+
return self.get_field_value(obj, "id")
138135

139136
def get_field_value_template(self, obj, field: str, value):
140137
type_str = type(value).__name__.lower()

0 commit comments

Comments
 (0)