from django.contrib import admin from django.conf.urls import patterns, url from django.template.response import TemplateResponse import models class DocumentAdmin(admin.ModelAdmin): list_display = ['name', 'pdf', 'number_of_pages'] def number_of_pages(self, instance): return instance.page_set.count() class PageAdmin(admin.ModelAdmin): list_display = ['document', 'name', 'image', 'page_num'] order_by = ['document', 'page_num'] class Media: js = ("lib/underscore.js", "lib/backbone.js",) def get_urls(self): urls = super(PageAdmin, self).get_urls() my_urls = patterns('', url(r'^(?P.*)/preview/$', self.admin_site.admin_view(self.preview), name='preview'), url(r'^(?P.*)/json/$', self.admin_site.admin_view(self.json, name='json'), ) return my_urls + urls def preview(self, request, pk): context = {} context['page'] = models.Page.objects.get(pk=pk) context['media'] = self.media return TemplateResponse(request, 'admin/pdfformfiller/page/preview.html', context ) def json(self, request, pk): page = models.Page.get(pk=pk) attribs = ['pos_x', 'pos_y', 'name', 'height', 'width', 'fieldtype', 'page'] class FormFieldAdmin(admin.ModelAdmin): list_display = ['name', 'page', 'fieldtype', 'page_number', 'pos_y'] ordering = ('page', 'page__page_num', '-pos_y') def page_number(self, instance): return instance.page.page_num admin.site.register(models.Document, DocumentAdmin) admin.site.register(models.Page, PageAdmin) admin.site.register(models.FormField, FormFieldAdmin)