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
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, })
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)
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)
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'])
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
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'])
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)