core/sources(minor): refactor Source's property
This commit is contained in:
parent
1cb6b5e984
commit
2ff1635696
|
@ -152,14 +152,10 @@ class Source(PolicyModel):
|
|||
objects = InheritanceManager()
|
||||
|
||||
@property
|
||||
def is_link(self):
|
||||
"""Return true if Source should get a link on the login page"""
|
||||
return False
|
||||
|
||||
@property
|
||||
def get_login_button(self):
|
||||
"""Return a tuple of URL, Icon name and Name"""
|
||||
raise NotImplementedError
|
||||
def login_button(self):
|
||||
"""Return a tuple of URL, Icon name and Name
|
||||
if Source should get a link on the login page"""
|
||||
return None
|
||||
|
||||
@property
|
||||
def additional_info(self):
|
||||
|
|
|
@ -46,9 +46,11 @@ class LoginView(UserPassesTestMixin, FormView):
|
|||
kwargs['show_sign_up_notice'] = CONFIG.y('passbook.sign_up.enabled')
|
||||
kwargs['sources'] = []
|
||||
sources = Source.objects.filter(enabled=True).select_subclasses()
|
||||
if any(source.is_link for source in sources):
|
||||
for source in sources:
|
||||
kwargs['sources'].append(source.get_login_button)
|
||||
for source in sources:
|
||||
login_button = source.login_button
|
||||
if login_button:
|
||||
kwargs['sources'].append(login_button)
|
||||
if kwargs['sources']:
|
||||
self.template_name = 'login/with_sources.html'
|
||||
return super().get_context_data(**kwargs)
|
||||
|
||||
|
|
|
@ -32,11 +32,15 @@ class LDAPSource(Source):
|
|||
sync_parent_group = models.ForeignKey(Group, blank=True, null=True,
|
||||
default=None, on_delete=models.SET_DEFAULT)
|
||||
|
||||
# This field is written to by the sync_* tasks
|
||||
# displayed by additional_info
|
||||
status = models.TextField(default="")
|
||||
|
||||
form = 'passbook.sources.ldap.forms.LDAPSourceForm'
|
||||
|
||||
@property
|
||||
def get_login_button(self):
|
||||
raise NotImplementedError()
|
||||
def additional_info(self):
|
||||
return self.status
|
||||
|
||||
class Meta:
|
||||
|
||||
|
|
|
@ -22,11 +22,7 @@ class OAuthSource(Source):
|
|||
form = 'passbook.sources.oauth.forms.OAuthSourceForm'
|
||||
|
||||
@property
|
||||
def is_link(self):
|
||||
return True
|
||||
|
||||
@property
|
||||
def get_login_button(self):
|
||||
def login_button(self):
|
||||
url = reverse_lazy('passbook_sources_oauth:oauth-client-login',
|
||||
kwargs={'source_slug': self.slug})
|
||||
return url, self.provider_type, self.name
|
||||
|
|
Reference in a new issue