コード例 #1
0
ファイル: views.py プロジェクト: tomharvey/secretapp
def delete(request, pk, model):
    if request.method == 'POST':
        # get instance
        instance = get_editable_or_raise(model, request.user, pk=pk)
        # mark deleted
        instance.mark_deleted(request.user)
        # return
        if request.is_ajax():
            return context_response(request, 'ajax/deleted.html', {'instance': instance })
        else:
            return redirect_back(request)
    else:
        raise Http404
コード例 #2
0
ファイル: views.py プロジェクト: tomharvey/secretapp
def edit(request, pk=None):
    discussion = get_editable_or_raise(Discussion, request.user, pk=pk) if pk else Discussion()
    
    if request.method == 'POST':
        form = DiscussionForm(request.POST, instance=discussion)
        if form.is_valid():
            discussion = form.save(request)
            return HttpResponseRedirect(discussion.get_absolute_url())
    
    form = DiscussionForm(instance=discussion)
    return context_response(request, 'discussion/edit.html', {
                'form': form,
                'discussion': discussion,
            })
コード例 #3
0
ファイル: views.py プロジェクト: eos87/secretapp
def create_proposal_comment(request, proposal_id, comment_id):
    """ Comment on a proposal """
    proposal = select_related_object_or_404(Proposal, pk=proposal_id)
    
    #if editing
    if comment_id:
        comment = get_editable_or_raise(ProposalComment, request.user, pk=comment_id)
    
    if request.method == 'POST':
        if comment_id:
            form = ProposalCommentForm(request.POST, permission_level=request.user.permission_level, instance=comment)
        else:
            form = ProposalCommentForm(request.POST, permission_level=request.user.permission_level)
        if form.is_valid():
            # save the details
            instance = form.save(request, commit=False)
            instance.proposal = proposal
            instance.save()
            # search save hooks
            proposal.secret.save()
            proposal.discussion_comment.discussion.save()
            
            # if successful return comment as list inline
            if request.is_ajax():
                return context_response(request, 'comment/proposal.html', { 'comment': instance })
            # otherwise return to the page of the discussion where the secret is mentioned
            else:
                return HttpResponseRedirect(proposal.discussion_comment.get_absolute_url())
    else:
        if comment_id:
            form = ProposalCommentForm(permission_level=request.user.permission_level, instance=comment)
        else:
            form = ProposalCommentForm(permission_level=request.user.permission_level)
    
    # sets the url for ajax
    if comment_id:
        form.set_url(proposal, comment)
    else:
        form.set_url(proposal)
    
    context = {
        'form': form,
        'proposal': proposal,
    }
    if request.is_ajax():
        # ajax form for discussion secret comment
        return context_response(request, 'comment/ajax_proposal.html', context)
    else:
        # should only see this failure -- will open up on its own page
        return context_response(request, 'comment/edit_proposal.html', context)
コード例 #4
0
ファイル: views.py プロジェクト: eos87/secretapp
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)
コード例 #5
0
ファイル: views.py プロジェクト: eos87/secretapp
def edit(request, pk=None):
    discussion = get_editable_or_raise(Discussion, request.user, pk=pk) if pk else Discussion()
        
    if request.method == 'POST':
        form = DiscussionForm(request.POST, instance=discussion, permission_level=request.user.permission_level)
        if form.is_valid():
            discussion = form.save(request)
            extra = "?fb=d" if not pk else ""
            return HttpResponseRedirect(discussion.get_absolute_url() + extra)
    
    form = DiscussionForm(instance=discussion, permission_level=request.user.permission_level)
    return context_response(request, 'discussion/edit.html', {
                'form': form,
                'discussion': discussion,
            }, tabs=['discussions', 'edit'])
コード例 #6
0
ファイル: views.py プロジェクト: eos87/secretapp
def delete(request, pk, model):
    if request.method == "POST":
        # get instance
        instance = get_editable_or_raise(model, request.user, pk=pk)
        # mark deleted
        instance.mark_deleted(request.user)
        # return
        if request.is_ajax():
            return context_response(request, 'perm/ajax_deleted.html', {'instance': instance })
        else:
            if 'next' in request.POST:
                return HttpResponseRedirect(request.POST['next'])
            else:
                return redirect_back(request)
    else:
        return Http404
コード例 #7
0
ファイル: views.py プロジェクト: eos87/secretapp
def edit(request, pk=None, from_discussion=False):
    user = request.user
    # get object
    secret = get_editable_or_raise(Secret, user, pk=pk) if pk else Secret()
    
    if request.method == 'POST':
        form = SecretForm(request.POST, request.FILES, instance=secret, permission_level=request.user.permission_level)
        if form.is_valid():
            secret = form.save(request)
            # success and ajax
            if request.is_ajax():
                # if creating a secret as part of a discussion reply (need to return different template)
                if from_discussion:
                    return HttpResponse('%s' % secret.pk if hasattr(secret, 'pk') and secret.pk else '')
                # otherwise creating it randomly somewhere else
                else:
                    return context_response(request, 'secret/render/list.html', {'secret': secret })
            # success redirect to instance page
            else:
                # if creating as part of a discussion, redirect back to discussion
                if from_discussion:
                    # this is a serious failure if this happeneds - but try best to recover
                    return HttpResponseRedirect(reverse('new_secret'))
                # otherwise send to new page
                else:
                    extra = ""
                    if not pk:
                        extra = "?fb=s"
                    return HttpResponseRedirect(secret.get_absolute_url()+extra)
    else:
        form = SecretForm(instance=secret, permission_level=request.user.permission_level)
        
    # set the urlG
    form.set_url(secret=secret)
    
    context = {
        'form': form,
        'secret': secret,
    }
    if request.is_ajax():
        return HttpResponse('')
    else:
        return context_response(request, 'secret/edit.html', context, tabs=['secrets', 'edit'])
コード例 #8
0
ファイル: views.py プロジェクト: eos87/secretapp
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)