예제 #1
0
def render_detail(request, catalog):
    zvars = request.GET['zstate'].split(' ')
    zstate = request.GET['zstate'].replace(' ', '+')
    zgate_url = catalog.url

    (zresult, cookies) = zworker.request(zgate_url + '?' + zstate,
                                         cookies=request.COOKIES)
    zresults_body_element = zworker.get_body_element(zresult)
    zresults_body_element = zworker.change_links_href(zresults_body_element)

    #забираем xml представление записи
    (xml_record,
     cookies) = zworker.request(zgate_url + '?' + zstate.replace('1+F', '1+X'),
                                cookies=request.COOKIES)
    owners = []
    record_id = '0'
    st = request.GET['zstate']
    zsession = zvars[1]
    zoffset = zvars[3]
    save_document = False
    doc = None
    try:
        xml_record = ET.XML(xml_record)
        record_tree = xml_record.xpath('/record/bibliographicRecord/*')
        if record_tree:
            doc = xslt_transformer(record_tree[0])
            doc = doc_tree_to_dict(doc)


#        owners = get_document_owners(xml_record)
#        record_id = get_record_id(xml_record)
        save_document = True
    except SyntaxError as e:
        pass  #не будем добавлять держателей

    result = zworker.make_html_body_content(zresults_body_element)
    response = render(
        request,
        'zgate/search_results.html',
        {
            'doc': doc,
            'catalog_title': catalog.title,
            'search_results': result,
            #        'owners': owners,
            'record_id': record_id,
            'zsession': zsession,
            'zoffset': zoffset,
            'catalog': catalog,
            'save_document': save_document,
        })
    return set_cookies_to_response(cookies, response)
예제 #2
0
파일: views.py 프로젝트: isergey/libcms
def render_search_result(request, catalog, zresult=''):
    cookies = {}
    if zresult == '':
        url = catalog.url
        new_get = []
        for key in request.GET:
            if key == 'zstate': continue
            new_get.append(urlquote(key) + '=' + urlquote(request.GET[key]))

        new_get = '&'.join(new_get)

        if request.GET['zstate'] == 'action':
            url = url + '?' + new_get
        else:
            url = url + '?' + request.GET['zstate'].replace(' ', '+')

        (zresult, cookies) = zworker.request(url, cookies=request.COOKIES)
    try:
        zresults_body_element = zworker.get_body_element(zresult)
        zresults_body_element = zworker.change_form_action(zresults_body_element)

        zresults_body_element = zworker.change_links_href(zresults_body_element)
    except Exception:
        return HttpResponse(u'Некорректный url')
    result = zworker.make_html_body_content(zresults_body_element)

    response = render(request, 'zgate/search_results.html', {
        'catalog_title': catalog.title,
        'search_results': result
    })

    return  set_cookies_to_response(cookies, response)
예제 #3
0
파일: views.py 프로젝트: isergey/libcms
def draw_order(request, catalog_id='', slug=''):
    catalog = None
    if catalog_id:
        catalog = get_object_or_404(ZCatalog, id=catalog_id)
    elif slug:
        catalog = get_object_or_404(ZCatalog, latin_title=slug)
    else:
        raise Http404()

    id = request.GET.get('id', None)
    if not id:
        raise Http404()


    (zgate_form, cookies) = zworker.get_zgate_form(
        zgate_url=catalog.url,
        xml=catalog.xml,
        xsl=catalog.xsl,
        cookies=request.COOKIES,
        username='******',
        password='******',
    )
    session_id = zworker.get_zgate_session_id(zgate_form)
    form_params =  zworker.get_form_dict(zgate_form)
    del(form_params['scan'])
    form_params['use_1']='12:1.2.840.10003.3.1'
    form_params['term_1']= id
    result = zworker.request(catalog.url, data=form_params, cookies=cookies)

    if  result[0].decode('utf-8').find(u'id="%s' % (id,)) >= 0:
        link = catalog.url + '?preorder+%s+1+default+1+1.2.840.10003.5.28+rus' % session_id
        return redirect(link)
    return HttpResponse(u'Ok')
