This release is a pre-release and may not be stable for production use.
Install
django-bananas is on PyPI, so just run:
pip install django-bananas
Compatibility
Currently tested only for
Django 1.8 under Python 3.4
pull requests welcome!
Examples
Models
TimeStampedModel
Abstract TimeStampedModel with date created/modified fields:
Use TimeStampedModel as base class for your model
from bananas.models import TimeStampedModel
class Book(TimeStampedModel):
pass
the timestamps can be accessed on the model as
>>> book.date_created
>>> book.date_modified
UUIDModel
Abstract model that uses a Django 1.8 UUID field as the primary key.
from bananas.models import UUIDModel
class User(UUIDModel):
display_name = models.CharField(max_length=255)
email = models.EmailField()
>>> user.id
UUID('70cf1f46-2c79-4fc9-8cc8-523d67484182')
>>> user.pk
UUID('70cf1f46-2c79-4fc9-8cc8-523d67484182')
SecretField
Can be used to generate and store “safe” random bytes for authentication.
from bananas.models import SecretField
class User(models.Model):
# Ask for 32 bytes and require 24 bytes from urandom
token = SecretField(num_bytes=32, min_bytes=24)
>>> User.objects.create() # Token is generated automatically
>>> user.token
'3076f884da827809e80ced236e8da20fa36d0c27dd036bdd4afbac34807e5cf1'
URLSecretField
An implementation of SecretField that generates an URL-safe base64 string instead of a hex representation of the random bytes.
from bananas.models import URLSecretField
class User(models.Model):
# Generates an URL-safe base64 representation of the random value
token = URLSecretField(num_bytes=32, min_bytes=24)
>>> user.token
'WOgrNwqFKOF_LsHorJy_hGpPepjvVH7Uar-4Z_K6DzU-'
ORM
New queryset.dicts() with field renaming through kwargs, and dot-dict style results:
from bananas.query import ExtendedQuerySet
class Book(TimeStampedModel):
author = ForeignKey(Author)
objects = Manager.from_queryset(ExtendedQuerySet)()
>>> book = Book.objects.dicts('id', author='author__name').first()
{'id': 1, 'author': 'Jonas'}
>>> book.author
'Jonas'
Admin
Custom django admin stylesheet.
# settings.py
INSTALLED_APPS = (
'bananas', # Needs to be before 'django.contrib.admin'
'django.contrib.admin',
...
)
ADMIN = {
'SITE_HEADER': 'Bananas',
'SITE_TITLE': 'Bananas Admin',
'INDEX_TITLE': 'Admin Panel',
# 'BACKGROUND_COLOR': '#363c3f',
}
# your main urls.py
from bananas import admin
urlpatterns = [
...
url(r'^admin/', include(admin.site.urls)),
]
Database URLs
Parse database information from a URL, kind of like SQLAlchemy.
Engines
Currently supported engines are:
URI scheme |
Engine |
|---|---|
pgsql, postgres, postgresql |
django.db.backends.postgresql_psycopg2 |
mysql |
django.db.backends.mysql |
oracle |
django.db.backends.oracle |
sqlite, sqlite3 |
django.db.backends.sqlite3 |
You can add your own by running register(scheme, module_name) before parsing.
- generate_conf_from_url(url)
Return a django-style database configuration based on url.
- param url:
Database URL
- return:
Django-style database configuration dict
Example:
>>> from bananas.url import generate_conf_from_url >>> conf = database_conf_from_url( ... 'pgsql://joar:hunter2@5monkeys.se:4242/tweets/tweetschema' ... '?hello=world') >>> sorted(conf.items()) # doctest: +NORMALIZE_WHITESPACE [('ENGINE', 'django.db.backends.postgresql_psycopg2'), ('HOST', '5monkeys.se'), ('NAME', 'tweets'), ('PARAMS', {'hello': 'world'}), ('PASSWORD', 'hunter2'), ('PORT', 4242), ('SCHEMA', 'tweetschema'), ('USER', 'joar')]
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file django-bananas-1.0.10rc1.tar.gz.
File metadata
- Download URL: django-bananas-1.0.10rc1.tar.gz
- Upload date:
- Size: 15.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b419f7476a0a30f86106fba4439c9e22a5d36f6815b9cf67db2c10bbeb162601
|
|
| MD5 |
1b666239f500cc50ab4256dd911b36da
|
|
| BLAKE2b-256 |
c75c64009a68c1baa6743703747cb99d90aea58cce101472482de1c47f4ae814
|