You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
36 lines
917 B
36 lines
917 B
2 years ago
|
import os
|
||
|
|
||
|
from django.conf import settings
|
||
|
from django.db import models
|
||
|
from django.utils.translation import gettext_lazy as _
|
||
|
|
||
|
try:
|
||
|
from django_scopes import ScopedManager
|
||
|
except ImportError:
|
||
|
ScopedManager = False
|
||
|
|
||
|
|
||
|
class Token(models.Model):
|
||
|
key = models.CharField(_('key'), max_length=40, primary_key=True)
|
||
|
user = models.ForeignKey(
|
||
|
settings.AUTH_USER_MODEL, related_name='tokens',
|
||
|
on_delete=models.CASCADE, verbose_name=_('User'),
|
||
|
)
|
||
|
creation_date = models.DateTimeField(_('Creation Date'), auto_now_add=True)
|
||
|
|
||
|
class Meta:
|
||
|
verbose_name = _('Token')
|
||
|
verbose_name_plural = _('Tokens')
|
||
|
|
||
|
def save(self, *args, **kwargs):
|
||
|
if not self.key:
|
||
|
self.key = self.gen_key()
|
||
|
return super().save(*args, **kwargs)
|
||
|
|
||
|
@classmethod
|
||
|
def gen_key(cls):
|
||
|
return os.urandom(20).hex()
|
||
|
|
||
|
def __str__(self):
|
||
|
return self.key
|