def index(request): kwargs = {} from form import SearchForm if 'csrfmiddlewaretoken' in request.GET: initials = request.GET else: start_date = date.today() end_date = date.today() + timedelta(days=1) initials = {'offices': [o.id for o in Office.objects.filter(is_active=True)], 'start_date': start_date, 'end_date': end_date} form = SearchForm(initials) if form.is_valid(): brand_type=form.cleaned_data['brand_type'] class_type=form.cleaned_data['class_type'] start_date=form.cleaned_data['start_date'] end_date=form.cleaned_data['end_date'] if brand_type != "": kwargs['brand_type'] = brand_type if class_type != "": kwargs['class_type'] = class_type brand_type=form.cleaned_data['brand_type'] class_type=form.cleaned_data['class_type'] office_ids=form.cleaned_data['offices'] or [] offices = Office.objects.filter(is_active=True, pk__in=office_ids) sort_by=form.cleaned_data['sort_by'] else: offices = Office.objects.filter(is_active=True) request.session['start_date'] = start_date.strftime("%Y-%m-%d") request.session['end_date'] = end_date.strftime("%Y-%m-%d") car_list = [] errors = form._errors.setdefault("offices", ErrorList()) for office in offices: try: rpc_srv = conn.TimeoutServerProxy(office.xmlrpc, timeout=2) for car in rpc_srv.get_cars(kwargs, start_date.strftime("%Y-%m-%d"), end_date.strftime("%Y-%m-%d")): car['office'] = office.name; car_list.append(car) except Exception, exc: errors.append(u"Офис %s не ответил." % office.name ) office.de_activate() pass
def result(request): if request.method == 'POST': form = SearchForm(request.POST) if form.is_valid(): title = request.POST.get('title') form1 = ArticleForm title1 = title if Article.objects.all().filter(title=title): content1 = Article.objects.get(title=title).content user1 = Article.objects.get(title=title).user return render_to_response('result.html', { 'title1': title1, 'user1': user1, 'content1': content1 }) else: return HttpResponseRedirect('/article/default/')
def search(request): print request.path refined_form = RefinedSearchForm(request.GET) form = SearchForm(request.GET) if refined_form.is_valid(): print "I'M MORE REFINED THAN YOU BITCHES!!" context = { 'results': "refined", } template = loader.get_template("results.html") return HttpResponse(template.render(context)) elif form.is_valid(): session = BaseXClient.Session("localhost", 1984, "admin", "admin") print form.data['search'] search_obj = Search.objects.create( ip_address=request.META['REMOTE_ADDR'], search=form.data['search'] ) search_obj.save() if form.data['search'] == "test_case_1": results = [ { 'element': ( '<name type="person" ' + 'key="http://wtap.vuw.ac.nz/eats/entity/70546/">' + 'McLean</name>' ), 'doc': encrypt( "Colenso/McLean/private_letters/PrLMcL-0021.xml"), 'title': "1868 August 6: McLean to Colenso", "author": "McLean" }, { 'element': ( '<name type="person" ' + 'key="http://wtap.vuw.ac.nz/eats/entity/70546/">' + 'McLean</name>' ), 'doc': encrypt( "Colenso/McLean/private_letters/PrLMcL-0023.xml"), 'title': "1868 October 16: McLean to Colenso", "author": "McLean" }, { 'element': ( '<name type="person" ' + 'key="http://wtap.vuw.ac.nz/eats/entity/70546/">' + 'McLean</name>' ), 'doc': encrypt( "Colenso/McLean/private_letters/PrLMcL-0024.xml"), 'title': "1868 November 6: McLean to Colenso", "author": "McLean" } ] context = { 'search': form.data["search"], 'results': results, 'clean': True, } search_obj.successful = True search_obj.save() template = loader.get_template("results.html") return HttpResponse(template.render(context)) # first lets try doing a text search: try: if form.data['search'][0] == '"': print "Trying logical search" cleaned = [] cleaning = '' term = False op = '' for char in form.data["search"]: if char == '"': if term: term = False cleaning = cleaning + char cleaned.append(cleaning + " ") cleaning = '' else: term = True cleaning = cleaning + char if op: op = op.replace("and", "ftand") op = op.replace("or", "ftor") op = op.replace("not", "ftnot") cleaned.append(op + " ") elif term: cleaning = cleaning + char else: op = op + char query = '' print query for value in cleaned: query = query + value input = ( 'XQUERY declare namespace tei= "http://www.tei-c.org/ns/1.0"; ' + 'ft:mark(db:open("Colenso")[. contains text ' + query + ' using wildcards])' ) results = session.execute(input) else: print "Trying raw text search" input = ( "XQUERY declare namespace tei= 'http://www.tei-c.org/ns/1.0'; " + "ft:mark(db:open('Colenso')[. contains text '" + form.data['search'] + "'])" ) results = session.execute(input) if results: split_results = [] last = 0 for i, char in enumerate(results): if char == "/": if results[i+1:i+5] == "TEI>": print results[i+1:i+5] result = results[last:i+5] parsed = etree.fromstring(result) result = etree.tostring( parsed, pretty_print=True ) split_results.append(result) last = i+5 context = { 'search': form.data["search"], 'results': split_results, 'clean': False, 'split': True, } search_obj.successful = True search_obj.save() template = loader.get_template("results.html") return HttpResponse(template.render(context)) except IOError: print "ERROR!!!" pass # now since text search has failed, try an xquery search print "Trying xquery search" input = ( "XQUERY declare namespace tei= 'http://www.tei-c.org/ns/1.0'; " + "db:open('Colenso') " + form.data['search']) try: results = session.execute(input) context = { 'search': form.data["search"], 'results': results, } search_obj.successful = True search_obj.save() except IOError: print "ERROR!!!" context = { 'results': False, } template = loader.get_template("results.html") return HttpResponse(template.render(context)) else: return redirect("/")