CAS = '{%s}' % CAS_URI
+try:
+ basestring
+except NameError:
+ basestring = (str, bytes)
+
+
def jasig(auth_success, attrs):
attributes = etree.SubElement(auth_success, CAS + 'attributes')
style = etree.SubElement(attributes, CAS + 'attraStyle')
style.text = u'Jasig'
- for name, value in attrs.items():
+ for name, value in sorted(attrs.items()):
if isinstance(value, collections.Iterable) and not isinstance(value, basestring):
for e in value:
element = etree.SubElement(attributes, CAS + name)
def ruby_cas(auth_success, attrs):
style = etree.SubElement(auth_success, CAS + 'attraStyle')
style.text = u'RubyCAS'
- for name, value in attrs.items():
+ for name, value in sorted(attrs.items()):
if isinstance(value, collections.Iterable) and not isinstance(value, basestring):
for e in value:
element = etree.SubElement(auth_success, CAS + name)
def name_value(auth_success, attrs):
etree.SubElement(auth_success, CAS + 'attribute', name=u'attraStyle', value=u'Name-Value')
- for name, value in attrs.items():
+ for name, value in sorted(attrs.items()):
if isinstance(value, collections.Iterable) and not isinstance(value, basestring):
for e in value:
etree.SubElement(auth_success, CAS + 'attribute', name=name, value=e)