diff --git a/src/saml2/extension/dri.py b/src/saml2/extension/dri.py
index 121e027..8a5ae00 100644
--- a/src/saml2/extension/dri.py
+++ b/src/saml2/extension/dri.py
@@ -1,260 +1,338 @@
-#!/usr/bin/python
-# -*- coding: utf-8 -*-
-#
-# Copyright (C) 2010 Umeå University
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
+#!/usr/bin/env python
-"""
-Contains classes representing SAML Metadata Documentation and
-Registration Information Extensions
-"""
+#
+# Generated Mon Oct 25 16:19:28 2010 by parse_xsd.py version 0.4.
+#
import saml2
from saml2 import SamlBase
-NAMESPACE = "urn:oasis:names:tc:SAML:2.0:metadata:dri"
+from saml2 import md
-#-----------------------------------------------
-#
-#-----------------------------------------------
+NAMESPACE = 'urn:oasis:names:tc:SAML:2.0:metadata:dri'
class CreationInstant(SamlBase):
- """The dri:CreationInstant element"""
+ """The urn:oasis:names:tc:SAML:2.0:metadata:dri:CreationInstant element """
c_tag = 'CreationInstant'
- c_type = "datetime"
+ c_namespace = NAMESPACE
+ c_value_type = {'base': 'datetime'}
c_children = SamlBase.c_children.copy()
c_attributes = SamlBase.c_attributes.copy()
+ c_child_order = SamlBase.c_child_order[:]
+ c_cardinality = SamlBase.c_cardinality.copy()
def creation_instant_from_string(xml_string):
- """ Create CreationInstant instance from an XML string """
return saml2.create_class_from_xml_string(CreationInstant, xml_string)
-#----------------------------------------------------------------------------
-#
-#----------------------------------------------------------------------------
class SerialNumber(SamlBase):
- """The dri:SerialNumber element"""
+ """The urn:oasis:names:tc:SAML:2.0:metadata:dri:SerialNumber element """
c_tag = 'SerialNumber'
- c_type = "string"
+ c_namespace = NAMESPACE
+ c_value_type = {'base': 'string'}
c_children = SamlBase.c_children.copy()
c_attributes = SamlBase.c_attributes.copy()
+ c_child_order = SamlBase.c_child_order[:]
+ c_cardinality = SamlBase.c_cardinality.copy()
-def serial_number_instant_from_string(xml_string):
- """ Create SerialNumber instance from an XML string """
+def serial_number_from_string(xml_string):
return saml2.create_class_from_xml_string(SerialNumber, xml_string)
-#----------------------------------------------------------------------------
-#
-#----------------------------------------------------------------------------
class UsagePolicy(SamlBase):
- """The dri:UsagePolicy element"""
+ """The urn:oasis:names:tc:SAML:2.0:metadata:dri:UsagePolicy element """
c_tag = 'UsagePolicy'
- c_type = "anyURI"
+ c_namespace = NAMESPACE
+ c_value_type = {'base': 'anyURI'}
c_children = SamlBase.c_children.copy()
c_attributes = SamlBase.c_attributes.copy()
+ c_child_order = SamlBase.c_child_order[:]
+ c_cardinality = SamlBase.c_cardinality.copy()
-def usage_policy_instant_from_string(xml_string):
- """ Create UsagePolicy instance from an XML string """
+def usage_policy_from_string(xml_string):
return saml2.create_class_from_xml_string(UsagePolicy, xml_string)
-#----------------------------------------------------------------------------
-#
-#
-#
-#
-#
-#
-#----------------------------------------------------------------------------
-class Publisher(SamlBase):
- """The dri:Publisher element"""
+class PublisherType_(SamlBase):
+ """The urn:oasis:names:tc:SAML:2.0:metadata:dri:PublisherType element """
+
+ c_tag = 'PublisherType'
+ c_namespace = NAMESPACE
+ c_children = SamlBase.c_children.copy()
+ c_attributes = SamlBase.c_attributes.copy()
+ c_child_order = SamlBase.c_child_order[:]
+ c_cardinality = SamlBase.c_cardinality.copy()
+ c_attributes['PublisherID'] = ('publisher_id', 'md:entityIDType', True)
+ c_attributes['CreationInstant'] = ('creation_instant', 'datetime', False)
+ c_attributes['SerialNumber'] = ('serial_number', 'string', False)
+
+ def __init__(self,
+ publisher_id=None,
+ creation_instant=None,
+ serial_number=None,
+ text=None,
+ extension_elements=None,
+ extension_attributes=None,
+ ):
+ SamlBase.__init__(self,
+ text=text,
+ extension_elements=extension_elements,
+ extension_attributes=extension_attributes,
+ )
+ self.publisher_id=publisher_id
+ self.creation_instant=creation_instant
+ self.serial_number=serial_number
+
+def publisher_type__from_string(xml_string):
+ return saml2.create_class_from_xml_string(PublisherType_, xml_string)
+
+
+class RegistrationAuthority(md.EntityIDType_):
+ """The urn:oasis:names:tc:SAML:2.0:metadata:dri:RegistrationAuthority element """
+
+ c_tag = 'RegistrationAuthority'
+ c_namespace = NAMESPACE
+ c_children = md.EntityIDType_.c_children.copy()
+ c_attributes = md.EntityIDType_.c_attributes.copy()
+ c_child_order = md.EntityIDType_.c_child_order[:]
+ c_cardinality = md.EntityIDType_.c_cardinality.copy()
+
+def registration_authority_from_string(xml_string):
+ return saml2.create_class_from_xml_string(RegistrationAuthority, xml_string)
+
+
+class RegistrationInstant(SamlBase):
+ """The urn:oasis:names:tc:SAML:2.0:metadata:dri:RegistrationInstant element """
+
+ c_tag = 'RegistrationInstant'
+ c_namespace = NAMESPACE
+ c_value_type = {'base': 'datetime'}
+ c_children = SamlBase.c_children.copy()
+ c_attributes = SamlBase.c_attributes.copy()
+ c_child_order = SamlBase.c_child_order[:]
+ c_cardinality = SamlBase.c_cardinality.copy()
+
+def registration_instant_from_string(xml_string):
+ return saml2.create_class_from_xml_string(RegistrationInstant, xml_string)
+
+
+class RegistrationPolicy(SamlBase):
+ """The urn:oasis:names:tc:SAML:2.0:metadata:dri:RegistrationPolicy element """
+
+ c_tag = 'RegistrationPolicy'
+ c_namespace = NAMESPACE
+ c_value_type = {'base': 'anyURI'}
+ c_children = SamlBase.c_children.copy()
+ c_attributes = SamlBase.c_attributes.copy()
+ c_child_order = SamlBase.c_child_order[:]
+ c_cardinality = SamlBase.c_cardinality.copy()
+
+def registration_policy_from_string(xml_string):
+ return saml2.create_class_from_xml_string(RegistrationPolicy, xml_string)
+
+
+class Publisher(PublisherType_):
+ """The urn:oasis:names:tc:SAML:2.0:metadata:dri:Publisher element """
c_tag = 'Publisher'
- c_type = "anyURI"
- c_children = SamlBase.c_children.copy()
- c_attributes = SamlBase.c_attributes.copy()
-# c_attributes['PublisherID'] = ('publisher_id', "md:entityIDType")
- c_attributes['PublisherID'] = 'publisher_id'
- c_attributes['CreationInstant'] = 'creation_instant'
- c_attributes['SerialNumber'] = 'serial_number'
+ c_namespace = NAMESPACE
+ c_children = PublisherType_.c_children.copy()
+ c_attributes = PublisherType_.c_attributes.copy()
+ c_child_order = PublisherType_.c_child_order[:]
+ c_cardinality = PublisherType_.c_cardinality.copy()
- def __init__(self, publisher_id=None, creation_instant=None,
- serial_number=None, text=None,
- extension_elements=None, extension_attributes=None):
- """Constructor for Publisher
-
- :param text: The text data in the this element
- :param extension_elements: A list of ExtensionElement instances
- :param extension_attributes: A dictionary of attribute value string
- pairs.
- """
- SamlBase.__init__(self, text, extension_elements, extension_attributes)
- self.publisher_id = publisher_id
- self.creation_instant = creation_instant
- self.serial_number = serial_number
-
-def publisher_instant_from_string(xml_string):
- """ Create Publisher instance from an XML string """
+def publisher_from_string(xml_string):
return saml2.create_class_from_xml_string(Publisher, xml_string)
-#-----------------------------------------------
-#
-#
-#
-#
-#
-#
-#
-#
-#
-class DocumentInfo(SamlBase):
- """The dri:DocumentInfo element"""
+class RegistrationInfoType_(SamlBase):
+ """The urn:oasis:names:tc:SAML:2.0:metadata:dri:RegistrationInfoType element """
- c_tag = 'DocumentInfo'
- c_type = "complex"
+ c_tag = 'RegistrationInfoType'
+ c_namespace = NAMESPACE
c_children = SamlBase.c_children.copy()
c_attributes = SamlBase.c_attributes.copy()
- c_children['{%s}CreationInstant' % NAMESPACE] = (
- 'creation_instant', CreationInstant)
- c_children['{%s}SerialNumber' % NAMESPACE] = (
- 'serial_number', SerialNumber)
- c_children['{%s}UsagePolicy' % NAMESPACE] = (
- 'usage_policy', UsagePolicy)
- c_children['{%s}Publishers' % NAMESPACE] = (
- 'publishers', Publishers)
- c_child_order = ["creation_instant", "serial_number",
- "usage_policy", "publishers"]
+ c_child_order = SamlBase.c_child_order[:]
+ c_cardinality = SamlBase.c_cardinality.copy()
+ c_children['{urn:oasis:names:tc:SAML:2.0:metadata:dri}RegistrationAuthority'] = ('registration_authority', RegistrationAuthority)
+ c_children['{urn:oasis:names:tc:SAML:2.0:metadata:dri}RegistrationInstant'] = ('registration_instant', RegistrationInstant)
+ c_children['{urn:oasis:names:tc:SAML:2.0:metadata:dri}RegistrationPolicy'] = ('registration_policy', RegistrationPolicy)
+ c_cardinality['registration_policy'] = {"min":0, "max":1}
+ c_child_order.extend(['registration_authority', 'registration_instant', 'registration_policy'])
- def __init__(self, creation_instant=None, serial_number=None,
- usage_policy=None, publishers=None, text=None,
- extension_elements=None, extension_attributes=None):
- """Constructor for UsagePolicy, an extension point that allows
- applications to add new kinds of identifiers.
+ def __init__(self,
+ registration_authority=None,
+ registration_instant=None,
+ registration_policy=None,
+ text=None,
+ extension_elements=None,
+ extension_attributes=None,
+ ):
+ SamlBase.__init__(self,
+ text=text,
+ extension_elements=extension_elements,
+ extension_attributes=extension_attributes,
+ )
+ self.registration_authority=registration_authority
+ self.registration_instant=registration_instant
+ self.registration_policy=registration_policy
- :param text: The text data in the this element
- :param extension_elements: A list of ExtensionElement instances
- :param extension_attributes: A dictionary of attribute value string
- pairs.
- """
- SamlBase.__init__(self, text, extension_elements, extension_attributes)
- self.creation_instant = creation_instant
- self.serial_number = serial_number
- self.usage_policy = usage_policy
- self.publishers = publishers
+def registration_info_type__from_string(xml_string):
+ return saml2.create_class_from_xml_string(RegistrationInfoType_, xml_string)
-def document_info_instant_from_string(xml_string):
- """ Create DocumentInfo instance from an XML string """
+
+class PublishersType_(SamlBase):
+ """The urn:oasis:names:tc:SAML:2.0:metadata:dri:PublishersType element """
+
+ c_tag = 'PublishersType'
+ c_namespace = NAMESPACE
+ c_children = SamlBase.c_children.copy()
+ c_attributes = SamlBase.c_attributes.copy()
+ c_child_order = SamlBase.c_child_order[:]
+ c_cardinality = SamlBase.c_cardinality.copy()
+ c_children['{urn:oasis:names:tc:SAML:2.0:metadata:dri}Publisher'] = ('publisher', [Publisher])
+ c_cardinality['publisher'] = {"min":0}
+ c_child_order.extend(['publisher'])
+
+ def __init__(self,
+ publisher=None,
+ text=None,
+ extension_elements=None,
+ extension_attributes=None,
+ ):
+ SamlBase.__init__(self,
+ text=text,
+ extension_elements=extension_elements,
+ extension_attributes=extension_attributes,
+ )
+ self.publisher=publisher or []
+
+def publishers_type__from_string(xml_string):
+ return saml2.create_class_from_xml_string(PublishersType_, xml_string)
+
+
+class RegistrationInfo(RegistrationInfoType_):
+ """The urn:oasis:names:tc:SAML:2.0:metadata:dri:RegistrationInfo element """
+
+ c_tag = 'RegistrationInfo'
+ c_namespace = NAMESPACE
+ c_children = RegistrationInfoType_.c_children.copy()
+ c_attributes = RegistrationInfoType_.c_attributes.copy()
+ c_child_order = RegistrationInfoType_.c_child_order[:]
+ c_cardinality = RegistrationInfoType_.c_cardinality.copy()
+
+def registration_info_from_string(xml_string):
+ return saml2.create_class_from_xml_string(RegistrationInfo, xml_string)
+
+
+class Publishers(PublishersType_):
+ """The urn:oasis:names:tc:SAML:2.0:metadata:dri:Publishers element """
+
+ c_tag = 'Publishers'
+ c_namespace = NAMESPACE
+ c_children = PublishersType_.c_children.copy()
+ c_attributes = PublishersType_.c_attributes.copy()
+ c_child_order = PublishersType_.c_child_order[:]
+ c_cardinality = PublishersType_.c_cardinality.copy()
+
+def publishers_from_string(xml_string):
+ return saml2.create_class_from_xml_string(Publishers, xml_string)
+
+
+class DocumentInfoType_(SamlBase):
+ """The urn:oasis:names:tc:SAML:2.0:metadata:dri:DocumentInfoType element """
+
+ c_tag = 'DocumentInfoType'
+ c_namespace = NAMESPACE
+ c_children = SamlBase.c_children.copy()
+ c_attributes = SamlBase.c_attributes.copy()
+ c_child_order = SamlBase.c_child_order[:]
+ c_cardinality = SamlBase.c_cardinality.copy()
+ c_children['{urn:oasis:names:tc:SAML:2.0:metadata:dri}CreationInstant'] = ('creation_instant', CreationInstant)
+ c_cardinality['creation_instant'] = {"min":0, "max":1}
+ c_children['{urn:oasis:names:tc:SAML:2.0:metadata:dri}SerialNumber'] = ('serial_number', SerialNumber)
+ c_cardinality['serial_number'] = {"min":0, "max":1}
+ c_children['{urn:oasis:names:tc:SAML:2.0:metadata:dri}UsagePolicy'] = ('usage_policy', UsagePolicy)
+ c_cardinality['usage_policy'] = {"min":0, "max":1}
+ c_children['{urn:oasis:names:tc:SAML:2.0:metadata:dri}Publishers'] = ('publishers', Publishers)
+ c_cardinality['publishers'] = {"min":0, "max":1}
+ c_child_order.extend(['creation_instant', 'serial_number', 'usage_policy', 'publishers'])
+
+ def __init__(self,
+ creation_instant=None,
+ serial_number=None,
+ usage_policy=None,
+ publishers=None,
+ text=None,
+ extension_elements=None,
+ extension_attributes=None,
+ ):
+ SamlBase.__init__(self,
+ text=text,
+ extension_elements=extension_elements,
+ extension_attributes=extension_attributes,
+ )
+ self.creation_instant=creation_instant
+ self.serial_number=serial_number
+ self.usage_policy=usage_policy
+ self.publishers=publishers
+
+def document_info_type__from_string(xml_string):
+ return saml2.create_class_from_xml_string(DocumentInfoType_, xml_string)
+
+
+class DocumentInfo(DocumentInfoType_):
+ """The urn:oasis:names:tc:SAML:2.0:metadata:dri:DocumentInfo element """
+
+ c_tag = 'DocumentInfo'
+ c_namespace = NAMESPACE
+ c_children = DocumentInfoType_.c_children.copy()
+ c_attributes = DocumentInfoType_.c_attributes.copy()
+ c_child_order = DocumentInfoType_.c_child_order[:]
+ c_cardinality = DocumentInfoType_.c_cardinality.copy()
+
+def document_info_from_string(xml_string):
return saml2.create_class_from_xml_string(DocumentInfo, xml_string)
-# ---------------------------------------------------------------------------
-#
-# ---------------------------------------------------------------------------
+ELEMENT_FROM_STRING = {
+ DocumentInfo.c_tag: document_info_from_string,
+ DocumentInfoType_.c_tag: document_info_type__from_string,
+ CreationInstant.c_tag: creation_instant_from_string,
+ SerialNumber.c_tag: serial_number_from_string,
+ UsagePolicy.c_tag: usage_policy_from_string,
+ Publishers.c_tag: publishers_from_string,
+ PublishersType_.c_tag: publishers_type__from_string,
+ Publisher.c_tag: publisher_from_string,
+ PublisherType_.c_tag: publisher_type__from_string,
+ RegistrationInfo.c_tag: registration_info_from_string,
+ RegistrationInfoType_.c_tag: registration_info_type__from_string,
+ RegistrationAuthority.c_tag: registration_authority_from_string,
+ RegistrationInstant.c_tag: registration_instant_from_string,
+ RegistrationPolicy.c_tag: registration_policy_from_string,
+}
-class RegistrationAuthority(SamlBase):
- """The dri:RegistrationAuthority element"""
+ELEMENT_BY_TAG = {
+ 'DocumentInfo': DocumentInfo,
+ 'DocumentInfoType': DocumentInfoType_,
+ 'CreationInstant': CreationInstant,
+ 'SerialNumber': SerialNumber,
+ 'UsagePolicy': UsagePolicy,
+ 'Publishers': Publishers,
+ 'PublishersType': PublishersType_,
+ 'Publisher': Publisher,
+ 'PublisherType': PublisherType_,
+ 'RegistrationInfo': RegistrationInfo,
+ 'RegistrationInfoType': RegistrationInfoType_,
+ 'RegistrationAuthority': RegistrationAuthority,
+ 'RegistrationInstant': RegistrationInstant,
+ 'RegistrationPolicy': RegistrationPolicy,
+}
- c_tag = 'RegistrationAuthority'
- c_type = "md:entityIDType"
- c_children = SamlBase.c_children.copy()
- c_attributes = SamlBase.c_attributes.copy()
-def registration_authority_instant_from_string(xml_string):
- """ Create RegistrationAuthority instance from an XML string """
- return saml2.create_class_from_xml_string(RegistrationAuthority, xml_string)
+def factory(tag, **kwargs):
+ return ELEMENT_BY_TAG[tag](**kwargs)
-# ---------------------------------------------------------------------------
-#
-# ---------------------------------------------------------------------------
-
-class RegistrationInstant(SamlBase):
- """The dri:RegistrationInstant element"""
-
- c_tag = 'RegistrationInstant'
- c_type = "datetime"
- c_children = SamlBase.c_children.copy()
- c_attributes = SamlBase.c_attributes.copy()
-
-def registration_instant_instant_from_string(xml_string):
- """ Create RegistrationInstant instance from an XML string """
- return saml2.create_class_from_xml_string(RegistrationInstant, xml_string)
-
-# ---------------------------------------------------------------------------
-#
-# ---------------------------------------------------------------------------
-
-class RegistrationPolicy(SamlBase):
- """The dri:RegistrationPolicy element"""
-
- c_tag = 'RegistrationPolicy'
- c_type = "anyURI"
- c_children = SamlBase.c_children.copy()
- c_attributes = SamlBase.c_attributes.copy()
-
-def registration_policy_instant_from_string(xml_string):
- """ Create RegistrationPolicy instance from an XML string """
- return saml2.create_class_from_xml_string(RegistrationPolicy, xml_string)
-
-# ---------------------------------------------------------------------------
-#
-#
-#
-#
-#
-#
-#
-#
-# ---------------------------------------------------------------------------
-
-class RegistrationInfo(SamlBase):
- """The dri:RegistrationInfo element"""
-
- c_tag = 'RegistrationInfo'
- c_type = "complex"
- c_children = SamlBase.c_children.copy()
- c_attributes = SamlBase.c_attributes.copy()
- c_children['{%s}RegistrationAuthority' % NAMESPACE] = (
- 'registration_authority', RegistrationAuthority)
- c_children['{%s}RegistrationInstant' % NAMESPACE] = (
- 'registration_instant', RegistrationInstant)
- c_children['{%s}RegistrationPolicy' % NAMESPACE] = (
- 'registration_policy', RegistrationPolicy)
- c_child_order = ["registration_authority", "registration_instant",
- "registration_policy"]
-
- def __init__(self, registration_authority=None, registration_instant=None,
- registration_policy=None, text=None,
- extension_elements=None, extension_attributes=None):
- """Constructor for UsagePolicy, an extension point that allows
- applications to add new kinds of identifiers.
-
- :param text: The text data in the this element
- :param extension_elements: A list of ExtensionElement instances
- :param extension_attributes: A dictionary of attribute value string
- pairs.
- """
- SamlBase.__init__(self, text, extension_elements, extension_attributes)
- self.registration_authority = registration_authority
- self.registration_instant = registration_instant
- self.registration_policy = registration_policy
-
-def registration_info_instant_from_string(xml_string):
- """ Create RegistrationInfo instance from an XML string """
- return saml2.create_class_from_xml_string(RegistrationInfo, xml_string)