• Stars
    star
    129
  • Rank 277,607 (Top 6 %)
  • Language
    Python
  • License
    BSD 3-Clause "New...
  • Created about 14 years ago
  • Updated over 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Extensible, hierarchical, and pluggable navigation system for Django sites

django-treenav

Build Status

master:Build Status
develop:Build Status

An extensible, hierarchical, and pluggable navigation system for Django sites.

django-treenav was designed from the start to live independent of a CMS implementation. As a separate application, treenav can easily be integrated into existing, custom setups and does not enforce or require users to use a particular content management system.

Sharing the same principles, django-pagelets integrates seamlessly with treenav and can be used together to create a flexible CMS product.

For complete documentation checkout, http://django-treenav.readthedocs.org

Features

  • Generic functionality with multiple URL specifications: get_absolute_url(), reverse(), or raw URLs
  • Packaged with templates to render the tree hierarchy with nested <ul>'s, but can easily be overridden with custom templates
  • Easily customize each item's template or fall back to a default menuitem.html
  • Useful CSS classes for flexible UI customization
  • Automatically sets "active" on item and item's parents if PATH_INFO is equal to item.href
  • Efficient: minimizes database access with django-mptt functionality
  • Caches the tree so that repeated page views do not hit the database.
  • Simple links in the MenuItem list view for refreshing the cache and href from the database.

Requirements

Using the demo

For a quick demo, follow these steps:

  1. Create a virtualenv. (This example uses mkvirtualenv, but there are many other ways to do it):

    $ mkvirtualenv django-treenav
    
  2. Check out the code and install the requirements:

    (django-treenav)$ git clone git://github.com/caktus/django-treenav.git
    (django-treenav)$ cd django-treenav/
    (django-treenav)~/django-treenav/$ pip install -Ur dev-requirements.txt
    
  3. Run migrations and create a superuser so you can login to the Django admin:

    (django-treenav)~/django-treenav$ python manage.py migrate
    (django-treenav)~/django-treenav$ python manage.py createsuperuser
    
  4. Run the server:

    (django-treenav)~/django-treenav$ python manage.py runserver
    
  5. Visit http://localhost:8000/ in your browser and follow the instructions.

Installation

  1. Install the app with pip:

    pip install django-treenav
    
  2. Add to your INSTALLED_APPS and run migrate:

    INSTALLED_APPS = (
        ...,
        'mptt',
        'treenav',
    )
    
  3. Include these context processors:

    TEMPLATES = [
      {
        'OPTIONS': {
          'context_processors': [
            "django.template.context_processors.request",
            "treenav.context_processors.treenav_active",
          ],
        },
      },
    ]
    
  4. Add these urls:

    urlpatterns = [
        url(r'^treenav/', include('treenav.urls')),
    ]
    

Maintainer Information

We use Github Actions to lint (using pre-commit, black, isort, and flake8), test (using tox and tox-gh-actions), calculate coverage (using coverage), and build documentation (using sphinx).

We have a local script to do these actions locally, named maintain.sh:

$ ./maintain.sh

A Github Action workflow also builds and pushes a new package to PyPI whenever a new Release is created in Github. This uses a project-specific PyPI token, as described in the PyPI documentation here. That token has been saved in the PYPI_PASSWORD settings for this repo, but has not been saved anywhere else so if it is needed for any reason, the current one should be deleted and a new one generated.

As always, be sure to bump the version in treenav/__init__.py before creating a Release, so that the proper version gets pushed to PyPI.

Development sponsored by Caktus Consulting Group, LLC.

More Repositories

1

django-timepiece

A multi-user Django application for tracking people's time on projects.
Python
361
star
2

django-project-template

Django project template for startproject (Requires 2.2+)
Python
212
star
3

django-scribbler

django-scribbler is an application for managing snippets of text for a Django website.
Python
115
star
4

aws-web-stacks

Easily create AWS managed resources in an isolated VPC for hosting web applications.
Python
100
star
5

django-email-bandit

A Django email backend for hijacking email sending in a test environment.
Python
74
star
6

django-jsx

A simple tool for using Django and React/JSX together
Python
58
star
7

django-pagelets

Simple CMS for Django projects
JavaScript
58
star
8

fabulaws

A Python tool for creating and interacting with ephemeral AWS resources
Python
41
star
9

dockerfile_post

Code to accompany https://www.caktusgroup.com/blog/2017/03/14/production-ready-dockerfile-your-python-django-app/
Python
40
star
10

django-file-picker

django-file-picker
JavaScript
37
star
11

margarita

A collection of delicious Salt states for Django project deployments.
SaltStack
35
star
12

django-sticky-uploads

Enhanced file input widget for Django which uploads the file in the background and retains value on form errors.
Python
31
star
13

taytay

β™₯ Taylor Swift Lyric Generator β™₯
Python
29
star
14

django-comps

A utility that provides an entry point for integrating front end designers into a django project
Python
27
star
15

rapidsms-twilio

RapidSMS Twilio Backend
Python
22
star
16

django-filters-facet

A django-filter extension to refine search results using faceted navigation functionality.
Python
21
star
17

