regex hack to get 2 & 3 letter words to work
[ebuildfind.git] / views.py
blob0317b71365d7cbc1bca8eebe43f60f296bab957e
1 from commands.whoosh_manager import WhooshEbuildManager
2 from django.shortcuts import render_to_response
3 from planet import Parser
5 from models import Ebuild, Index
7 import re, string
9 PUNCTUATION_REGEX = re.compile('[' + re.escape(string.punctuation.replace("-", "").replace("+", "")) + ']')
11 def index(request):
12 GPlanet = Parser("http://planet.gentoo.org/atom.xml")
13 GOverlays = Parser("http://overlays.gentoo.org/rss20.xml")
14 GNews = Parser("http://www.gentoo.org/rdf/en/gentoo-news.rdf")
15 identica = Parser("https://identi.ca/api/laconica/groups/timeline/gentoo.atom")
17 response = dict()
19 response['identica'] = identica
20 response['GNews'] = GNews
21 response['GOverlays'] = GOverlays
22 response['GPlanet'] = GPlanet
24 return render_to_response("ebuildfind/index.html", response)
27 overlay = {}
29 def add_overlay(name, description):
30 overlay["name"] = description
32 def search(request):
33 response = {"error":"Query should be at least 3 caracters long"}
34 query = ""
36 if request.method == 'GET':
37 try:
38 query = request.GET["q"]
39 query = PUNCTUATION_REGEX.sub(' ', query)
40 except:
41 pass
43 if(len(query)>3):
44 response["error"] = False
45 response["query"] = query
46 results = Ebuild.search(Ebuild, query)
47 response["results"] = results
48 response["nb"] = len(results)
50 elif len(query) in (2, 3):
51 response["error"] = False
52 response["query"] = query
53 results = Ebuild.regex(Ebuild, query)
54 response["results"] = results
55 response["nb"] = len(results)
57 return render_to_response("ebuildfind/search.html", response)