Skip to content

Commit

Permalink
Add speculative way to support str and uuid pk fields
Browse files Browse the repository at this point in the history
  • Loading branch information
phoikoi committed Apr 30, 2023
1 parent 16c1259 commit 3efbded
Showing 1 changed file with 12 additions and 3 deletions.
15 changes: 12 additions & 3 deletions src/neapolitan/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -447,6 +447,15 @@ def view(request, *args, **kwargs):
@classonlymethod
def get_urls(cls):
verbose_name = cls.model._meta.model_name

pk_converter_str = "<int:pk>"
pk_field_type = cls.model._meta.pk.get_internal_type()
match pk_field_type:
case "CharField" | "TextField":
pk_converter_str = "<str:pk>"
case "UUIDField":
pk_converter_str = "<uuid:pk>"

urlpatterns = [
path(
f"{verbose_name}/",
Expand All @@ -464,17 +473,17 @@ def get_urls(cls):
# It's just a string that gets passed to path(). SO an extra view
# field with the name of a registered converter.
path(
f"{verbose_name}/<int:pk>/",
f"{verbose_name}/{pk_converter_str}/",
cls.as_view(role=Role.DETAIL),
name=f"{verbose_name}-detail",
),
path(
f"{verbose_name}/<int:pk>/edit/",
f"{verbose_name}/{pk_converter_str}/edit/",
cls.as_view(role=Role.UPDATE),
name=f"{verbose_name}-update",
),
path(
f"{verbose_name}/<int:pk>/delete/",
f"{verbose_name}/{pk_converter_str}/delete/",
cls.as_view(role=Role.DELETE),
name=f"{verbose_name}-delete",
),
Expand Down

0 comments on commit 3efbded

Please sign in to comment.