Added very basic searching.

This commit is contained in:
Raoul Snyman 2010-02-17 23:10:21 +02:00
parent cfad76f615
commit 12d2a96626
3 changed files with 43 additions and 3 deletions

View File

@ -23,6 +23,8 @@
import logging import logging
from datetime import datetime from datetime import datetime
from sqlalchemy.sql import or_
from scribeengine.lib.base import * from scribeengine.lib.base import *
from scribeengine.lib import utils from scribeengine.lib import utils
from scribeengine.model import Post, Comment, Tag from scribeengine.model import Post, Comment, Tag
@ -111,3 +113,19 @@ class BlogController(BaseController):
h.flash.set_message(u'Successfully submitted your comment.', u'success') h.flash.set_message(u'Successfully submitted your comment.', u'success')
h.redirect_to(h.url_for_post(post)) h.redirect_to(h.url_for_post(post))
def search(self):
c.querystring = request.GET.get(u'q')
if not c.querystring:
h.flash.set_message(u'You didn\'t supply anything to search for.', u'error')
h.redirect_to('/')
c.page_title = u'Search'
c.posts = Session.query(Post)\
.filter(
or_(
Post.body.contains(c.querystring),
Post.title.contains(c.querystring)
)
)\
.all()
return render(u'/blog/search.mako')

View File

@ -0,0 +1,22 @@
<%inherit file="/base.mako"/>
<%include file="/flash.mako"/>
<h2 class="title">Searching for: &quot;${c.querystring}&quot;</h2>
% for post in c.posts:
<div class="post">
<h3 class="title"><a href="${h.url_for_post(post)}">${post.title}</a></h3>
<div class="entry">
${h.literal(h.teaser(post.body))}
</div>
<p class="meta">
<span class="byline">Posted by ${post.user.nick} on ${post.created.strftime('%B %d, %Y')}</span>
<a href="${h.url_for_post(post)}" class="read-more">Read more</a>
% if len(post.comments) == 0:
<a href="${h.url_for_post(post)}#comments" class="comments">No comments</a>
% elif len(post.comments) == 1:
<a href="${h.url_for_post(post)}#comments" class="comments">1 comment</a>
% else:
<a href="${h.url_for_post(post)}#comments" class="comments">${len(post.comments)} comments</a>
% endif
</p>
</div>
% endfor

View File

@ -1,11 +1,11 @@
<div id="sidebar"> <div id="sidebar">
<ul> <ul>
<li id="search"> <li id="search">
<form id="searchform" method="get" action="/search"> <form id="searchform" method="get" action="/blog/search">
<div> <div>
<input type="text" name="keywords" id="s" size="15" /> <input type="text" name="q" id="s" size="15" />
<br /> <br />
<input name="submit" type="submit" value="Search" /> <input type="submit" value="Search" />
</div> </div>
</form> </form>
</li> </li>