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

Extension for default template system for making inheritance more flexible. Adding some kind of themes.

Usage

Imagine you have several sites on different hosts. They differ by visually and small functional. django-vest this is a way to use one code base for this situation.

He allowing to split templates on themes - one per site. We also have extended inheritance between themes - we have DEFAULT_THEME and we can override each template in CURRENT_THEME. Exmaple:

{% extends 'DEFAULT_THEME/index.html' %}
{% block page_title %}Dark theme{% endblock %}

django-vest have some tools for logic splitting according by CURRENT_THEME in views. Assume we have some form class who is different in each theme. Then our code may looks like:

# forms.py
from django_vest.decorators import themeble

@themeble(name='Form', themes=('dark_theme',))
class DarkThemeForm(object):
    ''' Some kind of logic/fields for dark_theme form
    '''
    name = 'DarkThemeForm'


@themeble(name='Form')
class DefaultForm(object):
    ''' Default logic/fields for all themes
    '''
    name = 'Default form'


# views.py
from .forms import Form

In example bellow Form class will be alias for DarkThemeForm if settings.CURRENT_THEME == 'dark_theme' otherwise it is DefaultForm.

If you want restricting access to views according by CURRENT_THEME just use only_for decorator:

# views.py
from django.http import Http404
from django.views.generic.base import TemplateView

from django_vest import only_for

@only_for('black_theme')
def my_view(request):
    ...

# Redirect for special page
dark_theme_page = only_for('dark_theme', redirect_to='restict_access')(
    TemplateView.as_view(template_name='dark_theme_page.html'))

# Raise Http404 when user trying to open page with invalid theme
dark_theme_page_not_found = \
    only_for('dark_theme', raise_error=Http404)(
        TemplateView.as_view(template_name='dark_theme_page.html'))

Extends for default templates

Version 0.1.3 has a new template loader django_vest.templates_loaders.AppsLoader and new keyword DJANGO_ORIGIN.

Now we can override default django admin template without copy past of full origin file.

Example:

File: templates/main_theme/admin/change_list.html

{% extends "DJANGO_ORIGIN/admin/change_list.html" %}
{% load i18n admin_urls admin_static admin_list %}

{% block breadcrumbs %}
  <div>Template has been overridden</div>
  {{ block.super }}
{% endblock %}

Installation

$ pip install django_vest

And add next setting options to your settings.py:

TEMPLATE_LOADERS = (
    'django_vest.templates_loaders.Loader',
    'django_vest.templates_loaders.AppsLoader',
)

DEFAULT_THEME = 'main_theme'

# Unique for each host
CURRENT_THEME = 'dark_theme'

Or you can set os environment:

export DJANGO_VEST_CURRENT_THEME=dark_theme

Also you can specify list of backends for getting settings. Default is:

VEST_SETTINGS_BACKENDS_LIST = (
    'django_vest.config.backends.simple',
    'django_vest.config.backends.env'
)
  • django_vest.config.backends.simple - getting settings about theme from project`s settings file.
  • django_vest.config.backends.env - from os envirom

Then you need to update structure of your templates like this:

exampleproject/templates/
| - dark_theme
    | - index.html
| - main_theme
    | - index.html

IMPORTANT: theme folder must ends with _theme suffix (example: my_super_mega_theme)

Other config backends (Experimental)

Django-vest have are several other backends like:

django_vest.config.backends.database. If you have some singleton model for store settings of your site you can use django_vest.fields.VestField for storing information of CURRENT_THEME in database.

For activating this feature you must do next steps:

  • Add django_vest.fields.VestField to you settings model and migrate.
  • Add django_vest.config.backends.database backend to top of VEST_SETTINGS_BACKENDS_LIST setting. Example:
VEST_SETTINGS_BACKENDS_LIST = (
    'django_vest.config.backends.database',
    'django_vest.config.backends.simple',
    'django_vest.config.backends.env',
)

Contributing

  1. Fork the django-vest repo on GitHub.
  2. Clone your fork locally:
$ git clone git@github.com:your_name_here/django-vest.git
  1. Install your local copy into a virtualenv. Assuming you have virtualenvwrapper installed, this is how you set up your fork for local development:
$ mkvirtualenv django-vest
$ cd django-vest/
$ python setup.py develop
  1. Create a branch for local development:
 $ git checkout -b name-of-your-bugfix-or-feature

Now you can make your changes locally.
  1. When you’re done making changes, check that your changes pass the tests, including testing other Python versions with tox:
$ make test-all
  1. Commit your changes and push your branch to GitHub:
$ git add .
$ git commit -m "Your detailed description of your changes."
$ git push origin name-of-your-bugfix-or-feature
  1. Submit a pull request through the GitHub website.

Licence & Authors

The MIT License (MIT)

Copyright (c) 2015 Vladimir Savin.

Release History

Release History

0.1.6

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.1.5

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.1.4

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.1.3

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.1.3a

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.1.2

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.1.2a

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.1.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.1.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-vest-0.1.6.tar.gz (9.2 kB) Copy SHA256 Checksum SHA256 Source Aug 2, 2015

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