layout | title |
---|---|
default |
lec.ker - a simple del.icio.us clone |
by Valentin Wüstholz
CREATE TABLE `lecker`.`bookmarks` (
`id` int(10) unsigned NOT NULL auto_increment,
`url` text NOT NULL,
`created` timestamp NOT NULL default CURRENT_TIMESTAMP,
`tags` text NOT NULL,
`title` text NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `id` (`id`)
);
todo-list/
lecker.py
templates/
view.html
edit.html
delete.html
search.html
import web
urls = (
'/', 'view',
'/add', 'add',
'/delete', 'delete',
'/edit/([0-9]*)', 'edit',
'/search/(\S*)', 'search' )
class view:
def GET(self):
bookmarks = list(web.select("bookmarks", order="created desc"))
for b in bookmarks:
b.tags = b.tags.split()
web.render('view.html')
class add:
def POST(self):
i = web.input()
web.debug(type(i.tags))
n = web.insert('bookmarks', title=i.title, url=i.url, tags=i.tags)
web.seeother('./#t'+str(n))
class delete:
def GET(self):
bookmarks = web.select("bookmarks", order="title")
web.render('delete.html')
def POST(self):
i = web.input()
web.debug(i)
for item in i:
web.delete('bookmarks', 'id = '+item)
web.seeother('./#')
class edit:
def GET(self, id):
try:
bookmark = web.select("bookmarks", where="id = "+id)[0]
web.render('edit.html')
except IndexError:
print "This bookmark doesn't exist." def POST(self, id):
i = web.input()
web.update('bookmarks', 'id = '+id, title=i.title, url=i.url, tags=i.tags)
web.seeother('../')
class search:
def GET(self, tag):
bookmarks = []
bs = list(web.select("bookmarks", order="created desc"))
for b in bs:
b.tags = b.tags.split()
if tag in b.tags:
bookmarks.append(b)
empty = (len(bookmarks) == 0)
web.render('search.html')
def POST(self, tag):
i = web.input()
tags = i.tags.split()
bookmarks = []
bs = list(web.select("bookmarks", order="created desc"))
for b in bs:
b.tags = b.tags.split()
if every(lambda t: t in b.tags, tags):
bookmarks.append(b)
empty = (len(bookmarks) == 0)
web.render('search.html')
def every(f, lst):
for x in lst:
if not f(x):
return False
return True
web.internalerror = web.debugerror
web.db_parameters = dict(dbn='mysql', user='root', pw='', db='lecker')
if __name__ == '__main__': web.run(urls, web.reloader)
<p><center><h1>lec.ker</h1></center></p>
<p> <hr/> </p>
<center> <form name="search" method="post" action="search/#"> <p> <p> <input type="text" name="tags" size="50" /> </p> <input type="submit" value="Search" /> </p> </form> </center>
<p> <hr/> </p>
<table border="0" width="100%"> #for bookmark in $bookmarks
<colgroup> <col width="50%"> <col width="35%"> <col width="15%"> </colgroup> <tr> <form name="del$bookmark.id" method="post" action="delete"> <td> <a href="$bookmark.url"> $bookmark.title </a> </td> <td> #for tag in $bookmark.tags
<a href="/search/$tag"> $tag </a> |
#end for
</td> <td align="right"> <a href="edit/$bookmark.id">(edit)</a> <input type="hidden" name="$bookmark.id" value="1" /> <a href="#" onclick=document.del${bookmark.id}.submit()>(delete)</a> </td> </form> </tr> #end for
</table>
<p> <hr/> </p>
<form name="add" method="post" action="add"> <table border="0" width="100%"> <p> <tr> <td> Title:
</td> <td> <input type="text" name="title" size="100" /> </td> </tr> <tr> <td> Url:
</td> <td> <input type="text" name="url" size="100" /> </td> </tr> <tr> <td> Tags:
</td> <td> <input type="text" name="tags" size="100" /> </td> </tr> </p> </table> <p> <input type="submit" value="Add" /> </p> </form>
<a href="delete">Delete Bookmarks</a>
<p><center><h1>lec.ker</h1></center></p>
<p><h2>Edit Bookmark:</h2></p>
<form method="post" action=""> <p> <p> Title:<input type="text" name="title" value="$bookmark.title" size="100" /> </p> Url:<input type="text" name="url" value="$bookmark.url" size="100" /> </p> Tags:<input type="text" name="tags" value="$bookmark.tags" size="100" /> </p> <input type="submit" value="Edit" /> </p> </form>
<p> <hr/> </p>
<a href="../">Back</a>
<p><center><h1>lec.ker</h1></center></p>
<form name = "bookmarks" method="post" action="delete"> <p><h2>Delete Bookmarks:</h2></p>
<p> #for bookmark in $bookmarks
<input type="checkbox" name="$bookmark.id" value="1"> <a href="$bookmark.url"> $bookmark.title </a><br> #end for
</p> <p><input type="submit" value="Delete" /> </p> </form>
<p> <hr/> </p>
<a href="../">Back</a>
<p><center><h1>lec.ker</h1></center></p>
<table border="0" width="100%"> #for bookmark in $bookmarks
<colgroup> <col width="50%"> <col width="35%"> <col width="15%"> </colgroup> <tr> <form name="del$bookmark.id" method="post" action="../delete"> <td> <a href="$bookmark.url"> $bookmark.title </a> </td> <td> #for tag in $bookmark.tags
<a href="../search/$tag"> $tag </a> |
#end for
</td> <td align="right"> <a href="../edit/$bookmark.id">(edit)</a> <input type="hidden" name="$bookmark.id" value="1" /> <a href="#" onclick=document.del${bookmark.id}.submit()>(delete)</a> </form> </td> </form> </tr> #end for
</table> #if $empty
No Bookmarks were found.
#end if
</p>
<p> <hr/> </p>
<a href="../">Back</a>