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 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 search(request): # if has been requested if request.GET: form = SecretSearchForm(request.GET) # otherwise default settings else: form = SecretSearchForm({'page': 1}) if request.is_ajax(): form.Meta.results_per_page = 500 form.Meta.default_template = 'location' # get the results if form.is_valid(): results = form.save() else: results = [] search_template = 'secret/layout/%s.html' % form.render_template() if request.is_ajax(): render_template = search_template else: render_template = 'secret/search.html' # return return context_response(request, render_template, { 'form': form, 'results': results, 'search_template': search_template, # this will be hard coded into tabs 'template_types': SECRET_RENDER_TEMPLATES, })
def search(request): # if has been requested if request.GET: form = DiscussionSearchForm(request.GET) # otherwise default settings else: form = DiscussionSearchForm({'page': 1}) # get the results if form.is_valid(): results = form.save() else: results = [] d_ids = [] for r in results.documents: d_ids.append(r.pk_field.value) #TODO sorting here discussions = Discussion.objects.filter(pk__in=d_ids).order_by("-created_at") return context_response(request, 'discussion/search.html', { 'search_form': form, 'discussions': discussions, 'results': results, }, tabs=['discussions'])
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 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)
def edit_communication(request): if request.method == 'POST': form = UserCommunicationSettingsForm(request.POST, user=request.user) if form.is_valid(): form.save() return redirect_back(request) else: form = UserCommunicationSettingsForm(user=request.user) return context_response(request, 'accounts/communication.html', {'form': form }, tabs=['profile', 'edit', 'communication'])
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 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 flag_spam(request, modelid, objectid): msg = 'We have flagged this for review. Thank you for letting us know.' try: ct = ContentType.objects.get(pk = modelid) obj = ct.get_object_for_this_type(pk = objectid) obj.mark_spam(request.user) except IntegrityError: msg = 'You have already flagged this once. Thank you.' except: raise Http404 return context_response(request, "perm/generic_message.html", {'message': msg})
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 view(request, pk): """ When viewing a User """ # check permissions try: u = User.objects.get(pk=pk) except: raise Http404 else: if not u.is_active: raise Http404 # augment with all the lovely cool data and functions return context_response(request, 'accounts/profile.html', { 'profile': u, }, tabs=['profile'])
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 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 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 search(request): # if has been requested if request.GET: form = SecretSearchForm(request.GET) # otherwise default settings else: form = SecretSearchForm({'page': 1}) # setup template if request.is_ajax(): template = 'location' elif request.GET.get('template') and request.GET['template']: template = request.GET['template'] else: template = 'list' # process form if form.is_valid(): form.chosen_template = template results = form.save() else: results = [] # setup result numbers template_map_numbers = { 'location': 50, 'list': 10, 'photo': 20, } # get the results search_template = 'secret/layout/%s.html' % template form.render_template = template if request.is_ajax(): render_template = search_template else: render_template = 'secret/search.html' # return return context_response(request, render_template, { 'form': form, 'results': results, 'search_template': search_template, # this will be hard coded into tabs }, tabs=['secrets', form.render_template])
def search(request): # if has been requested if request.GET: form = DiscussionSearchForm(request.GET) # otherwise default settings else: form = DiscussionSearchForm({'page': 1}) # get the results if form.is_valid(): results = form.save() else: results = [] return context_response(request, 'discussion/search.html', { 'form': form, 'results': results, })
def edit(request): " Editing your profile " settings = request.user.settings successful = False if request.method == 'POST': form = UserSettingsForm(request.POST, instance=settings) if form.is_valid(): settings = form.save(commit=True) successful = True update_agument_session(request) else: form = UserSettingsForm(instance=settings) return context_response(request, 'accounts/edit.html', { 'form': form, 'successful': successful, })
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 edit(request): " Editing your profile " conf = request.user.get_settings() successful = False if request.method == 'POST': form = UserSettingsForm(request.POST) if form.is_valid(): form.user = request.user settings = form.save(commit=True) successful = True else: form = UserSettingsForm(initial={ 'email': request.user.email, 'publish_to_wall': conf.publish_to_wall, }) return context_response(request, 'accounts/profile.html', { 'profile': request.user, 'form': form, 'successful': successful, }, tabs=['profile', 'edit'])
def show_rewritten_note(request): msg = """<p>In order to comply with Facebook's terms of use, we've had to re-write this posting in order to view it outside Facebook. If you aren't happy with this, when logged in you can change your postings back to what they were or delete them. If you're really, really not happy, then <a href="mailto:[email protected]">email us</a> making sure to include a link to your Facebook profile page, and we'll be happy to delete all your stuff for good.</p>""" return context_response(request, "perm/generic_message.html", {'message': msg})