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
def _buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
if nodeName_ == 'GivenName':
obj_ = GivenNameType.factory(parent_object_=self)
obj_ = CustomerNameType.factory(parent_object_=self)
obj_.build(child_, gds_collector_=gds_collector_)
self.GivenName = obj_
obj_.original_tagname_ = 'GivenName'
elif nodeName_ == 'Surname':
obj_ = SurnameType.factory(parent_object_=self)
obj_ = CustomerNameType.factory(parent_object_=self)
obj_.build(child_, gds_collector_=gds_collector_)
self.Surname = obj_
obj_.original_tagname_ = 'Surname'
# end class PersonNameType
class GivenNameType(GeneratedsSuper):
class CustomerNameType(GeneratedsSuper):
__hash__ = GeneratedsSuper.__hash__
subclass = None
superclass = None
@@ -6472,13 +6472,13 @@ class GivenNameType(GeneratedsSuper):
def factory(*args_, **kwargs_):
if CurrentSubclassModule_ is not None:
subclass = getSubclassFromModule_(
CurrentSubclassModule_, GivenNameType)
CurrentSubclassModule_, CustomerNameType)
if subclass is not None:
return subclass(*args_, **kwargs_)
if GivenNameType.subclass:
return GivenNameType.subclass(*args_, **kwargs_)
if CustomerNameType.subclass:
return CustomerNameType.subclass(*args_, **kwargs_)
else:
return GivenNameType(*args_, **kwargs_)
return CustomerNameType(*args_, **kwargs_)
factory = staticmethod(factory)
def get_ns_prefix_(self):
return self.ns_prefix_
@@ -6510,29 +6510,29 @@ class GivenNameType(GeneratedsSuper):
return True
else:
return False
def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='GivenNameType', pretty_print=True):
imported_ns_def_ = GenerateDSNamespaceDefs_.get('GivenNameType')
def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='CustomerNameType', pretty_print=True):
imported_ns_def_ = GenerateDSNamespaceDefs_.get('CustomerNameType')
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_ == 'GivenNameType':
if self.original_tagname_ is not None and name_ == 'CustomerNameType':
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_='GivenNameType')
self._exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='CustomerNameType')
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_='GivenNameType'):
def _exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='CustomerNameType'):
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
def build(self, node, gds_collector_=None):
self.gds_collector_ = gds_collector_
@@ -6550,102 +6550,10 @@ class GivenNameType(GeneratedsSuper):
pass
def _buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
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):
@@ -75921,7 +75829,7 @@ __all__ = [
"FeaturesType302",
"FeaturesType670",
"GeneralEventInfoType",
"GivenNameType",
"CustomerNameType",
"GuaranteeAcceptedType",
"GuaranteeAcceptedType544",
"GuaranteeAcceptedType93",

View File

@@ -26,8 +26,8 @@ from alpine_bits_classes import (
HotelReservationIDsType,
HotelReservationIDType,
BasicPropertyInfoType,
GivenNameType,
SurnameType,
CustomerNameType
)
from io import BytesIO
import sys
@@ -58,10 +58,12 @@ def main():
room_stays = RoomStaysType(RoomStay=[room_stay])
# ResGuest
person_name = PersonNameType(GivenName=GivenNameType("Otto"), Surname=SurnameType("Mustermann"))
person_name = PersonNameType(GivenName=CustomerNameType("Otto"), Surname=CustomerNameType("Mustermann"))
country_name = CountryNameType(Code="DE")
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_info = ProfileInfoType(Profile=profile)
profiles = ProfilesType(ProfileInfo=profile_info)
@@ -106,6 +108,10 @@ def main():
ReservationsList=reservations_list
)
print(ota_res_retrieve_rs.get_Warnings())
# Serialize to XML string
# create outfile

View File

@@ -2,7 +2,7 @@
<Success>&lt;Success/&gt;
</Success>
<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"/>
<RoomStays>
<RoomStay>
@@ -22,7 +22,7 @@
<Profiles>
<ProfileInfo>
<Profile>
<Customer Gender="Unknown" Language="de">
<Customer Gender="Test" Language="de">
<PersonName>
<GivenName>Otto</GivenName>
<Surname>Mustermann</Surname>