Beispiel #1
0
def copy_network_story(request, pk):
    """ Copy a story and related facets. """

    original_story = get_object_or_404(Story, pk=pk)
    original_org = original_story.organization

    original_webfacet = original_story.webfacetstory.all()
    original_printfacet = original_story.printfacetstory.all()
    original_audiofacet = original_story.audiofacetstory.all()
    original_videofacet = original_story.videofacetstory.all()

    user = request.user
    organization = request.user.organization
    partner = request.user.organization

    # record action for activity story_team
    # action.send(request.user, verb="picked up", action_object=original_story)

    if request.method == "POST":

        # Create a copy of the story and a storycopydetail record
        copied_story = Story.copy_story(original_story)
        copied_story.owner = user
        copied_story.organization = organization
        copied_story.save()
        story_copy_record = StoryCopyDetail.objects.create_story_copy_record(
            original_org=original_org,
            partner=partner,
            original_story=original_story,
            partner_story=copied_story
            )

        # Create copy of facets if they exist
        # Copy the WebFacet
        if original_webfacet:
            print original_webfacet[0]
            copied_webfacet = WebFacet.copy_webfacet(original_webfacet[0])
            copied_webfacet.story = copied_story
            copied_webfacet.owner = user
            copied_webfacet.organization = organization
            copied_webfacet.save()
            webfacet_copy_record = WebFacetCopyDetail.objects.create_webfacet_copy_record(
                original_org=original_org,
                partner=partner,
                original_webfacet=original_webfacet[0],
                partner_webfacet=copied_webfacet
            )

            # create copy of webfacet images
            original_webfacet_images = WebFacet.get_webfacet_images(original_webfacet[0])
            for image in original_webfacet_images:
                copied_image = ImageAsset.copy_image(image)
                copied_image.owner = user
                copied_image.organization = organization
                copied_image.save()
                imageasset_copy_record = ImageAssetCopyDetail.objects.create_imageasset_copy_record(
                    original_org=original_org,
                    partner=partner,
                    original_imageasset=image,
                    partner_imageasset=copied_image
                )
                # add image to copied webfacet
                copied_webfacet.image_assets.add(copied_image)
                copied_webfacet.save()

            # create copy of webfacet documents
            original_webfacet_documents = WebFacet.get_webfacet_documents(original_webfacet[0])
            for document in original_webfacet_documents:
                copied_document = DocumentAsset.copy_document(document)
                copied_document.owner = user
                copied_document.organization = organization
                copied_document.save()
                documentasset_copy_record = DocumentAssetCopyDetail.objects.create_documentasset_copy_record(
                    original_org=original_org,
                    partner=partner,
                    original_documentasset=document,
                    partner_documentasset=copied_document
                )
                # add document to copied webfacet
                copied_webfacet.document_assets.add(copied_document)
                copied_webfacet.save()


            # create copy of webfacet audio
            original_webfacet_audiofiles = WebFacet.get_webfacet_audio(original_webfacet[0])
            for audio in original_webfacet_audiofiles:
                copied_audio = AudioAsset.copy_audio(audio)
                copied_audio.owner = user
                copied_audio.organization = organization
                copied_audio.save()
                audioasset_copy_record = AudioAssetCopyDetail.objects.create_audioasset_copy_record(
                    original_org=original_org,
                    partner=partner,
                    original_audioasset=audio,
                    partner_audioasset=copied_audio
                )
                # add audio to copied webfacet
                copied_webfacet.audio_assets.add(copied_audio)
                copied_webfacet.save()

            # create copy of webfacet video
            # original_webfacet_video = WebFacet.get_webfacet_video(original_webfacet[0])
            for video in original_webfacet_videos:
                copied_video = VideoAsset.copy_video(video)
                copied_video.owner = user
                copied_video.organization = organization
                copied_video.save()
                videoasset_copy_record = VideoAssetCopyDetail.objects.create_videoasset_copy_record(
                    original_org=original_org,
                    partner=partner,
                    original_videoasset=video,
                    partner_videoasset=copied_video
                )
                # add video to copied webfacet
                copied_webfacet.video_assets.add(copied_video)
                copied_webfacet.save()

        # Copy the PrintFacet
        if original_printfacet:
            print original_printfacet[0]
            copied_printfacet = PrintFacet.copy_printfacet(original_printfacet[0])
            copied_printfacet.story = copied_story
            copied_printfacet.owner = user
            copied_printfacet.organization = organization
            copied_printfacet.save()
            printfacet_copy_record = PrintFacetCopyDetail.objects.create_printfacet_copy_record(
                original_org=original_org,
                partner=partner,
                original_printfacet=original_printfacet,
                partner_printfacet=copied_printfacet
            )

            # create copy of printfacet images
            original_printfacet_images = PrintFacet.get_printfacet_images(original_printfacet[0])
            for image in original_printfacet_images:
                copied_image = ImageAsset.copy_image(image)
                copied_image.owner = user
                copied_image.organization = organization
                copied_image.save()
                imageasset_copy_record = ImageAssetCopyDetail.objects.create_imageasset_copy_record(
                    original_org=original_org,
                    partner=partner,
                    original_imageasset=image,
                    partner_imageasset=copied_image
                )
                # add image to copied printfacet
                copied_printfacet.image_assets.add(copied_image)
                copied_printfacet.save()

            # create copy of printfacet documents
            original_printfacet_documents = PrintFacet.get_printfacet_documents(original_printfacet[0])
            for document in original_printfacet_documents:
                copied_document = DocumentAsset.copy_document(document)
                copied_document.owner = user
                copied_document.organization = organization
                copied_document.save()
                documentasset_copy_record = DocumentAssetCopyDetail.objects.create_documentasset_copy_record(
                    original_org=original_org,
                    partner=partner,
                    original_documentasset=document,
                    partner_documentasset=copied_document
                )
                # add document to copied printfacet
                copied_printfacet.document_assets.add(copied_document)
                copied_printfacet.save()


            # create copy of printfacet audio
            original_printfacet_audiofiles = PrintFacet.get_printfacet_audio(original_printfacet[0])
            for audio in original_printfacet_audios:
                copied_audio = AudioAsset.copy_audio(audio)
                copied_audio.owner = user
                copied_audio.organization = organization
                copied_audio.save()
                audioasset_copy_record = AudioAssetCopyDetail.objects.create_audioasset_copy_record(
                    original_org=original_org,
                    partner=partner,
                    original_audioasset=audio,
                    partner_audioasset=copied_audio
                )
                # add audio to copied printfacet
                copied_printfacet.audio_assets.add(copied_audio)
                copied_printfacet.save()

            # create copy of printfacet video
            original_printfacet_video = PrintFacet.get_printfacet_video(original_printfacet[0])
            for video in original_printfacet_videos:
                copied_video = VideoAsset.copy_video(video)
                copied_video.owner = user
                copied_video.organization = organization
                copied_video.save()
                videoasset_copy_record = VideoAssetCopyDetail.objects.create_videoasset_copy_record(
                    original_org=original_org,
                    partner=partner,
                    original_videoasset=video,
                    partner_videoasset=copied_video
                )
                # add video to copied printfacet
                copied_printfacet.video_assets.add(copied_video)
                copied_printfacet.save()

        # Copy the AudioFacet
        if original_audiofacet:
            print original_audiofacet[0]
            copied_audiofacet = AudioFacet.copy_audiofacet(original_audiofacet[0])
            copied_audiofacet.story = copied_story
            copied_audiofacet.owner = user
            copied_audiofacet.organization = organization
            copied_audiofacet.save()
            audiofacet_copy_record = AudioFacetCopyDetail.objects.create_audiofacet_copy_record(
                original_org=original_org,
                partner=partner,
                original_audiofacet=original_audiofacet,
                partner_audiofacet=copied_audiofacet
            )
            print "Audiofacet Copied"

            # create copy of audiofacet images
            original_audiofacet_images = AudioFacet.get_audiofacet_images(original_audiofacet[0])
            for image in original_audiofacet_images:
                copied_image = ImageAsset.copy_image(image)
                copied_image.owner = user
                copied_image.organization = organization
                copied_image.save()
                imageasset_copy_record = ImageAssetCopyDetail.objects.create_imageasset_copy_record(
                    original_org=original_org,
                    partner=partner,
                    original_imageasset=image,
                    partner_imageasset=copied_image
                )
                # add image to copied audiofacet
                copied_audiofacet.image_assets.add(copied_image)
                copied_audiofacet.save()

            # create copy of audiofacet documents
            original_audiofacet_documents = AudioFacet.get_audiofacet_documents(original_audiofacet[0])
            for document in original_audiofacet_documents:
                copied_document = DocumentAsset.copy_document(document)
                copied_document.owner = user
                copied_document.organization = organization
                copied_document.save()
                documentasset_copy_record = DocumentAssetCopyDetail.objects.create_documentasset_copy_record(
                    original_org=original_org,
                    partner=partner,
                    original_documentasset=document,
                    partner_documentasset=copied_document
                )
                # add document to copied audiofacet
                copied_audiofacet.document_assets.add(copied_document)
                copied_audiofacet

            # create copy of audiofacet audio
            original_audiofacet_audiofiles = AudioFacet.get_audiofacet_audio(original_audiofacet[0])
            for audio in original_audiofacet_audios:
                copied_audio = AudioAsset.copy_audio(audio)
                copied_audio.owner = user
                copied_audio.organization = organization
                copied_audio.save()
                audioasset_copy_record = AudioAssetCopyDetail.objects.create_audioasset_copy_record(
                    original_org=original_org,
                    partner=partner,
                    original_audioasset=audio,
                    partner_audioasset=copied_audio
                )
                # add audio to copied audiofacet
                copied_audiofacet.audio_assets.add(copied_audio)
                copied_audiofacet.save()

            # create copy of audiofacet video
            original_audiofacet_video = AudioFacet.get_audiofacet_video(original_audiofacet[0])
            for video in original_audiofacet_videos:
                copied_video = VideoAsset.copy_video(video)
                copied_video.owner = user
                copied_video.organization = organization
                copied_video.save()
                videoasset_copy_record = VideoAssetCopyDetail.objects.create_videoasset_copy_record(
                    original_org=original_org,
                    partner=partner,
                    original_videoasset=video,
                    partner_videoasset=copied_video
                )
                # add video to copied audiofacet
                copied_audiofacet.video_assets.add(copied_video)
                copied_audiofacet.save()

        # Copy the VideoFacet
        if original_videofacet:
            print original_videofacet[0]
            copied_videofacet = VideoFacet.copy_videofacet(original_videofacet[0])
            copied_videofacet.story = copied_story
            copied_videofacet.owner = user
            copied_videofacet.organization = organization
            copied_videofacet.save()
            videofacet_copy_record = VideoFacetCopyDetail.objects.create_videofacet_copy_record(
                original_org=original_org,
                partner=partner,
                original_videofacet=original_videofacet,
                partner_videofacet=copied_videofacet
            )
            print "Videofacet Copied"


            # create copy of videofacet images
            original_videofacet_images = VideoFacet.get_videofacet_images(original_videofacet[0])
            for image in original_videofacet_images:
                copied_image = ImageAsset.copy_image(image)
                copied_image.owner = user
                copied_image.organization = organization
                copied_image.save()
                imageasset_copy_record = ImageAssetCopyDetail.objects.create_imageasset_copy_record(
                    original_org=original_org,
                    partner=partner,
                    original_imageasset=image,
                    partner_imageasset=copied_image
                )
                # add image to copied videofacet
                partner_videofacet.image_assets.add(copied_image)
                partner_videofacet.save()

            # create copy of videofacet documents
            original_videofacet_documents = VideoFacet.get_videofacet_documents(original_videofacet[0])
            for document in original_videofacet_documents:
                copied_document = DocumentAsset.copy_document(document)
                copied_document.owner = user
                copied_document.organization = organization
                copied_document.save()
                documentasset_copy_record = DocumentAssetCopyDetail.objects.create_documentasset_copy_record(
                    original_org=original_org,
                    partner=partner,
                    original_documentasset=document,
                    partner_documentasset=copied_document
                )
                # add document to copied videofacet
                partner_documentasset.document_assets.add(copied_document)
                partner_documentasset.save()


            # create copy of videofacet audio
            original_videofacet_audiofiles = VideoFacet.get_videofacet_audio(original_videofacet[0])
            for audio in original_videofacet_audiofiles:
                copied_audio = AudioAsset.copy_audio(audio)
                copied_audio.owner = user
                copied_audio.organization = organization
                copied_audio.save()
                audioasset_copy_record = AudioAssetCopyDetail.objects.create_audioasset_copy_record(
                    original_org=original_org,
                    partner=partner,
                    original_audioasset=audio,
                    partner_audioasset=copied_audio
                )
                # add audio to copied audiofacet
                partner_audioasset.audio_assets.add(copied_audio)
                partner_audioasset.save()

            # create copy of videofacet video
            original_videofacet_video = VideoFacet.get_videofacet_video(original_videofacet[0])
            for video in original_videofacet_videos:
                copied_video = VideoAsset.copy_video(video)
                copied_video.owner = user
                copied_video.organization = organization
                copied_video.save()
                videoasset_copy_record = VideoAssetCopyDetail.objects.create_videoasset_copy_record(
                    original_org=original_org,
                    partner=partner,
                    original_videoasset=video,
                    partner_videoasset=copied_video
                )
                # add video to copied videofacet
                partner_videoasset.video_assets.add(copied_video)
                partner_videoasset.save()



    return redirect('network_stories')
