Can fetch Documents, and then get pages triggers page retrieval and related field retrieval.
106 lines
2.7 KiB
Python
106 lines
2.7 KiB
Python
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)
|
|
pages = models.Page.objects.filter(document__pk=document.id).values('id','page_num')
|
|
context = extract_fields(document)
|
|
context['page_ids'] = [p['id'] for p in pages]
|
|
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)
|
|
|