mirror of
https://github.com/jazzband/django-categories.git
synced 2026-03-16 22:30:24 +00:00
added registry, hacked admin w/ new templates for category editor
This commit is contained in:
parent
7a0d43732a
commit
c4c1b30aee
3 changed files with 51 additions and 0 deletions
|
|
@ -0,0 +1,29 @@
|
|||
import fields
|
||||
import models
|
||||
|
||||
from django.db.models import FieldDoesNotExist
|
||||
|
||||
class AlreadyRegistered(Exception):
|
||||
"""
|
||||
An attempt was made to register a model more than once.
|
||||
"""
|
||||
pass
|
||||
|
||||
registry = []
|
||||
|
||||
def register_m2m(model, field_name='categories', extra_params={}):
|
||||
return _register(model, field_name, extra_params, fields.CategoryM2MField)
|
||||
|
||||
def register_fk(model, field_name='category', extra_params={}):
|
||||
return _register(model, field_name, extra_params, fields.CategoryFKField)
|
||||
|
||||
def _register(model, field_name, extra_params={}, field=fields.CategoryFKField):
|
||||
if model in registry:
|
||||
raise AlreadyRegistered('The model %s has already been registered.' % model.__name__)
|
||||
registry.append(model)
|
||||
|
||||
opts = model._meta
|
||||
try:
|
||||
opts.get_field(field_name)
|
||||
except FieldDoesNotExist:
|
||||
field(**extra_params).contribute_to_class(model, field_name)
|
||||
|
|
@ -5,6 +5,7 @@ from django.template.defaultfilters import slugify
|
|||
from mptt.forms import TreeNodeChoiceField
|
||||
from editor.tree_editor import TreeEditor
|
||||
from settings import ALLOW_SLUG_CHANGE
|
||||
from categories import registry
|
||||
|
||||
class NullTreeNodeChoiceField(forms.ModelChoiceField):
|
||||
"""A ModelChoiceField for tree nodes."""
|
||||
|
|
@ -67,3 +68,12 @@ class CategoryAdmin(TreeEditor, admin.ModelAdmin):
|
|||
|
||||
|
||||
admin.site.register(Category, CategoryAdmin)
|
||||
|
||||
|
||||
class CategorizedAdmin(admin.ModelAdmin):
|
||||
change_form_template = 'admin/categories/change_form.html'
|
||||
|
||||
for model,modeladmin in admin.site._registry.items():
|
||||
if model in registry:
|
||||
admin.site.unregister(model)
|
||||
admin.site.register(model, type('newadmin', (CategorizedAdmin, modeladmin.__class__,), {}))
|
||||
12
categories/templates/admin/categories/change_form.html
Normal file
12
categories/templates/admin/categories/change_form.html
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
{% extends 'admin/change_form.html' %}
|
||||
|
||||
{% block after_field_sets %}
|
||||
<fieldset class="module aligned collapse">
|
||||
<h2>Categories</h2>
|
||||
<div class="form-row" id="categories">
|
||||
<label for="categories-input">Edit Categories:</label>
|
||||
<select id="categories-input"></select>
|
||||
<p class="help">this is where the category editor goes.</p>
|
||||
</div>
|
||||
</fieldset>
|
||||
{% endblock %}
|
||||
Loading…
Reference in a new issue