コード例 #1
0
ファイル: todo.py プロジェクト: bwagner/daisy-producer
def add_version(request, document_id):
    document = get_object_or_404(Document, pk=document_id)

    if request.method != 'POST':
        return HttpResponseRedirect(reverse('todo_detail', args=[document_id]))

    form = PartialVersionForm(request.POST, request.FILES, 
                              contentMetaData=model_to_dict(document))
    if not form.is_valid():
        versionForm = form
        attachmentForm = PartialAttachmentForm()
        documentForm = PartialDocumentForm()
        documentForm.limitChoicesToValidStates(document)
        return render_to_response('documents/todo_detail.html', locals(),
                                  context_instance=RequestContext(request))

    # this is a bit of a hack as we need to create (and save) a
    # version before the id is known. We need to know the id before we
    # can save the content file under /document_id/versions/version_id
    version = Version.objects.create(
        comment=form.cleaned_data['comment'], 
        document=document,
        created_by=request.user)
    content_file = request.FILES['content']
    version.content.save(content_file.name, content_file)

    return HttpResponseRedirect(reverse('todo_detail', args=[document_id]))
コード例 #2
0
def add_image(request, document_id):
    document = get_object_or_404(Document, pk=document_id)

    if request.method != 'POST':
        return HttpResponseRedirect(reverse('todo_detail', args=[document_id]))

    form = PartialImageForm(request.POST, request.FILES)
    if not form.is_valid():
        versionForm = PartialVersionForm()
        attachmentForm = PartialAttachmentForm()
        imageForm = form
        documentForm = PartialDocumentForm()
        documentForm.limitChoicesToValidStates(document)
        return render_to_response('documents/todo_detail.html', locals(),
                                  context_instance=RequestContext(request))

    content_files = request.FILES.getlist('content')
    files = []
    for content in content_files:
        try:
            image = Image.objects.get(document=document, content__endswith=content)
            image.content.save(content.name, content)
        except Image.DoesNotExist:
            image = Image(document=document, content=content)
            image.save()
        files.append({'name': os.path.basename(image.content.name), 'url': image.content.url})

    if 'application/json' in request.META['HTTP_ACCEPT']:
        from django.http import HttpResponse
        from django.utils import simplejson
        response_data = simplejson.dumps({'files': files})
        return HttpResponse(response_data, mimetype = 'application/json')

    return HttpResponseRedirect(reverse('todo_detail', args=[document_id]))
コード例 #3
0
ファイル: todo.py プロジェクト: sbsdev/daisyproducer
def add_attachment(request, document_id):
    document = get_object_or_404(Document, pk=document_id)

    if request.method != 'POST':
        return HttpResponseRedirect(reverse('todo_detail', args=[document_id]))

    form = PartialAttachmentForm(request.POST, request.FILES)
    if not form.is_valid():
        versionForm = PartialVersionForm()
        attachmentForm = form
        imageForm = PartialImageForm()
        documentForm = PartialDocumentForm()
        documentForm.limitChoicesToValidStates(document)
        return render(request, 'documents/todo_detail.html', locals())

    # this is a bit of a hack as we need to create (and save) an
    # attachment before the id is known. We need to know the id before we
    # can save the content file under /document_id/attachments/file_name
    attachment = Attachment.objects.create(
        comment=form.cleaned_data['comment'], 
        document=document,
        mime_type=form.content_type,
        created_by=request.user)
    content_file = request.FILES['content']
    attachment.content.save(content_file.name, content_file)

    return HttpResponseRedirect(reverse('todo_detail', args=[document_id]))
コード例 #4
0
ファイル: todo.py プロジェクト: bwagner/daisy-producer
def detail(request, document_id):
    try:
        document = Document.objects.select_related('state').get(pk=document_id)
    except Document.DoesNotExist:
        raise Http404

    versionForm = PartialVersionForm()
    attachmentForm = PartialAttachmentForm()
    documentForm = PartialDocumentForm()
    documentForm.limitChoicesToValidStates(document)
    return render_to_response('documents/todo_detail.html', locals(),
                              context_instance=RequestContext(request))
コード例 #5
0
ファイル: todo.py プロジェクト: sbsdev/daisyproducer
def detail(request, document_id):
    try:
        document = Document.objects.select_related('state').get(pk=document_id)
    except Document.DoesNotExist:
        raise Http404

    versionForm = PartialVersionForm()
    attachmentForm = PartialAttachmentForm()
    imageForm = PartialImageForm()
    documentForm = PartialDocumentForm()
    documentForm.limitChoicesToValidStates(document)
    return render(request, 'documents/todo_detail.html', locals())
コード例 #6
0
ファイル: todo.py プロジェクト: sbsdev/daisyproducer
def transition(request, document_id):
    document = Document.objects.get(pk=document_id)

    if request.method != 'POST':
        return HttpResponseRedirect(reverse('todo_detail', args=[document_id]))

    form = PartialDocumentForm(request.POST)
    if not form.is_valid():
        versionForm = PartialVersionForm()
        attachmentForm = PartialAttachmentForm()
        documentForm = form
        return render(request, 'documents/todo_detail.html', locals())

    document.transitionTo(form.cleaned_data['state'])
    return HttpResponseRedirect(reverse('todo_index'))