Пример #1
0
    def test_future_etree_element(self):
        d = Doc('a')
        f = Future()
        f.set_result(etree.Element('b'))
        d.put(f)

        self.assertXmlEqual(d.to_etree_element(), """<?xml version='1.0' encoding='utf-8'?>\n<a><b/></a>""")
Пример #2
0
        def put_block(name, query_suffix=''):
            text = verstka_query + query_suffix;
            block = Doc(name)

            block.put(Doc('text').put(urllib.quote(text.encode('utf-8'))))
            block.put(Doc('last').put(self.get_url_retry(config.api_host + '/1/xml/vacancy/search/', {'text': text, 'items': '5', 'order':'0',  'area':'1', 'professionalAreaId':'1'})))

            def put_median(m):
                median_block = Doc('median')
                median_block.put(str(m))
                block.put(median_block)
                
            def count_median_cb(xml, response):
                if xml:
                    m = count_median(xml)
                    if m:
                        storage.store_today(name, m)
                        put_median(m)

            if storage.has_today(name):
                self.log.debug('show median using cached value')
                put_median(storage.get_today(name))
            else:
                self.log.debug('make search request to count median')
                self.get_url_retry(config.api_host + '/1/xml/vacancy/search/', {'text': text, 'order':'0', 'notWithoutSalary': 'true', 'items': '40', 'area':'1', 'professionalAreaId':'1'}, callback=count_median_cb)
            
            self.doc.put(block)
Пример #3
0
 def get_page(self):
     self.set_xsl('search.xsl')
     
     handler.do_pagedata(self)
     
     if (self.get_argument('salary', None)):
       salary = 'true'
     else:
       salary = None
     
     search = Doc('search')
     search.put(self.get_url_retry(self.config.api_host + '/1/xml/vacancy/search/',
                             {
                              'text': utils.parse_text(self.get_argument('text', None)),
                              'page': self.get_argument('page', None),
                              'salary': self.get_argument('salary', None),
                              'currency': 'RUR',
                              'field': '1',
                              'onlysalary': self.get_argument('onlysalary', None),
                              'area':'1',
                              'items': '20',
                              'metro': self.get_argument('metro', None),
                              'specialization': self.get_argument('specialization', None),
                              'employment': self.get_argument('employment', None),
                              'order': self.get_argument('order', None),
                              'clusters': 'true'
                             })
     )
     self.doc.put(search)
    def get_page(self):
        self_uri = self.request.host + self.request.path
        invalid_xml = self.get_argument('invalid', 'false')

        self.doc.put(Doc('a').put('aaa'))
        self.doc.put(self.post_url(self_uri, data={'invalid': invalid_xml}))
        self.doc.put(Doc('c'))
Пример #5
0
 def get_page(self):
     self.set_header('Content-Type', 'application/rss+xml; charset=UTF-8')
     self.set_xsl('rss/search.xsl')
     
     handler.do_pagedata(self)
     
     if (self.get_argument('salary', None)):
       salary = 'true'
     else:
       salary = None
     
     search = Doc('search')
     search.put(self.get_url_retry(self.config.api_host + '/1/xml/vacancy/search/',
                             {
                              'text': utils.parse_text(self.get_argument('text', None)),
                              'salary': self.get_argument('salary', None),
                              'field': '1',
                              'onlysalary': self.get_argument('onlysalary', None),
                              'area':'1',
                              'items': '20',
                              'metro': self.get_argument('metro', None),
                              'specialization': self.get_argument('specialization', None),
                              'employment': self.get_argument('employment', None),
                              'order': self.get_argument('order', None),
                             })
     )
     self.doc.put(search)
Пример #6
0
    def test_future_list(self):
        d = Doc('a')
        f = Future()
        f.set_result([etree.Comment('ccc'), etree.Element('bbb')])
        d.put(f)

        self.assertXmlEqual(d.to_etree_element(), """<?xml version='1.0'?>\n<a><!--ccc--><bbb/></a>""")
