Revision f432088a snf-astakos-app/astakos/im/models.py

b/snf-astakos-app/astakos/im/models.py
596 596
        else:
597 597
            return auth_providers.get_provider(provider).is_available_for_login()
598 598

  
599
    def can_add_provider(self, provider, **kwargs):
599
    def can_add_auth_provider(self, provider, **kwargs):
600 600
        provider_settings = auth_providers.get_provider(provider)
601 601
        if not provider_settings.is_available_for_login():
602 602
            return False
603

  
603 604
        if self.has_auth_provider(provider) and \
604 605
           provider_settings.one_per_user:
605 606
            return False
607

  
608
        if 'identifier' in kwargs:
609
            try:
610
                # provider with specified params already exist
611
                existing_user = AstakosUser.objects.get_auth_provider_user(provider,
612
                                                                   **kwargs)
613
            except AstakosUser.DoesNotExist:
614
                return True
615
            else:
616
                return False
617

  
606 618
        return True
607 619

  
608 620
    def can_remove_auth_provider(self, provider):
......
618 630
                                               **kwargs).count())
619 631

  
620 632
    def add_auth_provider(self, provider, **kwargs):
621
        self.auth_providers.create(module=provider, active=True, **kwargs)
633
        if self.can_add_auth_provider(provider, **kwargs):
634
            self.auth_providers.create(module=provider, active=True, **kwargs)
635
        else:
636
            raise Exception('Cannot add provider')
622 637

  
623 638
    def add_pending_auth_provider(self, pending):
624 639
        """
......
665 680
        """
666 681
        providers = []
667 682
        for module, provider_settings in auth_providers.PROVIDERS.iteritems():
668
            if self.can_add_provider(module):
683
            if self.can_add_auth_provider(module):
669 684
                providers.append(provider_settings(self))
670 685

  
671 686
        return providers
......
722 737
        self.user.save()
723 738
        return ret
724 739

  
740
    def __repr__(self):
741
        return '<AstakosUserAuthProvider %s:%s>' % (self.module, self.identifier)
742

  
725 743

  
726 744
class Membership(models.Model):
727 745
    person = models.ForeignKey(AstakosUser)

Also available in: Unified diff