Added basis of backbone api
This commit is contained in:
parent
377a6bacc4
commit
789c5b47be
6 changed files with 123 additions and 14 deletions
4
admin.py
4
admin.py
|
@ -16,13 +16,13 @@ class PageAdmin(admin.ModelAdmin):
|
|||
order_by = ['document', 'page_num']
|
||||
|
||||
class Media:
|
||||
js = ("lib/underscore.js", "lib/backbone.js",)
|
||||
js = ("lib/underscore.js", "lib/backbone.js", 'js/pdfformfiller/pdfformfiller.js')
|
||||
|
||||
def get_urls(self):
|
||||
urls = super(PageAdmin, self).get_urls()
|
||||
my_urls = patterns('',
|
||||
url(r'^(?P<pk>.*)/preview/$', self.admin_site.admin_view(self.preview), name='preview'),
|
||||
url(r'^(?P<pk>.*)/json/$', self.admin_site.admin_view(self.json, name='json'),
|
||||
url(r'^(?P<pk>.*)/json/$', self.admin_site.admin_view(self.json), name='json'),
|
||||
)
|
||||
return my_urls + urls
|
||||
|
||||
|
|
1
requirements.txt
Normal file
1
requirements.txt
Normal file
|
@ -0,0 +1 @@
|
|||
pypoppler
|
1
static/js/pdfformfiller/pdfformfiller.js
Normal file
1
static/js/pdfformfiller/pdfformfiller.js
Normal file
|
@ -0,0 +1 @@
|
|||
console.log('pdfformfiller loaded!');
|
19
urls.py
19
urls.py
|
@ -1,12 +1,23 @@
|
|||
from django.conf.urls import patterns, url
|
||||
from django.conf.urls import patterns, url, include
|
||||
import backbone
|
||||
|
||||
from pdfformfiller.views import editor
|
||||
|
||||
backbone.autodiscover()
|
||||
|
||||
urlpatterns = patterns('pdfformfiller.views',
|
||||
url(r'^(?P<pdf>.*)/edit/$', editor.PDFFormFillerEditor.as_view(), name='pdfformfiller-edit'),
|
||||
)
|
||||
|
||||
urlpatterns += patterns('pdfformfiller.views.json',
|
||||
url(r'^json/(?P<pdf>\d+)/$', 'get_pages', name='pdfformfiller-json-get-pages'),
|
||||
url(r'^json/(?P<pdf>\d+)/(?P<page_no>\d+)/$', 'get_page', name='pdfformfiller-json-get-page'),
|
||||
urlpatterns = patterns('pdfformfiller.views.api',
|
||||
url(r'^api/document/$', 'document', name='pdfformfiller_api_document'),
|
||||
url(r'^api/document/(?P<id>\d+)/$', 'document_detail', name='pdfformfiller_api_document_detail'),
|
||||
url(r'^api/document/(?P<id>\d+)/pages/$', 'document_pages', name='pdfformfiller_api_document_pages'),
|
||||
url(r'^api/page/$', 'page', name='pdfformfiller_api_page'),
|
||||
url(r'^api/page/(?P<id>\d+)/$', 'page_detail', name='pdfformfiller_api_page_detail'),
|
||||
url(r'^api/page/(?P<id>\d+)/fields/$', 'page_fields', name='pdfformfiller_api_page_fields'),
|
||||
)
|
||||
|
||||
|
||||
urlpatterns += patterns('',
|
||||
(r'^backbone/', include(backbone.site.urls)),)
|
||||
|
|
104
views/api.py
Normal file
104
views/api.py
Normal file
|
@ -0,0 +1,104 @@
|
|||
import json
|
||||
|
||||
from django.http import HttpResponse
|
||||
from django.utils.encoding import is_protected_type
|
||||
from django.db.models.fields.files import File
|
||||
|
||||
from pdfformfiller import models
|
||||
|
||||
def json_response(data):
|
||||
response = HttpResponse(json.dumps(data))
|
||||
response['Content-Type'] = 'application/json'
|
||||
return response
|
||||
|
||||
|
||||
def extract_fields(model):
|
||||
result = {}
|
||||
for field in model._meta.fields:
|
||||
value = result[field.name] = field._get_val_from_obj(model)
|
||||
if isinstance(value, File):
|
||||
value = value.url
|
||||
|
||||
result[field.name] = value
|
||||
return result
|
||||
|
||||
|
||||
"""
|
||||
def pages(request, page_id=None):
|
||||
context = {}
|
||||
pages = []
|
||||
|
||||
if doc_id:
|
||||
pages = models.Page.objects.get(pk = page_id)
|
||||
elif request.GET('document', None):
|
||||
doc_id = request.GET('document')
|
||||
pages = models.Page.objects.filter(document__pk = doc_id)
|
||||
else:
|
||||
pages = []
|
||||
|
||||
for page in pages:
|
||||
pages.append(extract_fields(page)) #, ['id', 'document', ))
|
||||
|
||||
context['pages'] = pages
|
||||
|
||||
return json_response(context)
|
||||
|
||||
|
||||
def fields(request, page_id=None):
|
||||
|
||||
page = models.Page.objects.get(document__pk = pdf,
|
||||
page_num = page_num)
|
||||
|
||||
fields = page.formfield_set.all()
|
||||
|
||||
context = {}
|
||||
#context['page'] = extract_fields(page)
|
||||
context['page']['fields'] = map(extract_fields, fields)
|
||||
|
||||
return json_response(context)
|
||||
|
||||
"""
|
||||
|
||||
def document(request):
|
||||
documents = models.Document.objects.all().values('id','name')
|
||||
return json_response(list(documents))
|
||||
|
||||
|
||||
def document_detail(request, id):
|
||||
document = models.Document.objects.get(pk=id)
|
||||
context = extract_fields(document)
|
||||
return json_response(context)
|
||||
|
||||
|
||||
def page(request):
|
||||
pages = models.Page.objects.all()
|
||||
context = [extract_fields(p) for p in pages]
|
||||
return json_response(context)
|
||||
|
||||
|
||||
def page_detail(request, id):
|
||||
page = models.Page.objects.get(pk=id)
|
||||
context = extract_fields(page)
|
||||
return json_response(context)
|
||||
|
||||
|
||||
def document_pages(request, id):
|
||||
pages = models.Page.objects.filter(document__pk=id)
|
||||
context = [extract_fields(page) for page in pages]
|
||||
return json_response(context)
|
||||
|
||||
def field(request):
|
||||
fields = models.FormField.objects.all()
|
||||
context = [extract_fields(f) for f in fields]
|
||||
return json_response(context)
|
||||
|
||||
def field_detail(request, id):
|
||||
field = models.FormField.objects.get(pk=id)
|
||||
context = extract_fields(field)
|
||||
return json_response(context)
|
||||
|
||||
def page_fields(request, id):
|
||||
fields = models.FormField.objects.filter(page__pk=id)
|
||||
context = [extract_fields(f) for f in fields]
|
||||
return json_response(context)
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
from django.http import HttpResponse
|
||||
|
||||
def json_response(context):
|
||||
response = HttpResponse(context)
|
||||
response['Content-Type'] = 'application/pdf'
|
||||
return response
|
||||
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue