Esempio n. 1
0
class UUIDWithAttribute(ComplexModel):
    __type_name__ = 'ID'
    _type_info = [
        ('idType', XmlAttribute(Unicode)),
        ('idAuthority', XmlAttribute(Unicode)),
        ('kind', XmlAttribute(IDKindType)),
        ('objectType', XmlAttribute(Unicode)),
        ('value', XmlData(Uuid)),
    ]

    # def __init__(self):
    #     super().__init__()

    def __init__(self,
                 kind=None,
                 objectType=None,
                 value=None,
                 idType=None,
                 idAuthority=None,
                 **kwargs):
        super().__init__(kind=kind,
                         objectType=objectType,
                         value=value,
                         idType=idType,
                         idAuthority=idAuthority,
                         **kwargs)
        self.kind = kind
        self.objectType = objectType
        self.value = value
        self.idType = idType
        self.idAuthority = idAuthority
Esempio n. 2
0
class Security(ComplexModel):

    code = XmlAttribute(Unicode, use="required")
    name = XmlAttribute(Unicode, use="required")
    module = XmlAttribute(Unicode, use="required")

    Param = Param.customize(min_occurs=0, max_occurs="unbounded")
Esempio n. 3
0
class Application(ComplexModel):

    name = XmlAttribute(Unicode, use="required")
    service = XmlAttribute(Unicode, use="required")
    tns = XmlAttribute(Unicode)

    InProtocol = ProtocolDirection.customize(min_occurs=1, max_occurs=1)
    OutProtocol = ProtocolDirection.customize(min_occurs=1, max_occurs=1)
 def create_object_model(self):
     type_info = (
         ('identificatie', Unicode.customize(sub_ns=self.stuf_zkn_ns)),
         ('functie', XmlAttribute(Unicode.customize(sub_ns=self.stuf_ns), ns='http://www.egem.nl/StUF/StUF0301')),
         ('entiteittype', XmlAttribute(Unicode.customize(sub_ns=self.stuf_ns, ns='http://www.egem.nl/StUF/StUF0301'))),
     )
     object_model = complex_model_factory(
         '{}_{}'.format(self.entiteittype, self.shortname), self.stuf_zkn_ns, type_info)
     return object_model
Esempio n. 5
0
class Module(ComplexModel):
    """
    Security module
    """

    path = XmlAttribute(Unicode, use="required")
    code = XmlAttribute(Unicode, use="required")
    name = XmlAttribute(Unicode, use="required")

    Param = ParamDeclaration.customize(min_occurs=0, max_occurs="unbounded")
Esempio n. 6
0
class Protocol(ComplexModel):

    code = XmlAttribute(Unicode, use="required")
    name = XmlAttribute(Unicode, use="required")
    module = XmlAttribute(Unicode, use="required")
    direction = XmlAttribute(
        Unicode(values=["IN", "OUT", "BOTH"]),
        use="required",
    )

    Param = ParamDeclaration.customize(min_occurs=0, max_occurs="unbounded")
Esempio n. 7
0
class OverdragenZaak_ZAK_opdracht_e(ComplexModel):
    __namespace__ = ZKN_XML_NS
    __type_name__ = 'OverdragenZaak-ZAK-opdracht-e'
    __extends__ = OverdragenZaak_ZAK_opdracht_r
    _type_info = [
        # Attributes
        ('functie',
         XmlAttribute(simple_types.FunctieVrijBerichtElement.customize(
             fixed='entiteit'),
                      ref='functie')),  # use=required
    ]
