summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAkihiro Motoki <motoki@da.jp.nec.com>2014-04-03 06:17:05 +0900
committerAkihiro Motoki <motoki@da.jp.nec.com>2014-07-29 16:32:38 +0000
commit58da8b38a9606697e5b96f6d068be83ef52d83d5 (patch)
treeb775ec9154fdafef555fe38c44d9995c3c747ab9
parent95dffe082adc72594587ed7dd36521f315655dbf (diff)
downloaddjango_openstack_auth-58da8b38a9606697e5b96f6d068be83ef52d83d5.tar.gz
Fix H4xx docstring issues
Completes blueprint openstack-hacking-compliant Change-Id: Ib286972b65e0e3282db483718421f7f28e8c6cd1
-rw-r--r--openstack_auth/backend.py6
-rw-r--r--openstack_auth/exceptions.py2
-rw-r--r--openstack_auth/forms.py2
-rw-r--r--openstack_auth/tests/data_v2.py4
-rw-r--r--openstack_auth/tests/data_v3.py10
-rw-r--r--openstack_auth/user.py40
-rw-r--r--openstack_auth/utils.py7
-rw-r--r--openstack_auth/views.py11
-rw-r--r--tox.ini3
9 files changed, 43 insertions, 42 deletions
diff --git a/openstack_auth/backend.py b/openstack_auth/backend.py
index 267fb78..a93ccc2 100644
--- a/openstack_auth/backend.py
+++ b/openstack_auth/backend.py
@@ -67,7 +67,7 @@ class KeystoneBackend(object):
def authenticate(self, request=None, username=None, password=None,
user_domain_name=None, auth_url=None):
- """Authenticates a user via the Keystone Identity API. """
+ """Authenticates a user via the Keystone Identity API."""
LOG.debug('Beginning user authentication for user "%s".' % username)
insecure = getattr(settings, 'OPENSTACK_SSL_NO_VERIFY', False)
@@ -170,7 +170,7 @@ class KeystoneBackend(object):
return user
def get_group_permissions(self, user, obj=None):
- """Returns an empty set since Keystone doesn't support "groups". """
+ """Returns an empty set since Keystone doesn't support "groups"."""
# Keystone V3 added "groups". The Auth token response includes the
# roles from the user's Group assignment. It should be fine just
# returning an empty set here.
@@ -196,7 +196,7 @@ class KeystoneBackend(object):
return role_perms | service_perms
def has_perm(self, user, perm, obj=None):
- """Returns True if the given user has the specified permission. """
+ """Returns True if the given user has the specified permission."""
if not user.is_active:
return False
return perm in self.get_all_permissions(user, obj)
diff --git a/openstack_auth/exceptions.py b/openstack_auth/exceptions.py
index b9d744f..37bbaf5 100644
--- a/openstack_auth/exceptions.py
+++ b/openstack_auth/exceptions.py
@@ -13,5 +13,5 @@
class KeystoneAuthException(Exception):
- """ Generic error class to identify and catch our own errors. """
+ """Generic error class to identify and catch our own errors."""
pass
diff --git a/openstack_auth/forms.py b/openstack_auth/forms.py
index 5e46ad8..83a5a6a 100644
--- a/openstack_auth/forms.py
+++ b/openstack_auth/forms.py
@@ -27,7 +27,7 @@ LOG = logging.getLogger(__name__)
class Login(django_auth_forms.AuthenticationForm):
- """ Form used for logging in a user.
+ """Form used for logging in a user.
Handles authentication with Keystone by providing the domain name, username
and password. A scoped token is fetched after successful authentication.
diff --git a/openstack_auth/tests/data_v2.py b/openstack_auth/tests/data_v2.py
index e6cf4f3..797f1ed 100644
--- a/openstack_auth/tests/data_v2.py
+++ b/openstack_auth/tests/data_v2.py
@@ -24,12 +24,12 @@ from keystoneclient.v2_0 import users
class TestDataContainer(object):
- """ Arbitrary holder for test data in an object-oriented fashion. """
+ """Arbitrary holder for test data in an object-oriented fashion."""
pass
def generate_test_data():
- ''' Builds a set of test_data data as returned by Keystone V2. '''
+ '''Builds a set of test_data data as returned by Keystone V2.'''
test_data = TestDataContainer()
keystone_service = {
diff --git a/openstack_auth/tests/data_v3.py b/openstack_auth/tests/data_v3.py
index 548f647..be7fa04 100644
--- a/openstack_auth/tests/data_v3.py
+++ b/openstack_auth/tests/data_v3.py
@@ -27,13 +27,15 @@ from keystoneclient.v3 import users
class TestDataContainer(object):
- """ Arbitrary holder for test data in an object-oriented fashion. """
+ """Arbitrary holder for test data in an object-oriented fashion."""
pass
class TestResponse(requests.Response):
- """ Class used to wrap requests.Response and provide some
- convenience to initialize with a dict """
+ """Class used to wrap requests.Response.
+
+ It also provides some convenience to initialize with a dict.
+ """
def __init__(self, data):
self._text = None
@@ -55,7 +57,7 @@ class TestResponse(requests.Response):
def generate_test_data():
- ''' Builds a set of test_data data as returned by Keystone V2. '''
+ '''Builds a set of test_data data as returned by Keystone V2.'''
test_data = TestDataContainer()
keystone_service = {
diff --git a/openstack_auth/user.py b/openstack_auth/user.py
index fd00078..ebd49b4 100644
--- a/openstack_auth/user.py
+++ b/openstack_auth/user.py
@@ -185,7 +185,8 @@ class User(models.AnonymousUser):
return "<%s: %s>" % (self.__class__.__name__, self.username)
def is_token_expired(self):
- """
+ """Determine if the token is expired.
+
Returns ``True`` if the token is expired, ``False`` if not, and
``None`` if there is no token set.
"""
@@ -194,13 +195,14 @@ class User(models.AnonymousUser):
return not utils.check_token_expiration(self.token)
def is_authenticated(self):
- """ Checks for a valid token that has not yet expired. """
+ """Checks for a valid token that has not yet expired."""
return (self.token is not None and
utils.check_token_expiration(self.token))
def is_anonymous(self):
- """
- Returns ``True`` if the user is not authenticated,``False`` otherwise.
+ """Return if the user is not authenticated.
+
+ Returns ``True`` if not authenticated,``False`` otherwise.
"""
return not self.is_authenticated()
@@ -210,15 +212,15 @@ class User(models.AnonymousUser):
@property
def is_superuser(self):
- """
- Evaluates whether this user has admin privileges. Returns
- ``True`` or ``False``.
+ """Evaluates whether this user has admin privileges.
+
+ Returns ``True`` or ``False``.
"""
return 'admin' in [role['name'].lower() for role in self.roles]
@property
def authorized_tenants(self):
- """ Returns a memoized list of tenants this user may access. """
+ """Returns a memoized list of tenants this user may access."""
insecure = getattr(settings, 'OPENSTACK_SSL_NO_VERIFY', False)
ca_cert = getattr(settings, "OPENSTACK_SSL_CACERT", None)
@@ -243,9 +245,9 @@ class User(models.AnonymousUser):
self._authorized_tenants = tenant_list
def default_services_region(self):
- """
- Returns the first endpoint region for first non-identity service
- in the service catalog
+ """Returns the first endpoint region for first non-identity service.
+
+ Extracted from the service catalog.
"""
if self.service_catalog:
for service in self.service_catalog:
@@ -265,9 +267,7 @@ class User(models.AnonymousUser):
@property
def available_services_regions(self):
- """
- Returns list of unique region name values found in service catalog
- """
+ """Returns list of unique region name values in service catalog."""
regions = []
if self.service_catalog:
for service in self.service_catalog:
@@ -289,10 +289,10 @@ class User(models.AnonymousUser):
# Check for OR'd permission rules, check that user has one of the
# required permission.
def has_a_matching_perm(self, perm_list, obj=None):
- """
- Returns True if the user has one of the specified permissions. If
- object is passed, it checks if the user has any of the required perms
- for this object.
+ """Returns True if the user has one of the specified permissions.
+
+ If object is passed, it checks if the user has any of the required
+ perms for this object.
"""
# If there are no permissions to check, just return true
if not perm_list:
@@ -316,8 +316,8 @@ class User(models.AnonymousUser):
# ('openstack.roles.admin', ('openstack.roles.L3-support',
# 'openstack.roles.L2-support'),)
def has_perms(self, perm_list, obj=None):
- """
- Returns True if the user has all of the specified permissions.
+ """Returns True if the user has all of the specified permissions.
+
Tuples in the list will possess the required permissions if
the user has a permissions matching one of the elements of
that tuple
diff --git a/openstack_auth/utils.py b/openstack_auth/utils.py
index 7278d2e..482b7a4 100644
--- a/openstack_auth/utils.py
+++ b/openstack_auth/utils.py
@@ -60,7 +60,7 @@ def patch_middleware_get_user():
def check_token_expiration(token):
- """ Timezone-aware checking of the auth token's expiration timestamp.
+ """Timezone-aware checking of the auth token's expiration timestamp.
Returns ``True`` if the token has not yet expired, otherwise ``False``.
"""
@@ -80,10 +80,9 @@ def check_token_expiration(token):
# Added in Django 1.4.3, 1.5b2
# Vendored here for compatibility with old Django versions.
def is_safe_url(url, host=None):
- """
- Return ``True`` if the url is a safe redirection (i.e. it doesn't point to
- a different host).
+ """Return ``True`` if the url is a safe redirection.
+ The safe redirection means that it doesn't point to a different host.
Always returns ``False`` on an empty url.
"""
if not url:
diff --git a/openstack_auth/views.py b/openstack_auth/views.py
index d2c73e8..380223c 100644
--- a/openstack_auth/views.py
+++ b/openstack_auth/views.py
@@ -49,7 +49,7 @@ LOG = logging.getLogger(__name__)
@csrf_protect
@never_cache
def login(request):
- """ Logs a user in using the :class:`~openstack_auth.forms.Login` form. """
+ """Logs a user in using the :class:`~openstack_auth.forms.Login` form."""
# If the user is already authenticated, redirect them to the
# dashboard straight away, unless the 'next' parameter is set as it
# usually indicates requesting access to a page that requires different
@@ -140,7 +140,7 @@ def delete_token(endpoint, token_id):
@login_required
def switch(request, tenant_id, redirect_field_name=auth.REDIRECT_FIELD_NAME):
- """ Switches an authenticated user from one project to another. """
+ """Switches an authenticated user from one project to another."""
LOG.debug('Switching to tenant %s for user "%s".'
% (tenant_id, request.user.username))
insecure = getattr(settings, 'OPENSTACK_SSL_NO_VERIFY', False)
@@ -188,9 +188,10 @@ def switch(request, tenant_id, redirect_field_name=auth.REDIRECT_FIELD_NAME):
@login_required
def switch_region(request, region_name,
redirect_field_name=auth.REDIRECT_FIELD_NAME):
- """
- Switches the non-identity services region that is being managed
- for the scoped project.
+ """Switches the user's region for all services except Identity service.
+
+ The region will be switched if the given region is one of the regions
+ available for the scoped project. Otherwise the region is not switched.
"""
if region_name in request.user.available_services_regions:
request.session['services_region'] = region_name
diff --git a/tox.ini b/tox.ini
index 2a5d9cf..d786e53 100644
--- a/tox.ini
+++ b/tox.ini
@@ -41,9 +41,8 @@ downloadcache = ~/cache/pip
[flake8]
builtins = _
exclude = .venv,.git,.tox,dist,doc,*openstack/common*,*lib/python*,*egg,build,panel_template,dash_template,local_settings.py
-# H4xx docstrings
# H803 git commit title should not end with period (disabled on purpose, see bug #1236621)
-ignore = H4,H803
+ignore = H803
[hacking]
import_exceptions = django.conf.settings,