django-fiction-outlines 0.4.0
A reusable Django app for managing fiction outlines. Part of the broader maceoutliner project.
License: BSD
Requires Python: ~=3.6
Keywords: django-fiction-outlines

=============================
Django Fiction Outlines
=============================

.. image:: https://badge.fury.io/py/django-fiction-outlines.svg
    :target: https://badge.fury.io/py/django-fiction-outlines

.. image:: https://github.com/maceoutliner/django-fiction-outlines/actions/workflows/tests.yml/badge.svg?branch=master
   :target: https://github.com/maceoutliner/django-fiction-outlines/actions/workflows/tests.yml

.. image:: https://coveralls.io/repos/github/maceoutliner/django-fiction-outlines/badge.svg?branch=master
        :target: https://coveralls.io/github/maceoutliner/django-fiction-outlines?branch=master

.. image:: https://readthedocs.org/projects/django-fiction-outlines/badge/?version=latest
        :target: http://django-fiction-outlines.readthedocs.io/en/latest/?badge=latest
        :alt: Documentation Status

A reusable Django app for managing fiction outlines. Part of the broader maceoutliner project.

Documentation
-------------

The full documentation is at https://django-fiction-outlines.readthedocs.io.

Quickstart
----------

Install Django Fiction Outlines::

    pip install django-fiction-outlines

Add it and dependencies to your `INSTALLED_APPS`:

.. code-block:: python

    INSTALLED_APPS = (
        ...
        'taggit',
        'rules.apps.AutodiscoverRulesConfig',
        'fiction_outlines',
        ...
    )

Add rules_ to your `AUTHENTICATION_BACKENDS`:

.. code-block:: python

   AUTHENTICATION_BACKENDS = (
       'rules.permissions.ObjectPermissionBackend',
       'django.contrib.auth.backends.ModelBackend',
   )

Unless you like to live dangerously, it is **STRONGLY** recommend you configure whichever database you use for outlines to have ``ATOMIC_REQUESTS`` to ``True``.

.. code-block:: python

   DATABASES = {
       "default": {
           "ENGINE": "django.db.backends.postgresql",
           "NAME": "outlines",
           "ATOMIC_REQUESTS": True,
       }}

.. _rules: https://github.com/dfunckt/django-rules

Add Django Fiction Outlines's URL patterns:

.. code-block:: python

    from fiction_outlines import urls as fiction_outlines_urls


    urlpatterns = [
        ...
        url(r'^', include(fiction_outlines_urls)),
        ...
    ]


Features
--------

* Provides models for managing series, outlines, characters, locations, and arcs.
* Provides tools for managing multiple arcs within the context of a broader story outline.
* Validates that arcs and outlines follow principles of MACE nesting, and seven point story structure.
* Calculates estimated length of final manuscript based on complexity of outline.
* Objects are associated with users to enable permission management.

  * NOTE: Django Fiction Outlines uses an object permission manager called `django-rules`_. This allows extremely flexible permission schemes without crufting up your database or model logic. By default, `fiction_outlines` will restrict any view or editing to the owner of the object. 
    
.. _django-rules: https://github.com/dfunckt/django-rules

What It Doesn't Do
------------------

* Provide a full UI for managing the changes. An API and views are provided, but templates are very basic. It is expected that you will override the templates to match your overall project.
* Outline the whole story for you.
* Write the story for you.
* Do your laundry.

Running Tests
-------------

Does the code actually work?

::

    $ pip install -r test_requirements.txt 
    $ pytest
    $ pytest --flake8

Credits
-------

Tools used in rendering this package:

*  Cookiecutter_
*  `cookiecutter-djangopackage`_

.. _Cookiecutter: https://github.com/audreyr/cookiecutter
.. _`cookiecutter-djangopackage`: https://github.com/pydanny/cookiecutter-djangopackage




History
-------

0.4.0 (2022-03-17)
++++++++++++++++++

* Now requires Django > 3.2. Compatible through Django 4.0
* Compatible with Python 3.9 and 3.10.


0.3.1 (2018-10-16)
+++++++++++++++++++++++++++ 

* Now compatible with both Python 3.7 and 3.6

0.3.0 (2018-08-08)
+++++++++++++++++++++++++++ 

* Support for Django 2.1

0.2.2 (2018-04-19)
+++++++++++++++++++++++++++

* Bug fix: override model_utils until my submitted 
  bug fix for created/modified timestamps is merged upstream.

0.2.1 (2018-04-14)
+++++++++++++++++++++++++++

* Add created and modified auto timestamps to all tree models.

0.2.0 (2018-04-13)
+++++++++++++++++++++++++++

* Add export functions. A view is provided for users to export outlines as either
  OPML, JSON, or Markdown documents.

0.1.5 (2018-04-09)
+++++++++++++++++++++++++++

* Improvements to length estimate calculation.
* Improvements to test coverage.

0.1.4 (2018-04-07)
++++++++++++++++++

* Hotfix release for tag field issue.

0.1.3 (2018-04-07)
++++++++++++++++++

* Bugfix release for migrations

0.1.2 (2018-04-02)
++++++++++++++++++

* Bugfix release.

0.1.1 (2018-04-01)
++++++++++++++++++

* First release on PyPI.