Beispiel #1
0
def create_discussion_secret_comment(request, discussion_id, secret_id):
    """ Comment on a Secret on a Discussion """
    discussion = get_viewable_or_raise(Discussion, request.user, pk=discussion_id)
    secret = get_viewable_or_raise(Secret, request.user, pk=secret_id)

    if request.method == "POST":
        form = SecretCommentForm(request.POST)
        if form.is_valid():
            # save the details
            instance = form.save(request, commit=False)
            instance.secret = secret
            instance.discussion = discussion
            instance.save()

            # if successful return comment as list inline
            if request.is_ajax():
                return context_response(request, "comment/discussion_secret.html", {"comment": instance})
            # otherwise return to the page of the discussion where the secret is mentioned
            else:
                return HttpResponseRedirect(instance.discussion.get_secretpage_url(secret))
    else:
        form = SecretCommentForm()

    # sets the url for ajax
    form.set_url(secret, discussion)
    discussion.set_page_by_secret(secret)

    context = {"form": form, "discussion": discussion, "secret": secret}
    if request.is_ajax():
        # ajax form for discussion secret comment
        return context_response(request, "comment/ajax_discussion_secret.html", context)
    else:
        # should only see this failure -- will open up on its own page
        return context_response(request, "comment/edit_discussion_secret.html", context)
Beispiel #2
0
def create_secret_comment(request, secret_id):
    """ Comment directly on a Secret """
    secret = get_viewable_or_raise(Secret, request.user, pk=secret_id)

    if request.method == "POST":
        form = SecretCommentForm(request.POST)
        if form.is_valid():
            # save instance data
            instance = form.save(request, commit=False)
            instance.secret = secret
            instance.save()

            # if successful
            if request.is_ajax():
                # return the rendered comment to be inserted
                return context_response(request, "comment/secret.html", {"instance": instance})
            else:
                # otherwise refresh the secret page
                return HttpResponseRedirect(instance.secret.get_absolute_url())
    else:
        form = SecretCommentForm()

    # sets the url for ajax
    form.set_url(secret)

    context = {"secret": secret, "form": form}
    if request.is_ajax():
        # is asked for by request and form rendered on failure
        return context_response(request, "comment/ajax_secret.html", context)
    else:
        # should only see this on failure & with no js - crappy page though
        return context_response(request, "comment/edit_secret.html", context)
Beispiel #3
0
def create_discussion_comment(request, discussion_id):
    """ Comment directly on a Discussion """
    discussion = get_viewable_or_raise(Discussion, request.user, pk=discussion_id)

    if request.method == "POST":
        form = DiscussionCommentForm(request.POST)
        if form.is_valid():
            # see formModel for logic
            instance = form.save(request, discussion)

            # if successful just show discussion comment inline
            if request.is_ajax():
                return context_response(request, "comment/discussion.html", {"instance": instance})
            # otherwise go to last page of discussion
            else:
                return HttpResponseRedirect(instance.discussion.get_lastpage_url())
    else:
        form = DiscussionCommentForm()

    # sets the url for ajax
    form.set_url(discussion)

    context = {"form": form}
    if request.is_ajax():
        return context_response(request, "comment/ajax_discussion.html", context)
    else:
        return context_response(request, "comment/edit_discussion.html", context)
Beispiel #4
0
def view(request, pk):
    # get secret
    secret = get_viewable_or_raise(Secret, request.user, pk=pk)
    # check url for seo
    seo_url = secret.get_absolute_url()
    if not request.get_full_path().split('?')[0] == seo_url:
        return HttpResponsePermanentRedirect(seo_url)
    return context_response(request, 'secret/view.html', {
                'secret': secret,
            })
Beispiel #5
0
def view(request, pk):
    # get secret
    secret = get_viewable_or_raise(Secret, request.user, pk=pk)
    # check url for seo
    seo_url = secret.get_absolute_url()
    if not request.get_full_path().split('?')[0] == seo_url:
        return HttpResponsePermanentRedirect(seo_url)
    return context_response(request, 'secret/view.html', {
                'secret': secret,
                'comment_form': SecretCommentForm().set_url(secret),
                'photo_form': UploadPhotoForm().set_url(secret)
            }, tabs=['secrets'])
Beispiel #6
0
def add_favourite_secret(request, secret_id):
    """ Clock up a favourite to a user... """
    if request.method == 'POST':
        secret = get_viewable_or_raise(Secret, request.user, pk=secret_id)
        # This creates a NEW entry even if this user previously created and then deleted
        # a favourite reference to a secret
        fave, new = FavouriteSecret.objects.get_or_create(secret=secret, created_by=request.user, deleted=False)

        if request.is_ajax():
            return HttpResponse('%s' % secret.favourite_count)
        else:
            return redirect_back(request)
    else:
        raise Http404
