Skip to main content

A set of reusable base classes and helpers for django

Project description

django-baseclasses is a small set of helpers and abstract base model classes
for django.

## Installation

python ./setup.py install

Or with pip:

pip install -e git+https://github.com/gregplaysguitar/\
django-baseclasses.git@master#egg=django_baseclasses-master

## Abstract classes provided in `baseclasses.models`

#### `DateAuditModel`

Stores a record of when the model was created and last changed, in the `creation_date` and `last_updated` fields, orders on `creation_date`, and
provides `get_next` and `get_prev` methods respecting the ordering.

#### `BaseContentModel`

Extends `DateAuditModel`, adding `is_live` and `pub_date` fields, and provides
a `live` method on the default manager which returns only objects with
`is_live` set and a non-future `pub_date`. Also orders by `pub_date`, and
provides `next_live` and `prev_live` methods which only cycle through "live"
objects.

#### `BaseImageModel`

Provides `caption`, `image` and `sort_order` fields. Orders on `sort_order`.

#### `BaseModelWithImages`

Parent model for use with a `BaseImageModel` with a ForeignKey to this model.
Provides `primary_image` property which returns the first related image object,
or `None`. The ForeignKey's `related_name` must be "image_set"

#### `BaseHierarchyModel`

Provides `parent` field to create a simple hierarchy system, i.e. categories
and subcategories. Provides get_hierarchy method, which returns a list of
objects in the tree, from the top level to the current.


## Model fields

#### `baseclasses.fields.ConstrainedImageField`

Resizes the image on upload and overwrites the original. Use `max_dimensions`
argument to determine the resize behaviour.


## Helpers

#### `baseclasses.util.next_or_prev_in_order`

Arguments: `(instance, prev=False, qs=None, loop=False)`

Get the next (or previous with prev=True) item for an instance, from the given
queryset (which is assumed to contain instance), respecting queryset ordering.
If loop is True, return the first/last item when the end/start is reached.


## Example:

# models.py

from django.db import models
from baseclasses.models import BaseContentModel, BaseModelWithImages, \
BaseImageModel


class Article(BaseContentModel, BaseModelWithImages):
title = models.CharField(max_length=190)
text = models.TextField()


class ArticleImage(BaseImageModel):
article = models.ForeignKey(Article, related_name='image_set')


With the above model definition, you can do the following:

articles = Article.objects.live() # get queryset of all live articles
article = articles[0]
article.primary_image # get primary image (model instance) for the article
article.next_live # get next live article

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-baseclasses-1.0.1.tar.gz (5.1 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page