def get_agent_by_html(html):
    # print tostring(html)
    try:
        name = html.cssselect('a')[0].get('title').encode(
            'ascii', 'ignore').decode('ascii')
        agent_url = html.cssselect('a')[0].get('href')
        estate_name = html.cssselect('a')
        estate_name = estate_name[len(estate_name) - 1].get('title')
        try:
            reg_number = re.search(
                re.escape(r'CEA Registration Number :') + '\s(.{8})',
                tostring(html), re.I).group(1)
        except AttributeError:
            reg_number = None
        try:
            lic_number = re.search(
                re.escape(r'Agency Licence Number :') + '\s(.{9})',
                tostring(html), re.I).group(1)
        except AttributeError:
            lic_number = None
        phone_number = html.cssselect('span a')
        if phone_number:
            phone_number = get_phone_number(phone_number[0])
        agent = AgentIProperty(name=name,
                               phone_number=phone_number,
                               estate_name=estate_name,
                               reg_number=reg_number,
                               lic_number=lic_number,
                               url=agent_url)
        # print agent
        return agent
    except IndexError:
        return None
예제 #2
0
def all_genres_xml():
    genres = session.query(Genre).all()
    genres_elements = [i.serializeXML for i in genres]
    root = et.Element('genres')
    for genre in genres_elements:
        root.append(genre)
    return app.response_class(et.tostring(root), mimetype='application/xml')
예제 #3
0
def all_genres_xml():
    genres = session.query(Genre).all()
    genres_elements = [i.serializeXML for i in genres]
    root = et.Element('genres')
    for genre in genres_elements:
        root.append(genre)
    return app.response_class(et.tostring(root), mimetype='application/xml')
예제 #4
0
def genre_games_xml(genre_name):
    genre = session.query(Genre).filter_by(name=genre_name).one()
    games = session.query(Game).filter_by(genre_id=genre.id).all()
    games_elements = [i.serializeXML for i in games]
    root = et.Element('games')
    for game in games_elements:
        root.append(game)
    return app.response_class(et.tostring(root), mimetype='application/xml')
예제 #5
0
def genre_games_xml(genre_name):
    genre = session.query(Genre).filter_by(name=genre_name).one()
    games = session.query(Game).filter_by(genre_id=genre.id).all()
    games_elements = [i.serializeXML for i in games]
    root = et.Element('games')
    for game in games_elements:
        root.append(game)
    return app.response_class(et.tostring(root), mimetype='application/xml')
예제 #6
0
def get_agent_by_url(url):
    logger.info("get agent by url, url = %s" % url)
    try:
        source_code = get_page(url)
        tree = html.fromstring(source_code.text)
        # Get detail information about the agent
        summary1 = tostring(tree.cssselect('div.summary1')[0])
        summary2 = tostring(tree.cssselect('div.summary2')[0])
        name = html.fromstring(summary1).cssselect('h1.summarytitle a')[0].text.encode('ascii', 'ignore').decode('ascii').strip()
        try:
            estate_name = html.fromstring(summary1).cssselect('div.summary1 span.greytext')[0].text.strip()
        except IndexError:
            estate_name = None
        phone_number = html.fromstring(summary2).cssselect('span.orangebold')[0].text.strip()
        cea = html.fromstring(summary2).cssselect('div.top15 a')
        try:
            lic_number = cea[0].text.strip()
        except IndexError:
            lic_number = None
        try:
            reg_number = cea[1].text.strip()
        except IndexError:
            reg_number = None
        agent = Agent(name=name, estate_name=estate_name, phone_number=phone_number, lic_number=lic_number, reg_number=reg_number)
        logger.info(agent)
        return agent
    except requests.exceptions.HTTPError as e:
        logger.error("HTTPError: " + str(e))
        return None
    except requests.exceptions.ConnectionError as e:
        logger.error(str(e))
        return None
    except IndexError as e:
        logger.error(str(e))
        with open("error_page.html", "w") as f:
            f.write(source_code.text.encode('utf-8'))
        return None
    except AttributeError as e:
        logger.error(str(e))
        return None
예제 #7
0
def create_xml(cal_list = None):
    xml_root = None
    try:
        xml_root = ET.Element('planner')
        if cal_list is not None:   
            for cal in cal_list:
                xml_calname = set_calname(cal.calendar_title, xml_root)
                for event in cal.eventlist:
                    xml_event = ET.SubElement(xml_calname, 'event')
                    xml_event.set('title', event.event_title)
                    xml_event.set('description', event.event_description)
                    xml_event.set('startdatetime', str(event.event_start_datetime))
                    xml_event.set('enddatetime', str(event.event_end_datetime))
    
        doc=tostring(xml_root)
        write_xml(doc)

    except:
        print("Error writing file!")
예제 #8
0
def create_xml(cal_list=None):
    xml_root = None
    try:
        xml_root = ET.Element('planner')
        if cal_list is not None:
            for cal in cal_list:
                xml_calname = set_calname(cal.calendar_title, xml_root)
                for event in cal.eventlist:
                    xml_event = ET.SubElement(xml_calname, 'event')
                    xml_event.set('title', event.event_title)
                    xml_event.set('description', event.event_description)
                    xml_event.set('startdatetime',
                                  str(event.event_start_datetime))
                    xml_event.set('enddatetime', str(event.event_end_datetime))

        doc = tostring(xml_root)
        write_xml(doc)

    except:
        print("Error writing file!")
예제 #9
0
    # for fake_controllers.yaml
    controller_list.append(
        {'name': 'fake_' + cur_robot_name + '_controller', 'joints': [cur_robot_name + "_base_joint"]})
    fake_all_controller['joints'].append(cur_robot_name + "_base_joint")

    # for .srdf
    cur_group = _elementtree.SubElement(root, 'group', {'name': cur_robot_name})
    cur_link = _elementtree.SubElement(cur_group, 'link', {'name': cur_robot_name})
    cur_joint = _elementtree.SubElement(cur_group, 'joint', {'name': cur_robot_name + "_base_joint"})
    cur_group = _elementtree.SubElement(group_all, 'group', {'name': cur_robot_name})

    # for ompl_planning.yaml
    ompl_planning[cur_robot_name] = copy.deepcopy(ompl_planning_robot)

# for .srdf
s = _elementtree.tostring(root, encoding="us-ascii", method="xml")
s = minidom.parseString(s)
s = s.toprettyxml(indent="  ")
with open(os.path.abspath(args.out_pkg)+"/config/duckiebot.srdf", 'w') as out_file:
    out_file.write(s)

# for ompl_planning.yaml
ompl_planning['all'] = copy.deepcopy(ompl_planning_robot)
with open(os.path.abspath(args.out_pkg)+"/config/ompl_planning.yaml", 'w') as out_file:
    out_file.write(yaml.dump(ompl_planning, default_flow_style=False))

args.urdf_out.write(robots.to_xml_string())

with open(os.path.abspath(args.out_pkg)+"/config/fake_controllers.yaml", 'w') as out_file:
    out_file.write(yaml.dump({'controller_list': controller_list}, default_flow_style=False))
def get_phone_number(html):
    pattern = r"65(\d*)"
    if not pattern:
        return None
    else:
        return re.search(pattern, tostring(html), re.I).group(1)