Esempio n. 8
0
class OverdragenZaak_ZAK_opdrachtbevestiging_e(ComplexModel):
    __namespace__ = ZKN_XML_NS
    __type_name__ = 'OverdragenZaak-ZAK-opdrachtbevestiging-e'
    __extends__ = OverdragenZaak_ZAK_opdrachtbevestiging_r
    _type_info = [
        # Attributes
        ('functie',
         XmlAttribute(simple_types.FunctieVrijBerichtElement.customize(
             fixed='entiteit'),
                      ref='functie')),  # use=required, default should be fixed
        # Elements
        ('antwoord', simple_types.OverdragenZaak_antwoord),
    ]
    def create_gelijk_model(self, stuf_entiteit=None):
        # TODO [TECH]: The gelijk model is required, and should always be set.
        stuf_entiteit = stuf_entiteit or self.stuf_entiteit
        type_info = TypeInfo()
        for related_field in stuf_entiteit.get_related_fields():
            try:
                # This is not consistent with the prototype-XSD. See Taiga issue #88
                type_info[related_field.field_name] = self.create_gelijk_model(related_field.stuf_entiteit)
            except EmptyResultError:
                pass

        # Create spyne model for 'gerelateerde'
        # TODO [TECH]: In the WSDL this should be minOccurs and maxOccurs of 1.
        gerelateerde = stuf_entiteit.get_gerelateerde()
        if gerelateerde:
            _, gerelateerde_data = gerelateerde
            if isinstance(gerelateerde_data, tuple) or isinstance(gerelateerde_data, list):
                for relation_name, related_cls in gerelateerde_data:
                    try:
                        sub_type_info = []
                        for relation_name, related_cls in gerelateerde_data:
                            sub_type_info.append((relation_name, self.create_gelijk_model(related_cls).customize(xml_choice_group='gerelateerde')))
                        sub_model = self.create_reusable_model(self.create_gelijk_name(stuf_entiteit, 'gerelateerde'), stuf_entiteit.get_namespace(), sub_type_info)
                        type_info['gerelateerde'] = sub_model
                    except EmptyResultError:
                        pass
            else:
                related_cls = gerelateerde_data
                try:
                    type_info.append(('gerelateerde', self.create_gelijk_model(related_cls)))
                except EmptyResultError:
                    pass

        field_mapping = stuf_entiteit.get_django_field_mapping(filter_fields=True)
        if not field_mapping and not type_info:
            raise EmptyResultError()

        # Build the Spyne model
        for field_name, django_field_name, django_field in field_mapping:
            type_info[field_name] = django_field_to_spyne_model(django_field)
        complex_model = self.create_reusable_model(
            self.create_gelijk_name(stuf_entiteit), stuf_entiteit.get_namespace(), type_info)

        if stuf_entiteit.is_entiteit():
            complex_model._type_info['entiteittype'] = XmlAttribute(simple_types.Entiteittype, ref='entiteittype', ns=STUF_XML_NS)
        complex_model._type_info.update(type_info)
        complex_model.stuf_entiteit = stuf_entiteit

        complex_model._type_info = reorder_type_info(stuf_entiteit.get_fields(), complex_model._type_info, allow_partial=True)

        return complex_model
Esempio n. 10
0
class OverdragenZaak_ZKT_kerngegevens(ComplexModel):
    __namespace__ = ZKN_XML_NS
    __type_name__ = 'OverdragenZaak-ZKT-kerngegevens'
    _type_info = [
        # Attributes
        ('entiteittype',
         XmlAttribute(simple_types.Entiteittype.customize(fixed='ZKT'),
                      ref='entiteittype')),
        # <attribute ref="StUF:sleutelVerzendend"/>
        # <attribute ref="StUF:sleutelOntvangend"/>
        # <attribute ref="StUF:sleutelGegevensbeheer"/>
        # <attribute ref="StUF:sleutelSynchronisatie"/>
        # <attribute ref="StUF:verwerkingssoort"/>
        # Elements
        ('omschrijving', simple_types.Omschrijving),  # Omschrijving-e
        ('code', simple_types.Code),  # Code-e
        # ('ingangsdatumObject', DatumMetIndicator.customize(nillable=True, min_occurs=0))
    ]
Esempio n. 11
0
class OverdragenZaak_ZAK_opdrachtbevestiging_r(ComplexModel):
    __namespace__ = ZKN_XML_NS
    __type_name__ = 'OverdragenZaak-ZAK-opdrachtbevestiging-r'
    _type_info = [
        # Attributes
        ('entiteittype',
         XmlAttribute(simple_types.Entiteittype.customize(fixed='ZAK'),
                      ref='entiteittype')),
        # <attribute ref="StUF:sleutelVerzendend"/>
        # <attribute ref="StUF:sleutelOntvangend"/>
        # <attribute ref="StUF:sleutelGegevensbeheer"/>
        # <attribute ref="StUF:sleutelSynchronisatie"/>
        # <attribute ref="StUF:noValue"/>
        # <attribute ref="StUF:scope"/>
        # <attribute ref="StUF:verwerkingssoort"/>
        # Elements
        ('identificatie', simple_types.ZaakIdentificatie_r),
    ]
