add_result.py
author fabien
Thu, 25 Sep 2003 11:02:05 -0400
branchxbelweb
changeset 15 574631f841c3
parent 13 7357230539d2
child 17 14bec94bbe89
permissions -rwxr-xr-x
[svn r1549] Add update/merge/delete keywords.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3
9e7e8b678819 [svn r1530] Add and browse working.
fabien
parents:
diff changeset
     1
#!/usr/bin/python
9e7e8b678819 [svn r1530] Add and browse working.
fabien
parents:
diff changeset
     2
9e7e8b678819 [svn r1530] Add and browse working.
fabien
parents:
diff changeset
     3
import sys
9e7e8b678819 [svn r1530] Add and browse working.
fabien
parents:
diff changeset
     4
import traceback
9e7e8b678819 [svn r1530] Add and browse working.
fabien
parents:
diff changeset
     5
sys.path.insert(0, "/home/fabien/lib/python")
9e7e8b678819 [svn r1530] Add and browse working.
fabien
parents:
diff changeset
     6
sys.path.insert(0, "./lib")
9e7e8b678819 [svn r1530] Add and browse working.
fabien
parents:
diff changeset
     7
sys.stderr = sys.stdout
9e7e8b678819 [svn r1530] Add and browse working.
fabien
parents:
diff changeset
     8
9e7e8b678819 [svn r1530] Add and browse working.
fabien
parents:
diff changeset
     9
print "Content-type: text/html; charset=iso-8859-1;"
9e7e8b678819 [svn r1530] Add and browse working.
fabien
parents:
diff changeset
    10
print
9e7e8b678819 [svn r1530] Add and browse working.
fabien
parents:
diff changeset
    11
9e7e8b678819 [svn r1530] Add and browse working.
fabien
parents:
diff changeset
    12
# import cgitb; cgitb.enable()
9e7e8b678819 [svn r1530] Add and browse working.
fabien
parents:
diff changeset
    13
import cgi
9e7e8b678819 [svn r1530] Add and browse working.
fabien
parents:
diff changeset
    14
from htmltmpl import TemplateManager, TemplateProcessor
9e7e8b678819 [svn r1530] Add and browse working.
fabien
parents:
diff changeset
    15
import my_db
9e7e8b678819 [svn r1530] Add and browse working.
fabien
parents:
diff changeset
    16
import time
9e7e8b678819 [svn r1530] Add and browse working.
fabien
parents:
diff changeset
    17
from bkmark import Bookmark
9e7e8b678819 [svn r1530] Add and browse working.
fabien
parents:
diff changeset
    18
9e7e8b678819 [svn r1530] Add and browse working.
fabien
parents:
diff changeset
    19
def get_bk_from_form(form):
9e7e8b678819 [svn r1530] Add and browse working.
fabien
parents:
diff changeset
    20
	bk = Bookmark()
9
896b7c6de627 [svn r1543] Ajout des fonctions d'�ditions.
fabien
parents: 7
diff changeset
    21
	bk.id = int(form['id'].value)
3
9e7e8b678819 [svn r1530] Add and browse working.
fabien
parents:
diff changeset
    22
	bk.url = form['url'].value
11
08b3855f5e48 [svn r1545] Check for unexisting description or name.
fabien
parents: 9
diff changeset
    23
	if form.has_key('name'):
08b3855f5e48 [svn r1545] Check for unexisting description or name.
fabien
parents: 9
diff changeset
    24
		bk.name = form['name'].value
08b3855f5e48 [svn r1545] Check for unexisting description or name.
fabien
parents: 9
diff changeset
    25
	if form.has_key('desc'):
08b3855f5e48 [svn r1545] Check for unexisting description or name.
fabien
parents: 9
diff changeset
    26
		bk.desc = form['desc'].value
3
9e7e8b678819 [svn r1530] Add and browse working.
fabien
parents:
diff changeset
    27
	return bk
9e7e8b678819 [svn r1530] Add and browse working.
fabien
parents:
diff changeset
    28
9e7e8b678819 [svn r1530] Add and browse working.
fabien
parents:
diff changeset
    29
def get_kw_from_form(form):
9e7e8b678819 [svn r1530] Add and browse working.
fabien
parents:
diff changeset
    30
	kw = form.getvalue("kw")
9e7e8b678819 [svn r1530] Add and browse working.
fabien
parents:
diff changeset
    31
	if not isinstance(kw, type([])):
9e7e8b678819 [svn r1530] Add and browse working.
fabien
parents:
diff changeset
    32
		if kw:
9e7e8b678819 [svn r1530] Add and browse working.
fabien
parents:
diff changeset
    33
			kw = [kw]
9e7e8b678819 [svn r1530] Add and browse working.
fabien
parents:
diff changeset
    34
		else:
9e7e8b678819 [svn r1530] Add and browse working.
fabien
parents:
diff changeset
    35
			kw = []
9e7e8b678819 [svn r1530] Add and browse working.
fabien
parents:
diff changeset
    36
	kw = map(int, kw)
9e7e8b678819 [svn r1530] Add and browse working.
fabien
parents:
diff changeset
    37
	return kw
9e7e8b678819 [svn r1530] Add and browse working.
fabien
parents:
diff changeset
    38
7
7cc3ab1c160b [svn r1541] Add new keywords entry.
fabien
parents: 3
diff changeset
    39
