Misc: admin media, pdf search path

Admin preview view now includes javascript tags provided by media,
There are dependencies added for backbone and underscore in that
specific admin page.
This commit is contained in:
Mark Riedesel 2013-10-22 14:11:45 -04:00
parent 1a702665fd
commit 440163e504
4 changed files with 34 additions and 7 deletions

View file

@ -15,6 +15,9 @@ class PageAdmin(admin.ModelAdmin):
list_display = ['document', 'name', 'image', 'page_num'] list_display = ['document', 'name', 'image', 'page_num']
order_by = ['document', 'page_num'] order_by = ['document', 'page_num']
class Media:
js = ("lib/underscore.js", "lib/backbone.js",)
def get_urls(self): def get_urls(self):
urls = super(PageAdmin, self).get_urls() urls = super(PageAdmin, self).get_urls()
my_urls = patterns('', my_urls = patterns('',
@ -25,6 +28,7 @@ class PageAdmin(admin.ModelAdmin):
def preview(self, request, pk): def preview(self, request, pk):
context = {} context = {}
context['page'] = models.Page.objects.get(pk=pk) context['page'] = models.Page.objects.get(pk=pk)
context['media'] = self.media
return TemplateResponse(request, return TemplateResponse(request,
'admin/pdfformfiller/page/preview.html', 'admin/pdfformfiller/page/preview.html',

View file

@ -5,13 +5,24 @@ import pdb
class PopplerController(object): class PopplerController(object):
def __init__(self, pdf=""): def __init__(self, pdf=""):
self.doc = poppler.document_new_from_file('file:///home/mark/Bedraga.pdf', password=None) doc_path = self._get_pdf_path(pdf)
self.doc = self._load_poppler_doc(doc_path)
def load_poppler_doc(self, filename):
def _get_pdf_path(self, pdf):
import os
from django.conf import settings from django.conf import settings
pdf_path = os.path.abspath(os.path.join(settings.STATIC_FORMS_ROOT, filename)) search = [
if os.path.isfile(pdf_path): os.path.abspath(pdf),
os.path.abspath(os.path.join(settings.STATIC_FORMS_ROOT, pdf)),
]
for path in search:
if os.path.isfile(path):
return path
def _load_poppler_doc(self, pdf_path):
return poppler.document_new_from_file('file://' + pdf_path, password=None) return poppler.document_new_from_file('file://' + pdf_path, password=None)
@ -32,6 +43,10 @@ class PopplerController(object):
if clear_page: if clear_page:
self.clear_page(page) self.clear_page(page)
context.set_source_rgb(1.0, 1.0, 1.0)
context.rectangle(0.0, 0.0, width*2, height*2)
context.fill()
page.render(context) page.render(context)
fd = StringIO.StringIO() fd = StringIO.StringIO()
surface.write_to_png(fd) surface.write_to_png(fd)
@ -63,7 +78,7 @@ class PopplerController(object):
value = data.button_get_state() value = data.button_get_state()
yield { yield {
'name': data.get_name(), 'name': data.get_name() or data.get_mapping_name() or data.get_partial_name(),
'value': value, 'value': value,
'type': field_type.value_nick, 'type': field_type.value_nick,
'area': { 'area': {
@ -74,6 +89,7 @@ class PopplerController(object):
} }
} }
class PDFFormFillerPostSave(PopplerController): class PDFFormFillerPostSave(PopplerController):
def __init__(self, document): def __init__(self, document):
pass pass

View file

@ -75,7 +75,7 @@ class Page(models.Model):
field = FormField(page=self, field = FormField(page=self,
name=fdata['name']) name=fdata['name'])
field.fieldtype = fdata['type'] field.fieldtype = fdata['type'][0]
area = fdata['area'] area = fdata['area']
field.pos_x = area['pos_x'] field.pos_x = area['pos_x']
field.pos_y = area['pos_y'] field.pos_y = area['pos_y']

View file

@ -1,7 +1,14 @@
{% extends "admin/base_site.html" %} {% extends "admin/base_site.html" %}
{% load i18n admin_static admin_modify %}
{% load admin_urls %}
{% block extrahead %}{{ block.super }}
{{ media }} media
{% endblock %}
{% block content %} {% block content %}
<div id="content-main"> <div id="content-main">
<img src="{{ page.image.url }}"/> <img src="{{ page.image.url }}" style="max-width:100%"/>
</div> </div>
{% endblock %} {% endblock %}