Source code for sendables.core.urls

from django.urls import URLResolver, include, path

from sendables.core import views
from sendables.core.settings import app_settings
from sendables.core.utils import check_direct_model_usage, get_url_arg_type


[docs] def sendables_path(route: str, entity_name: str = "sendable") -> URLResolver: """Generate and return the URL patterns for a sendable entity type. Use settings, generate URL pattern names, and choose URL argument types, based on given `entity_name`. Pass that name to all of the views. Make a non-abstract version of the sendable model that is used with those settings. Args: route: The URL path pattern entity_name: The name of the sendable entity type Returns: The URL patterns """ entity_settings = app_settings[entity_name] check_direct_model_usage(entity_settings) detail_key_name = entity_settings.SENDABLE_KEY_NAME detail_key_type_internal = entity_settings.SENDABLE_KEY_TYPE detail_key_type = get_url_arg_type(detail_key_type_internal) return path( route, include( [ path("send/", views.SendView.as_view(), name=f"{entity_name}-send"), path( "mark-read/", views.MarkAsReadView.as_view(), name=f"{entity_name}-mark-read", ), path( "mark-unread/", views.MarkAsUnreadView.as_view(), name=f"{entity_name}-mark-unread", ), path( "delete/", views.DeleteView.as_view(), name=f"{entity_name}-delete" ), path( "delete-sent/", views.DeleteSentView.as_view(), name=f"{entity_name}-delete-sent", ), path("", views.ListView.as_view(), name=f"{entity_name}-list"), path( "read/", views.ListReadView.as_view(), name=f"{entity_name}-list-read", ), path( "unread/", views.ListUnreadView.as_view(), name=f"{entity_name}-list-unread", ), path( "sent/", views.ListSentView.as_view(), name=f"{entity_name}-list-sent", ), path( f"<{detail_key_type}:{detail_key_name}>/", views.DetailView.as_view(), name=f"{entity_name}-detail", ), path( f"sent/<{detail_key_type}:{detail_key_name}>/", views.DetailSentView.as_view(), name=f"{entity_name}-detail-sent", ), ] ), {"entity_name": entity_name}, )