This is a pre-production deployment of Warehouse, however changes made here WILL affect the production instance of PyPI.
Latest Version Dependencies status unknown Test status unknown Test coverage unknown
Project Description
===========
django-yasp
===========

.. image:: https://badge.fury.io/py/django-yasp.png
:target: https://badge.fury.io/py/django-yasp

.. image:: https://travis-ci.org/fgmacedo/django-yasp.png?branch=master
:target: https://travis-ci.org/fgmacedo/django-yasp

Another static page Django app.

Main features:

* It does not use the ``sites`` app.
* Allows grouping pages by a menu.
* Optional template overriding by page.
* Template tags to get a page or a group of pages by menu.
* Page has an image field (optional).
* Page itens can specify a link (redirect).
* Pages can be orderable (if `django-admin-sortable2`_ is installed).


.. _django-admin-sortable2: https://github.com/jrief/django-admin-sortable2

Quickstart
----------

Install django-yasp::

pip install django-yasp

Include it on INSTALLED_APPS::

INSTALLED_APPS = [
...
'yasp',
]


Add to urls:

.. code-block:: python

url(r'^', include('yasp.urls', namespace='yasp')),

Add to middlewares:

.. code-block:: python

MIDDLEWARE_CLASSES = [
...
'yasp.middleware.StaticPageFallbackMiddleware',
]


Features
--------

Link to static pages
====================

Static pages in **yasp** are automatically routed to a slug that you specify when
creating your page. Your static pages can be grouped in a `Menu`_ object. So
your urls can be in the form ``menu-slug/page-slug`` or ``page-slug`` (pages
without a relation to `Menu`_).

To create links to static pages there are useful templatetags, as follows.

.. note::

All menus/pages that are used in a templatetag will be automatically
created if they don't exist.


To load all pages inside a menu:

.. code-block:: django

{% load yasp %}

{% get_pages_from_menu 'about-us' as pages %}

<ul>
{% for page in pages %}
<li><a href="{{page.get_absolute_url}}">{{page.title}}</a></li>
{% endfor %}
</ul>


To get a specific page:

.. code-block:: django

{% load yasp %}

{% get_page 'about-us/vision' as page %} {# Page 'vision' related to a menu 'about-us' #}
<a href="{{page.get_absolute_url}}">{{page.title}}</a>

{% get_page 'contact' as page %} {# Page without a menu. #}
<a href="{{page.get_absolute_url}}">{{page.title}}</a>

To get a URL to a specific page:

.. code-block:: django

{% load yasp %}

<a href="{% get_page_url 'about-us/vision' %}">Our vision</a>


Custom templates
================

Static pages will be rendered using the ``yasp/default.html`` template by
default.

You can customize the template used to render a page by placing a template with
the same slug of the page, or directly on the ``template`` field on Admin.

Template path resolution order:

* The path in the ``template`` field of your page, if provided.
* ``yasp/{menu_slug}/{page_slug}.html``
* ``yasp/{page_slug}.html``
* ``yasp/default.html``


Context of a static page template:

:menu: The `Menu`_ object.
:content: The `FlatPage`_ object.
:object: Alias to `content`.


External link
=============

You can use a static page instance to link to an external page.

Example:

.. code-block:: python

>>> from yasp.models import Menu, FlatPage
>>> menu = Menu.objects.create(name='About us', slug='about-us')
>>> page = FlatPage.objects.create(menu=menu, slug='google', link='http://google.com', title='Google')
>>> '<a href="{}">{}</a>'.format(page.get_absolute_url(), page.title)
'<a href="http://google.com">Google Inc.</a>'

>>> vision = FlatPage.objects.create(menu=menu, slug='vision', title='Vision')
>>> '<a href="{}">{}</a>'.format(vision.get_absolute_url(), vision.title)
'<a href="/about-us/vision">Vision</a>'

This construction is can be specially useful when you're build a navbar in
templates:

.. code-block:: django

{% load yasp %}
{% get_pages_from_menu 'about-us' as pages %}

<ul>
{% for page in pages %}
<li><a href="{{page.get_absolute_url}}">{{page.title}}</a></li>
{% endfor %}
</ul>


Will render as:

.. code-block:: html

<ul>
<li><a href="http://google.com">Google</a></li>
<li><a href="/about-us/vision">Vision</a></li>
</ul>



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

Does the code actually work?

::

source <yourvirtualenv>/bin/activate
(myenv) $ pip install -r requirements_test.txt
(myenv) $ py.test




History
-------

0.1.0 (2016-09-26)
++++++++++++++++++

* First release on PyPI.
Release History

Release History

0.5.0

This version

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.4.1

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.4.0

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.3.0

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.2.0

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

Download Files

Download Files

TODO: Brief introduction on what you do with files - including link to relevant help section.

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
django_yasp-0.5.0-py2.py3-none-any.whl (23.4 kB) Copy SHA256 Checksum SHA256 2.7 Wheel Nov 16, 2016
django-yasp-0.5.0.tar.gz (12.6 kB) Copy SHA256 Checksum SHA256 Source Nov 16, 2016

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS HPE HPE Development Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting