Example #1
0
File: views.py Project: tmars/DS_CW
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
Example #2
0
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/')
Example #3
0
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("/")