Esempio n. 12
0
class OverdragenZaak_ZAKZKT_kerngegevens(ComplexModel):
    __namespace__ = ZKN_XML_NS
    __type_name__ = 'OverdragenZaak-ZAKZKT-kerngegevens'
    _type_info = [
        # Attributes
        ('entiteittype',
         XmlAttribute(simple_types.Entiteittype.customize(fixed='ZAKZKT'),
                      ref='entiteittype')),
        # <attribute ref="StUF:aantalVoorkomens"/>
        # <attribute ref="StUF:aardAantal"/>
        # <attribute ref="StUF:sleutelVerzendend"/>
        # <attribute ref="StUF:sleutelOntvangend"/>
        # <attribute ref="StUF:sleutelGegevensbeheer"/>
        # <attribute ref="StUF:sleutelSynchronisatie"/>
        # <attribute ref="StUF:noValue"/>
        # <attribute ref="StUF:verwerkingssoort"/>
        # Elements
        ('gerelateerde', OverdragenZaak_ZKT_kerngegevens)
    ]
 def create_model(self):
     name = self.name
     root_type_info = [
         ('stuurgegevens', self.create_stuurgegevens_model()),
         ('parameters', self.get_input_parameters_model()),
     ]
     try:
         root_type_info.append(('gelijk', self.create_gelijk_model()))
     except EmptyResultError:
         pass
     scope_model = self.create_scope_model()
     scope_model._type_info['scope'] = XmlAttribute(attributes.Scope__Anonymous, ref='scope', ns=STUF_XML_NS)
     object_type_info = [
         ('object', scope_model),
     ]
     object_model = self.create_reusable_model(self.create_scope_name(), ZKN_XML_NS, object_type_info)
     root_type_info.append(('scope', object_model))
     root_model = self.create_reusable_model('{}_Lv01'.format(name), ZKN_XML_NS, root_type_info)
     root_model.stuf_entiteit = self.stuf_entiteit
     return root_model
Esempio n. 14
0
 class CM(ComplexModel):
     i = Integer
     s = String
     a = XmlAttribute(String)
Esempio n. 15
0
class Session(ComplexModel):
    """Session description (used by spyne)."""

    __namespace__ = "urn:schemas-microsoft-com:xml-analysis"
    SessionId = XmlAttribute(Unicode)