Beispiel #2
0
def story_detail(request, pk):
    """ The detail page for a story.

    Displays the story's planning notes, discussion, assets, share and collaboration status
    and sensivity status. From here the user can also see any facets, edit them and add new ones.
    """

    story = get_object_or_404(Story, pk=pk)
    storynoteform = StoryNoteForm()
    storynotes = StoryNote.objects.filter(story=story)
    storycommentform = StoryCommentForm()
    storydiscussion = get_object_or_404(Discussion, id=story.discussion.id)
    storycomments = Comment.objects.filter(discussion=storydiscussion).order_by('-date')

    notes = StoryNote.objects.filter(story=story)

    images = Organization.get_org_image_library(request.user.organization)
    documents = Organization.get_org_document_library(request.user.organization)
    audiofiles = Organization.get_org_audio_library(request.user.organization)
    videos = Organization.get_org_video_library(request.user.organization)

    imageassetform=ImageAssetForm()
    documentassetform=DocumentAssetForm()
    audioassetform=AudioAssetForm()
    videoassetform=VideoAssetForm()

# ------------------------------ #
#           webfacet             #
# ------------------------------ #

    # create these here for efficiency
    webform=WebFacetForm(request=request, story=story)
    webcommentform=WebFacetCommentForm()

    try:
        webfacet = get_object_or_404(WebFacet, story=story)
        # IF WEBFACET EXISTS DO ALL OF THE FOLLOWING
        webform = WebFacetForm(instance=webfacet, request=request, story=story)
        # retrieve discussion and comments
        webfacetdiscussion = get_object_or_404(Discussion, id=webfacet.discussion.id)
        webcomments = Comment.objects.filter(discussion=webfacetdiscussion).order_by('-date')[:3]
        # retrieve history
        webhistory = webfacet.edit_history.all()[:5]
        # update an existing webfacet
        if request.method == "POST":
            if 'webform' in request.POST:
                webform = WebFacetForm(data=request.POST, instance=webfacet, request=request, story=story)
                if webform.is_valid():
                    webform.save()
                    # record action for activity stream
                    action.send(request.user, verb="edited", action_object=webfacet)

                    return redirect('story_detail', pk=story.pk)
    except:
        # except WebFacet.DoesNotExist:
        # display form and save a new webfacet
        webcomments = []
        webhistory = []
        if request.method == "POST":
            if 'webform' in request.POST:
                webform = WebFacetForm(data=request.POST, request=request, story=story)
                if webform.is_valid():
                    webfacet = webform.save(commit=False)
                    webfacet.story = story
                    webfacet.owner = request.user
                    webfacet.organization = request.user.organization
                    webfacet.creation_date = timezone.now()
                    discussion = Discussion.objects.create_discussion("WF")
                    webfacet.discussion = discussion
                    webfacet.save()
                    webform.save_m2m()
                    # create history of the webfacet
                    webhistory = webfacet.edit_history.all()[:5]
                    # record action for activity stream
                    action.send(request.user, verb="created", action_object=webfacet)

                    return redirect('story_detail', pk=story.pk)

