Fix token auto create signal

remotes/origin/hasaccess
Ivlev Denis 8 years ago
parent 01e09741f6
commit 77a0bb26e8
  1. 29
      apps/user/models.py

@ -1,4 +1,6 @@
from django.db import models from django.db import models
from django.db.models.signals import post_save
from django.dispatch import receiver
from django.contrib.auth.models import AbstractUser, UserManager from django.contrib.auth.models import AbstractUser, UserManager
from django.contrib.postgres import fields as pgfields from django.contrib.postgres import fields as pgfields
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
@ -59,16 +61,17 @@ class User(AbstractUser):
user_data = dumps(user_data, ensure_ascii=False) user_data = dumps(user_data, ensure_ascii=False)
return user_data return user_data
@receiver(post_save, sender=User)
def create_auth_token(sender, instance=None, created=False, **kwargs): @receiver(post_save, sender=User)
if ( def create_auth_token(sender, instance=None, created=False, **kwargs):
(instance.is_active or instance.fb_id) and if (
instance.role in [User.AUTHOR_ROLE, User.ADMIN_ROLE] and not (instance.is_active or instance.fb_id) and
hasattr(instance, 'auth_token') instance.role in [User.AUTHOR_ROLE, User.ADMIN_ROLE] and not
): hasattr(instance, 'auth_token')
Token.objects.create(user=instance) ):
elif ( Token.objects.create(user=instance)
not (instance.is_active or instance.fb_id) or elif (
instance.role not in [User.AUTHOR_ROLE, User.ADMIN_ROLE] not (instance.is_active or instance.fb_id) or
) and hasattr(instance, 'auth_token'): instance.role not in [User.AUTHOR_ROLE, User.ADMIN_ROLE]
instance.auth_token.delete() ) and hasattr(instance, 'auth_token'):
instance.auth_token.delete()

Loading…
Cancel
Save