Esempio n. 16
0
 class SomeObject(ComplexModel):
     s = XmlAttribute(Unicode(min_occurs=1, sub_name='foo'))
    def create_object_model(self, stuf_entiteit=None):
        """
        From a StUFEntiteit create a hierarchy of ComplexModels for everything under the object element.
        """
        stuf_entiteit = stuf_entiteit or self.stuf_entiteit

        type_info = []
        if stuf_entiteit.is_entiteit():
            type_info.append(
                ('entiteittype', XmlAttribute(simple_types.Entiteittype, ref='entiteittype', ns=STUF_XML_NS))
            )

        tijdvak_geldigheid = stuf_entiteit.get_tijdvak_geldigheid()
        if tijdvak_geldigheid:
            type_info.append(
                ('tijdvakGeldigheid', TijdvakGeldigheid.customize(ref='tijdvakGeldigheid')),
            )

        tijdvak_relatie = stuf_entiteit.get_tijdvak_relatie()
        if tijdvak_relatie:
            type_info.append(
                ('tijdvakRelatie', TijdvakRelatie.customize(ref='tijdvakRelatie')),
            )

        tijdstip_registratie = stuf_entiteit.get_tijdstip_registratie()
        if tijdstip_registratie:
            type_info.append(
                ('tijdstipRegistratie', Tijdstip_e.customize(ref='tijdstipRegistratie')),
            )

        if getattr(stuf_entiteit, 'append_object_model', False):
            for key, append_complex_model in stuf_entiteit.append_object_model:
                # assert False, append_complex_model.__dict__
                type_info.append((key, append_complex_model))

        for related_field in stuf_entiteit.get_related_fields():
            type_info.append(
                (related_field.field_name, self.create_object_model(related_field.stuf_entiteit).customize(max_occurs='unbounded'))
            )

        # Create spyne model for 'gerelateerde'
        # TODO [TECH]: In the WSDL this should be minOccurs and maxOccurs of 1.
        gerelateerde = stuf_entiteit.get_gerelateerde()
        if gerelateerde:
            _, gerelateerde_data = gerelateerde
            if isinstance(gerelateerde_data, tuple) or isinstance(gerelateerde_data, list):
                sub_type_info = []
                for relation_name, related_cls in gerelateerde_data:
                    _object_model = self.create_object_model(related_cls).customize(xml_choice_group='gerelateerde')
                    sub_type_info.append((relation_name, _object_model))

                # See Stuf 03.01 - 3.2.2 De structuur van een object, why this model does not have a 'entiteittype'
                # attribute.
                #
                # Het element <gerelateerde> mag ook als kind een <choice> bevatten met twee of meer elementen
                # met een attribute StUF:entiteittype en daarbinnen de elementen voor dat entiteittype. Het element
                # <gerelateerde> heeft dan geen attributes.
                #
                sub_model = self.create_reusable_model(
                    self.create_object_name(stuf_entiteit, 'gerelateerde'),
                    stuf_entiteit.get_namespace(), sub_type_info
                ).customize(min_occurs=1, max_occurs=1)  # TODO [TECH]: min/max_occurs does not show up in the WSDL for some reason.
                type_info.append(('gerelateerde', sub_model))
            else:
                related_cls = gerelateerde_data
                # TODO [TECH]: min/max_occurs does not show up in the WSDL for some reason.
                type_info.append(('gerelateerde', self.create_object_model(related_cls).customize(min_occurs=1, max_occurs=1)))

        # Build up spyne model
        field_mapping = stuf_entiteit.get_django_field_mapping()
        new_type_info = TypeInfo()
        file_fields = stuf_entiteit.get_file_fields()
        required_fields = stuf_entiteit.get_required_fields()
        for field_name, _, django_field in field_mapping:
            if field_name in file_fields:
                new_type_info[field_name] = BinaireInhoud
            else:
                min_occurs = 1 if field_name in required_fields else 0
                new_type_info[field_name] = django_field_to_spyne_model(django_field, min_occurs=min_occurs)

        complex_model = self.create_reusable_model(
            self.create_object_name(stuf_entiteit),
            stuf_entiteit.get_namespace(), new_type_info
        )
        complex_model.stuf_entiteit = stuf_entiteit

        for k, v in type_info:
            complex_model._type_info[k] = v

        for field_name, spyne_model, _ in stuf_entiteit.get_custom_fields():
            complex_model._type_info[field_name] = spyne_model

        complex_model._type_info = reorder_type_info(stuf_entiteit.get_fields(), complex_model._type_info)

        return complex_model
    def create_scope_model(self, stuf_entiteit=None):
        stuf_entiteit = stuf_entiteit or self.stuf_entiteit

        field_names = [field_name for field_name, _unused in stuf_entiteit.get_field_mapping()]
        type_info = [(field_name, ScopeAttribute) for field_name in field_names]
        # type_info = []
        #
        # file_fields = stuf_entiteit.get_file_fields()
        # field_mapping = stuf_entiteit.get_django_field_mapping()
        # for field_name, django_field_name, django_field in field_mapping:
        #     if field_name in file_fields:
        #         type_info.append((field_name, Unicode))  # TODO
        #     else:
        #         type_info.append((field_name, django_field_to_spyne_model(django_field)))

        for related_field in stuf_entiteit.get_related_fields():
            type_info.append((related_field.field_name, self.create_scope_model(related_field.stuf_entiteit)))

        # Create spyne model for 'gerelateerde'
        # TODO [TECH]: In the WSDL this should be minOccurs and maxOccurs of 1.
        gerelateerde = stuf_entiteit.get_gerelateerde()
        if gerelateerde:
            _, gerelateerde_data = gerelateerde
            if isinstance(gerelateerde_data, tuple) or isinstance(gerelateerde_data, list):
                sub_type_info = []
                for relation_name, related_cls in gerelateerde_data:
                    sub_type_info.append((relation_name, self.create_scope_model(related_cls).customize(xml_choice_group='gerelateerde')))
                sub_model = self.create_reusable_model(self.create_scope_name(stuf_entiteit, 'gerelateerde'), stuf_entiteit.get_namespace(), sub_type_info)
                sub_model.stuf_entiteit = stuf_entiteit
                type_info.append(('gerelateerde', sub_model))
            else:
                related_cls = gerelateerde_data
                type_info.append(('gerelateerde', self.create_scope_model(related_cls)))

        if stuf_entiteit.is_entiteit():
            type_info.append(('entiteittype', XmlAttribute(simple_types.Entiteittype, ref='entiteittype', ns=STUF_XML_NS)))

        tijdvak_geldigheid = stuf_entiteit.get_tijdvak_geldigheid()
        if tijdvak_geldigheid:
            type_info.append(
                ('tijdvakGeldigheid', TijdvakGeldigheid.customize(ref='tijdvakGeldigheid')),
            )

        tijdvak_relatie = stuf_entiteit.get_tijdvak_relatie()
        if tijdvak_relatie:
            type_info.append(
                ('tijdvakRelatie', TijdvakRelatie.customize(ref='tijdvakRelatie')),
            )

        tijdstip_registratie = stuf_entiteit.get_tijdstip_registratie()
        if tijdstip_registratie:
            type_info.append(
                ('tijdstipRegistratie', Tijdstip_e.customize(ref='tijdstipRegistratie')),
            )

        scope_model = self.create_reusable_model(self.create_scope_name(stuf_entiteit), stuf_entiteit.get_namespace(), type_info)
        scope_model.stuf_entiteit = stuf_entiteit

        scope_model._type_info = reorder_type_info(stuf_entiteit.get_fields(), scope_model._type_info, allow_partial=True)

        return scope_model
