Plain
Get Started Source + Docs Dev Updates
Contribute BSD-3 v0.105.0
Log in
Get Started Source + Docs Dev Updates Contribute BSD-3 v0.105.0
Documentation
Core
agents
assets
chores
cli
csrf
forms
http
internal
logs
packages
preflight
runtime
server
signals
templates
test
urls
utils
views
CHANGELOG.md
README.md
debug.py
exceptions.py
json.py
paginator.py
signing.py
validators.py
wsgi.py
Packages
admin
assets
cards
impersonate
migrations
templates
admin
elements
views
CHANGELOG.md
README.md
builtin_views.py
config.py
dates.py
middleware.py
models.py
templates.py
toolbar.py
urls.py
utils.py
api
auth
cache
code
dev
elements
email
esbuild
flags
htmx
jobs
loginlink
models
oauth
observer
pages
pageviews
passwords
pytest
redirection
scan
sessions
start
support
tailwind
toolbar
tunnel
vendor
Core
agents
assets
chores
cli
csrf
forms
http
internal
logs
packages
preflight
runtime
server
signals
templates
test
urls
utils
views
CHANGELOG.md
README.md
debug.py
exceptions.py
json.py
paginator.py
signing.py
validators.py
wsgi.py
Packages
admin
assets
cards
impersonate
migrations
templates
admin
elements
views
CHANGELOG.md
README.md
builtin_views.py
config.py
dates.py
middleware.py
models.py
templates.py
toolbar.py
urls.py
utils.py
api
auth
cache
code
dev
elements
email
esbuild
flags
htmx
jobs
loginlink
models
oauth
observer
pages
pageviews
passwords
pytest
redirection
scan
sessions
start
support
tailwind
toolbar
tunnel
vendor
Loading
Docs plain-admin plain admin templates.py
Raw LLM
 1from typing import Any
 2
 3from plain.packages import packages_registry
 4from plain.templates import register_template_filter, register_template_global
 5
 6from .views.registry import registry
 7
 8
 9@register_template_filter
10def get_admin_model_detail_url(obj: Any) -> str | None:
11    return registry.get_model_detail_url(obj)
12
13
14@register_template_global
15def is_package_installed(package_name: str) -> bool:
16    try:
17        packages_registry.get_package_config(package_name)
18        return True
19    except LookupError:
20        return False
On this page