示例#1
0
 def from_lxml_element(cls, element: _Element) -> "FramedVehicleJourneyRef":
     return cls(
         data_frame_ref=element.findtext("x:DataFrameRef",
                                         namespaces=_NSMAP),
         dated_vehicle_journey_ref=element.findtext(
             "x:DatedVehicleJourneyRef", namespaces=_NSMAP),
     )
示例#2
0
    def from_lxml_element(cls, element: _Element) -> "ServiceDelivery":
        producer_ref = element.findtext("x:ProducerRef", namespaces=_NSMAP)
        response_timestamp = element.findtext("x:ResponseTimestamp",
                                              namespaces=_NSMAP)

        vmd_element = element.find("x:VehicleMonitoringDelivery",
                                   namespaces=_NSMAP)
        if vmd_element is None:
            raise SiriParsingError("missing 'VehicleMonitoringDelivery'.")
        vehicle_monitoring_delivery = VehicleMonitoringDelivery.from_lxml_element(
            element=vmd_element)
        return cls(
            producer_ref=producer_ref,
            response_timestamp=response_timestamp,
            vehicle_monitoring_delivery=vehicle_monitoring_delivery,
        )
示例#3
0
    def from_lxml_element(cls, element: _Element) -> "VehicleActivity":
        mvj_element = element.find("x:MonitoredVehicleJourney",
                                   namespaces=_NSMAP)
        if mvj_element is None:
            raise SiriParsingError("missing 'MonitoredVehicleJourney'.")

        return cls(
            recorded_at_time=element.findtext("x:RecordedAtTime",
                                              namespaces=_NSMAP),
            item_identifier=element.findtext("x:ItemIdentifier",
                                             namespaces=_NSMAP),
            valid_until_time=element.findtext("x:ValidUntilTime",
                                              namespaces=_NSMAP),
            monitored_vehicle_journey=MonitoredVehicleJourney.
            from_lxml_element(mvj_element),
        )
示例#4
0
def _get_ocf_version(metadata: _Element) -> str:
    """
    Extract OCF version from agent metadata XML

    metadata -- metadata XML document
    """
    version = metadata.findtext("./version")
    return const.OCF_1_0 if version is None else version.strip()
示例#5
0
 def from_lxml_element(cls,
                       element: _Element) -> "VehicleMonitoringDelivery":
     activites = [
         VehicleActivity.from_lxml_element(element)
         for element in element.findall("x:VehicleActivity",
                                        namespaces=_NSMAP)
     ]
     return cls(
         request_message_ref=element.findtext("x:RequestMessageRef",
                                              namespaces=_NSMAP),
         response_timestamp=element.findtext("x:ResponseTimestamp",
                                             namespaces=_NSMAP),
         shortest_possible_cycle=element.findtext("x:ShortestPossibleCycle",
                                                  namespaces=_NSMAP),
         valid_until=element.findtext("x:ValidUntil", namespaces=_NSMAP),
         vehicle_activities=activites,
     )
def parse_entry(context: Context, node: _Element):
    entity_name = node.findtext("./Entity")
    dob = node.findtext("./DateOfBirth")
    schedule = node.findtext("./Schedule")
    if schedule == "N/A":
        schedule = ""
    program = node.findtext("./Country")
    item = node.findtext("./Item")
    if entity_name is not None:
        entity = context.make("LegalEntity")
        entity.add("name", entity_name.split("/"))
    else:
        entity = context.make("Person")
        given_name = node.findtext("./GivenName")
        last_name = node.findtext("./LastName")
        entity_name = h.make_name(given_name=given_name, last_name=last_name)
        entity.add("name", entity_name)
        entity.add("birthDate", dob)

    country = program
    if program is not None and "/" in program:
        country, _ = program.split("/")
    entity.add("country", country)

    entity.id = context.make_slug(
        schedule,
        item,
        entity.first("country"),
        entity_name,
        strict=False,
    )

    sanction = h.make_sanction(context, entity)
    sanction.add("program", program)
    sanction.add("reason", schedule)
    sanction.add("authorityId", item)

    names = node.findtext("./Aliases")
    if names is not None:
        for name in names.split(", "):
            name = collapse_spaces(name)
            entity.add("alias", name)

    entity.add("topics", "sanction")
    context.emit(entity, target=True)
    context.emit(sanction)
示例#7
0
    def __init__(self, element: etree._Element, parent: 'Scene' = None):
        self.parent = parent
        self.n = element.get('n')
        self.title = element.findtext('f:title', namespaces=config.namespaces)
        self.level = element.tag[element.tag.index('}') + 1:]
        self.subscenes = [
            Scene(el, parent=self) for el in element.xpath('*[@n]')
        ]
        self.first = element.get('first-verse')
        self.last = element.get('last-verse')

        if self.subscenes:
            if self.first is None:
                self.first = self.subscenes[0].first
            if self.last is None:
                self.last = self.subscenes[-1].last

        if self.first:
            self.first = int(self.first)
        if self.last:
            self.last = int(self.last)
