# HG changeset patch # User fabien # Date 1064502125 14400 # Node ID 574631f841c3ef31a0891eeb962c21ef21f940c9 # Parent cdb4ed8660c50910122d9c99003a94a7f5155c9e [svn r1549] Add update/merge/delete keywords. diff -r cdb4ed8660c5 -r 574631f841c3 TODO --- a/TODO Wed Sep 24 17:51:18 2003 -0400 +++ b/TODO Thu Sep 25 11:02:05 2003 -0400 @@ -1,10 +1,12 @@ * Used SQL sequence instead of the db_sequence table. * Add delete bookmark. -* Add edit/delete/merge keyword. * Add CSS. * Add better navigational means. -* Add limit query page or move keywords up. +* Add limit query page * Add Search capabilities. * Add default (dynamic?) tree expansion. * Add multiuser support. * Add XBel Import/Export. +* Add support for icons. +* Add modified time. +* Add access/check time. diff -r cdb4ed8660c5 -r 574631f841c3 add_bk.tmpl --- a/add_bk.tmpl Wed Sep 24 17:51:18 2003 -0400 +++ b/add_bk.tmpl Thu Sep 25 11:02:05 2003 -0400 @@ -17,14 +17,17 @@
Mots clés: - +

+ diff -r cdb4ed8660c5 -r 574631f841c3 do_edit_kw.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/do_edit_kw.py Thu Sep 25 11:02:05 2003 -0400 @@ -0,0 +1,67 @@ +#!/usr/bin/python + +import sys +import traceback +sys.path.insert(0, "/home/fabien/lib/python") +sys.path.insert(0, "./lib") +sys.stderr = sys.stdout + +print "Content-type: text/html; charset=iso-8859-1;" +print + +# import cgitb; cgitb.enable() +import cgi +from htmltmpl import TemplateManager, TemplateProcessor +import my_db +import time +from bkmark import Bookmark + +def get_bk_from_form(form): + bk = Bookmark() + bk.id = int(form['id'].value) + bk.url = form['url'].value + if form.has_key('name'): + bk.name = form['name'].value + if form.has_key('desc'): + bk.desc = form['desc'].value + return bk + +def get_kw_from_form(form): + kw = form.getvalue("kw") + if not isinstance(kw, type([])): + if kw: + kw = [kw] + else: + kw = [] + kw = map(int, kw) + return kw + +def get_new_kw_from_form(form): + if form.has_key('newkw'): + return map(lambda e: e.strip(), + form['newkw'].value.split(',')) + else: + return [] + +if (__name__ == "__main__"): + form = cgi.FieldStorage() + db = my_db.connect() + id = int(form['id'].value) + action = form['action'].value + kwname = db.get_keyword(id) + name = form['name'].value + merge = int(form['keywords'].value) + mergename = db.get_keyword(merge) + tmpl = TemplateManager().prepare("kw_confirm.tmpl") + tproc = TemplateProcessor() + tproc.set("confirm_delete", action == 'delete') + tproc.set("confirm_merge", action == 'merge') + tproc.set("confirm_update", action == 'update') + tproc.set("action", action) + tproc.set("id", id) + tproc.set("name", kwname) + tproc.set("newname", name) + tproc.set("mergeid", merge) + tproc.set("mergename", mergename) + print tproc.process(tmpl) + diff -r cdb4ed8660c5 -r 574631f841c3 edit_kw.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/edit_kw.py Thu Sep 25 11:02:05 2003 -0400 @@ -0,0 +1,36 @@ +#!/usr/bin/python + +import sys +import traceback +sys.path.insert(0, "/home/fabien/lib/python") +sys.path.insert(0, "./lib") +sys.stderr = sys.stdout + +print "Content-type: text/html; charset=iso-8859-1;" +print + +# import cgitb; cgitb.enable() +import cgi +from htmltmpl import TemplateManager, TemplateProcessor +import my_db +import time + +def main(keyword, id, keywords): + tmpl = TemplateManager().prepare("edit_kw.tmpl") + tproc = TemplateProcessor() + tproc.set('keyword', keyword) + tproc.set('id', id) + tproc.set('Keywords', keywords) + print tproc.process(tmpl) + +if (__name__ == "__main__"): + form = cgi.FieldStorage() + id = int(form["id"].value) + db = my_db.connect() + name = db.get_keyword(id) + kw = db.get_all_keywords()[1:] + kw.sort(lambda l,r: cmp(l[1],r[1])) + kw = map(lambda elem: { + 'id' : elem[0], + 'keyword' : elem[1] }, kw) + main(name, id, kw) diff -r cdb4ed8660c5 -r 574631f841c3 edit_kw.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/edit_kw.tmpl Thu Sep 25 11:02:05 2003 -0400 @@ -0,0 +1,24 @@ + + + Edit a keyword + + +

Edit a keyword

