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