X-Git-Url: http://git.ithinksw.org/philo.git/blobdiff_plain/82b08f79564159d7acbcaf255ed1ac1fb4882e64..d19e216035b14d8f60b24dda0c0670e6997f16ce:/philo/admin/nodes.py diff --git a/philo/admin/nodes.py b/philo/admin/nodes.py new file mode 100644 index 0000000..e2a9c9d --- /dev/null +++ b/philo/admin/nodes.py @@ -0,0 +1,57 @@ +from django.contrib import admin +from philo.admin.base import EntityAdmin, TreeEntityAdmin, COLLAPSE_CLASSES +from philo.models import Node, Redirect, File +from mptt.admin import MPTTModelAdmin + + +class NodeAdmin(TreeEntityAdmin): + list_display = ('slug', 'view', 'accepts_subpath') + raw_id_fields = ('parent',) + related_lookup_fields = { + 'fk': raw_id_fields, + 'm2m': [], + 'generic': [['view_content_type', 'view_object_id']] + } + + def accepts_subpath(self, obj): + return obj.accepts_subpath + accepts_subpath.boolean = True + + def formfield_for_foreignkey(self, db_field, request, **kwargs): + return super(MPTTModelAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs) + + +class ViewAdmin(EntityAdmin): + pass + + +class RedirectAdmin(ViewAdmin): + fieldsets = ( + (None, { + 'fields': ('target_node', 'url_or_subpath', 'status_code') + }), + ('Advanced', { + 'fields': ('reversing_parameters',), + 'classes': COLLAPSE_CLASSES + }) + ) + list_display = ('target_url', 'status_code', 'target_node', 'url_or_subpath') + list_filter = ('status_code',) + raw_id_fields = ['target_node'] + related_lookup_fields = { + 'fk': raw_id_fields + } + + +class FileAdmin(ViewAdmin): + fieldsets = ( + (None, { + 'fields': ('file', 'mimetype') + }), + ) + list_display = ('mimetype', 'file') + + +admin.site.register(Node, NodeAdmin) +admin.site.register(Redirect, RedirectAdmin) +admin.site.register(File, FileAdmin) \ No newline at end of file