114 lines
3.4 KiB
Python
Executable file
114 lines
3.4 KiB
Python
Executable file
# Create your views here.
|
|
from forms import ItemForm
|
|
from django.shortcuts import render_to_response
|
|
from django.http import HttpResponse, HttpResponseRedirect
|
|
from django.template import RequestContext
|
|
from django.shortcuts import get_object_or_404
|
|
from models import *
|
|
try:
|
|
import json
|
|
except:
|
|
import simplejson as json
|
|
from django.contrib.auth.decorators import login_required
|
|
from ox.django.shortcuts import render_to_json_response
|
|
from copy import deepcopy
|
|
from os.path import join
|
|
from settings import MEDIA_ROOT
|
|
import os
|
|
|
|
def index(request):
|
|
items = Item.objects.all() #FIXME: check perms, etc
|
|
context = RequestContext(request, {'items': items})
|
|
return render_to_response("index.html", context)
|
|
|
|
def new_item(request):
|
|
if request.POST:
|
|
form = ItemForm(request.POST)
|
|
if form.is_valid():
|
|
new_item = form.save(commit=False)
|
|
new_item.user = request.user
|
|
fields = new_item.typ.fields.values()
|
|
d = {}
|
|
for f in fields:
|
|
field_name = f['short_name']
|
|
value = f['default_value']
|
|
d[field_name] = value
|
|
j = json.dumps(d)
|
|
new_item.json = j
|
|
new_item.save()
|
|
id = new_item.id
|
|
return HttpResponseRedirect('/edit_item/?id=%d' % id)
|
|
else:
|
|
form = ItemForm()
|
|
context = RequestContext(request, {'form': form})
|
|
return render_to_response("new_item.html", context)
|
|
|
|
|
|
@login_required
|
|
def edit_item(request):
|
|
id = request.GET.get("id", 0)
|
|
item = get_object_or_404(Item, pk=id)
|
|
fields = item.get_fields()
|
|
textinputs = []
|
|
textareas = []
|
|
for f in fields:
|
|
if f['typ'] == 'short_text':
|
|
textinputs.append(f)
|
|
if f['typ'] == 'large_text':
|
|
textareas.append(f)
|
|
context = RequestContext(request, {
|
|
'item': item,
|
|
'textinputs': textinputs,
|
|
'textareas': textareas
|
|
})
|
|
return render_to_response("edit_item.html", context)
|
|
|
|
|
|
@login_required
|
|
def save_item(request):
|
|
if not request.POST:
|
|
return render_to_json_response('error')
|
|
id = request.POST['item_id']
|
|
item = get_object_or_404(Item, pk=id)
|
|
d = {}
|
|
for k in request.POST.keys():
|
|
if k != 'item_id':
|
|
d[k] = request.POST[k]
|
|
j = json.dumps(d)
|
|
item.json = j
|
|
item.save()
|
|
return render_to_json_response('ok')
|
|
|
|
|
|
@login_required
|
|
def save_item_as(request):
|
|
original_item_id = request.POST['item_id']
|
|
original_item = get_object_or_404(Item, pk=original_item_id)
|
|
new_item = deepcopy(original_item)
|
|
new_item.id = None
|
|
new_item.title = request.POST['new_item_title']
|
|
new_item.user = request.user
|
|
new_item.save()
|
|
return HttpResponse("/edit_item/?id=%d" % new_item.id)
|
|
|
|
|
|
def render_item(request):
|
|
id = request.GET.get("id", 0)
|
|
item = get_object_or_404(Item, pk=id)
|
|
return HttpResponse(item.render())
|
|
|
|
|
|
def print_item(request):
|
|
id = request.GET.get("id", 0)
|
|
item = get_object_or_404(Item, pk=id)
|
|
pdf_path = join(MEDIA_ROOT, "pdfs")
|
|
pdf_name = "%s.pdf" % id
|
|
pdf_output_path = join(pdf_path, pdf_name)
|
|
url = "http://printaform.bhangar.com/render_item/?id=%s" % id
|
|
cmd = "wkhtmltopdf %s %s" % (url, pdf_output_path,)
|
|
print cmd
|
|
os.system(cmd)
|
|
short_url = "/static/pdfs/%s.pdf" % id
|
|
return HttpResponseRedirect(short_url)
|
|
|
|
|