Ejemplo n.º 1
0
def view_slate(request, slate_id):
    slate = Slate.objects.get(id=slate_id)
    invites = Invitee.objects.filter(slate = slate_id)
    try:
        slate.users.get(id = request.user.id)
    except User.DoesNotExist:
        return redirect("slate")

    if request.method == 'POST':
        if 'submit_idea' in request.POST:
            idea = helpers.add_idea(request, slate_id=slate.id)
        if 'submit_idea_elaborate' in request.POST:
            idea = helpers.add_idea(request, slate_id=slate.id)
            if idea:
                return HttpResponseRedirect(reverse('edit-idea', args=[idea.id]))
        if 'invite' in request.POST:
            inviteForm = InviteForm(request.POST)
            if inviteForm.is_valid():
                clean = inviteForm.cleaned_data
                invites = clean['invite_list'].split(',')
                participants = slate.users.count()
                if len(invites) > (6 - participants):
                    messages.error(request, "You can\'t have"+
                            "more than 6 people on a slate."
                            )
                    return redirect("view-slate", slate_id = slate.id)
                for invite in clean['invite_list'].split(','):
                    invite = invite.strip()
                    try:
                        validate_email( invite )
                    except ValidationError:
                        #not an email address, continue with next invite
                        continue
                    else:
                            # user doesn't exist
                            # create an invitee item
                            try:
                                invite = Invitee.objects.get(email = invite,
                                        slate = slate.id)
                            except Invitee.DoesNotExist:
                                pass
                            else:
                                #invite already exists, let's pass
                                continue

                            invite = Invitee.objects.create(
                                    email=invite,slate=slate)
                            invite.save()
                            link_url = request.build_absolute_uri(
                                "/invite/slate/%i/%i/%s/"%(slate.id,invite.id,slugify(slate.name))
                                )
                            subject =   (
                                    "%s invited you to a slate on "
                                    "IdeaOtter"
                                    ) %(
                                    request.user.username
                                    )
                            from_email = "Idea Otter <*****@*****.**>"
                            plaintext = get_template('email/slate_invite.txt')
                            htmly = get_template('email/slate_invite.html')
                            d = Context(
                                { 
                                'username': request.user.email, 
                                'url': link_url,
                                'email': invite.email
                                }
                                )
                            text_content = plaintext.render(d)
                            html_content = htmly.render(d)
                            msg = EmailMultiAlternatives(subject, text_content,
                                    from_email, [invite.email])
                            msg.attach_alternative(html_content, "text/html")
                            try:
                                print "sending email"
                                msg.send()
                            except:
                                print html_content
                                pass


    ideaForm = IdeaForm()
    inviteForm = InviteForm()
    voteUpForm = VoteForm({'vote':'+'})
    ideas = ideaForm
    participants = slate.users.all()
    slate_ideas = slate.ideas.all()
    slate_ideas = slate_ideas.order_by('-date')
    return render_to_response("main/view_slate.html", locals(),
            context_instance = RequestContext(request))
Ejemplo n.º 2
0
def splash(request,show=''):
    is_splash = "splash"
    client_sub_domain = CLIENT_SUB_DOMAIN
    if not request.user.is_authenticated():
        form = AuthenticationForm()
        registerForm = UserCreationForm()
        if request.method=="POST":
            register(request)
            return HttpResponseRedirect("/")
        else:
            recent_ideas = Idea.objects.exclude(private=True).order_by('?')[:6]
            return render_to_response("main/splash.html", locals(),
                    context_instance=RequestContext(request))

    #
    # else there is a user and we can just show the general page
    #


    else:
        user = request.user
        #if user.has_perm(app.idea.can_add):
        #    post_idea = True
        #else:
        #    post_idea = False
        if request.method == 'POST': #If something has been submitted
            if 'vote' in request.POST:
                voteForm = VoteForm(request.POST)
                if voteForm.is_valid():
                    helpers.vote(voteForm,request.user)
            if 'submit_email' in request.POST:
                emailForm = EmailForm(request.POST)
                if emailForm.is_valid():

                    clean = emailForm.cleaned_data
                    exists = User.objects.filter(email=clean['email'])
                    if len(exists) > 0:
                        messages.error(request, (
                            "That e-mail address is "
                            "already in use, have you signed up before "
                            "using a different username?"))
                        return HttpResponseRedirect("/")

                    user.email = clean['email']

                    helpers.send_verify_email(clean['email'],user,request)

                    user.save()
            if 'submit_idea' in request.POST:
                idea = helpers.add_idea(request)
            if 'submit_idea_elaborate' in request.POST:
                idea = helpers.add_idea(request)
                if idea:
                    return HttpResponseRedirect(reverse('edit-idea', args=[idea.id]))

        voteUpForm = VoteForm({'vote':'+'})
        voteDownForm = VoteForm({'vote':'-'})
        ideaForm = IdeaForm()
        searchForm = SearchForm() 
        emailForm = EmailForm({'email':user.email})
        all_ideas = Idea.objects.exclude(private=True).annotate(votes=Count('vote_on'))
        if show == 'started':
            all_ideas = Idea.objects.filter(started=True).exclude(private=True).annotate(votes=Count('vote_on'))
        elif show == 'not-started':
            all_ideas = Idea.objects.exclude(started=True).exclude(private=True).annotate(votes=Count('vote_on'))
        if show == 'top':
            all_ideas = all_ideas.order_by('-votes')
        else:
            all_ideas = all_ideas.order_by('-date')
        all_ideas = helpers.process_ideas(user, all_ideas)
        return render_to_response("main/home.html",locals(),
                context_instance=RequestContext(request))