示例#8
0
def parse_entry(context: Context, entry: Element):
    subject_type = entry.find("./subjectType")
    schema = context.lookup_value(
        "subject_type",
        subject_type.get("code"),
        dataset="eu_fsf",
    )
    if schema is None:
        context.log.warning("Unknown subject type", type=subject_type)
        return

    entity = context.make(schema)
    eu_ref = entry.get("euReferenceNumber")
    if eu_ref is not None:
        entity.id = context.make_slug(eu_ref, dataset="eu_fsf")
    else:
        entity.id = context.make_slug("logical", entry.get("logicalId"))
    entity.add("notes", h.clean_note(entry.findtext("./remark")))
    entity.add("topics", "sanction")
    parse_sanctions(context, entity, entry)

    for name in entry.findall("./nameAlias"):
        is_weak = not as_bool(name.get("strong"))
        h.apply_name(
            entity,
            full=name.get("wholeName"),
            first_name=name.get("firstName"),
            middle_name=name.get("middleName"),
            last_name=name.get("lastName"),
            is_weak=is_weak,
            quiet=True,
        )
        entity.add("title", name.get("title"), quiet=True)
        entity.add("position", name.get("function"), quiet=True)
        entity.add("gender", name.get("gender"), quiet=True)

    for node in entry.findall("./identification"):
        type = node.get("identificationTypeCode")
        schema = "Passport" if type == "passport" else "Identification"
        passport = context.make(schema)
        passport.id = context.make_id("ID", entity.id, node.get("logicalId"))
        passport.add("holder", entity)
        passport.add("authority", node.get("issuedBy"))
        passport.add("type", node.get("identificationTypeDescription"))
        passport.add("number", node.get("number"))
        passport.add("number", node.get("latinNumber"))
        passport.add("startDate", node.get("issueDate"))
        passport.add("startDate", node.get("issueDate"))
        passport.add("country", parse_country(node))
        passport.add("country", node.get("countryDescription"))
        for remark in node.findall("./remark"):
            passport.add("summary", remark.text)
        context.emit(passport)

    for node in entry.findall("./address"):
        address = parse_address(context, node)
        h.apply_address(context, entity, address)

        for child in node.getchildren():
            if child.tag in ("regulationSummary"):
                continue
            elif child.tag == "remark":
                entity.add("notes", child.text)
            elif child.tag == "contactInfo":
                prop = context.lookup_value(
                    "contact_info",
                    child.get("key"),
                    dataset="eu_fsf",
                )
                if prop is None:
                    context.log.warning("Unknown contact info", node=child)
                else:
                    entity.add(prop, child.get("value"))
            else:
                context.log.warning("Unknown address component", node=child)

    for birth in entry.findall("./birthdate"):
        partialBirth = parse_parts(birth.get("year"), birth.get("month"),
                                   birth.get("day"))
        entity.add("birthDate", birth.get("birthdate"))
        entity.add("birthDate", partialBirth)
        address = parse_address(context, birth)
        if address is not None:
            entity.add("birthPlace", address.get("full"))
            entity.add("country", address.get("country"))

    for node in entry.findall("./citizenship"):
        entity.add("nationality", parse_country(node), quiet=True)
        entity.add("nationality", node.get("countryDescription"), quiet=True)

    context.emit(entity, target=True)
示例#9
0
    def from_lxml_element(cls, element: _Element) -> "MonitoredVehicleJourney":

        framed_vehicle_journey_ref = None
        fvjr_element = element.find("x:FramedVehicleJourneyRef",
                                    namespaces=_NSMAP)
        if fvjr_element is not None:
            framed_vehicle_journey_ref = FramedVehicleJourneyRef.from_lxml_element(
                fvjr_element)

        vehicle_location_element = element.find("x:VehicleLocation",
                                                namespaces=_NSMAP)
        if vehicle_location_element is None:
            raise SiriParsingError("missing 'VehicleLocation'.")

        return cls(
            bearing=element.findtext("x:Bearing", namespaces=_NSMAP),
            block_ref=element.findtext("x:BlockRef", namespaces=_NSMAP),
            line_ref=element.findtext("x:LineRef", namespaces=_NSMAP),
            direction_ref=element.findtext("x:DirectionRef",
                                           namespaces=_NSMAP),
            published_line_name=element.findtext("x:PublishedLineName",
                                                 namespaces=_NSMAP),
            operator_ref=element.findtext("x:OperatorRef", namespaces=_NSMAP),
            origin_ref=element.findtext("x:OriginRef", namespaces=_NSMAP),
            origin_name=element.findtext("x:OriginName", namespaces=_NSMAP),
            destination_ref=element.findtext("x:DestinationRef",
                                             namespaces=_NSMAP),
            destination_name=element.findtext("x:DestinationName",
                                              namespaces=_NSMAP),
            origin_aimed_departure_time=element.findtext(
                "x:OriginAimedDepartureTime", namespaces=_NSMAP),
            framed_vehicle_journey_ref=framed_vehicle_journey_ref,
            vehicle_journey_ref=element.findtext("x:VehicleJourneyRef",
                                                 namespaces=_NSMAP),
            vehicle_ref=element.findtext("x:VehicleRef", namespaces=_NSMAP),
            vehicle_location=VehicleLocation.from_lxml_element(
                vehicle_location_element),
        )
示例#10
0
 def from_lxml_element(cls, element: _Element) -> "VehicleLocation":
     return cls(
         longitude=element.findtext("x:Longitude", namespaces=_NSMAP),
         latitude=element.findtext("x:Latitude", namespaces=_NSMAP),
     )