sources/*: remove path-based import from all sources

This commit is contained in:
Jens Langhammer 2020-07-20 15:11:27 +02:00
parent 74e628ce9c
commit ac2dd3611f
6 changed files with 68 additions and 28 deletions

View File

@ -103,9 +103,9 @@ class TestProviderOAuth(SeleniumTestCase):
USER().username, USER().username,
) )
self.assertEqual( self.assertEqual(
self.driver.find_element( self.driver.find_element(By.CSS_SELECTOR, "input[name=name]").get_attribute(
By.CSS_SELECTOR, "input[name=name]" "value"
).get_attribute("value"), ),
USER().username, USER().username,
) )
self.assertEqual( self.assertEqual(
@ -172,9 +172,9 @@ class TestProviderOAuth(SeleniumTestCase):
USER().username, USER().username,
) )
self.assertEqual( self.assertEqual(
self.driver.find_element( self.driver.find_element(By.CSS_SELECTOR, "input[name=name]").get_attribute(
By.CSS_SELECTOR, "input[name=name]" "value"
).get_attribute("value"), ),
USER().username, USER().username,
) )
self.assertEqual( self.assertEqual(

View File

@ -153,9 +153,9 @@ class TestProviderOIDC(SeleniumTestCase):
USER().name, USER().name,
) )
self.assertEqual( self.assertEqual(
self.driver.find_element( self.driver.find_element(By.CSS_SELECTOR, "input[name=name]").get_attribute(
By.CSS_SELECTOR, "input[name=name]" "value"
).get_attribute("value"), ),
USER().name, USER().name,
) )
self.assertEqual( self.assertEqual(
@ -232,9 +232,9 @@ class TestProviderOIDC(SeleniumTestCase):
USER().name, USER().name,
) )
self.assertEqual( self.assertEqual(
self.driver.find_element( self.driver.find_element(By.CSS_SELECTOR, "input[name=name]").get_attribute(
By.CSS_SELECTOR, "input[name=name]" "value"
).get_attribute("value"), ),
USER().name, USER().name,
) )
self.assertEqual( self.assertEqual(

View File

@ -1,12 +1,13 @@
"""passbook core models""" """passbook core models"""
from datetime import timedelta from datetime import timedelta
from typing import Any, Optional from typing import Any, Optional, Type
from uuid import uuid4 from uuid import uuid4
from django.contrib.auth.models import AbstractUser from django.contrib.auth.models import AbstractUser
from django.contrib.postgres.fields import JSONField from django.contrib.postgres.fields import JSONField
from django.db import models from django.db import models
from django.db.models import Q, QuerySet from django.db.models import Q, QuerySet
from django.forms import ModelForm
from django.http import HttpRequest from django.http import HttpRequest
from django.utils.timezone import now from django.utils.timezone import now
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
@ -162,10 +163,12 @@ class Source(PolicyBindingModel):
related_name="source_enrollment", related_name="source_enrollment",
) )
form = "" # ModelForm-based class ued to create/edit instance
objects = InheritanceManager() objects = InheritanceManager()
def form(self) -> Type[ModelForm]:
"""Return Form class used to edit this object"""
raise NotImplementedError
@property @property
def ui_login_button(self) -> Optional[UILoginButton]: def ui_login_button(self) -> Optional[UILoginButton]:
"""If source uses a http-based flow, return UI Information about the login """If source uses a http-based flow, return UI Information about the login
@ -261,9 +264,12 @@ class PropertyMapping(models.Model):
name = models.TextField() name = models.TextField()
expression = models.TextField() expression = models.TextField()
form = ""
objects = InheritanceManager() objects = InheritanceManager()
def form(self) -> Type[ModelForm]:
"""Return Form class used to edit this object"""
raise NotImplementedError
def evaluate( def evaluate(
self, user: Optional[User], request: Optional[HttpRequest], **kwargs self, user: Optional[User], request: Optional[HttpRequest], **kwargs
) -> Any: ) -> Any:

View File

@ -1,8 +1,9 @@
"""passbook LDAP Models""" """passbook LDAP Models"""
from typing import Optional from typing import Optional, Type
from django.core.validators import URLValidator from django.core.validators import URLValidator
from django.db import models from django.db import models
from django.forms import ModelForm
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
from ldap3 import Connection, Server from ldap3 import Connection, Server
@ -53,7 +54,10 @@ class LDAPSource(Source):
Group, blank=True, null=True, default=None, on_delete=models.SET_DEFAULT Group, blank=True, null=True, default=None, on_delete=models.SET_DEFAULT
) )
form = "passbook.sources.ldap.forms.LDAPSourceForm" def form(self) -> Type[ModelForm]:
from passbook.sources.ldap.forms import LDAPSourceForm
return LDAPSourceForm
_connection: Optional[Connection] = None _connection: Optional[Connection] = None

View File

@ -1,7 +1,8 @@
"""OAuth Client models""" """OAuth Client models"""
from typing import Optional from typing import Optional, Type
from django.db import models from django.db import models
from django.forms import ModelForm
from django.urls import reverse, reverse_lazy from django.urls import reverse, reverse_lazy
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
@ -40,7 +41,10 @@ class OAuthSource(Source):
consumer_key = models.TextField() consumer_key = models.TextField()
consumer_secret = models.TextField() consumer_secret = models.TextField()
form = "passbook.sources.oauth.forms.OAuthSourceForm" def form(self) -> Type[ModelForm]:
from passbook.sources.oauth.forms import OAuthSourceForm
return OAuthSourceForm
@property @property
def ui_login_button(self) -> UILoginButton: def ui_login_button(self) -> UILoginButton:
@ -80,7 +84,10 @@ class OAuthSource(Source):
class GitHubOAuthSource(OAuthSource): class GitHubOAuthSource(OAuthSource):
"""Social Login using GitHub.com or a GitHub-Enterprise Instance.""" """Social Login using GitHub.com or a GitHub-Enterprise Instance."""
form = "passbook.sources.oauth.forms.GitHubOAuthSourceForm" def form(self) -> Type[ModelForm]:
from passbook.sources.oauth.forms import GitHubOAuthSourceForm
return GitHubOAuthSourceForm
class Meta: class Meta:
@ -92,7 +99,9 @@ class GitHubOAuthSource(OAuthSource):
# class TwitterOAuthSource(OAuthSource): # class TwitterOAuthSource(OAuthSource):
# """Social Login using Twitter.com""" # """Social Login using Twitter.com"""
# form = "passbook.sources.oauth.forms.TwitterOAuthSourceForm" # def form(self) -> Type[ModelForm]:
# from passbook.sources.oauth.forms import TwitterOAuthSourceForm
# return TwitterOAuthSourceForm
# class Meta: # class Meta:
@ -104,7 +113,10 @@ class GitHubOAuthSource(OAuthSource):
class FacebookOAuthSource(OAuthSource): class FacebookOAuthSource(OAuthSource):
"""Social Login using Facebook.com.""" """Social Login using Facebook.com."""
form = "passbook.sources.oauth.forms.FacebookOAuthSourceForm" def form(self) -> Type[ModelForm]:
from passbook.sources.oauth.forms import FacebookOAuthSourceForm
return FacebookOAuthSourceForm
class Meta: class Meta:
@ -116,7 +128,10 @@ class FacebookOAuthSource(OAuthSource):
class DiscordOAuthSource(OAuthSource): class DiscordOAuthSource(OAuthSource):
"""Social Login using Discord.""" """Social Login using Discord."""
form = "passbook.sources.oauth.forms.DiscordOAuthSourceForm" def form(self) -> Type[ModelForm]:
from passbook.sources.oauth.forms import DiscordOAuthSourceForm
return DiscordOAuthSourceForm
class Meta: class Meta:
@ -128,7 +143,10 @@ class DiscordOAuthSource(OAuthSource):
class GoogleOAuthSource(OAuthSource): class GoogleOAuthSource(OAuthSource):
"""Social Login using Google or Gsuite.""" """Social Login using Google or Gsuite."""
form = "passbook.sources.oauth.forms.GoogleOAuthSourceForm" def form(self) -> Type[ModelForm]:
from passbook.sources.oauth.forms import GoogleOAuthSourceForm
return GoogleOAuthSourceForm
class Meta: class Meta:
@ -140,7 +158,10 @@ class GoogleOAuthSource(OAuthSource):
class AzureADOAuthSource(OAuthSource): class AzureADOAuthSource(OAuthSource):
"""Social Login using Azure AD.""" """Social Login using Azure AD."""
form = "passbook.sources.oauth.forms.AzureADOAuthSourceForm" def form(self) -> Type[ModelForm]:
from passbook.sources.oauth.forms import AzureADOAuthSourceForm
return AzureADOAuthSourceForm
class Meta: class Meta:
@ -152,7 +173,10 @@ class AzureADOAuthSource(OAuthSource):
class OpenIDOAuthSource(OAuthSource): class OpenIDOAuthSource(OAuthSource):
"""Login using a Generic OpenID-Connect compliant provider.""" """Login using a Generic OpenID-Connect compliant provider."""
form = "passbook.sources.oauth.forms.OAuthSourceForm" def form(self) -> Type[ModelForm]:
from passbook.sources.oauth.forms import OAuthSourceForm
return OAuthSourceForm
class Meta: class Meta:

View File

@ -1,5 +1,8 @@
"""saml sp models""" """saml sp models"""
from typing import Type
from django.db import models from django.db import models
from django.forms import ModelForm
from django.http import HttpRequest from django.http import HttpRequest
from django.shortcuts import reverse from django.shortcuts import reverse
from django.urls import reverse_lazy from django.urls import reverse_lazy
@ -93,7 +96,10 @@ class SAMLSource(Source):
on_delete=models.PROTECT, on_delete=models.PROTECT,
) )
form = "passbook.sources.saml.forms.SAMLSourceForm" def form(self) -> Type[ModelForm]:
from passbook.sources.saml.forms import SAMLSourceForm
return SAMLSourceForm
def get_issuer(self, request: HttpRequest) -> str: def get_issuer(self, request: HttpRequest) -> str:
"""Get Source's Issuer, falling back to our Metadata URL if none is set""" """Get Source's Issuer, falling back to our Metadata URL if none is set"""