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

A collection of reusable components to help build Django projects.

Installation

To install the latest stable release:

pip install django-utensils

To get the latest dev version, install directly form GitHub like so:

pip install -e git://github.com/code-kitchen/django-utensils.git#egg=django-utensils

Many of the template tags require the request object. You need to add ‘django.template.context_processors.request’ (Django 1.6 and 17) or ‘django.template.context_processors.request’ (Django 1.8) to the template context processors in your settings.

To use the AddressedModel you will need to add countries_plus to your INSTALLED_APPS setting.

Forms

SearchForm

Generic search form that can be used on any page.

Used by viewmixins.SearchFormMixin.

UniqueModelFieldsMixin

Mixin that enforces unique fields on ModelForm form fields.

Must be left of ModelForm when defining the form class (see https://code.djangoproject.com/ticket/13075).

There are two ways to list your unique fields depending on whether or not you want case insensitivity.

unique_fields = ['name', 'username']
unique_fields = ['name',  {'field': 'username', 'case_insensitive': True}]

Middleware

Hidden site

By adding utensils.middleware.HiddenSiteMiddleware to your MIDDLEWARE_CLASSES you can prevent people from viewing your site unless they use a query string parameter. The parameter is not needed for subsequent visits (unless cookies are cleared). This is a quick and simple method to keep prying eyes off your staging server for example. Provide the parameter name in the settings variable HIDDEN_SITE_SECRET.

For example:

MIDDLEWARE_CLASSES += ('utensils.middleware.HiddenSiteMiddleware',)
HIDDEN_SITE_SECRET = 'whisky'

Using the built-in development server browsing to http://localhost/ will give the message “ACCESS DENIED”. Browing to http://localhost/?whisky will succeed. Subsequent visits to http://localhost/ (no ?whisky) with the same browser will succeed until cookies are cleared or the cookie expires (currently set to a year).

View mixins

Collection of mixins for class-based views.

List view pagination

The PaginateMixin returns the paginate by setting used by the pagination template tag {% pagination %} so the Django ListView functions can use it.

You will need to add utensils.context_processors.pagination to your context processors for the template tag to work. Set settings.PAGINATION_PAGE_SIZES to control the page size, if not set the default [20, 50, 100] is used.

List view ordering

The OrderByMixin allows easy ordering of list views. By including it the template tag ({% order_by 'field_name' %}) is given sorting context variables to work with. get_queryset is overidden to make use of these and order the object list.

MessageMixin

By including and providing success_message and/or error_message attributes on your view class, messages will be added automatically to the request objects on events suchs as valid and invalid forms and formsets, object deletion etc.

PermissionRequiredMixin

This mixin verfies the user is logged in and has the required permissions to access the view. It’s a modified version of the django-braces mixin with an added bypass. Setting permission_required = False allows you to skip the check whilst keeping the mixin in a base view used across a project, for example.

Settings:

  • permission_required - the permission to check for or False to skip check
  • login_url - the login url of site
  • redirect_field_name - defaults to “next”
  • raise_exception - defaults to False - raise 403 if set to True

RedirectToNextMixin

If a next query string parameter is preset on a post() call it is assigned to the instance success_url.

StaffViewMixin

Combines MessageMixin, RedirectToNextMixin, StaffuserRequiredMixin (from django-brances), PermissionRequiredMixin to create a useful mixin that can be used on all staff views.

Views

BaseListView

This view combines the pagination, order by and search mixins and adds an optional query set filter description that your templates can use.

class ActiveCustomerList(BaseListView):
    filter_description = u"Active"
    queryset = Customer.active.all()
{% block content %}
  <h2>
    {% if filter_description %}
      {{ filter_description|title }} customers
    {% else %}
      Customers
    {% endif %}
  </h2>
  <!-- more template -->
{% end block %}

Yields:

<h2>Active customers<h2>
<!-- more template -->

SetModelFieldView

This view can be used to set the value of a field on a model instance. GET will display a template (and should be used as a confirmation page) and the value will be set on POST. The view uses django.views.generic.detail.BaseDetailView to provide get_object().

class CustomerInactiveView(SetModelFieldView):
    """
    Ask the user if they're sure they want to make the customer inactive. If
    they confirm by submitting the form set is_active to False and save.
    """
    model = Customer
    field = 'is_active'
    value = False
    template_name = "customers/customer_inactive.html"

If you require more control and want to introduce some logic when selecting the value or field to alter you can override get_field() and get_value() instead of setting the field and value class attributes.

Storage

S3

The storage modules provides a way to easily store static or media files on Amazon S3.

To use you will need to update your settings with the appropriate configuration, something like this:

AWS = {
    'STATIC': {
        'location': 'static',           # AWS_LOCATION
        'querystring_auth': False,      # AWS_QUERYSTRING_AUTH
        'default_acl': 'public-read',   # AWS_DEFAULT_ACL
    },
    'MEDIA': {
        'location': 'media',            # AWS_LOCATION
        'querystring_auth': True,       # AWS_QUERYSTRING_AUTH
        'default_acl': 'private',       # AWS_DEFAULT_ACL
    },
}

AWS_ACCESS_KEY_ID = 'XXXXXXXXXXXXXXXXXXXX'
AWS_SECRET_ACCESS_KEY = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
AWS_STORAGE_BUCKET_NAME = 'bucket'
AWS_PRELOAD_METADATA = True
AWS_S3_SECURE_URLS = False

STATICFILES_STORAGE = 'utensils.storage.StaticRootS3BotoStorage'
DEFAULT_FILE_STORAGE = 'utensils.storage.MediaRootS3BotoStorage'

Miscellaneous utils

There are utility functions in the utils module that deal with a range of things. Some are used by other parts of the library.

Release History

Release History

0.2

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

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-utensils-0.2.tar.gz (20.4 kB) Copy SHA256 Checksum SHA256 Source Oct 8, 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