Пример #7
0
    def get_page(self):
        self.set_header('Content-Type', 'application/rss+xml; charset=UTF-8')
        self.set_xsl('rss/search.xsl')

        handler.do_pagedata(self)

        if (self.get_argument('salary', None)):
            salary = 'true'
        else:
            salary = None

        search = Doc('search')
        search.put(
            self.get_url_retry(
                self.config.api_host + '/1/xml/vacancy/search/', {
                    'text': utils.parse_text(self.get_argument('text', None)),
                    'salary': self.get_argument('salary', None),
                    'field': '1',
                    'onlysalary': self.get_argument('onlysalary', None),
                    'area': '1',
                    'items': '20',
                    'metro': self.get_argument('metro', None),
                    'specialization': self.get_argument(
                        'specialization', None),
                    'employment': self.get_argument('employment', None),
                    'order': self.get_argument('order', None),
                }))
        self.doc.put(search)
Пример #8
0
    def test_root_node(self):
        d = Doc(root_node=etree.Element('doc'))
        d.put(etree.Element('test1'))

        self.assertXmlEqual(
            d.to_etree_element(),
            b"""<?xml version='1.0' encoding='utf-8'?>\n<doc><test1/></doc>""")
Пример #9
0
    def test_root_node(self):
        d = Doc(root_node=etree.Element('doc'))
        d.put(etree.Element('test1'))

        self.assertXmlEqual(
            d.to_etree_element(), """<?xml version='1.0' encoding='utf-8'?>\n<doc><test1/></doc>"""
        )
Пример #10
0
    def test_future_etree_element(self):
        d = Doc('a')
        f = Future()
        f.set_result(etree.Element('b'))
        d.put(f)

        self.assertXmlAlmostEqual(d.to_etree_element(), """<?xml version='1.0' encoding='utf-8'?>\n<a><b/></a>""")
Пример #11
0
    def get_page(self):
        self.set_xsl('search.xsl')

        handler.do_pagedata(self)

        if (self.get_argument('salary', None)):
            salary = 'true'
        else:
            salary = None

        search = Doc('search')
        search.put(
            self.get_url_retry(
                self.config.api_host + '/1/xml/vacancy/search/', {
                    'text': utils.parse_text(self.get_argument('text', None)),
                    'page': self.get_argument('page', None),
                    'salary': self.get_argument('salary', None),
                    'currency': 'RUR',
                    'field': '1',
                    'onlysalary': self.get_argument('onlysalary', None),
                    'area': '1',
                    'items': '20',
                    'metro': self.get_argument('metro', None),
                    'specialization': self.get_argument(
                        'specialization', None),
                    'employment': self.get_argument('employment', None),
                    'order': self.get_argument('order', None),
                    'clusters': 'true'
                }))
        self.doc.put(search)
Пример #12
0
    def test_doc_nested(self):
        a = Doc('a')
        b = Doc('b')
        a.put(b)

        self.assertXmlEqual(
            a.to_etree_element(), b"""<?xml version='1.0' encoding='utf-8'?>\n<a><b/></a>"""
        )
Пример #13
0
    def test_future_list(self):
        d = Doc('a')
        f = Future()
        f.set_result([etree.Comment('ccc'), etree.Element('bbb')])
        d.put(f)

        self.assertXmlEqual(
            d.to_etree_element(),
            u"""<?xml version='1.0'?>\n<a><!--ccc--><bbb/></a>""")
Пример #14
0
    def test_future_simple(self):
        d = Doc('a')
        f = Future()
        d.put(f)

        self.assertXmlEqual(d.to_etree_element(), """<?xml version='1.0' encoding='utf-8'?>\n<a/>""")

        f.set_result('test')

        self.assertXmlEqual(d.to_etree_element(), """<?xml version='1.0' encoding='utf-8'?>\n<a>test</a>""")
Пример #15
0
    def test_future_list(self):
        d = Doc('a')
        f = Future()
        f.set_result([etree.Comment('ccc'), etree.Element('bbb')])
        d.put(f)

        self.assertEqual(
            d.to_string(),
            """<?xml version='1.0' encoding='utf-8'?>\n<a><!--ccc--><bbb/></a>"""
        )
Пример #16
0
    def test_future_string_value(self):
        d = Doc('a')
        f = Future()
        result = self.get_test_request_result()
        result._content_type = 'text'
        result._data = 'plain_text'
        f.set_result(result)
        d.put(f)

        self.assertXmlEqual(d.to_etree_element(),
                            """<?xml version='1.0'?>\n<a></a>""")
