Neapolitan with namespaces - Django CRUD views
This project has been archived.
The maintainers of this project have marked this project as archived. No new releases are expected.
Project description
Nominopolitan
This is an opinionated extension package for the excellent neapolitan package. It adds these features:
- Namespaced URL handling
- Display related field str() value in lists and details (instead of numeric id)
- Property fields in list views
- Separate create form class if specified
- Support for
crispy-formsif installed in project - Support for rendering templates using
htmx - Header title context for partial updates (so the title is updated without a page reload)
- Allow specification of
base_template_path(to yourbase.htmltemplate) - Allow override of all
nominopolitantemplates by specifyingtemplates_path
At the moment the templates are styled using Bulma. I aim to also support the native neapolitan templates in a future release. FYI it uses django-template-partials under the hood.
This is a very early alpha release; expect many breaking changes. You might prefer to just fork or copy and use whatever you need. Hopefully some or all of these features may make their way into neapolitan over time.
Installation
With pip:
pip install django-nominopolitan
Poetry:
poetry add django-nominopolitan
Configuration
Add these to your settings.py:
INSTALLED_APPS = [
...
"nominopolitan", # put this before neapolitan
"neapolitan", # this is required to use the `NominopolitanMixin`
...
]
Usage
The best starting point is neapolitan's docs. The basic idea is to specify model-based CRUD views using:
# neapolitan approach
class ProjectView(CRUDView):
model = projects.models.Project
fields = ["name", "owner", "last_review", "has_tests", "has_docs", "status"]
The nominopolitan mixin adds a number of features to this.
from nominopolitan.mixins import NominopolitanMixin
from neapolitan.views import CRUDView
class ProjectCRUDView(NominopolitanMixin, CRUDView):
model = models.Project
fields = [
"name", "owner", "last_review", "has_tests", "has_docs", "status",
]
form_class = forms.ProjectUpdateForm # standard neapolitan setting if needed
# ...other standard neapolitan attributes
namespace = "my_app_name" # specify the namespace if your urls.py has app_name = "my_app_name"
properties = ["selected_scenario",] # if you want to include @property fields in the list view
use_crispy = True # will default to True if you have `crispy-forms` installed
# if you set it to True without crispy-forms installed, it will resolve to False
create_form_class = forms.TenderCreateForm # if you want a separate create form
# the update form always uses form_class
base_template_path = "core/base_with_nav.html" # optional, defaults to "nominopolitan/base.html"
templates_path = "neapolitan" # if you want to override all the templates in another app
use_htmx = True # if you want the View, Detail, Delete and Create forms to use htmx
# you must have `htmx` installed in your base template
# Will only work if use_htmx is True AND you call the list view using htmx
# in which case these templates will be returned to the same hx-target as used for the list view
htmx_crud_target = "crudModal" # if you want to use a different htmx target for the crud forms
# different (or the same) as the target used for the list view
# eg you may want to target a modal for the create, read, update and delete forms
# required use_htmx = True
nm_mktemplate management command
This is the same as neapolitan's mktemplate command except it copies from the nominopolitan templates instead of the neapolitan templates.
It's the same syntax as neapolitan's mktemplate command:
python manage.py nm_mktemplate <app_name>.<model_name> --<suffix>
Status
Extremely early alpha. No tests. Limited docs. Suggest at this stage just use it as a reference and take what you need. It works for me.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file django_nominopolitan-0.0.8.tar.gz.
File metadata
- Download URL: django_nominopolitan-0.0.8.tar.gz
- Upload date:
- Size: 11.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.4 CPython/3.12.7 Linux/6.5.0-1025-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
469848b0905ad1c8722da40e9bf1d2c6dcd110049df3b72a22247ff66e0bef24
|
|
| MD5 |
9f0456fd30b446dda8dd20a550aca207
|
|
| BLAKE2b-256 |
25c4a38420307a66d5a2e89adc50331bdfb79fcba8b871b2fea2291f73cc1815
|
File details
Details for the file django_nominopolitan-0.0.8-py3-none-any.whl.
File metadata
- Download URL: django_nominopolitan-0.0.8-py3-none-any.whl
- Upload date:
- Size: 14.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.4 CPython/3.12.7 Linux/6.5.0-1025-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e73e9eea108bafc5be08b91ac31aac61c85e321377d48b36a3a867e297d221bf
|
|
| MD5 |
d70f5b43d113b47fcb5f087fbb2d842b
|
|
| BLAKE2b-256 |
39c002552ad85cd9128efab787a6cfa50295bce285b54d6fab88c8763ff01e60
|