search fields

This commit is contained in:
gauthiier 2017-11-06 14:11:18 +01:00
parent 874a27a8c9
commit 999dab3a7a
4 changed files with 17 additions and 5 deletions

View File

@ -39,7 +39,7 @@ class Archive():
def search_message(self, keyword, msg, index_str, results, field='content'): def search_message(self, keyword, msg, index_str, results, field='content'):
nbr_hits = 0 nbr_hits = 0
if msg[field].find(keyword) > 0: if msg[field] is not None and msg[field].lower().find(keyword.lower()) > 0:
nbr_hits += 1 nbr_hits += 1
results.append({ "index_str": index_str, "subject": msg['subject'], "date": msg['date'], "author_name": msg['author_name'], "url": msg['url'] }) results.append({ "index_str": index_str, "subject": msg['subject'], "date": msg['date'], "author_name": msg['author_name'], "url": msg['url'] })

View File

@ -90,11 +90,12 @@ def searh():
if len(request.args) < 1: if len(request.args) < 1:
k = archives.archives_data.keys() k = archives.archives_data.keys()
return render_template("search.html", archives=k) return render_template("search.html", archives=k, fields=['content', 'from(name)', 'from(email)'])
k_arg = request.args.get('keyword') k_arg = request.args.get('keyword')
l_arg = request.args.get('list') l_arg = request.args.get('list')
sl_arg = request.args.get('sublist') sl_arg = request.args.get('sublist')
f_arg = request.args.get('field')
if k_arg is None or k_arg.strip() == '': if k_arg is None or k_arg.strip() == '':
return "no keyword..." return "no keyword..."
@ -109,6 +110,11 @@ def searh():
if not sl_arg in archives.archives_data[l]: if not sl_arg in archives.archives_data[l]:
return "sublist '" + sl_arg + "' does not exist in list '" + l_arg + "'" return "sublist '" + sl_arg + "' does not exist in list '" + l_arg + "'"
if f_arg == "from(name)":
f_arg = 'author_name'
elif f_arg == "from(email)":
f_arg = 'from'
lists = [] lists = []
if l_arg == "all": if l_arg == "all":
for k in archives.archives_data.keys(): for k in archives.archives_data.keys():
@ -118,15 +124,16 @@ def searh():
################################ ################################
## ##
## need to cache all the below?? ## need to cache all the below
## ##
################################ ################################
results = [] results = []
for l in lists: for l in lists:
# this makes no sense...
a = search.archive.Archive() a = search.archive.Archive()
a.load(l) a.load(l)
results.append(a.search(k_arg)) results.append(a.search(keyword=k_arg, field=f_arg))
## -- sort results? ## -- sort results?
search_results = sorted(results, key=get_result_key) search_results = sorted(results, key=get_result_key)

View File

@ -15,6 +15,11 @@
<option value="{{ a }}">{{ a }}</option> <option value="{{ a }}">{{ a }}</option>
{% endfor %} {% endfor %}
</select> </select>
<select form="search" name="field">
{% for a in fields %}
<option value="{{ a }}">{{ a }}</option>
{% endfor %}
</select>
<input type="submit" value="search" id="submit"> <input type="submit" value="search" id="submit">
<div id="loading">Loading...</div> <div id="loading">Loading...</div>
</form> </form>