https://github.com/callowayproject/django-kamasutra
A application to position objects anywhere on a page.
https://github.com/callowayproject/django-kamasutra
Last synced: 3 months ago
JSON representation
A application to position objects anywhere on a page.
- Host: GitHub
- URL: https://github.com/callowayproject/django-kamasutra
- Owner: callowayproject
- License: apache-2.0
- Created: 2010-08-19T15:50:58.000Z (almost 16 years ago)
- Default Branch: master
- Last Pushed: 2015-05-18T23:14:21.000Z (about 11 years ago)
- Last Synced: 2024-08-08T15:18:22.213Z (almost 2 years ago)
- Language: Python
- Homepage:
- Size: 698 KB
- Stars: 22
- Watchers: 8
- Forks: 3
- Open Issues: 1
-
Metadata Files:
- Readme: README.rst
- License: LICENSE
Awesome Lists containing this project
README
|BUILD|_
.. |BUILD| image::
https://secure.travis-ci.org/callowayproject/django-kamasutra.png?branch=master
.. _BUILD: http://travis-ci.org/#!/callowayproject/django-kamasutra
Backwards incompatible changes made in version 0.2.2
====================================================
**COMBINE_STRING** is now used to build the template list when using
``PositionContent.render`` or ``render_content`` template tag.
Before:
/positions/my_position/__.html
New:
/positions/my_position/ **** .html
Installation
============
Using PIP::
pip install django-kamasutra
or download the app `here `_ ::
python setup.py install
Add **positions** to your settings **INSTALLED_APPS**::
INSTALLED_APPS = (
...
'positions',
...
)
Add **positions** to your URLS::
import positions.urls
urlpatterns += patterns('',
url(r'^positions/', include(positions.urls)),
)
Run syncdb::
>>> ./manage.py syncdb
Getting Started
===============
Creating your first position
----------------------------
The minimum required arguments to create a positions is a `name`, which is a `SlugField`.
::
from positions.models import Position
position = Position.objects.create(name="MyPosition")
Add something to your Position
------------------------------
The position manager has a `add_object` method that takes, at minimum, 2 arguments, `position` and `obj`
* **position** should be a `positions.Position` instance
* **obj** can be any model instance
::
from myapp.models import MyApp
obj = MyApp.objects.get_latest()
Position.objects.add_object(position=position, obj=obj)
.. note::
The `Position` model can define which types of objects that can be added.
Therefore when adding objects to a position, make sure the content types
is allowed by the `Position` instance.
Retrieve your position content
------------------------------
The position manager has a `get_content` method that takes at least 1 argument, `position`.
* **position** should be a `positions.Position` instance
::
position = Position.objects.get(name="MyPosition")
content = Position.objects.get_content(position=position)
Retrieve your position content via templatetag
----------------------------------------------
::
{% get_position_content position as content %}
`get_position_content` expects [position] [as] [varname]
* **position** can be a positions.Position instance or a name of a position
::
Position {{ position }} has the following content:
- {{ obj }}
{% for obj in content %}
{% endfor %}
.. note::
By default the object instance will be returned, although returning the positions.PositionContent instance, which holds the generic relation between position and the object, is also possible
::
{% get_position_content position as content as_content_type=False %}