Extendable, adaptable rewrite of django.contrib.admin
Find a file
Adam Chainz 1187eb8709 Convert readthedocs links for their .org -> .io migration for hosted projects
As per [their blog post of the 27th April](https://blog.readthedocs.com/securing-subdomains/) ‘Securing subdomains’:

> Starting today, Read the Docs will start hosting projects from subdomains on the domain readthedocs.io, instead of on readthedocs.org. This change addresses some security concerns around site cookies while hosting user generated data on the same domain as our dashboard.

Test Plan: Manually visited all the links I’ve modified.
2016-06-08 04:07:57 +01:00
djadmin2 Removing django-crispy-forms and django-floppyforms 2016-05-26 19:14:39 +02:00
docs Convert readthedocs links for their .org -> .io migration for hosted projects 2016-06-08 04:07:57 +01:00
example Update admin and admin2 screenshots 2016-06-06 14:20:34 +02:00
screenshots Update screenshots 2016-06-06 15:33:19 +02:00
.coveragerc Excluding tests from coverage 2013-07-16 23:45:15 +02:00
.gitignore Add .eggs in .gitignore 2016-05-25 22:30:48 +02:00
.travis.yml Test travis config to allow failures for django master 2016-05-22 14:52:05 +02:00
AUTHORS.rst Add myself in contributors 2016-05-22 15:06:31 +02:00
CONTRIBUTING.rst Convert readthedocs links for their .org -> .io migration for hosted projects 2016-06-08 04:07:57 +01:00
fabfile.py PEP8 2013-07-09 13:52:07 +02:00
HISTORY.rst Convert readthedocs links for their .org -> .io migration for hosted projects 2016-06-08 04:07:57 +01:00
LICENSE boilerplate 2013-05-14 14:24:31 +02:00
MANIFEST.in Adds png glyphicons to MANIFEST. 2014-02-08 16:33:58 +01:00
README.rst Convert readthedocs links for their .org -> .io migration for hosted projects 2016-06-08 04:07:57 +01:00
requirements.txt Removing django-crispy-forms and django-floppyforms 2016-05-26 19:14:39 +02:00
requirements_test.txt Update flake8 requirements 2016-05-22 15:07:08 +02:00
setup.py [requires.io] dependency update 2016-06-05 16:29:40 -07:00
tox.ini Revert unwanted tox changes 2016-05-27 11:32:20 +02:00

=============
django-admin2
=============

.. image:: https://travis-ci.org/pydanny/django-admin2.png
   :alt: Build Status
   :target: https://travis-ci.org/pydanny/django-admin2
.. image:: https://coveralls.io/repos/pydanny/django-admin2/badge.png?branch=develop
   :alt: Coverage Status
   :target: https://coveralls.io/r/pydanny/django-admin2
.. image:: https://badges.gitter.im/Join Chat.svg
   :target: https://gitter.im/pydanny/django-admin2?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge

One of the most useful parts of ``django.contrib.admin`` is the ability to
configure various views that touch and alter data. django-admin2 is a complete
rewrite of that library using modern Class-Based Views and enjoying a design
focused on extendibility and adaptability. By starting over, we can avoid the
legacy code and make it easier to write extensions and themes.

Full Documentation at: https://django-admin2.readthedocs.io/

Features
========

* Rewrite of the Django Admin backend
* Drop-in themes
* Built-in RESTful API

Screenshots
===========

.. image:: https://github.com/pydanny/django-admin2/raw/develop/screenshots/Site_administration.png
    :width: 722px
    :alt: Site administration
    :align: center
    :target: https://github.com/pydanny/django-admin2/raw/develop/screenshots/Site_administration.png

.. image:: https://github.com/pydanny/django-admin2/raw/develop/screenshots/Select_user.png
    :width: 722px
    :alt: Select user
    :align: center
    :target: https://github.com/pydanny/django-admin2/raw/develop/screenshots/Select_user.png

Requirements
============

* Django 1.7+
* Python 2.7+ or Python 3.3+
* django-braces_
* django-extra-views_
* django-rest-framework_
* django-filter_
* Sphinx_ (for documentation)

.. _django-braces: https://github.com/brack3t/django-braces
.. _django-extra-views: https://github.com/AndrewIngram/django-extra-views
.. _django-rest-framework: https://github.com/tomchristie/django-rest-framework
.. _django-filter: https://github.com/alex/django-filter
.. _Sphinx: http://sphinx-doc.org/



Installation
============

Use pip to install from PyPI:

.. code-block:: python

   pip install django-admin2

Add djadmin2 and rest_framework to your settings file:

.. code-block:: python

    INSTALLED_APPS = (
        ...
        'djadmin2',
        'rest_framework', # for the browsable API templates
        ...
    )

Add setting for apps and the default theme in your settings file:

.. code-block:: python

    # In settings.py
    INSTALLED_APPS += ('djadmin2.themes.djadmin2theme_bootstrap3',)
    REST_FRAMEWORK = {
        'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
        'PAGE_SIZE': 10
    }
    ADMIN2_THEME_DIRECTORY = "djadmin2theme_bootstrap3"

Add djadmin2 urls to your URLconf:

.. code-block:: python

    # urls.py
    from django.conf.urls import include

    from djadmin2.site import djadmin2_site

    djadmin2_site.autodiscover()

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


How to write django-admin2 modules
==================================

.. code-block:: python

  # myapp/admin2.py
  # Import your custom models
  from django.contrib.auth.forms import UserCreationForm, UserChangeForm
  from django.contrib.auth.models import User
  from djadmin2.site import djadmin2_site
  from djadmin2.types import ModelAdmin2

  from .models import Post, Comment


  class UserAdmin2(ModelAdmin2):
      # Replicates the traditional admin for django.contrib.auth.models.User
      create_form_class = UserCreationForm
      update_form_class = UserChangeForm


  #  Register each model with the admin
  djadmin2_site.register(Post)
  djadmin2_site.register(Comment)
  djadmin2_site.register(User, UserAdmin2)

Migrating from 0.6.x
====================

- The default theme has been updated to bootstrap3, be sure to replace your reference to the new one.
- Django rest framework also include multiple pagination system, the only one supported now is the PageNumberPagination.

Therefore, your `settings` need to include this:

.. code-block:: python

    # In settings.py
    INSTALLED_APPS += ('djadmin2.themes.djadmin2theme_bootstrap3',)
    ADMIN2_THEME_DIRECTORY = "djadmin2theme_bootstrap3"

    REST_FRAMEWORK = {
        'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
        'PAGE_SIZE': 10
    }

The default admin2 site has move into djadmin2.site make sure your use the news djadmin2_site in your urls.py:

.. code-block:: python

    # urls.py
    from django.conf.urls import include

    from djadmin2.site import djadmin2_site

    djadmin2_site.autodiscover()

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

Migrating from 0.5.x
====================

Themes are now defined explicitly, including the default theme. Therefore, your `settings` need to include this:

.. code-block:: python

    # In settings.py
    INSTALLED_APPS += ('djadmin2.themes.djadmin2theme_default',)
    ADMIN2_THEME_DIRECTORY = "djadmin2theme_default"

Drop-In Themes
==============

The default theme is whatever bootstrap is most current. Specifically:

.. code-block:: python

    # In settings.py
    INSTALLED_APPS += ('djadmin2.themes.djadmin2theme_bootstrap3',)
    ADMIN2_THEME_DIRECTORY = "djadmin2theme_bootstrap3"

If you create a new theme, you define it thus:

.. code-block:: python

    # In settings.py
    # Mythical theme! This does not exit... YET!
    INSTALLED_APPS += ('djadmin2theme_foundation',)
    ADMIN2_THEME_DIRECTORY = "djadmin2theme_foundation"
    
    
Code of Conduct
======================

Everyone interacting in the django-admin2 project's codebases, issue trackers, chat
rooms, and mailing lists is expected to follow the `PyPA Code of Conduct`_.

.. _`PyPA Code of Conduct`: https://www.pypa.io/en/latest/code-of-conduct/
    
Follows Best Practices
======================

.. image:: http://twoscoops.smugmug.com/Two-Scoops-Press-Media-Kit/i-C8s5jkn/0/O/favicon-152.png
   :name: Two Scoops Logo
   :align: center
   :alt: Two Scoops of Django
   :target: http://twoscoopspress.org/products/two-scoops-of-django-1-8

This project follows best practices as espoused in `Two Scoops of Django: Best Practices for Django 1.8`_.

.. _`Two Scoops of Django: Best Practices for Django 1.8`: http://twoscoopspress.org/products/two-scoops-of-django-1-8


Support this project!
=====================

You can hire the lead maintainer to perform dedicated work on this package. Please email pydanny@cartwheelweb.com.