Metadata-Version: 1.1
Name: django-baseclasses
Version: 1.0.8
Summary: A set of reusable base classes and helpers for django
Home-page: https://github.com/gregplaysguitar/django-baseclasses
Author: Greg Brown
Author-email: greg@gregbrown.co.nz
License: UNKNOWN
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 django-baseclasses
        
        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.
        
        ``baseclasses.admin.ContentModelAdminMixin``
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        
        Enables (cache-safe) admin preview of non-live objects. Example
        
        ::
        
            @admin.register(MyModel)
            class MyModelAdmin(ContentModelAdminMixin, admin.ModelAdmin):
                ...
        
        Pass the request to the model's ``live`` manager method to enable
        preview:
        
        ::
        
            def my_model_view(request, slug)
                instance = get_object_or_404(MyModel.objects.live(request), slug=slug)
                ...
        
        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
        
Platform: any
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Web Environment
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
Classifier: Framework :: Django