Esempio n. 19
0
class FooCustomRequest(ComplexModel):
    AttrA = XmlAttribute(Unicode)
    AttrB = XmlAttribute(Unicode)
    Bar = Baz.customize(sub_ns=NS_B)
    Baz = Unicode
Esempio n. 20
0
class ServiceApi(ComplexModel):

    id = XmlAttribute(Unicode, use="required")
Esempio n. 21
0
class Service(ComplexModel):

    code = XmlAttribute(Unicode, use="required")
    name = XmlAttribute(Unicode, use="required")

    Api = ServiceApi.customize(min_occurs=1, max_occurs="unbounded")
Esempio n. 22
0
 class B(A):
     s = String
     sa = XmlAttribute(String)
Esempio n. 23
0
class Param(ComplexModel):

    value = XmlData(Unicode)
    key = XmlAttribute(Unicode, use="required")
    valueType = XmlAttribute(Unicode, use="required")
Esempio n. 24
0
class TypeVal(ComplexModel):
    type = XmlAttribute(Unicode)
    value = XmlData(Unicode)
Esempio n. 25
0
class Baz(ComplexModel):
    __namespace__ = NS_B

    Thing = Unicode
    AttrC = XmlAttribute(Unicode)
Esempio n. 26
0
 class PacketAttribute(ComplexModel):
     __namespace__ = 'myns'
     Data = XmlAttribute(ByteArray, use='required')
Esempio n. 27
0
 class SomeClass(ComplexModel):
     a = XmlAttribute(Integer(ge=4))
Esempio n. 28
0
class Api(ComplexModel):

    id = XmlAttribute(Unicode, use="required")
    code = XmlAttribute(Unicode, use="required")
    name = XmlAttribute(Unicode, use="required")
    module = XmlAttribute(Unicode, use="required")
Esempio n. 29
0
 class SomeObject(ComplexModel):
     s = XmlAttribute(Unicode(min_occurs=1))
Esempio n. 30
0
 class A(ComplexModel):
     i = Integer
     ia = XmlAttribute(Integer)