Пример #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)
Пример #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)
Пример #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)
Пример #4
0
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)
Пример #5
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)
Пример #6
0
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,
            })
Пример #7
0
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'])
Пример #8
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,
            })
Пример #9
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)
Пример #10
0
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'])
Пример #11
0
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'])
Пример #12
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'])
Пример #13
0
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})
Пример #14
0
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
Пример #15
0
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,
            })
Пример #16
0
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'])
Пример #17
0
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'])
Пример #18
0
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
Пример #19
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),
            })
Пример #20
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
Пример #21
0
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])
Пример #22
0
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,
            })
Пример #23
0
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,
                })
Пример #24
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'])
Пример #25
0
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'])
Пример #26
0
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})