summaryrefslogtreecommitdiff
path: root/baserock_openid_provider/openid_provider/models.py
diff options
context:
space:
mode:
Diffstat (limited to 'baserock_openid_provider/openid_provider/models.py')
-rw-r--r--baserock_openid_provider/openid_provider/models.py42
1 files changed, 42 insertions, 0 deletions
diff --git a/baserock_openid_provider/openid_provider/models.py b/baserock_openid_provider/openid_provider/models.py
new file mode 100644
index 00000000..bad24d9a
--- /dev/null
+++ b/baserock_openid_provider/openid_provider/models.py
@@ -0,0 +1,42 @@
+# -*- coding: utf-8 -*-
+# vim: set ts=4 sw=4 : */
+
+from django.utils.translation import ugettext_lazy as _
+from django.db import models
+
+from openid_provider.conf import AUTH_USER_MODEL
+from openid_provider.utils import get_username
+
+class OpenID(models.Model):
+ user = models.ForeignKey(AUTH_USER_MODEL)
+ openid = models.CharField(max_length=200, blank=True, unique=True)
+ default = models.BooleanField(default=False)
+
+ class Meta:
+ verbose_name = _('OpenID')
+ verbose_name_plural = _('OpenIDs')
+ ordering = ['openid']
+
+ def __unicode__(self):
+ return u"%s|%s" % (get_username(self.user), self.openid)
+
+ def save(self, *args, **kwargs):
+ if self.openid in ['', u'', None]:
+ from hashlib import sha1
+ import random, base64
+ sha = sha1()
+ sha.update(unicode(get_username(self.user)).encode('utf-8'))
+ sha.update(str(random.random()))
+ value = str(base64.b64encode(sha.digest()))
+ value = value.replace('/', '').replace('+', '').replace('=', '')
+ self.openid = value
+ super(OpenID, self).save(*args, **kwargs)
+ if self.default:
+ self.user.openid_set.exclude(pk=self.pk).update(default=False)
+
+class TrustedRoot(models.Model):
+ openid = models.ForeignKey(OpenID)
+ trust_root = models.CharField(max_length=200)
+
+ def __unicode__(self):
+ return unicode(self.trust_root)