Пример #17
0
    def test_failed_future(self):
        d = Doc('a')
        f = Future()
        result = RequestResult()
        result.set_exception(FailedRequestException(reason='error', code='code'))
        f.set_result(result)
        d.put(f)

        self.assertXmlEqual(
            d.to_etree_element(), u"""<?xml version='1.0'?>\n<a><error reason="error" code="code"/></a>"""
        )
Пример #18
0
    def test_failed_future(self):
        d = Doc('a')
        f = Future()
        result = self.get_test_request_result()
        result._data_parse_error = DataParseError(reason='error', code='code')
        f.set_result(result)
        d.put(f)

        self.assertXmlEqual(
            d.to_etree_element(), """<?xml version='1.0'?>\n<a><error reason="error" code="code"/></a>"""
        )
Пример #19
0
    def test_future_string_value(self):
        d = Doc('a')
        f = Future()
        result = self.get_test_request_result()
        result._content_type = 'text'
        result._data = 'plain_text'
        f.set_result(result)
        d.put(f)

        self.assertXmlEqual(
            d.to_etree_element(), """<?xml version='1.0'?>\n<a></a>"""
        )
Пример #20
0
    def test_failed_future(self):
        d = Doc('a')
        f = Future()
        result = RequestResult()
        result.set_exception(FailedRequestException(reason='error', code='code'))
        f.set_result(result)
        d.put(f)

        self.assertXmlAlmostEqual(
            d.to_etree_element(),
            """<?xml version='1.0' encoding='utf-8'?>\n<a><error reason="error" code="code"/></a>"""
        )
Пример #21
0
    def test_failed_future(self):
        d = Doc('a')
        f = Future()
        result = self.get_test_request_result()
        result._data_parse_error = DataParseError(reason='error', code='code')
        f.set_result(result)
        d.put(f)

        self.assertXmlEqual(
            d.to_etree_element(),
            """<?xml version='1.0'?>\n<a><error reason="error" code="code"/></a>"""
        )
Пример #22
0
    def test_doc_nested(self):
        a = Doc('a')
        b = Doc('b')
        b.put('test')
        a.put(b)

        self.assertEqual(
            a.to_string(),
            """<?xml version='1.0' encoding='utf-8'?>\n<a><b>test</b></a>""")
Пример #23
0
    def test_other_types(self):
        a = Doc('a')
        a.put(1)
        a.put(2.0)
        a.put((3, 4, 5))

        self.assertEqual(
            a.to_string(),
            """<?xml version='1.0' encoding='utf-8'?>\n<a>12.0(3, 4, 5)</a>""")
Пример #24
0
    def test_doc_nested(self):
        a = Doc('a')
        b = Doc('b')
        b.put('test')
        a.put(b)

        self.assertXmlEqual(
            a.to_etree_element(),
            b"""<?xml version='1.0' encoding='utf-8'?>\n<a><b>test</b></a>""")
Пример #25
0
    def test_root_node_doc(self):
        d1 = Doc('a')
        d1.put(etree.Comment('1'))

        d2 = Doc(root_node=d1)
        d2.put(etree.Comment('2'))

        self.assertXmlAlmostEqual(
            d2.to_etree_element(), """<?xml version='1.0' encoding='utf-8'?>\n<a><!--1--><!--2--></a>"""
        )
Пример #26
0
    def test_other_types(self):
        a = Doc('a')
        a.put(1)
        a.put(2.0)
        a.put((3, 4, 5))

        self.assertEqual(a.to_string(), """<?xml version='1.0' encoding='utf-8'?>\n<a>12.0(3, 4, 5)</a>""")
Пример #27
0
    def test_serializable(self):
        class Serializable(object):
            def __init__(self, tag, value):
                self.tag = tag
                self.value = value

            def to_etree_element(self):
                result = etree.Element(self.tag)
                result.text = self.value
                return result

        a = Doc('a')
        a.put(Serializable('testNode', 'vally'))
        self.assertEqual(a.to_string(), """<?xml version='1.0' encoding='utf-8'?>\n<a><testNode>vally</testNode></a>""")
