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
Metadata
Release files for django-baseclasses 1.0.9
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| django-baseclasses-1.0.9.tar.gz | 6.5 kB | Without provenance | Details |
Release files / django-baseclasses-1.0.9.tar.gz
| Download URL | django-baseclasses-1.0.9.tar.gz |
|---|---|
| Size | 6.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e60f0f30c743c56aec075be443e7f0d08b1b894081cb56534b3fa9712273b4cd
|
|
BLAKE2b-256 checksum How to use checksums |
4a375db98fad96f0cb7de165d4d185f0c3dc7177c14dcb12a0b3f660af1419cb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
Security for django-baseclasses 1.0.9
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.