# ------------------------------ #
#           printfacet           #
# ------------------------------ #

    # create these here for efficiency
    printform=PrintFacetForm(request=request, story=story)
    printcommentform=PrintFacetCommentForm()

    try:
        printfacet = get_object_or_404(PrintFacet, story=story)
        # IF PRINTFACET EXISTS DO ALL OF THE FOLLOWING
        printform = PrintFacetForm(instance=printfacet, request=request, story=story)
        # retrieve discussion and comments
        printfacetdiscussion = get_object_or_404(Discussion, id=printfacet.discussion.id)
        printcomments = Comment.objects.filter(discussion=printfacetdiscussion).order_by('-date')[:3]
        # retrieve history
        printhistory = printfacet.edit_history.all()[:5]
        # update an existing printfacet
        if request.method == "POST":
            if 'printform' in request.POST:
                printform = PrintFacetForm(data=request.POST, instance=printfacet, request=request, story=story)
                if printform.is_valid():
                    printform.save()
                    # record action for activity stream
                    action.send(request.user, verb="edited", action_object=printfacet)

                    return redirect('story_detail', pk=story.pk)
    except:
        # except PrintFacet.DoesNotExist:
        # display form and save a new printfacet
        printcomments = []
        printhistory = []
        if request.method == "POST":
            if 'printform' in request.POST:
                printform = PrintFacetForm(data=request.POST, request=request, story=story)
                if printform.is_valid():
                    printfacet = printform.save(commit=False)
                    printfacet.story = story
                    printfacet.owner = request.user
                    printfacet.organization = request.user.organization
                    printfacet.creation_date = timezone.now()
                    discussion = Discussion.objects.create_discussion("WF")
                    printfacet.discussion = discussion
                    printfacet.save()
                    printform.save_m2m()
                    # create history of the printfacet
                    printhistory = printfacet.edit_history.all()[:5]
                    # record action for activity stream
                    action.send(request.user, verb="created", action_object=printfacet)

                    return redirect('story_detail', pk=story.pk)