Пример #28
0
    def get_page(self):
        self_uri = self.request.host + self.request.path
        invalid_xml = self.get_argument('invalid', 'false')

        self.doc.put(etree.fromstring('<a>aaa</a>'))
        self.doc.put(self.post_url(self_uri, data={'invalid': invalid_xml}))
        self.doc.put(Doc('c'))
Пример #29
0
    def test_simple(self):
        d = Doc('a')

        self.assertTrue(d.is_empty())

        d.put('test')
        d.put(u'тест')

        self.assertFalse(d.is_empty())
        self.assertXmlEqual(
            d.to_etree_element(),
            b"""<?xml version='1.0' encoding='utf-8'?>\n<a>test\xd1\x82\xd0\xb5\xd1\x81\xd1\x82</a>"""
        )
Пример #30
0
    def test_serializable(self):
        class Serializable(object):
            def __init__(self, tag, value):
                self.tag = tag
                self.value = value

            def to_etree_element(self):
                result = etree.Element(self.tag)
                result.text = self.value
                return result

        a = Doc('a')
        a.put(Serializable('testNode', 'vally'))
        self.assertEqual(
            a.to_string(),
            """<?xml version='1.0' encoding='utf-8'?>\n<a><testNode>vally</testNode></a>"""
        )
Пример #31
0
        def put_block(id, name, query_suffix=''):
            text = verstka_query + query_suffix;
            block = Doc('tab')

            block.put(Doc('name').put(name))
            block.put(Doc('text').put(urllib.quote(text.encode('utf-8'))))
            block.put(Doc('last').put(self.get_url_retry(self.config.api_host + '/1/xml/vacancy/search/', {'text': utils.parse_text(text), 'items': '5', 'order':'0',  'area':'1', 'professionalAreaId':'1'})))

            def put_median(m):
                median_block = Doc('median')
                median_block.put(str(m))
                block.put(median_block)
                
            def count_median_cb(xml, response):
                if xml is not None:
                    m = count_median(xml)
                    if m:
                        #median_storage.store_today(id, m, self)
                        put_median(m)
                        
            
#            self.log.debug('+++++++++++++++++++++++++++++++++++++++')
#            self.log.debug(storage.get_last_week_salaries(id))
            # if median_storage.has_today(id):
            #     self.log.debug('show median using cached value')
            #     put_median(storage.get_today(id))
            # else:
            self.log.debug('make search request to count median')
            self.get_url_retry(self.config.api_host + '/1/xml/vacancy/search/', {'text': utils.parse_text(text), 'order':'0', 'notWithoutSalary': 'true', 'items': '40', 'area':'1', 'professionalAreaId':'1'}, callback=count_median_cb)
            
            tabs.put(block)
Пример #32
0
    def test_simple(self):
        d = Doc('a')

        self.assertTrue(d.is_empty())

        d.put(None)

        self.assertXmlEqual(d.to_etree_element(), b'<a/>')

        node = etree.Element('b')
        node.text = u'тест'
        d.put(node)

        self.assertFalse(d.is_empty())
        self.assertXmlEqual(
            d.to_etree_element(),
            b"""<?xml version='1.0' encoding='utf-8'?>\n<a><b>\xd1\x82\xd0\xb5\xd1\x81\xd1\x82</b></a>"""
        )
Пример #33
0
    def test_simple(self):
        d = Doc('a')

        self.assertTrue(d.is_empty())

        d.put('test')

        self.assertFalse(d.is_empty())
        self.assertXmlAlmostEqual(d.to_etree_element(), """<?xml version='1.0' encoding='utf-8'?>\n<a>test</a>""")
Пример #34
0
    def test_simple(self):
        d = Doc('a')

        self.assertTrue(d.is_empty())

        d.put('test')
        d.put(u'тест')

        self.assertFalse(d.is_empty())
        self.assertXmlEqual(
            d.to_etree_element(),
            b"""<?xml version='1.0' encoding='utf-8'?>\n<a>test\xd1\x82\xd0\xb5\xd1\x81\xd1\x82</a>"""
        )