예제 #4
0
def draw_order(request, catalog_id='', slug=''):
    catalog = None
    if catalog_id:
        catalog = get_object_or_404(ZCatalog, id=catalog_id)
    elif slug:
        catalog = get_object_or_404(ZCatalog, latin_title=slug)
    else:
        raise Http404()

    id = request.GET.get('id', None)
    if not id:
        raise Http404()

    (zgate_form, cookies) = zworker.get_zgate_form(
        zgate_url=catalog.url,
        xml=catalog.xml,
        xsl=catalog.xsl,
        cookies=request.COOKIES,
        username='******',
        password='******',
    )
    session_id = zworker.get_zgate_session_id(zgate_form)
    form_params = zworker.get_form_dict(zgate_form)
    del (form_params['scan'])
    form_params['use_1'] = '12:1.2.840.10003.3.1'
    form_params['term_1'] = id
    result = zworker.request(catalog.url, data=form_params, cookies=cookies)

    if result[0].decode('utf-8').find(u'id="%s' % (id, )) >= 0:
        link = catalog.url + '?preorder+%s+1+default+1+1.2.840.10003.5.28+rus' % session_id
        return redirect(link)
    return HttpResponse(u'Ok')
예제 #5
0
def render_search_result(request, catalog, zresult=''):
    cookies = {}
    if zresult == '':
        url = catalog.url
        new_get = []
        for key in request.GET:
            if key == 'zstate': continue
            new_get.append(urlquote(key) + '=' + urlquote(request.GET[key]))

        new_get = '&'.join(new_get)

        if request.GET['zstate'] == 'action':
            url = url + '?' + new_get
        else:
            url = url + '?' + request.GET['zstate'].replace(' ', '+')

        (zresult, cookies) = zworker.request(url, cookies=request.COOKIES)
    try:
        zresults_body_element = zworker.get_body_element(zresult)
        zresults_body_element = zworker.change_form_action(
            zresults_body_element)

        zresults_body_element = zworker.change_links_href(
            zresults_body_element)
    except Exception:
        return HttpResponse(u'Некорректный url')
    result = zworker.make_html_body_content(zresults_body_element)

    response = render(request, 'zgate/search_results.html', {
        'catalog_title': catalog.title,
        'search_results': result
    })

    return set_cookies_to_response(cookies, response)
예제 #6
0
파일: views.py 프로젝트: isergey/chel
def render_detail(request, catalog):
    zvars = request.GET['zstate'].split(' ')
    zstate = request.GET['zstate'].replace(' ', '+')
    zgate_url = catalog.url

    (zresult, cookies) = zworker.request(zgate_url + '?' + zstate, cookies=request.COOKIES)
    zresults_body_element = zworker.get_body_element(zresult)
    zresults_body_element = zworker.change_links_href(zresults_body_element)

    #забираем xml представление записи
    (xml_record, cookies) = zworker.request(zgate_url + '?' + zstate.replace('1+F', '1+X'), cookies=request.COOKIES)
    owners = []
    record_id = '0'
    st = request.GET['zstate']
    zsession = zvars[1]
    zoffset = zvars[3]
    save_document = False
    doc = None
    try:
        xml_record = ET.XML(xml_record)
        record_tree = xml_record.xpath('/record/bibliographicRecord/*')
        if record_tree:
            doc = xslt_transformer(record_tree[0])
            doc = doc_tree_to_dict(doc)

        owners = get_document_owners(xml_record)

#        record_id = get_record_id(xml_record)
        save_document = True
    except SyntaxError as e:
        pass #не будем добавлять держателей
    districts = list(District.objects.all())

    result = zworker.make_html_body_content(zresults_body_element)
    response =  render(request, 'zgate/search_results.html', {
        'doc': doc,
        'catalog_title': catalog.title,
        'search_results': result,
        'owners': owners,
        'record_id': record_id,
        'zsession': zsession,
        'zoffset': zoffset,
        'catalog': catalog,
        'save_document': save_document,
        'districts': districts
    })
    return set_cookies_to_response(cookies, response)
예제 #7
0
파일: views.py 프로젝트: isergey/system
def render_detail(request, catalog):
    zvars = request.GET['zstate'].split(' ')
    zstate = request.GET['zstate'].replace(' ', '+')
    zgate_url = catalog.url

    (zresult, cookies) = zworker.request(zgate_url + '?' + zstate, cookies=request.COOKIES)
    zresults_body_element = zworker.get_body_element(zresult)
    zresults_body_element = zworker.change_links_href(zresults_body_element)

    #забираем xml представление записи
    try:
        (xml_record, cookies) = zworker.request(zgate_url + '?' + zstate.replace('1+F', '1+X'), cookies=request.COOKIES)
    except zworker.ZWorkerError as e:
        return HttpResponse(u'Ошибка подключения к поисковому серверу: ' + str(e))
    s = time.time();
    owners = []
    record_id = '0'
    st = request.GET['zstate']
    zsession = zvars[1]
    zoffset = zvars[3]
    save_document = False
    try:
        xml_record = ET.XML(xml_record)
        owners = get_document_owners(xml_record)
        record_id = get_record_id(xml_record)
        save_document = True
    except SyntaxError as e:
        pass #не будем добавлять держателей


    result = zworker.make_html_body_content(zresults_body_element)
    response =  render(request, 'zgate/search_results.html', {
        'catalog_title': catalog.title,
        'search_results': result,
        'owners': owners,
        'record_id': record_id,
        'zsession': zsession,
        'zoffset': zoffset,
        'catalog': catalog,
        'save_document': save_document,
    })
    return set_cookies_to_response(cookies, response)
