Slight simplification but lets try a different tool

This commit is contained in:
Jonas Linter
2025-09-24 09:53:49 +02:00
parent 949f8d9354
commit 723571f3eb
4 changed files with 75 additions and 114 deletions

47
output.xml Normal file
View File

@@ -0,0 +1,47 @@
<OTA_ResRetrieveRS xmlns:None="http://www.opentravel.org/OTA/2003/05" Version="7.000">
<Success>&lt;Success/&gt;
</Success>
<ReservationsList>
<HotelReservation CreateDateTime="2025-09-24T07:45:46.366406Z" ResStatus="Requested" RoomStayReservation="true">
<UniqueID Type="14" ID="6b34fe24ac2ff811"/>
<RoomStays>
<RoomStay>
<RoomTypes>
<RoomType RoomTypeCode="A" RoomClassificationCode="5" RoomType="8"/>
</RoomTypes>
<GuestCounts>
<GuestCount Count="1"/>
</GuestCounts>
<TimeSpan>
<StartDateWindow EarliestDate="2022-10-03Z" LatestDate="2022-10-08Z"/>
</TimeSpan>
</RoomStay>
</RoomStays>
<ResGuests>
<ResGuest>
<Profiles>
<ProfileInfo>
<Profile>
<Customer Gender="Test" Language="de">
<PersonName>
<GivenName>Otto</GivenName>
<Surname>Mustermann</Surname>
</PersonName>
<Address>
<CountryName Code="DE"/>
</Address>
</Customer>
</Profile>
</ProfileInfo>
</Profiles>
</ResGuest>
</ResGuests>
<ResGlobalInfo>
<HotelReservationIDs>
<HotelReservationID ResID_Type="13" ResID_Value="res" ResID_Source="www.example.com" ResID_SourceContext="cnt"/>
</HotelReservationIDs>
<BasicPropertyInfo HotelCode="123" HotelName="Frangart Inn"/>
</ResGlobalInfo>
</HotelReservation>
</ReservationsList>
</OTA_ResRetrieveRS>

View File

