Start a model for the liberty application

This commit is contained in:
Benjamin Dauvergne 2010-06-01 11:31:01 +02:00
parent 8b79f95210
commit e41b949f7f
4 changed files with 48 additions and 0 deletions

0
idp/liberty/__init__.py Normal file
View File

1
idp/liberty/endpoints.py Normal file
View File

@ -0,0 +1 @@
import lasso

46
idp/liberty/models.py Normal file
View File

@ -0,0 +1,46 @@
from django.db import models
from django.contrib.auth.models import User
# Configuration models
def fix_name(name):
return name.replace(' ', '_').replace('/', '_')
class FilenameGenerator(object):
def __init__(self, infix):
self.prefix = infix
def __call__(self, instance, filename):
return os.path.join(self.prefix,
"%s_%s_%s" % (fix_name(instance.name), filename,
time.strftime("%Y%m%dT%H:%M:%SZ", time.gmtime())))
class LibertyServiceProvider(models.Model):
name = models.CharField(max_length = 40, unique = True,
help_text = "Internal nickname for the service provider")
metadata = models.FileField(upload_to = FilenameGenerator("metadata"))
public_key = models.FileField(upload_to = FilenameGenerator("public_key"))
ssl_certificate = models.FileField(upload_to = FilenameGenerator("ssl_certificate"))
# Transactional models
class LibertyFederation(models.Model):
user = models.ForeignKey(User)
name_id_qualifier = models.CharField(max_length = 150, editable = False, verbose_name = "Qualifier")
name_id_format = models.CharField(max_length = 100, editable = False, verbose_name = "NameIDFormat")
name_id_content = models.CharField(max_length = 100, editable = False, verbose_name = "NameID")
name_id_sp_name_qualifier = models.CharField(max_length = 100, editable = False, verbose_name = "SPNameQualifier")
class LibertySession(models.Model):
django_session_key = models.CharField(max_length = 40, editable = False)
# When we receive a logout request, we lookup the LibertyAssertions, then the LibertySession and the the real DjangoSession
class LibertyAssertions(models.Model):
liberty_session = models.ForeignKey(LibertySession, editable = False)
session_index = models.CharField(max_length = 80, editable = False)
assertion = models.TextField(editable = False)
emission_time = models.DateTimeField(auto_now = True, editable = False)

View File

@ -98,6 +98,7 @@ INSTALLED_APPS = (
'django.contrib.messages',
'django.contrib.admin',
'authentic.idp',
'authentic.idp.liberty',
'registration'
)