Пример #35
0
    def test_root_node_doc(self):
        d1 = Doc('a')
        d1.put(etree.Comment('1'))

        d2 = Doc(root_node=d1)
        d2.put(etree.Comment('2'))

        self.assertXmlEqual(
            d2.to_etree_element(), """<?xml version='1.0' encoding='utf-8'?>\n<a><!--1--><!--2--></a>"""
        )
Пример #36
0
    def test_simple(self):
        d = Doc('a')

        self.assertTrue(d.is_empty())

        d.put(None)

        self.assertXmlEqual(d.to_etree_element(), b'<a/>')

        node = etree.Element('b')
        node.text = 'тест'
        d.put(node)

        self.assertFalse(d.is_empty())
        self.assertXmlEqual(
            d.to_etree_element(),
            b"""<?xml version='1.0' encoding='utf-8'?>\n<a><b>\xd1\x82\xd0\xb5\xd1\x81\xd1\x82</b></a>"""
        )
Пример #37
0
 def get_page(self):
     self.set_xsl('search.xsl')
     
     handler.do_pagedata(self)
     
     if (self.get_argument('salary', None)):
       salary = 'true'
     else:
       salary = None
     
     search = Doc('search')
     search.put(self.get_url_retry(config.api_host + '/1/xml/vacancy/search/',
                             {
                              'text': self.get_argument('text', None),
                              'page': self.get_argument('page', None),
                              'salary': self.get_argument('salary', None),
                              'notWithoutSalary': salary,
                              'area':'1',
                              'items': '20',
                              'professionalAreaId':'1',
                              'items': '20',
                             })
     )
     self.doc.put(search)
Пример #38
0
    def test_future_simple(self):
        d = Doc('a')
        f = Future()
        d.put(f)

        self.assertXmlAlmostEqual(d.to_etree_element(), """<?xml version='1.0' encoding='utf-8'?>\n<a/>""")

        f.set_result('test')

        self.assertXmlAlmostEqual(d.to_etree_element(), """<?xml version='1.0' encoding='utf-8'?>\n<a>test</a>""")
Пример #39
0
    def test_nodes_and_text(self):
        a = Doc('a')
        a.put('1')
        a.put(Doc('b'))
        a.put('2')
        a.put(Doc('c'))
        a.put('3')

        self.assertXmlEqual(
            a.to_etree_element(),
            b"""<?xml version='1.0' encoding='utf-8'?>\n<a>1<b/>2<c/>3</a>""",
            check_tags_order=True)
Пример #40
0
    def test_nodes_and_text(self):
        a = Doc('a')
        a.put('1')
        a.put(Doc('b'))
        a.put('2')
        a.put(Doc('c'))
        a.put('3')

        self.assertEqual(
            a.to_string(),
            """<?xml version='1.0' encoding='utf-8'?>\n<a>1<b/>2<c/>3</a>""")
Пример #41
0
 def test_string_as_root_node(self):
     d = Doc(root_node='a')
     self.assertXmlEqual(
         d.to_etree_element(),
         b"""<?xml version='1.0' encoding='utf-8'?>\n<a></a>""")
Пример #42
0
    def test_root_node_invalid(self):
        d = Doc(root_node='a')
        d.put(etree.Element('a'))

        self.assertRaises(ValueError, d.to_etree_element)
Пример #43
0
 def put_median(m):
     median_block = Doc('median')
     median_block.put(str(m))
     block.put(median_block)
Пример #44
0
 def put_median(m):
     median_block = Doc('median')
     median_block.put(str(m))
     block.put(median_block)
Пример #45
0
    def test_other_types(self):
        a = Doc('a')
        a.put('1')

        self.assertRaises(ValueError, a.to_string)
Пример #46
0
    def test_nodes_and_text(self):
        a = Doc('a')
        a.put('1')
        a.put(Doc('b'))
        a.put('2')
        a.put(Doc('c'))
        a.put('3')

        self.assertXmlEqual(
            a.to_etree_element(), """<?xml version='1.0' encoding='utf-8'?>\n<a>1<b/>2<c/>3</a>""",
            check_tags_order=True
        )