django-crumbs

django-crumbs is a pluggable Django app for adding breadcrumbs to your project.
Python
17
star
18

django_bread

Help create BREAD views in Django
Python
14
star
19

rapidsms-appointments

A reusable RapidSMS application for sending appointment reminders.
Python
12
star
20

django-styleguide

Styleguide helper for projects that work with design teams
CSS
12
star
21

tracerlib

Tracerlib provides a set of helpers to make tracing Python code easier.
Python
11
star
22

rapidsms-threadless-router

A RapidSMS router implementation that removes the threading functionality from the legacy Router class.
Python
10
star
23

rapidsms-tropo

Tropo backend for RapidSMS
Python
9
star
24

guidebook

9
star
25

rapidsms-healthcare

A Django/RapidSMS application for managing patient and healthcare provider records in a pluggable fashion.
Python
8
star
26

django-template-graph

Python
7
star
27

django-sanitizer

Python
7
star
28

django-dry-choices

Create choices for Django model and form choice fields in a concise, consistent and DRY manner.
Python
7
star
29

rapidsms-raspberrypi

JavaScript
7
star
30

redundant

A technical debt analysis tool
Python
7
star
31

smsdemo

Demo RapidSMS Application for PyCon 2105 Workshop https://us.pycon.org/2015/schedule/presentation/479/
Python
6
star
32

django-app-template

A template for creating a new reusable application for Django.
Python
6
star
33

drf-sample

Django REST Framework Sample
Python
5
star
34

tequila-django

Ansible role for setting up a Django project running under gunicorn and/or Celery on a server
Shell
5
star
35

rapidsms-clickatell

RapidSMS Clickatell Backend
Python
5
star
36

caktus-sphinx-theme

Custom Sphinx theme for project written and maintained by Caktus Consulting Group
Python
4
star
37

philly-hip

Code for hip.phila.gov
Python
4
star
38

ultimatetictactoe

JavaScript
4
star
39

rapidsms-natal-care

A RapidSMS application for pre-natal and post-natal appointment tracking.
Python
4
star
40

cordwainer

A better CSV library
Python
4
star
41

hyperfiction

Interactive Fiction engine and mark up language, written using Polymer Platform
4
star
42

pygsm-gateway

Simple HTTP gateway for using a GSM modem with PyGSM
Python
3
star
43

tequila-dokku

3
star
44

rapidsms-broadcast

Python
3
star
45

rapidsms-nutrition

RapidSMS app for monitoring growth and nutrition
Python
3
star
46

framework-playground

Erlang
3
star
47

ansible-role-django-k8s

Ansible role with sane defaults to deploy a Django app to Kubernetes.
Jinja
3
star
48

tequila

Straight-up project deployment roles, without the Salt.
3
star
49

rapidsms-salt

JavaScript
2
star
50

invoke-kubesae

Basic management tasks for working with a Kubernetes cluster
Python
2
star
51

tequila-nginx

Ansible role for setting up nginx on a server as a forwarding proxy for Django
2
star
52

rapidsms-deploy-dotcloud

Python
2
star
53

rapidsms-salt-multi-server

JavaScript
2
star
54

rapidsms-groups

Python
2
star
55

commcare-utilities

Python
2
star
56

ansible-role-k8s-web-cluster

An Ansible role to help configure Kubernetes clusters for web apps.
1
star
57

jade-truffle

The smallest Caktus
Python
1
star
58

ansible-role-podman-containers

1
star
59

hosted-rapidpro

Shell
1
star
60

rapidsms-reports

Python
1
star
61

ansible-role-aws-web-stacks

Ansible Role - aws-web-stacks
1
star
62

jazzhands

Python
1
star
63

tequila-solr

Ansible role for Solr for Django projects
1
star
64

slider

Ship It Day experiment using React to build a slider game/puzzle.
JavaScript
1
star
65

gulp-tasks

JavaScript
1
star
66

tequila-postgresql

Ansible role for creating a Postgres database for a Django project
1
star
67

ibid

Ibid IRC bot
Python
1
star
68

pycon-dashboard

HTML
1
star
69

beeware-sqlite3

Proof of concept BeeWare app using sqlite3
Python
1
star
70

reaktus

JavaScript
1
star
71

tequila-rabbitmq

Ansible role for creating a task queue for a Django project using RabbitMQ
1
star
72

tequila-cli

Python
1
star
73

caktus-docker-context

Ansible playbook to configure a remote host as a docker context
1
star
74

Traffic-Stops

NC CopWatch is a website to monitor and identify racial profiling practices by North Carolina law enforcement agencies
Jupyter Notebook
1
star
75

tequila-common

Ansible role for setting up users, keys, directories, and a firewall for a Django server
1
star
76

django-opendebates

Python
1
star
77

lightning-talk-lunches

Slides for the lightning talk lunches sponsored by Caktus Consulting Group
JavaScript
1
star
78

rapidsms-rerouter

Python
1
star
79

talks

HTML
1
star
80

offlinedatacollector

ShipIt Day Project: proof of concept for offline enabled data collection via a browser
JavaScript
1
star