+
+ + +
+ +
+ +
+ + + diff -r cdb4ed8660c5 -r 574631f841c3 index.py --- a/index.py Wed Sep 24 17:51:18 2003 -0400 +++ b/index.py Thu Sep 25 11:02:05 2003 -0400 @@ -2,12 +2,13 @@ import sys import traceback -sys.path.insert(0, "/home/fabien/lib/python") -sys.path.insert(0, "./lib") -sys.stderr = sys.stdout +if (__name__ == '__main__'): + sys.path.insert(0, "/home/fabien/lib/python") + sys.path.insert(0, "./lib") + sys.stderr = sys.stdout -print "Content-type: text/html; charset=iso-8859-1;" -print + print "Content-type: text/html; charset=iso-8859-1;" + print # import cgitb; cgitb.enable() import cgi diff -r cdb4ed8660c5 -r 574631f841c3 index.tmpl --- a/index.tmpl Wed Sep 24 17:51:18 2003 -0400 +++ b/index.tmpl Thu Sep 25 11:02:05 2003 -0400 @@ -7,7 +7,7 @@

Fabien's XBelWeb

Total bookmarks:

-
+
Keywords:

@@ -15,11 +15,11 @@ checked value="" - />(); + />(); - +

+
-
@@ -53,4 +53,5 @@ sgml-local-catalogs:nil sgml-local-ecat-files:nil End: +vi: syntax=html --> diff -r cdb4ed8660c5 -r 574631f841c3 kw_confirm.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/kw_confirm.tmpl Thu Sep 25 11:02:05 2003 -0400 @@ -0,0 +1,48 @@ + + + + + Fabien's XBelWeb + + +

Fabien's XBelWeb

+

Confirmation

+
+ + + + +

Do you really want to remove ?

+
+ +

Do you really want to merge into + ?

+
+ +

Do you really want to rename into + ?

+
+ + +
+ + + diff -r cdb4ed8660c5 -r 574631f841c3 kw_result.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/kw_result.py Thu Sep 25 11:02:05 2003 -0400 @@ -0,0 +1,54 @@ +#!/usr/bin/python + +import sys +import traceback +sys.path.insert(0, "/home/fabien/lib/python") +sys.path.insert(0, "./lib") +sys.stderr = sys.stdout + +print "Content-type: text/html; charset=iso-8859-1;" +print + +# import cgitb; cgitb.enable() +import cgi +from htmltmpl import TemplateManager, TemplateProcessor +import my_db +from os import environ +from urlparse import urljoin +from index import set_selection, get_curl, main + +def do_merge(form, db): + fromid = int(form['id'].value) + toid = int(form['merge'].value) + db.merge_keywords(fromid, toid) + +def do_update(form, db): + id = int(form['id'].value) + newname = form['name'].value + db.update_keyword(id, newname) + +def do_delete(form, db): + id = int(form['id'].value) + db.remove_keyword(id) + +if (__name__ == "__main__"): + form = cgi.FieldStorage() + db = my_db.connect() + action = form['action'].value + if action == 'merge': + do_merge(form, db) + elif action == 'update': + do_update(form, db) + elif action == 'delete': + do_delete(form, db) + keywords = db.get_all_keywords() + total = keywords[0][2] + keywords = keywords[1:] + exc = map(lambda e: int(e[0]), keywords) + bookmarks = db.select_bookmarks([0], exc) + keywords = set_selection(keywords, []) + if len(bookmarks) > 0: + bookmarks = db.get_bookmarks(map(lambda x: x[0], bookmarks)) + bookmarks = map(lambda bk: bk.dict(), bookmarks) + curl = get_curl(); + main(bookmarks, keywords, curl, total) diff -r cdb4ed8660c5 -r 574631f841c3 lib/my_db.py --- a/lib/my_db.py Wed Sep 24 17:51:18 2003 -0400 +++ b/lib/my_db.py Thu Sep 25 11:02:05 2003 -0400 @@ -52,7 +52,7 @@ SET url = %s, name = %s, ldesc = %s, added = %s WHERE id = %d; - """ % (bk.url, sql_quote(bk.name), + """ % (sql_quote(bk.url), sql_quote(bk.name), sql_quote(bk.desc), sql_quote(bk.added), bk.id)) self.cnx.commit() @@ -87,7 +87,7 @@ def get_keyword(self, id): self.crs.execute(""" SELECT name FROM keywords - WHERE keyword.id = %d; + WHERE id = %d; """ % (id,)) return self.crs.fetchone()[0] def get_keywords(self, bk_id): @@ -119,8 +119,12 @@ self.crs.execute(""" UPDATE bookmarks_keywords SET keyword = %d - WHERE keyword = %d; - """ % (into_id, merge_id)) + WHERE keyword = %d + AND NOT ( bookmark IN + (SELECT bookmark FROM bookmarks_keywords + WHERE keyword = %d )) + ; + """ % (into_id, merge_id, merge_id)) self.remove_keyword(merge_id) def get_all_keywords(self): """Return a list of triplets [id, keyword, count]."""