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

b/snf-astakos-app/astakos/im/models.py
661 661

  
662 662
        return True
663 663

  
664
    def can_remove_auth_provider(self, provider):
665
        if len(self.get_active_auth_providers()) <= 1:
664
    def can_remove_auth_provider(self, module):
665
        provider = auth_providers.get_provider(module)
666
        existing = self.get_active_auth_providers()
667
        existing_for_provider = self.get_active_auth_providers(module=module)
668

  
669
        if len(existing) <= 1:
670
            return False
671

  
672
        if len(existing_for_provider) == 1 and provider.is_required():
666 673
            return False
674

  
667 675
        return True
668 676

  
669 677
    def can_change_password(self):
670 678
        return self.has_auth_provider('local', auth_backend='astakos')
671 679

  
680
    def has_required_auth_providers(self):
681
        required = auth_providers.REQUIRED_PROVIDERS
682
        for provider in required:
683
            if not self.has_auth_provider(provider):
684
                return False
685
        return True
686

  
672 687
    def has_auth_provider(self, provider, **kwargs):
673 688
        return bool(self.auth_providers.filter(module=provider,
674 689
                                               **kwargs).count())
......
743 758

  
744 759
        return providers
745 760

  
746
    def get_active_auth_providers(self):
761
    def get_active_auth_providers(self, **filters):
747 762
        providers = []
748
        for provider in self.auth_providers.active():
763
        for provider in self.auth_providers.active(**filters):
749 764
            if auth_providers.get_provider(provider.module).is_available_for_login():
750 765
                providers.append(provider)
751 766
        return providers
......
784 799

  
785 800
class AstakosUserAuthProviderManager(models.Manager):
786 801

  
787
    def active(self):
788
        return self.filter(active=True)
802
    def active(self, **filters):
803
        return self.filter(active=True, **filters)
789 804

  
790 805

  
791 806
class AstakosUserAuthProvider(models.Model):

Also available in: Unified diff