Revision 1808f7bc snf-astakos-app/astakos/im/models.py
b/snf-astakos-app/astakos/im/models.py | ||
---|---|---|
337 | 337 |
qextra = Q(**kwargs) |
338 | 338 |
return self.filter((qemail | qusername) & qextra).exists() |
339 | 339 |
|
340 |
def unverified_namesakes(self, email_or_username): |
|
341 |
q = Q(email__iexact=email_or_username) |
|
342 |
q |= Q(username__iexact=email_or_username) |
|
343 |
return self.filter(q & Q(email_verified=False)) |
|
344 |
|
|
340 | 345 |
def verified_user_exists(self, email_or_username): |
341 | 346 |
return self.user_exists(email_or_username, email_verified=True) |
342 | 347 |
|
... | ... | |
465 | 470 |
|
466 | 471 |
objects = AstakosUserManager() |
467 | 472 |
|
468 |
def __init__(self, *args, **kwargs): |
|
469 |
super(AstakosUser, self).__init__(*args, **kwargs) |
|
470 |
if not self.id: |
|
471 |
self.is_active = False |
|
472 |
|
|
473 | 473 |
@property |
474 | 474 |
def realname(self): |
475 | 475 |
return '%s %s' % (self.first_name, self.last_name) |
... | ... | |
529 | 529 |
return AstakosUserQuota.objects.select_related("resource").\ |
530 | 530 |
get(user=self, resource__name=resource) |
531 | 531 |
|
532 |
def update_uuid(self): |
|
533 |
while not self.uuid: |
|
534 |
uuid_val = str(uuid.uuid4()) |
|
535 |
try: |
|
536 |
AstakosUser.objects.get(uuid=uuid_val) |
|
537 |
except AstakosUser.DoesNotExist: |
|
538 |
self.uuid = uuid_val |
|
539 |
return self.uuid |
|
532 |
def fix_username(self): |
|
533 |
self.username = self.email.lower() |
|
534 |
|
|
535 |
def set_email(self, email): |
|
536 |
self.email = email |
|
537 |
self.fix_username() |
|
540 | 538 |
|
541 | 539 |
def save(self, update_timestamps=True, **kwargs): |
542 | 540 |
if update_timestamps: |
543 |
if not self.id: |
|
544 |
self.date_joined = datetime.now() |
|
545 | 541 |
self.updated = datetime.now() |
546 | 542 |
|
547 |
self.update_uuid() |
|
548 |
|
|
549 |
if not self.verification_code: |
|
550 |
self.renew_verification_code() |
|
551 |
|
|
552 |
# username currently matches email |
|
553 |
if self.username != self.email.lower(): |
|
554 |
self.username = self.email.lower() |
|
555 |
|
|
556 | 543 |
super(AstakosUser, self).save(**kwargs) |
557 | 544 |
|
558 | 545 |
def renew_verification_code(self): |
... | ... | |
1093 | 1080 |
# update user |
1094 | 1081 |
user = AstakosUser.objects.get(pk=email_change.user_id) |
1095 | 1082 |
old_email = user.email |
1096 |
user.email = email_change.new_email_address
|
|
1083 |
user.set_email(email_change.new_email_address)
|
|
1097 | 1084 |
user.save() |
1098 | 1085 |
email_change.delete() |
1099 | 1086 |
msg = "User %s changed email from %s to %s" |
... | ... | |
1987 | 1974 |
### SIGNALS ### |
1988 | 1975 |
################ |
1989 | 1976 |
|
1990 |
def create_astakos_user(u): |
|
1991 |
try: |
|
1992 |
AstakosUser.objects.get(user_ptr=u.pk) |
|
1993 |
except AstakosUser.DoesNotExist: |
|
1994 |
extended_user = AstakosUser(user_ptr_id=u.pk) |
|
1995 |
extended_user.__dict__.update(u.__dict__) |
|
1996 |
extended_user.save() |
|
1997 |
if not extended_user.has_auth_provider('local'): |
|
1998 |
extended_user.add_auth_provider('local') |
|
1999 |
except BaseException, e: |
|
2000 |
logger.exception(e) |
|
2001 |
|
|
2002 |
|
|
2003 |
def fix_superusers(): |
|
2004 |
# Associate superusers with AstakosUser |
|
2005 |
admins = User.objects.filter(is_superuser=True) |
|
2006 |
for u in admins: |
|
2007 |
create_astakos_user(u) |
|
2008 |
|
|
2009 |
|
|
2010 |
def user_post_save(sender, instance, created, **kwargs): |
|
2011 |
if not created: |
|
2012 |
return |
|
2013 |
create_astakos_user(instance) |
|
2014 |
post_save.connect(user_post_save, sender=User) |
|
2015 |
|
|
2016 |
|
|
2017 |
def astakosuser_post_save(sender, instance, created, **kwargs): |
|
2018 |
pass |
|
2019 |
|
|
2020 |
post_save.connect(astakosuser_post_save, sender=AstakosUser) |
|
2021 |
|
|
2022 |
|
|
2023 | 1977 |
def resource_post_save(sender, instance, created, **kwargs): |
2024 | 1978 |
pass |
2025 | 1979 |
|
... | ... | |
2029 | 1983 |
def renew_token(sender, instance, **kwargs): |
2030 | 1984 |
if not instance.auth_token: |
2031 | 1985 |
instance.renew_token() |
2032 |
pre_save.connect(renew_token, sender=AstakosUser) |
|
2033 | 1986 |
pre_save.connect(renew_token, sender=Component) |
Also available in: Unified diff