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.
35 lines
917 B
35 lines
917 B
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
|
|
|