# ------------------------------ #
#           audiofacet           #
# ------------------------------ #

    # create these here for efficiency
    audioform=AudioFacetForm(request=request, story=story)
    audiocommentform=AudioFacetCommentForm()

    try:
        audiofacet = get_object_or_404(AudioFacet, story=story)
        # IF AUDIOFACET EXISTS DO ALL OF THE FOLLOWING
        audioform = AudioFacetForm(instance=audiofacet, request=request, story=story)
        # retrieve discussion and comments
        audiofacetdiscussion = get_object_or_404(Discussion, id=audiofacet.discussion.id)
        audiocomments = Comment.objects.filter(discussion=audiofacetdiscussion).order_by('-date')[:3]
        # retrieve history
        audiohistory = audiofacet.edit_history.all()[:5]
        # update an existing audiofacet
        if request.method == "POST":
            if 'audioform' in request.POST:
                audioform = AudioFacetForm(data=request.POST, instance=audiofacet, request=request, story=story)
                if audioform.is_valid():
                    audioform.save()

                    # record action for activity stream
                    action.send(request.user, verb="edited", action_object=audiofacet)

                    return redirect('story_detail', pk=story.pk)
    except:
        # except AudioFacet.DoesNotExist:
        # display form and save a new audiofacet
        audiocomments = []
        audiohistory = []
        if request.method == "POST":
            if 'audioform' in request.POST:
                audioform = AudioFacetForm(data=request.POST, request=request, story=story)
                if audioform.is_valid():
                    audiofacet = audioform.save(commit=False)
                    audiofacet.story = story
                    audiofacet.owner = request.user
                    audiofacet.organization = request.user.organization
                    audiofacet.creation_date = timezone.now()
                    discussion = Discussion.objects.create_discussion("WF")
                    audiofacet.discussion = discussion
                    audiofacet.save()
                    audioform.save_m2m()
                    # create history of the audiofacet
                    audiohistory = audiofacet.edit_history.all()[:5]
                    # record action for activity stream
                    action.send(request.user, verb="created", action_object=audiofacet)

                    return redirect('story_detail', pk=story.pk)