Beispiel #7
0
def create_secret_comment(request, secret_id, comment_id):
    """ Comment directly on a Secret """
    secret = get_viewable_or_raise(Secret, request.user, pk=secret_id)
    
    #if editing
    if comment_id:
        comment = get_editable_or_raise(SecretComment, request.user, pk=comment_id)
    
    if request.method == 'POST':
        if comment_id:
            form = SecretCommentForm(request.POST, instance=comment)
        else:
            form = SecretCommentForm(request.POST)
        if form.is_valid():
            # save instance data
            instance = form.save(request, commit=False)
            instance.secret = secret
            instance.save()
            # search save hook on secret
            secret.save()
            __secret_send_mail(request, secret, instance)
            # if successful
            if request.is_ajax():
                # return the rendered comment to be inserted
                return context_response(request, 'comment/secret.html', { 'instance': instance })
            else:
                # otherwise refresh the secret page
                return HttpResponseRedirect(instance.secret.get_absolute_url())
    else:
        if comment_id:
            form = SecretCommentForm(instance=comment)
        else:
            form = SecretCommentForm()
    
    # sets the url for ajax
    if comment_id:
        form.set_url(secret, comment)
    else:
        form.set_url(secret)
    
    context = {
        'secret': secret,
        'form': form
    }
    if request.is_ajax():
        # is asked for by request and form rendered on failure
        return context_response(request, 'comment/ajax_secret.html', context)
    else:
        # should only see this on failure & with no js - crappy page though
        return context_response(request, 'comment/edit_secret.html', context)
Beispiel #8
0
def delete_favourite_secret(request, secret_id):
    """ Remove favourite from a user's list """
    if request.method == 'POST':
        # get instance
        secret = get_viewable_or_raise(Secret, request.user, pk=secret_id)
        # mark deleted on the only favourite flag that is set on this secret and has not
        # previously been deleted.
        fave = get_object_or_404(FavouriteSecret, secret=secret, created_by=request.user, deleted=False)
        if fave.user_can_edit(request.user): 
            fave.mark_deleted(request.user)
        # return
        if request.is_ajax():
            return context_response(request, 'perm/ajax_deleted.html', {'instance': fave })
        else:
            return redirect_back(request)
    else:
        raise Http404
Beispiel #9
0
def view(request, pk):
    # view a discussion
    discussion = get_viewable_or_raise(Discussion, request.user, pk=pk)
    
    # check seo
    seo_url = discussion.get_absolute_url() 
    if not request.get_full_path().split('?')[0] == seo_url:
        return HttpResponsePermanentRedirect(seo_url)
    
    # get page
    if request.GET.has_key('page'):
        discussion.page = int(request.GET['page'])
    
    return context_response(request, 'discussion/view.html', {
                'discussion': discussion,
                'reply_form': DiscussionCommentForm().set_url(discussion),
            })
Beispiel #10
0
def upload(request, secret_id):
    """ Upload an image and attach it to a secret """
    secret = get_viewable_or_raise(Secret, request.user, pk=secret_id)
    
    if request.method == 'POST':
        form = UploadPhotoForm(request.POST, request.FILES)
        if form.is_valid():
            form.secret = secret
            instance = form.save(request, commit=True)
            from comment.views import __secret_send_mail
            if instance and not instance.deleted:
                __secret_send_mail(request, secret, instance, action='secret_photographed')
            return HttpResponseRedirect(secret.get_absolute_url()+"?fb=p")
    else:
        form = UploadPhotoForm()
    context = {
        'form': form
    }
    return context_response(request, 'photo/edit.html', context, tabs=['secret','photo'])
Beispiel #11
0
def create_discussion_comment(request, discussion_id, comment_id=None):
    """ Comment directly on a Discussion """
    discussion = get_viewable_or_raise(Discussion, request.user, pk=discussion_id)
    
    #if editing
    if comment_id:
        comment = get_editable_or_raise(DiscussionComment, request.user, pk=comment_id)
    
    if request.method == 'POST':
        if comment_id:
            form = DiscussionCommentForm(request.POST, permission_level=request.user.permission_level, instance=comment)
        else:
            form = DiscussionCommentForm(request.POST, permission_level=request.user.permission_level)
        if form.is_valid():
            # see formModel for logic
            instance = form.save(request, discussion)
            # search save hook
            discussion.save()
            # sends mail once the comment is made
            __discussion_send_mail(request, discussion, instance)
            # if successful just show discussion comment inline
            if request.is_ajax():
                return HttpResponse('success')
            # otherwise go to last page of discussion
            else:
                return HttpResponseRedirect(instance.get_absolute_url())
    else:
        if comment_id:
            form = DiscussionCommentForm(permission_level=request.user.permission_level, instance=comment)
        else:
            form = DiscussionCommentForm(permission_level=request.user.permission_level)
    
    # sets the url for ajax
    if comment_id:
        form.set_url(discussion, comment)
    else:
        form.set_url(discussion)
    
    context = { 'form': form, 'discussion': discussion}
    if request.is_ajax():
        return context_response(request, 'comment/ajax_discussion.html', context)
    else:
        return context_response(request, 'comment/edit_discussion.html', context)