Now you can use custom formatters to custom user attributes
[django-cas-provider.git] / cas_provider / attribute_formatters.py
diff --git a/cas_provider/attribute_formatters.py b/cas_provider/attribute_formatters.py
new file mode 100644 (file)
index 0000000..3f3ab3c
--- /dev/null
@@ -0,0 +1,41 @@
+from lxml import etree
+
+CAS_URI = 'http://www.yale.edu/tp/cas'
+NSMAP = {'cas': CAS_URI}
+CAS = '{%s}' % CAS_URI
+
+
+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():
+        if isinstance(value, list):
+            for e in value:
+                element = etree.SubElement(attributes, CAS + name)
+                element.text = e
+        else:
+            element = etree.SubElement(attributes, CAS + name)
+            element.text = value
+
+
+def ruby_cas(auth_success, attrs):
+    style = etree.SubElement(auth_success, CAS + 'attraStyle')
+    style.text = u'RubyCAS'
+    for name, value in attrs.items():
+        if isinstance(value, list):
+            for e in value:
+                element = etree.SubElement(auth_success, CAS + name)
+                element.text = e
+        else:
+            element = etree.SubElement(auth_success, CAS + name)
+            element.text = value
+
+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():
+        if isinstance(value, list):
+            for e in value:
+                etree.SubElement(auth_success, CAS + 'attribute', name=name, value=e)
+        else:
+            etree.SubElement(auth_success, CAS + 'attribute', name=name, value=value)