= django-sneak-peek
A Django template tag that allows you to hide pre-release features but make them available to a select group of users. By adding the "sneak peek" permission to users on your site, you can allow people within your company or trusted individuals to try out and experiment with upcoming features in your application.
== Requirements
Requires Django 1.4 or higher. Currently not configured for Django 1.7, but I'll be updating the package to add support for it once released.
{South}[https://pypi.python.org/pypi/South/0.8.4] is required for migrations. django-sneak-peek
includes a data migration that adds a ContentType
and Permission
. The permission is used to determine whether or not a user can view sneak peek content.
== Installation
1. Install via pip
:
$ pip install django-sneak-peek
2. Add sneak_peek_tag
to INSTALLED_APPS
in settings.py
:
INSTALLED_APPS = (
...
'sneak_peek_tag',
...
)
3. Run migrations:
$ python manage.py migrate sneak_peek_tag
4. Run collectstatic
to grab the CSS and image:
$ python manage.py collectstatic
== Usage
django-sneak-peek
defines a template tag called sneak_peek
. Markup that you want to conditionally hide gets wrapped in this template tag.
Add the django-sneak-peek
CSS file to all pages where you plan to use the template tag:
Load sneak_peek
in your template:
{% load sneak_peek %}
Wrap secret markup in sneak_peek
tags:
{% sneak_peek %}
This entire div is hidden from users who don't have the sneak_peek permission.
django-sneak-peek
relies on the sneak_peek_tag.can_view_sneak_peek
permission which is installed via the included migration.
To allow a user to view sneak peek content, add this permission to their account. This can be done in the Django admin or via the shell:
>>> from django.contrib.contenttypes.models import ContentType
>>> from django.contrib.auth.models import Permission
>>>
>>> content_type = ContentType.objects.get(app_label='sneak_peek_tag')
>>> permission = Permission.objects.get(content_type=content_type, codename='can_view_sneak_peek')
>>>
>>> user = User.objects.get(username='Homer')
>>> user.user_permissions.add(permission)
== Additional Options
By default, markup under sneak peek will appear with a yellow and black "under construction" border:
## Screenshot ##
Sneak peek works by wrapping your code in a and applying styles to that element with the .django-sneak-peek
class and several modifiers.
Modifiers change the appearance of the sneak peek block.
Here are the available modifiers and different combinations thereof.
=== Outline
=== Borderless
=== Inline
=== Inline-Block
== CSS Class Modifiers
* Default: Yellow & black "under construction" border
* .outline
: Sets border: none;
and uses an outline
instead
* .borderless
: Sets border: none;
. Markup will appear without superfluous extra styles applied by django-sneak-peek
, but will still be surrouded by an wrapper (as always).
* .inline
: Sets display: inline;
* .inline-block
: Sets display: inline-block;
== Customising
As you may have guessed, you can add custom display styles to django-sneak-peek
. In addition to overriding the existing CSS classes, you can also create your own.
Here's an example of a class you can add to your CSS to add custom styles to a sneak peek element:
.django-sneak-peek.green-border {
border-color: green;
border-width: 5px;
}
This custom class can be applied with:
{% sneak_peek "green-border" %}
...
{% endsneak_peek %}
== License