# ------------------------------ #
#           videofacet           #
# ------------------------------ #

    # create these here for efficiency
    videoform=VideoFacetForm(request=request, story=story)
    videocommentform=VideoFacetCommentForm()

    try:
        videofacet = get_object_or_404(VideoFacet, story=story)
        # IF WEBFACET EXISTS DO ALL OF THE FOLLOWING
        videoform = VideoFacetForm(instance=videofacet, request=request, story=story)
        # retrieve discussion and comments
        videofacetdiscussion = get_object_or_404(Discussion, id=videofacet.discussion.id)
        videocomments = Comment.objects.filter(discussion=videofacetdiscussion).order_by('-date')[:3]
        # retrieve history
        videohistory = videofacet.edit_history.all()[:5]
        # update an existing videofacet
        if request.method == "POST":
            if 'videoform' in request.POST:
                videoform = VideoFacetForm(data=request.POST, instance=videofacet, request=request, story=story)
                if videoform.is_valid():
                    videoform.save()
                    # record action for activity stream
                    action.send(request.user, verb="edited", action_object=videofacet)
                    return redirect('story_detail', pk=story.pk)
    except:
        # except VideoFacet.DoesNotExist:
        # display form and save a new videofacet
        videocomments = []
        videohistory = []
        if request.method == "POST":
            if 'videoform' in request.POST:
                videoform = VideoFacetForm(data=request.POST, request=request, story=story)
                if videoform.is_valid():
                    videofacet = videoform.save(commit=False)
                    videofacet.story = story
                    videofacet.owner = request.user
                    videofacet.organization = request.user.organization
                    videofacet.creation_date = timezone.now()
                    discussion = Discussion.objects.create_discussion("VF")
                    videofacet.discussion = discussion
                    videofacet.save()
                    videoform.save_m2m()
                    # create history of the videofacet
                    videohistory = videofacet.edit_history.all()[:5]
                    # record action for activity stream
                    action.send(request.user, verb="created", action_object=videofacet)

                    return redirect('story_detail', pk=story.pk)

    # ------------------------------ #
    #        Download Options        #
    # ------------------------------ #
    if story.webfacetstory.all():
        webfacet = get_object_or_404(WebFacet, story=story)
        webfacet_images = WebFacet.get_webfacet_images(webfacet)
        webfacet_documents = WebFacet.get_webfacet_documents(webfacet)
        webfacet_audio = WebFacet.get_webfacet_audio(webfacet)
        webfacet_video = WebFacet.get_webfacet_video(webfacet)
    else:
        webfacet_images = []
        webfacet_documents = []
        webfacet_audio = []
        webfacet_video = []

    if story.printfacetstory.all():
        printfacet = get_object_or_404(PrintFacet, story=story)
        printfacet_images = PrintFacet.get_printfacet_images(printfacet)
        printfacet_documents = PrintFacet.get_printfacet_documents(printfacet)
        printfacet_audio = PrintFacet.get_printfacet_audio(printfacet)
        printfacet_video = PrintFacet.get_printfacet_video(printfacet)
    else:
        printfacet_images = []
        printfacet_documents = []
        printfacet_audio = []
        printfacet_video = []

    if story.audiofacetstory.all():
        audiofacet = get_object_or_404(AudioFacet, story=story)
        audiofacet_images = AudioFacet.get_audiofacet_images(audiofacet)
        audiofacet_documents = AudioFacet.get_audiofacet_documents(audiofacet)
        audiofacet_audio = AudioFacet.get_audiofacet_audio(audiofacet)
        audiofacet_video = AudioFacet.get_audiofacet_video(audiofacet)
    else:
        audiofacet_images = []
        audiofacet_documents = []
        audiofacet_audio = []
        audiofacet_video = []

    if story.videofacetstory.all():
        videofacet = get_object_or_404(VideoFacet, story=story)
        videofacet_images = VideoFacet.get_videofacet_images(videofacet)
        videofacet_documents = VideoFacet.get_videofacet_documents(videofacet)
        videofacet_audio = VideoFacet.get_videofacet_audio(videofacet)
        videofacet_video = VideoFacet.get_videofacet_video(videofacet)
    else:
        videofacet_images = []
        videofacet_documents = []
        videofacet_audio = []
        videofacet_video = []

    storydownloadform = StoryDownloadForm(story=story)

    return render(request, 'editorial/storydetail.html', {
        'story': story,
        'storydownloadform': storydownloadform,
        'storynoteform': storynoteform,
        'storynotes': storynotes,
        'storycommentform': storycommentform,
        'storycomments': storycomments,
        'webform': webform,
        'webcomments': webcomments,
        'webhistory': webhistory,
        'webcommentform': webcommentform,
        'printform': printform,
        'printcomments': printcomments,
        'printhistory': printhistory,
        'printcommentform': printcommentform,
        'audioform': audioform,
        'audiocomments': audiocomments,
        'audiohistory': audiohistory,
        'audiocommentform': audiocommentform,
        'videoform': videoform,
        'videocomments': videocomments,
        'videohistory': videohistory,
        'videocommentform': videocommentform,
        'images': images,
        'imageassetform': imageassetform,
        'documentassetform': documentassetform,
        'audioassetform': audioassetform,
        'videoassetform': videoassetform,
        'webfacet_images': webfacet_images,
        'printfacet_images': printfacet_images,
        'audiofacet_images': audiofacet_images,
        'videofacet_images': videofacet_images,
        'documents': documents,
        'webfacet_documents': webfacet_documents,
        'printfacet_documents': printfacet_documents,
        'audiofacet_documents': audiofacet_documents,
        'videofacet_documents': videofacet_documents,
        'audiofiles': audiofiles,
        'webfacet_audio': webfacet_audio,
        'printfacet_audio': printfacet_audio,
        'audiofacet_audio': audiofacet_audio,
        'videofacet_audio': videofacet_audio,
        'videos': videos,
        'webfacet_video': webfacet_video,
        'printfacet_video': printfacet_video,
        'audiofacet_video': audiofacet_video,
        'videofacet_video': videofacet_video,
        })