@@ -6446,19 +6446,19 @@ class PersonNameType(GeneratedsSuper):
pass pass
def _buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): def _buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
if nodeName_ == 'GivenName': if nodeName_ == 'GivenName':
obj_ = GivenNameType.factory(parent_object_=self) obj_ = CustomerNameType.factory(parent_object_=self)
obj_.build(child_, gds_collector_=gds_collector_) obj_.build(child_, gds_collector_=gds_collector_)
self.GivenName = obj_ self.GivenName = obj_
obj_.original_tagname_ = 'GivenName' obj_.original_tagname_ = 'GivenName'
elif nodeName_ == 'Surname': elif nodeName_ == 'Surname':
obj_ = SurnameType.factory(parent_object_=self) obj_ = CustomerNameType.factory(parent_object_=self)
obj_.build(child_, gds_collector_=gds_collector_) obj_.build(child_, gds_collector_=gds_collector_)
self.Surname = obj_ self.Surname = obj_
obj_.original_tagname_ = 'Surname' obj_.original_tagname_ = 'Surname'
# end class PersonNameType # end class PersonNameType
class GivenNameType(GeneratedsSuper): class CustomerNameType(GeneratedsSuper):
__hash__ = GeneratedsSuper.__hash__ __hash__ = GeneratedsSuper.__hash__
subclass = None subclass = None
superclass = None superclass = None
@@ -6472,13 +6472,13 @@ class GivenNameType(GeneratedsSuper):
def factory(*args_, **kwargs_): def factory(*args_, **kwargs_):
if CurrentSubclassModule_ is not None: if CurrentSubclassModule_ is not None:
subclass = getSubclassFromModule_( subclass = getSubclassFromModule_(
CurrentSubclassModule_, GivenNameType) CurrentSubclassModule_, CustomerNameType)
if subclass is not None: if subclass is not None:
return subclass(*args_, **kwargs_) return subclass(*args_, **kwargs_)
if GivenNameType.subclass: if CustomerNameType.subclass:
return GivenNameType.subclass(*args_, **kwargs_) return CustomerNameType.subclass(*args_, **kwargs_)
else: else:
return GivenNameType(*args_, **kwargs_) return CustomerNameType(*args_, **kwargs_)
factory = staticmethod(factory) factory = staticmethod(factory)
def get_ns_prefix_(self): def get_ns_prefix_(self):
return self.ns_prefix_ return self.ns_prefix_
@@ -6510,29 +6510,29 @@ class GivenNameType(GeneratedsSuper):
return True return True
else: else:
return False return False
def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='GivenNameType', pretty_print=True): def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='CustomerNameType', pretty_print=True):
imported_ns_def_ = GenerateDSNamespaceDefs_.get('GivenNameType') imported_ns_def_ = GenerateDSNamespaceDefs_.get('CustomerNameType')
if imported_ns_def_ is not None: if imported_ns_def_ is not None:
namespacedef_ = imported_ns_def_ namespacedef_ = imported_ns_def_
if pretty_print: if pretty_print:
eol_ = '\n' eol_ = '\n'
else: else:
eol_ = '' eol_ = ''
if self.original_tagname_ is not None and name_ == 'GivenNameType': if self.original_tagname_ is not None and name_ == 'CustomerNameType':
name_ = self.original_tagname_ name_ = self.original_tagname_
if UseCapturedNS_ and self.ns_prefix_: if UseCapturedNS_ and self.ns_prefix_:
namespaceprefix_ = self.ns_prefix_ + ':' namespaceprefix_ = self.ns_prefix_ + ':'
showIndent(outfile, level, pretty_print) showIndent(outfile, level, pretty_print)
outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
already_processed = set() already_processed = set()
self._exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='GivenNameType') self._exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='CustomerNameType')
outfile.write('>') outfile.write('>')
self._exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_, pretty_print=pretty_print) self._exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_, pretty_print=pretty_print)
outfile.write(self.convert_unicode(self.valueOf_)) outfile.write(self.convert_unicode(self.valueOf_))
outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_)) outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
def _exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='GivenNameType'): def _exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='CustomerNameType'):
pass pass
def _exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='GivenNameType', fromsubclass_=False, pretty_print=True): def _exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='CustomerNameType', fromsubclass_=False, pretty_print=True):
pass pass
def build(self, node, gds_collector_=None): def build(self, node, gds_collector_=None):
self.gds_collector_ = gds_collector_ self.gds_collector_ = gds_collector_
@@ -6550,102 +6550,10 @@ class GivenNameType(GeneratedsSuper):
pass pass
def _buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None): def _buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
pass pass
# end class GivenNameType # end class CustomerNameType
class SurnameType(GeneratedsSuper):
__hash__ = GeneratedsSuper.__hash__
subclass = None
superclass = None
def __init__(self, valueOf_=None, gds_collector_=None, **kwargs_):
self.gds_collector_ = gds_collector_
self.gds_elementtree_node_ = None
self.original_tagname_ = None
self.parent_object_ = kwargs_.get('parent_object_')
self.ns_prefix_ = None
self.valueOf_ = valueOf_
def factory(*args_, **kwargs_):
if CurrentSubclassModule_ is not None:
subclass = getSubclassFromModule_(
CurrentSubclassModule_, SurnameType)
if subclass is not None:
return subclass(*args_, **kwargs_)
if SurnameType.subclass:
return SurnameType.subclass(*args_, **kwargs_)
else:
return SurnameType(*args_, **kwargs_)
factory = staticmethod(factory)
def get_ns_prefix_(self):
return self.ns_prefix_
def set_ns_prefix_(self, ns_prefix):
self.ns_prefix_ = ns_prefix
def get_valueOf_(self): return self.valueOf_
def set_valueOf_(self, valueOf_): self.valueOf_ = valueOf_
def validate_StringLength1to64(self, value):
result = True
# Validate type StringLength1to64, a restriction on xs:string.
if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None:
if not isinstance(value, str):
lineno = self.gds_get_node_lineno_()
self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, })
return False
if len(value) > 64:
lineno = self.gds_get_node_lineno_()
self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd maxLength restriction on StringLength1to64' % {"value" : encode_str_2_3(value), "lineno": lineno} )
result = False
if len(value) < 1:
lineno = self.gds_get_node_lineno_()
self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd minLength restriction on StringLength1to64' % {"value" : encode_str_2_3(value), "lineno": lineno} )
result = False
return result
def has__content(self):
if (
(1 if type(self.valueOf_) in [int,float] else self.valueOf_)
):
return True
else:
return False
def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='SurnameType', pretty_print=True):
imported_ns_def_ = GenerateDSNamespaceDefs_.get('SurnameType')
if imported_ns_def_ is not None:
namespacedef_ = imported_ns_def_
if pretty_print:
eol_ = '\n'
else:
eol_ = ''
if self.original_tagname_ is not None and name_ == 'SurnameType':
name_ = self.original_tagname_
if UseCapturedNS_ and self.ns_prefix_:
namespaceprefix_ = self.ns_prefix_ + ':'
showIndent(outfile, level, pretty_print)
outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
already_processed = set()
self._exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='SurnameType')
outfile.write('>')
self._exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_, pretty_print=pretty_print)
outfile.write(self.convert_unicode(self.valueOf_))
outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
def _exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='SurnameType'):
pass
def _exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='SurnameType', fromsubclass_=False, pretty_print=True):
pass
def build(self, node, gds_collector_=None):
self.gds_collector_ = gds_collector_
if SaveElementTreeNode:
self.gds_elementtree_node_ = node
already_processed = set()
self.ns_prefix_ = node.prefix
self._buildAttributes(node, node.attrib, already_processed)
self.valueOf_ = get_all_text_(node)
for child in node:
nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
self._buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
return self
def _buildAttributes(self, node, attrs, already_processed):
pass
def _buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
pass
# end class SurnameType
class URLType(GeneratedsSuper): class URLType(GeneratedsSuper):
@@ -75921,7 +75829,7 @@ __all__ = [
"FeaturesType302", "FeaturesType302",
"FeaturesType670", "FeaturesType670",
"GeneralEventInfoType", "GeneralEventInfoType",
"GivenNameType", "CustomerNameType",
"GuaranteeAcceptedType", "GuaranteeAcceptedType",
"GuaranteeAcceptedType544", "GuaranteeAcceptedType544",
"GuaranteeAcceptedType93", "GuaranteeAcceptedType93",

View File

@@ -26,8 +26,8 @@ from alpine_bits_classes import (
HotelReservationIDsType, HotelReservationIDsType,
HotelReservationIDType, HotelReservationIDType,
BasicPropertyInfoType, BasicPropertyInfoType,
GivenNameType, CustomerNameType
SurnameType,
) )
from io import BytesIO from io import BytesIO
import sys import sys
@@ -58,10 +58,12 @@ def main():
room_stays = RoomStaysType(RoomStay=[room_stay]) room_stays = RoomStaysType(RoomStay=[room_stay])
# ResGuest # ResGuest
person_name = PersonNameType(GivenName=GivenNameType("Otto"), Surname=SurnameType("Mustermann")) person_name = PersonNameType(GivenName=CustomerNameType("Otto"), Surname=CustomerNameType("Mustermann"))
country_name = CountryNameType(Code="DE") country_name = CountryNameType(Code="DE")
address = AddressType(CountryName=country_name) address = AddressType(CountryName=country_name)
customer = CustomerType(Language="de", Gender="Unknown", PersonName=person_name, Address=address) customer = CustomerType(Language="de", Gender="Test", PersonName=person_name, Address=address)
profile = ProfileType(Customer=customer) profile = ProfileType(Customer=customer)
profile_info = ProfileInfoType(Profile=profile) profile_info = ProfileInfoType(Profile=profile)
profiles = ProfilesType(ProfileInfo=profile_info) profiles = ProfilesType(ProfileInfo=profile_info)
@@ -106,6 +108,10 @@ def main():
ReservationsList=reservations_list ReservationsList=reservations_list
) )
print(ota_res_retrieve_rs.get_Warnings())
# Serialize to XML string # Serialize to XML string
# create outfile # create outfile

View File

@@ -2,7 +2,7 @@
<Success>&lt;Success/&gt; <Success>&lt;Success/&gt;
</Success> </Success>
<ReservationsList> <ReservationsList>
<HotelReservation CreateDateTime="2025-09-24T07:18:57.913865Z" ResStatus="Requested" RoomStayReservation="true"> <HotelReservation CreateDateTime="2025-09-24T07:42:31.092997Z" ResStatus="Requested" RoomStayReservation="true">
<UniqueID Type="14" ID="6b34fe24ac2ff811"/> <UniqueID Type="14" ID="6b34fe24ac2ff811"/>
<RoomStays> <RoomStays>
<RoomStay> <RoomStay>
@@ -22,7 +22,7 @@
<Profiles> <Profiles>
<ProfileInfo> <ProfileInfo>
<Profile> <Profile>
<Customer Gender="Unknown" Language="de"> <Customer Gender="Test" Language="de">
<PersonName> <PersonName>
<GivenName>Otto</GivenName> <GivenName>Otto</GivenName>
<Surname>Mustermann</Surname> <Surname>Mustermann</Surname>