예제 #8
0
def save_document(request):
    if request.method != 'POST':
        return HttpResponse('Only post requests')

    expiry_date = None
    if request.user.is_authenticated():
        owner_id = request.user.username
    elif request.session.session_key:
        owner_id = request.session.session_key
        expiry_date = request.session.get_expiry_date()
    else:
        return HttpResponse(
            json_error(
                u'Документ не может быть сохранен, возможно в Вашем браузере отключены cookies.'
            ))

    catalog = get_object_or_404(ZCatalog,
                                latin_title=request.POST['catalog_id'])
    zgate_url = catalog.url

    zstate = 'present+' + request.POST['zsession'] +\
             '+default+' + request.POST['zoffset'] +\
             '+1+X+1.2.840.10003.5.28+'+catalog.default_lang

    (xml_record, cookies) = zworker.request(zgate_url + '?' + zstate)

    try:
        tree = ET.XML(xml_record)
    except SyntaxError as e:
        return HttpResponse(
            json_error(u'Заказ не выполнен. Возможно, время сессии истекло'))

    comments = None
    if 'comments' in request.POST and request.POST['comments']:
        comments = request.POST['comments']

    try:
        doc = etree.XML(xml_record)
        result_tree = xslt_bib_draw_transformer(doc)
        full_document = unicode(result_tree)

        result_tree = short_transform(doc)
        short_document = unicode(result_tree)
    except Exception, e:
        raise e
예제 #9
0
파일: views.py 프로젝트: isergey/system
def save_document(request):
    if request.method != 'POST':
        return HttpResponse('Only post requests')


    expiry_date = None
    if request.user.is_authenticated():
        owner_id = request.user.username
    elif request.session.session_key:
        owner_id = request.session.session_key
        expiry_date = request.session.get_expiry_date()
    else:
        return HttpResponse(json_error(u'Документ не может быть сохранен, возможно в Вашем браузере отключены cookies.'))

    catalog = get_object_or_404(ZCatalog, latin_title=request.POST['catalog_id'])
    zgate_url = catalog.url

    zstate = 'present+' + request.POST['zsession'] +\
             '+default+' + request.POST['zoffset'] +\
             '+1+X+1.2.840.10003.5.28+'+catalog.default_lang
    try:
        (xml_record, cookies) = zworker.request(zgate_url + '?' + zstate)
    except zworker.ZWorkerError as e:
        return HttpResponse(u'Ошибка подключения к поисковому серверу: ' + str(e))

    try:
        tree = ET.XML(xml_record)
    except SyntaxError as e:
        return HttpResponse(json_error(u'Заказ не выполнен. Возможно, время сессии истекло'))

    comments = None
    if 'comments' in request.POST and request.POST['comments']:
        comments = request.POST['comments']

    try:
        doc = etree.XML(xml_record)
        result_tree = full_transform(doc)
        full_document = unicode(result_tree)

        result_tree = short_transform(doc)
        short_document = unicode(result_tree)
    except Exception, e:
        raise e
