From c5c8085a1b83851435a94e50de96476ac6dcf3d7 Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Mon, 6 Oct 2014 15:06:06 +0200 Subject: [PATCH 1/3] Remove LibertyFederation model (refs #5639) The model is unused since commit df00c9d6c8. --- src/authentic2/saml/admin.py | 3 +- src/authentic2/saml/common.py | 2 +- src/authentic2/saml/managers.py | 8 - src/authentic2/saml/models.py | 22 -- ...ssertion__del_field_libertysession_assertion.py | 265 +++++++++++++++++++++ 5 files changed, 267 insertions(+), 33 deletions(-) create mode 100644 src/authentic2/south_migrations/0048_auto__del_libertyassertion__del_field_libertysession_assertion.py diff --git a/src/authentic2/saml/admin.py b/src/authentic2/saml/admin.py index 4edc050..ff14ef8 100644 --- a/src/authentic2/saml/admin.py +++ b/src/authentic2/saml/admin.py @@ -17,7 +17,7 @@ from authentic2.saml.models import LibertyProvider, LibertyServiceProvider from authentic2.saml.models import LibertyIdentityProvider, IdPOptionsSPPolicy from authentic2.saml.models import SPOptionsIdPPolicy from authentic2.saml.models import LibertySessionDump, LibertyFederation -from authentic2.saml.models import LibertyAssertion, LibertySessionSP, KeyValue +from authentic2.saml.models import LibertySessionSP, KeyValue from authentic2.saml.models import LibertySession from authentic2.saml.models import SAMLAttribute @@ -283,6 +283,5 @@ if settings.DEBUG: admin.site.register(LibertySessionDump) admin.site.register(LibertyFederation, LibertyFederationAdmin) admin.site.register(LibertySession) - admin.site.register(LibertyAssertion) admin.site.register(LibertySessionSP) admin.site.register(KeyValue) diff --git a/src/authentic2/saml/common.py b/src/authentic2/saml/common.py index 83f67aa..41e1f11 100644 --- a/src/authentic2/saml/common.py +++ b/src/authentic2/saml/common.py @@ -218,7 +218,7 @@ def return_saml_soap_response(profile): # Helper method to handle profiles endpoints # In the future we should move away from monolithic object (LassoIdentity and # LassoSession) holding all the datas, to manipulate them at row Level with -# LibertyFederation and LibertyAssertion objects. +# LibertyFederation objects. START_IDENTITY_DUMP = ''' ''' diff --git a/src/authentic2/saml/managers.py b/src/authentic2/saml/managers.py index a96fc89..4e542e8 100644 --- a/src/authentic2/saml/managers.py +++ b/src/authentic2/saml/managers.py @@ -31,14 +31,6 @@ class SessionLinkedQuerySet(QuerySet): SessionLinkedManager = managers.PassThroughManager \ .for_queryset_class(SessionLinkedQuerySet) -class LibertyAssertionManager(models.Manager): - def cleanup(self): - # keep assertions 1 week - expire = getattr(settings, 'SAML2_ASSERTION_EXPIRATION', 3600*24*7) - before = now()-datetime.timedelta(seconds=expire) - self.filter(creation__lt=before).delete() - - class LibertyFederationManager(models.Manager): def cleanup(self): for federation in self.filter(user__isnull=True): diff --git a/src/authentic2/saml/models.py b/src/authentic2/saml/models.py index 9bbb292..a5bddd9 100644 --- a/src/authentic2/saml/models.py +++ b/src/authentic2/saml/models.py @@ -677,26 +677,6 @@ def nameid2kwargs(name_id): 'name_id_content': name_id.content, 'name_id_format': name_id.format } -class LibertyAssertion(models.Model): - assertion_id = models.CharField(max_length = 128) - provider_id = models.CharField(max_length = 256) - session_index = models.CharField(max_length = 128, ) - assertion = models.TextField() - creation = models.DateTimeField(auto_now_add=True) - - def __init__(self, *args, **kwargs): - saml2_assertion = kwargs.pop('saml2_assertion', None) - if saml2_assertion: - kwargs['assertion_id'] = saml2_assertion.id - kwargs['session_index'] = \ - saml2_assertion.authnStatement[0].sessionIndex - kwargs['assertion'] = saml2_assertion.exportToXml() - models.Model.__init__(self, *args, **kwargs) - - class Meta: - verbose_name = _('SAML assertion') - verbose_name_plural = _('SAML assertions') - # XXX: for retrocompatibility federation_delete = managers.federation_delete @@ -768,8 +748,6 @@ class LibertySession(models.Model): provider_id = models.CharField(max_length = 256) federation = models.ForeignKey(LibertyFederation, blank=True, null = True) - assertion = models.ForeignKey(LibertyAssertion, blank=True, null - = True) name_id_qualifier = models.CharField(max_length = 256, verbose_name = _("Qualifier"), null = True) name_id_format = models.CharField(max_length = 100, diff --git a/src/authentic2/south_migrations/0048_auto__del_libertyassertion__del_field_libertysession_assertion.py b/src/authentic2/south_migrations/0048_auto__del_libertyassertion__del_field_libertysession_assertion.py new file mode 100644 index 0000000..e492750 --- /dev/null +++ b/src/authentic2/south_migrations/0048_auto__del_libertyassertion__del_field_libertysession_assertion.py @@ -0,0 +1,265 @@ +# -*- coding: utf-8 -*- +from south.db import db +from south.v2 import SchemaMigration + +from authentic2.compat import user_model_label + + +class Migration(SchemaMigration): + + def forwards(self, orm): + # Deleting model 'LibertyAssertion' + db.delete_table(u'saml_libertyassertion') + + # Deleting field 'LibertySession.assertion' + db.delete_column(u'saml_libertysession', 'assertion_id') + + + def backwards(self, orm): + # Adding model 'LibertyAssertion' + db.create_table(u'saml_libertyassertion', ( + ('provider_id', self.gf('django.db.models.fields.CharField')(max_length=256)), + ('creation', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)), + ('assertion', self.gf('django.db.models.fields.TextField')()), + ('session_index', self.gf('django.db.models.fields.CharField')(max_length=128)), + ('assertion_id', self.gf('django.db.models.fields.CharField')(max_length=128)), + (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), + )) + db.send_create_signal(u'saml', ['LibertyAssertion']) + + # Adding field 'LibertySession.assertion' + db.add_column(u'saml_libertysession', 'assertion', + self.gf('django.db.models.fields.related.ForeignKey')(to=orm['saml.LibertyAssertion'], null=True, blank=True), + keep_default=False) + + + models = { + u'attribute_aggregator.attributeitem': { + 'Meta': {'object_name': 'AttributeItem'}, + 'attribute_name': ('django.db.models.fields.CharField', [], {'default': "('OpenLDAProotDSE', 'OpenLDAProotDSE')", 'max_length': '100'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'output_name_format': ('django.db.models.fields.CharField', [], {'default': "('urn:oasis:names:tc:SAML:2.0:attrname-format:uri', 'SAMLv2 URI')", 'max_length': '100'}), + 'output_namespace': ('django.db.models.fields.CharField', [], {'default': "('Default', 'Default')", 'max_length': '100'}), + 'required': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'source': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['attribute_aggregator.AttributeSource']", 'null': 'True', 'blank': 'True'}) + }, + u'attribute_aggregator.attributelist': { + 'Meta': {'object_name': 'AttributeList'}, + 'attributes': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'attributes of the list'", 'null': 'True', 'symmetrical': 'False', 'to': u"orm['attribute_aggregator.AttributeItem']"}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) + }, + u'attribute_aggregator.attributesource': { + 'Meta': {'object_name': 'AttributeSource'}, + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '200'}), + 'namespace': ('django.db.models.fields.CharField', [], {'default': "('Default', 'Default')", 'max_length': '100'}) + }, + user_model_label: { + 'Meta': {'object_name': user_model_label.split('.')[-1]}, + }, + u'contenttypes.contenttype': { + 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, + 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) + }, + u'idp.attributepolicy': { + 'Meta': {'object_name': 'AttributePolicy'}, + 'allow_attributes_selection': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'ask_consent_attributes': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'attribute_filter_for_sso_from_push_sources': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'filter attributes of push sources with list'", 'null': 'True', 'to': u"orm['attribute_aggregator.AttributeList']"}), + 'attribute_list_for_sso_from_pull_sources': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'attributes from pull sources'", 'null': 'True', 'to': u"orm['attribute_aggregator.AttributeList']"}), + 'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'filter_source_of_filtered_attributes': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'forward_attributes_from_push_sources': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'map_attributes_from_push_sources': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'map_attributes_of_filtered_attributes': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}), + 'output_name_format': ('django.db.models.fields.CharField', [], {'default': "('urn:oasis:names:tc:SAML:2.0:attrname-format:uri', 'SAMLv2 URI')", 'max_length': '100'}), + 'output_namespace': ('django.db.models.fields.CharField', [], {'default': "('Default', 'Default')", 'max_length': '100'}), + 'send_error_and_no_attrs_if_missing_required_attrs': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'source_filter_for_sso_from_push_sources': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'filter attributes of push sources with sources'", 'null': 'True', 'symmetrical': 'False', 'to': u"orm['attribute_aggregator.AttributeSource']"}) + }, + u'saml.authorizationattributemap': { + 'Meta': {'object_name': 'AuthorizationAttributeMap'}, + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '40'}) + }, + u'saml.authorizationattributemapping': { + 'Meta': {'object_name': 'AuthorizationAttributeMapping'}, + 'attribute_name': ('django.db.models.fields.CharField', [], {'max_length': '40'}), + 'attribute_value': ('django.db.models.fields.CharField', [], {'max_length': '40'}), + 'attribute_value_format': ('django.db.models.fields.CharField', [], {'max_length': '40', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'map': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['saml.AuthorizationAttributeMap']"}), + 'source_attribute_name': ('django.db.models.fields.CharField', [], {'max_length': '40', 'blank': 'True'}) + }, + u'saml.authorizationsppolicy': { + 'Meta': {'object_name': 'AuthorizationSPPolicy'}, + 'attribute_map': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'authorization_attributes'", 'null': 'True', 'to': u"orm['saml.AuthorizationAttributeMap']"}), + 'default_denial_message': ('django.db.models.fields.CharField', [], {'default': "u'You are not authorized to access the service.'", 'max_length': '80'}), + 'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}) + }, + u'saml.idpoptionssppolicy': { + 'Meta': {'object_name': 'IdPOptionsSPPolicy'}, + 'accept_slo': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'allow_create': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'back_url': ('django.db.models.fields.CharField', [], {'default': "'/'", 'max_length': '200'}), + 'binding_for_sso_response': ('django.db.models.fields.CharField', [], {'default': "'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Artifact'", 'max_length': '200'}), + 'enable_binding_for_sso_response': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'enable_http_method_for_defederation_request': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'enable_http_method_for_slo_request': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'force_user_consent': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'forward_slo': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'handle_persistent': ('django.db.models.fields.CharField', [], {'default': "'AUTHSAML2_UNAUTH_PERSISTENT_ACCOUNT_LINKING_BY_AUTH'", 'max_length': '200'}), + 'handle_transient': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '200'}), + 'http_method_for_defederation_request': ('django.db.models.fields.IntegerField', [], {'default': '5', 'max_length': '200'}), + 'http_method_for_slo_request': ('django.db.models.fields.IntegerField', [], {'default': '4', 'max_length': '200'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '200'}), + 'no_nameid_policy': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'persistent_identifier_attribute': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), + 'requested_name_id_format': ('django.db.models.fields.CharField', [], {'default': "'none'", 'max_length': '200'}), + 'transient_is_persistent': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'want_authn_request_signed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'want_force_authn_request': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'want_is_passive_authn_request': ('django.db.models.fields.BooleanField', [], {'default': 'False'}) + }, + u'saml.keyvalue': { + 'Meta': {'object_name': 'KeyValue'}, + 'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'key': ('django.db.models.fields.CharField', [], {'max_length': '128', 'primary_key': 'True'}), + 'value': ('authentic2.saml.fields.PickledObjectField', [], {}) + }, + u'saml.libertyartifact': { + 'Meta': {'object_name': 'LibertyArtifact'}, + 'artifact': ('django.db.models.fields.CharField', [], {'max_length': '128', 'primary_key': 'True'}), + 'content': ('django.db.models.fields.TextField', [], {}), + 'creation': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'provider_id': ('django.db.models.fields.CharField', [], {'max_length': '256'}) + }, + u'saml.libertyfederation': { + 'Meta': {'object_name': 'LibertyFederation'}, + 'creation': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'idp': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['saml.LibertyIdentityProvider']", 'null': 'True', 'blank': 'True'}), + 'last_modification': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), + 'name_id_content': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'name_id_format': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), + 'name_id_qualifier': ('django.db.models.fields.CharField', [], {'max_length': '256', 'null': 'True', 'blank': 'True'}), + 'name_id_sp_name_qualifier': ('django.db.models.fields.CharField', [], {'max_length': '256', 'null': 'True', 'blank': 'True'}), + 'sp': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['saml.LibertyServiceProvider']", 'null': 'True', 'blank': 'True'}), + 'termination_notified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['%s']" % user_model_label, 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}) + }, + u'saml.libertyidentityprovider': { + 'Meta': {'object_name': 'LibertyIdentityProvider'}, + 'authorization_policy': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'authorization_policy'", 'null': 'True', 'to': u"orm['saml.AuthorizationSPPolicy']"}), + 'enable_following_authorization_policy': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'enable_following_idp_options_policy': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'idp_options_policy': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'idp_options_policy'", 'null': 'True', 'to': u"orm['saml.IdPOptionsSPPolicy']"}), + 'liberty_provider': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'identity_provider'", 'unique': 'True', 'primary_key': 'True', 'to': u"orm['saml.LibertyProvider']"}) + }, + u'saml.libertymanagedump': { + 'Meta': {'object_name': 'LibertyManageDump'}, + 'django_session_key': ('django.db.models.fields.CharField', [], {'max_length': '128'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'manage_dump': ('django.db.models.fields.TextField', [], {'blank': 'True'}) + }, + u'saml.libertyprovider': { + 'Meta': {'ordering': "('name',)", 'object_name': 'LibertyProvider'}, + 'ca_cert_chain': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'entity_id': ('django.db.models.fields.URLField', [], {'unique': 'True', 'max_length': '200'}), + 'entity_id_sha1': ('django.db.models.fields.CharField', [], {'max_length': '40', 'blank': 'True'}), + 'federation_source': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'metadata': ('django.db.models.fields.TextField', [], {}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '140', 'blank': 'True'}), + 'protocol_conformance': ('django.db.models.fields.IntegerField', [], {'max_length': '10'}), + 'public_key': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '140'}), + 'ssl_certificate': ('django.db.models.fields.TextField', [], {'blank': 'True'}) + }, + u'saml.libertyproviderpolicy': { + 'Meta': {'object_name': 'LibertyProviderPolicy'}, + 'authn_request_signature_check_hint': ('django.db.models.fields.IntegerField', [], {'default': '0'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '64'}) + }, + u'saml.libertyserviceprovider': { + 'Meta': {'object_name': 'LibertyServiceProvider'}, + 'attribute_policy': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'attribute_policy'", 'null': 'True', 'to': u"orm['idp.AttributePolicy']"}), + 'enable_following_attribute_policy': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'enable_following_sp_options_policy': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'liberty_provider': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'service_provider'", 'unique': 'True', 'primary_key': 'True', 'to': u"orm['saml.LibertyProvider']"}), + 'policy': ('django.db.models.fields.related.ForeignKey', [], {'default': '1', 'to': u"orm['saml.LibertyProviderPolicy']", 'null': 'True'}), + 'sp_options_policy': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'sp_options_policy'", 'null': 'True', 'to': u"orm['saml.SPOptionsIdPPolicy']"}) + }, + u'saml.libertysession': { + 'Meta': {'object_name': 'LibertySession'}, + 'creation': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'django_session_key': ('django.db.models.fields.CharField', [], {'max_length': '128'}), + 'federation': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['saml.LibertyFederation']", 'null': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name_id_content': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'name_id_format': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True'}), + 'name_id_qualifier': ('django.db.models.fields.CharField', [], {'max_length': '256', 'null': 'True'}), + 'name_id_sp_name_qualifier': ('django.db.models.fields.CharField', [], {'max_length': '256', 'null': 'True'}), + 'provider_id': ('django.db.models.fields.CharField', [], {'max_length': '256'}), + 'session_index': ('django.db.models.fields.CharField', [], {'max_length': '80'}) + }, + u'saml.libertysessiondump': { + 'Meta': {'object_name': 'LibertySessionDump'}, + 'django_session_key': ('django.db.models.fields.CharField', [], {'max_length': '128'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'kind': ('django.db.models.fields.IntegerField', [], {}), + 'session_dump': ('django.db.models.fields.TextField', [], {'blank': 'True'}) + }, + u'saml.libertysessionsp': { + 'Meta': {'object_name': 'LibertySessionSP'}, + 'django_session_key': ('django.db.models.fields.CharField', [], {'max_length': '128'}), + 'federation': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['saml.LibertyFederation']"}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'session_index': ('django.db.models.fields.CharField', [], {'max_length': '80'}) + }, + u'saml.samlattribute': { + 'Meta': {'object_name': 'SAMLAttribute'}, + 'attribute_name': ('django.db.models.fields.CharField', [], {'max_length': '64'}), + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}), + 'friendly_name': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}), + 'name_format': ('django.db.models.fields.CharField', [], {'default': "'basic'", 'max_length': '64'}), + 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}) + }, + u'saml.spoptionsidppolicy': { + 'Meta': {'object_name': 'SPOptionsIdPPolicy'}, + 'accept_slo': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'accepted_name_id_format': ('authentic2.saml.fields.MultiSelectField', [], {'max_length': '1024', 'blank': 'True'}), + 'ask_user_consent': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'authn_request_signed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'default_name_id_format': ('django.db.models.fields.CharField', [], {'default': "'none'", 'max_length': '256'}), + 'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'encrypt_assertion': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'encrypt_nameid': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'federation_mode': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}), + 'forward_slo': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'http_method_for_slo_request': ('django.db.models.fields.IntegerField', [], {'default': '4'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'idp_initiated_sso': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'iframe_logout_timeout': ('django.db.models.fields.PositiveIntegerField', [], {'default': '300'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), + 'needs_iframe_logout': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'prefered_assertion_consumer_binding': ('django.db.models.fields.CharField', [], {'default': "'meta'", 'max_length': '4'}) + } + } + + complete_apps = ['saml'] -- 2.1.4