Пример #47
0
    def get_page(self):
        self.set_xsl('index.xsl')

        #median_storage = storage.MedianSalaryStorage(self.config.db_filename)

        tabs = Doc('tabs')
        self.doc.put(tabs)

        verstka_query = u'.verstka '

        def put_block(id, name, query_suffix=''):
            text = verstka_query + query_suffix
            block = Doc('tab')

            block.put(Doc('name').put(name))
            block.put(Doc('text').put(urllib.quote(text.encode('utf-8'))))
            block.put(
                Doc('last').put(
                    self.get_url_retry(
                        self.config.api_host + '/1/xml/vacancy/search/', {
                            'text': utils.parse_text(text),
                            'items': '5',
                            'order': '0',
                            'area': '1',
                            'professionalAreaId': '1'
                        })))

            def put_median(m):
                median_block = Doc('median')
                median_block.put(str(m))
                block.put(median_block)

            def count_median_cb(xml, response):
                if xml is not None:
                    m = count_median(xml)
                    if m:
                        #median_storage.store_today(id, m, self)
                        put_median(m)

#            self.log.debug('+++++++++++++++++++++++++++++++++++++++')
#            self.log.debug(storage.get_last_week_salaries(id))
# if median_storage.has_today(id):
#     self.log.debug('show median using cached value')
#     put_median(storage.get_today(id))
# else:

            self.log.debug('make search request to count median')
            self.get_url_retry(self.config.api_host + '/1/xml/vacancy/search/',
                               {
                                   'text': utils.parse_text(text),
                                   'order': '0',
                                   'notWithoutSalary': 'true',
                                   'items': '40',
                                   'area': '1',
                                   'professionalAreaId': '1'
                               },
                               callback=count_median_cb)

            tabs.put(block)

        put_block('htmlcss', u'HTML и CSS')
        put_block('javascript', u'Javascript', u'javascript')
        put_block('jquery', u'jQuery', u'jquery')
        put_block('xslt', u'XSLT', u'xslt')
        put_block('php', u'PHP', u'php')
        put_block('perl', u'Perl', u'perl')

        for employer_id in [
                '1455', '1740', '15478', '43612', '8620', '1057', '301',
                '4236', '6421', '2180'
        ]:
            self.doc.put(
                Doc('employer').put(
                    self.get_url_retry(
                        self.config.api_host +
                        '/1/xml/employer/{0}/'.format(employer_id))))
Пример #48
0
        def put_block(id, name, query_suffix=''):
            text = verstka_query + query_suffix
            block = Doc('tab')

            block.put(Doc('name').put(name))
            block.put(Doc('text').put(urllib.quote(text.encode('utf-8'))))
            block.put(
                Doc('last').put(
                    self.get_url_retry(
                        self.config.api_host + '/1/xml/vacancy/search/', {
                            'text': utils.parse_text(text),
                            'items': '5',
                            'order': '0',
                            'area': '1',
                            'professionalAreaId': '1'
                        })))

            def put_median(m):
                median_block = Doc('median')
                median_block.put(str(m))
                block.put(median_block)

            def count_median_cb(xml, response):
                if xml is not None:
                    m = count_median(xml)
                    if m:
                        #median_storage.store_today(id, m, self)
                        put_median(m)

#            self.log.debug('+++++++++++++++++++++++++++++++++++++++')
#            self.log.debug(storage.get_last_week_salaries(id))
# if median_storage.has_today(id):
#     self.log.debug('show median using cached value')
#     put_median(storage.get_today(id))
# else:

            self.log.debug('make search request to count median')
            self.get_url_retry(self.config.api_host + '/1/xml/vacancy/search/',
                               {
                                   'text': utils.parse_text(text),
                                   'order': '0',
                                   'notWithoutSalary': 'true',
                                   'items': '40',
                                   'area': '1',
                                   'professionalAreaId': '1'
                               },
                               callback=count_median_cb)

            tabs.put(block)
Пример #49
0
 def test_string_as_root_node(self):
     d = Doc(root_node='a')
     self.assertXmlEqual(d.to_etree_element(), """<?xml version='1.0' encoding='utf-8'?>\n<a></a>""")
Пример #50
0
    def test_other_types(self):
        a = Doc('a')
        a.put('1')

        self.assertRaises(ValueError, a.to_string)