Beispiel #3
0
def create_download(request, pk):
    """ Process download form to collect objects and create download file."""

    # get the story and associated facets no matter what options are selected
    story_id = request.POST.get('story')
    story = get_object_or_404(Story, id=pk)
    story_txt = Story.get_story_download(story)
    select_all_images = []
    image_txt = ""
    select_all_documents = []
    document_txt = ""
    select_all_audio = []
    audio_txt = ""

    if story.webfacetstory.all():
        webfacet = story.webfacetstory.all()[0]
        webfacet_images = WebFacet.get_webfacet_images(webfacet)
        webfacet_documents = WebFacet.get_webfacet_documents(webfacet)
        webfacet_audio = WebFacet.get_webfacet_audio(webfacet)
        select_all_images.extend(webfacet_images)
        select_all_documents.extend(webfacet_documents)
        select_all_audio.extend(webfacet_audio)
        webfacet_txt = WebFacet.get_webfacet_download(webfacet)
    if story.printfacetstory.all():
        printfacet = story.printfacetstory.all()[0]
        printfacet_images = PrintFacet.get_printfacet_images(printfacet)
        printfacet_documents = PrintFacet.get_printfacet_documents(printfacet)
        printfacet_audio = PrintFacet.get_printfacet_audio(printfacet)
        select_all_images.extend(printfacet_images)
        select_all_documents.extend(printfacet_documents)
        select_all_audio.extend(printfacet_audio)
        printfacet_txt = PrintFacet.get_printfacet_download(printfacet)
    if story.audiofacetstory.all():
        audiofacet = story.audiofacetstory.all()[0]
        audiofacet_images = AudioFacet.get_audiofacet_images(audiofacet)
        audiofacet_documents = AudioFacet.get_audiofacet_documents(audiofacet)
        audiofacet_audio = AudioFacet.get_audiofacet_audio(audiofacet)
        select_all_images.extend(audiofacet_images)
        select_all_documents.extend(audiofacet_documents)
        select_all_audio.extend(audiofacet_audio)
        audiofacet_txt = AudioFacet.get_audiofacet_download(audiofacet)
    if story.videofacetstory.all():
        videofacet = story.videofacetstory.all()[0]
        videofacet_images = VideoFacet.get_videofacet_images(videofacet)
        videofacet_documents = VideoFacet.get_videofacet_documents(videofacet)
        videofacet_audio = VideoFacet.get_videofacet_audio(videofacet)
        select_all_images.extend(videofacet_images)
        select_all_documents.extend(videofacet_documents)
        select_all_audio.extend(videofacet_audio)
        videofacet_txt = VideoFacet.get_videofacet_download(videofacet)

    # Set up zip file
    fp = StringIO()
    z = ZipFile(fp, mode="w")
    # Always Zip up story meta
    z.writestr("story.txt", story_txt)

    # ------------------------------ #
    #          IF SELECT ALL         #
    # ------------------------------ #
    # if select_all is chosen, then all items will be downloaded
    select_all = request.POST.get('select_all')
    print "select all: ", select_all

    if select_all:
        # Zip up all facets and assets including story metadata
        if story.webfacetstory.all():
            z.writestr("webstory.txt", webfacet_txt)
        if story.printfacetstory.all():
            z.writestr("printstory.txt", printfacet_txt)
        if story.audiofacetstory.all():
            z.writestr("audiostory.txt", audiofacet_txt)
        if story.videofacetstory.all():
            z.writestr("videostory.txt", videofacet_txt)
        for image in select_all_images:
            z.writestr("{image}.jpg".format(image=image.asset_title), image.photo.read())
            new_info = ImageAsset.get_image_download_info(image)
            image_txt += new_info
        for document in select_all_documents:
            if document.doc_type == "PDF":
                z.writestr("{document}.pdf".format(document=document.asset_title), document.document.read())
                new_info = DocumentAsset.get_document_download_info(document)
                document_txt += new_info
            if document.doc_type == "WORD":
                z.writestr("{document}.docx".format(document=document.asset_title), document.document.read())
                new_info = DocumentAsset.get_document_download_info(document)
                document_txt += new_info
            if document.doc_type == "TXT":
                z.writestr("{document}.txt".format(document=document.asset_title), document.document.read())
                new_info = DocumentAsset.get_document_download_info(document)
                document_txt += new_info
            if document.doc_type == "CSV":
                z.writestr("{document}.csv".format(document=document.asset_title), document.document.read())
                new_info = DocumentAsset.get_document_download_info(document)
                document_txt += new_info
            if document.doc_type == "XLS":
                z.writestr("{document}.xls".format(document=document.asset_title), document.document.read())
                new_info = DocumentAsset.get_document_download_info(document)
                document_txt += new_info
        for audiofile in select_all_audio:
            if audiofile.audio_type == "MP3":
                z.writestr("{audiofile}.mp3".format(audiofile=document.asset_title), audiofile.audio.read())
                new_info = AudioAsset.get_audio_download_info(audiofile)
                audio_txt += new_info
            if audiofile.audio_type == "WAV":
                z.writestr("{audiofile}.wav".format(audiofile=document.asset_title), audiofile.audio.read())
                new_info = AudioAsset.get_audio_download_info(audiofile)
                audio_txt += new_info

    # user can also select download all items associated with certain facets
    # ------------------------------ #
    #        IF WEBFACET ALL         #
    # ------------------------------ #
    webfacet_sa = request.POST.get('webfacet_sa')
    print "WSA: ", webfacet_sa

    if webfacet_sa:
        # Zip up story meta, webfacet content and webfacet images
        if story.webfacetstory.all():
            z.writestr("webstory.txt", webfacet_txt)
        for image in webfacet_images:
            z.writestr("{image}.jpg".format(image=image.asset_title), image.photo.read())
            new_info = ImageAsset.get_image_download_info(image)
            image_txt += new_info
        for document in webfacet_documents:
            if document.doc_type == "PDF":
                z.writestr("{document}.pdf".format(document=document.asset_title), document.document.read())
                new_info = DocumentAsset.get_document_download_info(document)
                document_txt += new_info
            if document.doc_type == "WORD":
                z.writestr("{document}.docx".format(document=document.asset_title), document.document.read())
                new_info = DocumentAsset.get_document_download_info(document)
                document_txt += new_info
            if document.doc_type == "TXT":
                z.writestr("{document}.txt".format(document=document.asset_title), document.document.read())
                new_info = DocumentAsset.get_document_download_info(document)
                document_txt += new_info
            if document.doc_type == "CSV":
                z.writestr("{document}.csv".format(document=document.asset_title), document.document.read())
                new_info = DocumentAsset.get_document_download_info(document)
                document_txt += new_info
            if document.doc_type == "XLS":
                z.writestr("{document}.xls".format(document=document.asset_title), document.document.read())
                new_info = DocumentAsset.get_document_download_info(document)
                document_txt += new_info
        for audiofile in webfacet_audio:
            if audiofile.audio_type == "MP3":
                z.writestr("{audiofile}.mp3".format(audiofile=document.asset_title), audiofile.audio.read())
                new_info = AudioAsset.get_audio_download_info(audiofile)
                audio_txt += new_info
            if audiofile.audio_type == "WAV":
                z.writestr("{audiofile}.wav".format(audiofile=document.asset_title), audiofile.audio.read())
                new_info = AudioAsset.get_audio_download_info(audiofile)
                audio_txt += new_info

    # ------------------------------ #
    #       IF PRINTFACET ALL        #
    # ------------------------------ #
    printfacet_sa = request.POST.get('printfacet_sa')
    print "PSA: ", printfacet_sa

    if printfacet_sa:
        # Zip up story meta, printfacet content and printfacet images
        if story.printfacetstory.all():
            z.writestr("printstory.txt", printfacet_txt)
        for image in printfacet_images:
            z.writestr("{image}.jpg".format(image=image.asset_title), image.photo.read())
            new_info = ImageAsset.get_image_download_info(image)
            image_txt += new_info
        for document in printfacet_documents:
            if document.doc_type == "PDF":
                z.writestr("{document}.pdf".format(document=document.asset_title), document.document.read())
                new_info = DocumentAsset.get_document_download_info(document)
                document_txt += new_info
            if document.doc_type == "WORD":
                z.writestr("{document}.docx".format(document=document.asset_title), document.document.read())
                new_info = DocumentAsset.get_document_download_info(document)
                document_txt += new_info
            if document.doc_type == "TXT":
                z.writestr("{document}.txt".format(document=document.asset_title), document.document.read())
                new_info = DocumentAsset.get_document_download_info(document)
                document_txt += new_info
            if document.doc_type == "CSV":
                z.writestr("{document}.csv".format(document=document.asset_title), document.document.read())
                new_info = DocumentAsset.get_document_download_info(document)
                document_txt += new_info
            if document.doc_type == "XLS":
                z.writestr("{document}.xls".format(document=document.asset_title), document.document.read())
                new_info = DocumentAsset.get_document_download_info(document)
                document_txt += new_info
        for audiofile in printfacet_audio:
            if audiofile.audio_type == "MP3":
                z.writestr("{audiofile}.mp3".format(audiofile=document.asset_title), audiofile.audio.read())
                new_info = AudioAsset.get_audio_download_info(audiofile)
                audio_txt += new_info
            if audiofile.audio_type == "WAV":
                z.writestr("{audiofile}.wav".format(audiofile=document.asset_title), audiofile.audio.read())
                new_info = AudioAsset.get_audio_download_info(audiofile)
                audio_txt += new_info


    # ------------------------------ #
    #       IF AUDIOFACET ALL        #
    # ------------------------------ #
    audiofacet_sa = request.POST.get('audiofacet_sa')
    print "ASA: ", audiofacet_sa

    if audiofacet_sa:
        # Zip up story meta, audiofacet content and audiofacet images
        if story.audiofacetstory.all():
            z.writestr("audiostory.txt", audiofacet_txt)
        for image in audiofacet_images:
            z.writestr("{image}.jpg".format(image=image.asset_title), image.photo.read())
            new_info = ImageAsset.get_image_download_info(image)
            image_txt += new_info
        for document in audiofacet_documents:
            if document.doc_type == "PDF":
                z.writestr("{document}.pdf".format(document=document.asset_title), document.document.read())
                new_info = DocumentAsset.get_document_download_info(document)
                document_txt += new_info
            if document.doc_type == "WORD":
                z.writestr("{document}.docx".format(document=document.asset_title), document.document.read())
                new_info = DocumentAsset.get_document_download_info(document)
                document_txt += new_info
            if document.doc_type == "TXT":
                z.writestr("{document}.txt".format(document=document.asset_title), document.document.read())
                new_info = DocumentAsset.get_document_download_info(document)
                document_txt += new_info
            if document.doc_type == "CSV":
                z.writestr("{document}.csv".format(document=document.asset_title), document.document.read())
                new_info = DocumentAsset.get_document_download_info(document)
                document_txt += new_info
            if document.doc_type == "XLS":
                z.writestr("{document}.xls".format(document=document.asset_title), document.document.read())
                new_info = DocumentAsset.get_document_download_info(document)
                document_txt += new_info
        for audiofile in audiofacet_audio:
            if audiofile.audio_type == "MP3":
                z.writestr("{audiofile}.mp3".format(audiofile=document.asset_title), audiofile.audio.read())
                new_info = AudioAsset.get_audio_download_info(audiofile)
                audio_txt += new_info
            if audiofile.audio_type == "WAV":
                z.writestr("{audiofile}.wav".format(audiofile=document.asset_title), audiofile.audio.read())
                new_info = AudioAsset.get_audio_download_info(audiofile)
                audio_txt += new_info


    # ------------------------------ #
    #       IF VIDEOFACET ALL        #
    # ------------------------------ #
    videofacet_sa = request.POST.get('videofacet_sa')
    print "VDS: ", videofacet_sa

    if videofacet_sa:
        # Zip up story meta, audiofacet content and audiofacet images
        if story.videofacetstory.all():
            z.writestr("videostory.txt", videofacet_txt)
        for image in videofacet_images:
            z.writestr("{image}.jpg".format(image=image.asset_title), image.photo.read())
            new_info = ImageAsset.get_image_download_info(image)
            image_txt += new_info
        for document in videofacet_documents:
            if document.doc_type == "PDF":
                z.writestr("{document}.pdf".format(document=document.asset_title), document.document.read())
                new_info = DocumentAsset.get_document_download_info(document)
                document_txt += new_info
            if document.doc_type == "WORD":
                z.writestr("{document}.docx".format(document=document.asset_title), document.document.read())
                new_info = DocumentAsset.get_document_download_info(document)
                document_txt += new_info
            if document.doc_type == "TXT":
                z.writestr("{document}.txt".format(document=document.asset_title), document.document.read())
                new_info = DocumentAsset.get_document_download_info(document)
                document_txt += new_info
            if document.doc_type == "CSV":
                z.writestr("{document}.csv".format(document=document.asset_title), document.document.read())
                new_info = DocumentAsset.get_document_download_info(document)
                document_txt += new_info
            if document.doc_type == "XLS":
                z.writestr("{document}.xls".format(document=document.asset_title), document.document.read())
                new_info = DocumentAsset.get_document_download_info(document)
                document_txt += new_info
        for audiofile in videofacet_audio:
            if audiofile.audio_type == "MP3":
                z.writestr("{audiofile}.mp3".format(audiofile=document.asset_title), audiofile.audio.read())
                new_info = AudioAsset.get_audio_download_info(audiofile)
                audio_txt += new_info
            if audiofile.audio_type == "WAV":
                z.writestr("{audiofile}.wav".format(audiofile=document.asset_title), audiofile.audio.read())
                new_info = AudioAsset.get_audio_download_info(audiofile)
                audio_txt += new_info


    # if not select all OR facet select all, then user chooses the facet and the images
    # ------------------------------ #
    #      IF WEBFACET SPECIFIC      #
    # ------------------------------ #
    webfacet_only = request.POST.get('webfacet')
    if webfacet_only:
        z.writestr("webstory.txt", webfacet_txt)

    # ------------------------------ #
    #    IF PRINTFACET SPECIFIC      #
    # ------------------------------ #
    printfacet_only = request.POST.get('printfacet')
    if printfacet_only:
        z.writestr("printstory.txt", printfacet_txt)

    # ------------------------------ #
    #      IF AUDIOFACET SPECIFIC    #
    # ------------------------------ #
    audiofacet_only = request.POST.get('audiofacet')
    if audiofacet_only:
        z.writestr("audiostory.txt", audiofacet_txt)

    # ------------------------------ #
    #      IF VIDEOFACET SPECIFIC    #
    # ------------------------------ #
    videofacet_only = request.POST.get('videofacet')
    if videofacet_only:
        z.writestr("videostory.txt", videofacet_txt)

    # ------------------------------ #
    #       IF SPECIFIC IMAGES       #
    # ------------------------------ #
    # if not select all or by facet, then user chooses specific images
    images = request.POST.getlist('images')
    images = ImageAsset.objects.filter(pk__in=images)
    print "Images: ", images
    if images:
        for image in images:
            z.writestr("{image}.jpg".format(image=image.asset_title), image.photo.read())
            new_info = ImageAsset.get_image_download_info(image)
            image_txt += new_info

    # ------------------------------ #
    #     IF SPECIFIC DOCUMENTS      #
    # ------------------------------ #
    # if not select all or by facet, then user chooses specific documents
    documents = request.POST.getlist('documents')
    documents = DocumentAsset.objects.filter(pk__in=documents)
    print "Documents: ", documents
    if documents:
        for document in documents:
            if document.doc_type == "PDF":
                z.writestr("{document}.pdf".format(document=document.asset_title), document.document.read())
                new_info = DocumentAsset.get_document_download_info(document)
                document_txt += new_info
            if document.doc_type == "WORD":
                z.writestr("{document}.docx".format(document=document.asset_title), document.document.read())
                new_info = DocumentAsset.get_document_download_info(document)
                document_txt += new_info
            if document.doc_type == "TXT":
                z.writestr("{document}.txt".format(document=document.asset_title), document.document.read())
                new_info = DocumentAsset.get_document_download_info(document)
                document_txt += new_info
            if document.doc_type == "CSV":
                z.writestr("{document}.csv".format(document=document.asset_title), document.document.read())
                new_info = DocumentAsset.get_document_download_info(document)
                document_txt += new_info
            if document.doc_type == "XLS":
                z.writestr("{document}.xls".format(document=document.asset_title), document.document.read())
                new_info = DocumentAsset.get_document_download_info(document)
                document_txt += new_info

    # ------------------------------ #
    #       IF SPECIFIC AUDIO        #
    # ------------------------------ #
    # if not select all or by facet, then user chooses specific audiofiles

    audiofiles = request.POST.getlist('audiofiles')
    audiofiles = AudioAsset.objects.filter(pk__in=audiofiles)
    print "Audiofiles: ", audiofiles
    if audiofiles:
        for audiofile in audiofiles:
            if audiofile.audio_type == "MP3":
                z.writestr("{audiofile}.mp3".format(audiofile=document.asset_title), audiofile.audio.read())
                new_info = AudioAsset.get_audio_download_info(audiofile)
                audio_txt += new_info
            if audiofile.audio_type == "WAV":
                z.writestr("{audiofile}.wav".format(audiofile=document.asset_title), audiofile.audio.read())
                new_info = AudioAsset.get_audio_download_info(audiofile)
                audio_txt += new_info

    # ------------------------------ #
    #         Create download        #
    # ------------------------------ #
    #Take the final version of image_txt and write it.
    z.writestr("image.txt", image_txt)
    z.writestr("document.txt", document_txt)
    z.writestr("audio.txt", audio_txt)

    z.close()
    fp.seek(0)
    response = HttpResponse(fp, content_type='application/zip')
    fp.close()


    return response