[svn r1608] Correct the keywords bugs and some other in folder view, plus mutual
exclusion of selected keywords in dynamic view.
--- a/BUGS Fri Oct 24 17:55:22 2003 -0400
+++ b/BUGS Sun Oct 26 22:26:03 2003 -0500
@@ -1,2 +1,1 @@
-* There is a problem on keywords count for the add subfolder drop box
- in folder view.
+No known bugs.
--- a/ChangeLog Fri Oct 24 17:55:22 2003 -0400
+++ b/ChangeLog Sun Oct 26 22:26:03 2003 -0500
@@ -4,9 +4,10 @@
* Add folders view with Add.
* Add a default view between folders and dynamic view.
* Add a "remove keyword?" to the merge command.
+ * Mutual exclusion of selected keywords in dynamic view.
* Move things around so the code is a bit (really a bit) cleaner.
- -- Fabien Ninoles <fabien@tzone.org> Fri, 24 Oct 2003 17:54:14 -0400
+ -- Fabien Ninoles <fabien@tzone.org> Sun, 26 Oct 2003 22:23:14 -0500
xbelweb (0.1-4) unstable; urgency=low
--- a/dynamic.tmpl Fri Oct 24 17:55:22 2003 -0400
+++ b/dynamic.tmpl Sun Oct 26 22:26:03 2003 -0500
@@ -13,17 +13,21 @@
<select multiple name="sel" onchange="submit()"
size="<TMPL_VAR kw_size>">
<TMPL_LOOP Keywords>
+ <TMPL_UNLESS excluded>
<option value="<TMPL_VAR id>"
<TMPL_IF selected>selected</TMPL_IF>
><TMPL_VAR keyword> (<TMPL_VAR count>)</option>
+ </TMPL_UNLESS>
</TMPL_LOOP></select>
<label>Exclude:
<select multiple name="exc" onchange="submit()"
size="<TMPL_VAR kw_size>">
<TMPL_LOOP Keywords>
+ <TMPL_UNLESS selected>
<option value="<TMPL_VAR id>"
<TMPL_IF excluded>selected</TMPL_IF>
><TMPL_VAR keyword> (<TMPL_VAR count>)</option>
+ </TMPL_UNLESS>
</TMPL_LOOP></select>
</p>
<button>Lookup</button>
--- a/folders.tmpl Fri Oct 24 17:55:22 2003 -0400
+++ b/folders.tmpl Sun Oct 26 22:26:03 2003 -0500
@@ -3,14 +3,15 @@
<TMPL_INCLUDE NAME="headers.tmpl">
<body>
<h1><TMPL_VAR remote_user>'s XBelWeb</h1>
- <TMPL_UNLESS folder>
- <p><TMPL_LOOP Parents><a href="?view=folder;folder=<TMPL_VAR id>"><TMPL_VAR name></a>
- : </TMPL_LOOP></p>
- </TMPL_UNLESS>
<h2><TMPL_IF folder><TMPL_VAR name><TMPL_ELSE>Main Folder</TMPL_IF>
(<TMPL_VAR total>)</h2>
+ <TMPL_IF folder>
+ <p>Parents:
+ <TMPL_LOOP Parents><a href="?view=folder;folder=<TMPL_VAR id>"><TMPL_VAR name></a>
+ : </TMPL_LOOP></p>
+ </TMPL_IF>
<DIV class="subfolders">
- <form action="index.py" method="post" name="edit_folders">
+ <form action="index.py?view=folder;folder=<TMPL_VAR folder>" method="post" name="edit_folders">
<input type="hidden" name="folder" value="<TMPL_VAR folder>"/>
<input type="hidden" name="view" value="folder"/>
<input type="hidden" name="action" value="delete"/>
@@ -23,10 +24,10 @@
</ul>
</form>
</div>
- <form action="index.py" method="post" name="add_folder">
+ <form action="index.py?view=folder;folder=<TMPL_VAR folder>" method="post" name="add_folder">
+ <label>Add subfolder with keyword:
<input type="hidden" name="folder" value="<TMPL_VAR folder>"/>
<input type="hidden" name="view" value="folder"/>
- <label>Add subfolder with keyword:
<select name="sel" size="1">
<TMPL_LOOP Keywords>
<option value="<TMPL_VAR id>"
--- a/lib/dynamic.py Fri Oct 24 17:55:22 2003 -0400
+++ b/lib/dynamic.py Sun Oct 26 22:26:03 2003 -0500
@@ -1,6 +1,6 @@
#!/usr/bin/python
-from keywords import get_keywords, sort_keywords
+from keywords import get_keywords, sort_keywords, set_selection
from templates import Template
def process_index(bk, kw, pref):
@@ -9,7 +9,6 @@
tmpl.set("Bookmarks", bk)
kw = sort_keywords(kw, pref)
tmpl.set("Keywords", kw)
- tmpl.set("curl", get_curl())
tmpl.set("total", len(bk))
print tmpl.process()
--- a/lib/folders.py Fri Oct 24 17:55:22 2003 -0400
+++ b/lib/folders.py Sun Oct 26 22:26:03 2003 -0500
@@ -40,20 +40,23 @@
do_folder_action(db, form, folder)
parents = db.get_folder_parents_and_self(folder)
children = db.get_subfolders(folder)
- parents.reverse()
selection = map(lambda e: e['keyword'], parents)
exclusion = map(lambda e: e['keyword'], children)
- bookmarks = db.select_bookmarks(selection, exclusion)
+ parents.reverse()
+ folder = parents.pop()
+ bookmarks = db.select_bookmarks(selection)
selected_keywords = set_selection(db,
map(lambda e: e[0], bookmarks),
- selection, exclusion)
+ selection)
keywords = []
+ folders_keywords = selection +exclusion
for keyword in selected_keywords:
- if not keyword['id'] in exclusion:
+ if keyword['id'] not in folders_keywords:
keywords.append(keyword)
for child in children:
child['count'] = len(db.select_bookmarks(selection + [child['keyword']]))
+ bookmarks = db.select_bookmarks(selection, exclusion)
if len(bookmarks) <> 0:
bookmarks = db.get_bookmarks(map(lambda bk: bk[0], bookmarks))
bookmarks = map(lambda bk: bk.dict(), bookmarks)
- output(prefs, parents.pop(), parents, children, bookmarks, keywords)
+ output(prefs, folder, parents, children, bookmarks, keywords)
--- a/lib/keywords.py Fri Oct 24 17:55:22 2003 -0400
+++ b/lib/keywords.py Sun Oct 26 22:26:03 2003 -0500
@@ -1,4 +1,5 @@
def get_keywords(form, name):
+ """extract keywords associate with field name 'name'."""
kws = form.getvalue(name)
if not isinstance(kws, type([])):
if kws:
@@ -8,6 +9,7 @@
return map(int, kws)
def set_selection(db, bk, sel, exc = []):
+ """select keywords selected in the bookmarks list."""
if len(bk) > 0:
ids, names = map(list,apply(zip,db.get_keywords(bk)))
for key in exc:
--- a/lib/templates.py Fri Oct 24 17:55:22 2003 -0400
+++ b/lib/templates.py Sun Oct 26 22:26:03 2003 -0500
@@ -1,4 +1,9 @@
from htmltmpl import TemplateManager, TemplateProcessor
+from urlparse import urljoin
+from os import environ
+
+def get_curl():
+ return urljoin( 'http://' + environ["HTTP_HOST"] + environ["REQUEST_URI"], 'add.py')
class Template:
def __init__(self, template, prefs):
@@ -8,6 +13,7 @@
self.tproc.set("kw_size", prefs['keywords_box'])
self.tproc.set("kw_sort", prefs['keywords_sort'])
self.tproc.set("kw_reverse", prefs['keywords_reverse'])
+ self.tproc.set("curl", get_curl())
def set(self, name, variable):
self.tproc.set(name, variable)
def process(self):
--- a/lib/webutils.py Fri Oct 24 17:55:22 2003 -0400
+++ b/lib/webutils.py Sun Oct 26 22:26:03 2003 -0500
@@ -1,13 +1,8 @@
#!/usr/bin/python
-from os import environ
-from urlparse import urljoin
from dynamic import do_dynamic
from folders import do_folders
-def get_curl():
- return urljoin( 'http://' + environ["HTTP_HOST"] + environ["REQUEST_URI"], 'add.py')
-
def load_index(db, prefs, form = None):
if form:
if form.has_key('view'):