예제 #10
0
파일: views.py 프로젝트: isergey/libcms
def index(request, catalog_id='', slug=''):
    catalog = None
    if catalog_id:
        catalog = get_object_or_404(ZCatalog, id=catalog_id)
    elif slug:
        catalog = get_object_or_404(ZCatalog, latin_title=slug)
    else:
        raise Http404()


    checker = ObjectPermissionChecker(request.user)
    if not checker.has_perm('view_zcatalog', catalog):
        return HttpResponse(u'Доступ запрещен')

    if not catalog.can_search:
        return HttpResponse(u"Каталог не доступен для поиска.")

    zgate_url = catalog.url
    if request.method == 'POST' and 'SESSION_ID' in request.POST:

        log_search_request(request, catalog)
        (result, cookies) = zworker.request(zgate_url, data=request.POST, cookies=request.COOKIES)
        response =  render_search_result(request, catalog, zresult=result, )
        return set_cookies_to_response(cookies,response)

    else:
        if 'zstate' in request.GET: #а тут пользователь уже начал щелкать по ссылкам

            if 'ACTION' in request.GET and request.GET['ACTION'] == 'pq':
                return save_requests(request, catalog)

            url = zgate_url + '?' + request.GET['zstate'].replace(' ', '+')

            vars = request.GET['zstate'].split(' ')
            cookies = {}
            if vars[0] == 'form':

                try:
                    (zresult, cookies) = zworker.request(url, cookies=request.COOKIES)
                except Exception:
                    return HttpResponse(u'Получен некорретный ответ. Попробуйте осуществить поиск еще раз.')

                response = render_form(request, zresult=zresult, catalog=catalog)
                return set_cookies_to_response(cookies, response)

            elif vars[0] == 'present':
                if vars[4] == '1' and vars[5] == 'F':

                    try:
                        response = render_detail(request, catalog)
                    except Exception:
                        return HttpResponse(u'Сервер не может корректно отобразить результат. Повторите запрос еще раз.')

                    return set_cookies_to_response(cookies,response)

                response = render_search_result(request, catalog)
                return set_cookies_to_response(cookies,response)
            else:
                response = render_search_result(request, catalog)
                return set_cookies_to_response(cookies, response)
        else: #значит только инициализация формы
        #            if not catalog.can_search:
        #                return Htt

            (zgate_form, cookies) = zworker.get_zgate_form(
                zgate_url=zgate_url,
                xml=catalog.xml,
                xsl=catalog.xsl,
                cookies=request.COOKIES
            )

            response = render_form(request, zgate_form, catalog)
            return set_cookies_to_response(cookies, response)
예제 #11
0
def index(request, catalog_id='', slug=''):
    catalog = None
    if catalog_id:
        catalog = get_object_or_404(ZCatalog, id=catalog_id)
    elif slug:
        catalog = get_object_or_404(ZCatalog, latin_title=slug)
    else:
        raise Http404()

    checker = ObjectPermissionChecker(request.user)
    if not checker.has_perm('view_zcatalog', catalog):
        return HttpResponse(u'Доступ запрещен')

    if not catalog.can_search:
        return HttpResponse(u"Каталог не доступен для поиска.")

    zgate_url = catalog.url
    if request.method == 'POST' and 'SESSION_ID' in request.POST:

        log_search_request(request, catalog)
        (result, cookies) = zworker.request(zgate_url,
                                            data=request.POST,
                                            cookies=request.COOKIES)
        response = render_search_result(
            request,
            catalog,
            zresult=result,
        )
        return set_cookies_to_response(cookies, response)

    else:
        if 'zstate' in request.GET:  #а тут пользователь уже начал щелкать по ссылкам

            if 'ACTION' in request.GET and request.GET['ACTION'] == 'pq':
                return save_requests(request, catalog)

            url = zgate_url + '?' + request.GET['zstate'].replace(' ', '+')

            vars = request.GET['zstate'].split(' ')
            cookies = {}
            if vars[0] == 'form':

                try:
                    (zresult,
                     cookies) = zworker.request(url, cookies=request.COOKIES)
                except Exception:
                    return HttpResponse(
                        u'Получен некорретный ответ. Попробуйте осуществить поиск еще раз.'
                    )

                response = render_form(request,
                                       zresult=zresult,
                                       catalog=catalog)
                return set_cookies_to_response(cookies, response)

            elif vars[0] == 'present':
                if vars[4] == '1' and vars[5] == 'F':

                    try:
                        response = render_detail(request, catalog)
                    except Exception:
                        return HttpResponse(
                            u'Сервер не может корректно отобразить результат. Повторите запрос еще раз.'
                        )

                    return set_cookies_to_response(cookies, response)

                response = render_search_result(request, catalog)
                return set_cookies_to_response(cookies, response)
            else:
                response = render_search_result(request, catalog)
                return set_cookies_to_response(cookies, response)
        else:  #значит только инициализация формы
            #            if not catalog.can_search:
            #                return Htt

            (zgate_form,
             cookies) = zworker.get_zgate_form(zgate_url=zgate_url,
                                               xml=catalog.xml,
                                               xsl=catalog.xsl,
                                               cookies=request.COOKIES)

            response = render_form(request, zgate_form, catalog)
            return set_cookies_to_response(cookies, response)