def item_render(item): eqn_set = set() concept_set = set() document = decode_document(json.loads(item.body), eqn_set, concept_set) eqn_map = {reqn.pk: {'html': reqn.html} for reqn in RenderedEquation.objects.filter(pk__in=eqn_set)} concept_map = {concept.id: concept.name for concept in Concept.objects.filter(id__in=concept_set)} result = get_refs_and_render(item.item_type, document, eqn_map, concept_map) if result['errors']: raise IllegalMathItem('Error in published item {}: {}'.format(item.id, result['error'])) return result
def edit_item(request, item): context = {'title': '{} {}'.format('Edit' if item.id else 'New', item)} if request.method == 'POST': item.body = request.POST['src'] if request.POST['submit'] == 'preview': document, eqns, concepts = draft_prepare(item) item_data = get_refs_and_render(item.item_type, document, eqns, concepts) context['item_data'] = item_data elif request.POST['submit'] == 'save': item.save() return redirect(item) context['item'] = item return render(request, 'drafts/edit.html', context)
def show_draft(request, id_str): item = get_object_or_404(DraftItem, id=int(id_str), created_by=request.user) document, eqns, concepts = draft_prepare(item) if request.method == 'POST': if request.POST['submit'] == 'delete': item.delete() return redirect('list-drafts') elif request.POST['submit'] == 'publish': mathitem = publish(request.user, item.item_type, item.parent, document, eqns, concepts) item.delete() return redirect(mathitem) return render(request, 'drafts/show.html', { 'title': str(item), 'item': item, 'item_data': get_refs_and_render(item.item_type, document, eqns, concepts), })