def get_new_kw_from_form(form):
7cc3ab1c160b [svn r1541] Add new keywords entry.
fabien
parents: 3
diff changeset
    40
	if form.has_key('newkw'):
7cc3ab1c160b [svn r1541] Add new keywords entry.
fabien
parents: 3
diff changeset
    41
		return map(lambda e: e.strip(),
7cc3ab1c160b [svn r1541] Add new keywords entry.
fabien
parents: 3
diff changeset
    42
			form['newkw'].value.split(','))
7cc3ab1c160b [svn r1541] Add new keywords entry.
fabien
parents: 3
diff changeset
    43
	else:
7cc3ab1c160b [svn r1541] Add new keywords entry.
fabien
parents: 3
diff changeset
    44
		return []
7cc3ab1c160b [svn r1541] Add new keywords entry.
fabien
parents: 3
diff changeset
    45
3
9e7e8b678819 [svn r1530] Add and browse working.
fabien
parents:
diff changeset
    46
def main(bk, kw):
9e7e8b678819 [svn r1530] Add and browse working.
fabien
parents:
diff changeset
    47
    tmpl = TemplateManager().prepare("add_result.tmpl")
9e7e8b678819 [svn r1530] Add and browse working.
fabien
parents:
diff changeset
    48
    tproc = TemplateProcessor()
9e7e8b678819 [svn r1530] Add and browse working.
fabien
parents:
diff changeset
    49
    tproc.set("url", bk.url)
9e7e8b678819 [svn r1530] Add and browse working.
fabien
parents:
diff changeset
    50
    tproc.set("name", bk.name)
9e7e8b678819 [svn r1530] Add and browse working.
fabien
parents:
diff changeset
    51
    tproc.set("added", bk.added)
9e7e8b678819 [svn r1530] Add and browse working.
fabien
parents:
diff changeset
    52
    tproc.set("desc", bk.desc)
9e7e8b678819 [svn r1530] Add and browse working.
fabien
parents:
diff changeset
    53
    tproc.set("Keywords", kw)
9e7e8b678819 [svn r1530] Add and browse working.
fabien
parents:
diff changeset
    54
    print tproc.process(tmpl)
9e7e8b678819 [svn r1530] Add and browse working.
fabien
parents:
diff changeset
    55
9e7e8b678819 [svn r1530] Add and browse working.
fabien
parents:
diff changeset
    56
if (__name__ == "__main__"):
9e7e8b678819 [svn r1530] Add and browse working.
fabien
parents:
diff changeset
    57
    form = cgi.FieldStorage()
9e7e8b678819 [svn r1530] Add and browse working.
fabien
parents:
diff changeset
    58
    db = my_db.connect()
9e7e8b678819 [svn r1530] Add and browse working.
fabien
parents:
diff changeset
    59
    bk = get_bk_from_form(form)
9e7e8b678819 [svn r1530] Add and browse working.
fabien
parents:
diff changeset
    60
    kw = get_kw_from_form(form)
7
7cc3ab1c160b [svn r1541] Add new keywords entry.
fabien
parents: 3
diff changeset
    61
    newkw = get_new_kw_from_form(form)
13
7357230539d2 [svn r1547] Add count to keywords.
fabien
parents: 11
diff changeset
    62
    (ids, kws, cnt) = map(list,apply(zip, db.get_all_keywords()))
7
7cc3ab1c160b [svn r1541] Add new keywords entry.
fabien
parents: 3
diff changeset
    63
    for elem in newkw:
9
896b7c6de627 [svn r1543] Ajout des fonctions d'�ditions.
fabien
parents: 7
diff changeset
    64
    	if elem in kws:
896b7c6de627 [svn r1543] Ajout des fonctions d'�ditions.
fabien
parents: 7
diff changeset
    65
		kw.append(ids[kws.index(elem)])
896b7c6de627 [svn r1543] Ajout des fonctions d'�ditions.
fabien
parents: 7
diff changeset
    66
	else:
896b7c6de627 [svn r1543] Ajout des fonctions d'�ditions.
fabien
parents: 7
diff changeset
    67
		id = db.add_keyword(elem)
896b7c6de627 [svn r1543] Ajout des fonctions d'�ditions.
fabien
parents: 7
diff changeset
    68
		kw.append(id)
896b7c6de627 [svn r1543] Ajout des fonctions d'�ditions.
fabien
parents: 7
diff changeset
    69
    if bk.id == -1:
896b7c6de627 [svn r1543] Ajout des fonctions d'�ditions.
fabien
parents: 7
diff changeset
    70
	id = db.add_bookmark(bk)
896b7c6de627 [svn r1543] Ajout des fonctions d'�ditions.
fabien
parents: 7
diff changeset
    71
    else:
896b7c6de627 [svn r1543] Ajout des fonctions d'�ditions.
fabien
parents: 7
diff changeset
    72
    	db.update_bookmark(bk)
896b7c6de627 [svn r1543] Ajout des fonctions d'�ditions.
fabien
parents: 7
diff changeset
    73
	id = bk.id
3
9e7e8b678819 [svn r1530] Add and browse working.
fabien
parents:
diff changeset
    74
    db.update_keywords(id, kw)
9e7e8b678819 [svn r1530] Add and browse working.
fabien
parents:
diff changeset
    75
    kw = map(lambda e: { 'keyword': e[1] }, db.get_keywords(id)[1:])
9e7e8b678819 [svn r1530] Add and browse working.
fabien
parents:
diff changeset
    76
    main(bk, kw)