36 lines
1.3 KiB
Python
36 lines
1.3 KiB
Python
from django.db import models
|
|
from django.contrib.auth.models import AbstractUser
|
|
from django.contrib.sessions.models import Session
|
|
from django.utils.translation import gettext_lazy as _
|
|
|
|
|
|
class User(AbstractUser):
|
|
first_name = models.CharField(_("Name"), max_length=96, blank=True, null=True)
|
|
last_name = models.CharField(_("Surname"), max_length=96, blank=True, null=True)
|
|
is_active = models.BooleanField(_("active"), default=True)
|
|
email = models.EmailField("email address", blank=True, null=True)
|
|
origin = models.CharField(
|
|
_("from which connector this user come from"),
|
|
max_length=254,
|
|
blank=True,
|
|
null=True,
|
|
)
|
|
attributes = models.JSONField(default=dict, blank=True, null=True)
|
|
|
|
class Meta:
|
|
ordering = ["username"]
|
|
verbose_name_plural = _("Users")
|
|
|
|
def clear_sessions(self): # pragma: no cover
|
|
user_sessions = []
|
|
for session in Session.objects.all():
|
|
if str(self.pk) == session.get_decoded().get("_auth_user_id"):
|
|
user_sessions.append(session.pk)
|
|
return Session.objects.filter(pk__in=user_sessions).delete()
|
|
|
|
def __str__(self): # pragma: no cover
|
|
return "{} {}".format(
|
|
self.first_name or self.attributes.get('given_name'),
|
|
self.last_name or self.attributes.get('family_name', "")
|
|
)
|