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)
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)
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')
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')
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)
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)
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)
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
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
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)
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)