From 04016c2567871548af40cc46c3f860fe9a91d2f2 Mon Sep 17 00:00:00 2001 From: Ben Lopatin Date: Fri, 7 Jul 2017 21:46:40 -0400 Subject: [PATCH] Update import style A bit more verbose but significantly easier to understand what is available in the namespace and where it comes from --- organizations/abstract.py | 14 +++++++++--- organizations/admin.py | 12 ++++++----- organizations/app_settings.py | 2 +- organizations/base.py | 6 ++++-- organizations/forms.py | 7 +++--- organizations/mixins.py | 3 ++- organizations/models.py | 6 +++--- organizations/urls.py | 29 ++++++++++++------------- organizations/views.py | 34 +++++++++++++++++++---------- tests/test_forms.py | 7 +++--- tests/test_mixins.py | 12 +++++++---- tests/test_models.py | 9 ++++---- tests/test_signals.py | 10 ++++----- tests/test_templatetags.py | 4 ++-- tests/test_utils.py | 7 +++--- tests/test_views.py | 40 ++++++++++++++++------------------- 16 files changed, 115 insertions(+), 87 deletions(-) diff --git a/organizations/abstract.py b/organizations/abstract.py index 22995109..a9890d7b 100644 --- a/organizations/abstract.py +++ b/organizations/abstract.py @@ -29,14 +29,22 @@ from django.core.urlresolvers import reverse from django.db import models from django.utils.translation import ugettext_lazy as _ + try: import six except ImportError: from django.utils import six -from .base import OrgMeta, AbstractBaseOrganization, AbstractBaseOrganizationUser, AbstractBaseOrganizationOwner -from .fields import SlugField, AutoCreatedField, AutoLastModifiedField -from .signals import user_added, user_removed, owner_changed +from organizations.base import OrgMeta +from organizations.base import AbstractBaseOrganization +from organizations.base import AbstractBaseOrganizationUser +from organizations.base import AbstractBaseOrganizationOwner +from organizations.fields import SlugField +from organizations.fields import AutoCreatedField +from organizations.fields import AutoLastModifiedField +from organizations.signals import user_added +from organizations.signals import user_removed +from organizations.signals import owner_changed USER_MODEL = getattr(settings, 'AUTH_USER_MODEL', 'auth.User') ORGS_TIMESTAMPED_MODEL = getattr(settings, 'ORGS_TIMESTAMPED_MODEL', None) diff --git a/organizations/admin.py b/organizations/admin.py index 08395eb9..88684cca 100644 --- a/organizations/admin.py +++ b/organizations/admin.py @@ -25,11 +25,13 @@ from django.contrib import admin -from .base_admin import (BaseOwnerInline, - BaseOrganizationAdmin, - BaseOrganizationUserAdmin, - BaseOrganizationOwnerAdmin) -from .models import Organization, OrganizationUser, OrganizationOwner +from organizations.base_admin import BaseOrganizationAdmin +from organizations.base_admin import BaseOrganizationOwnerAdmin +from organizations.base_admin import BaseOrganizationUserAdmin +from organizations.base_admin import BaseOwnerInline +from organizations.models import Organization +from organizations.models import OrganizationOwner +from organizations.models import OrganizationUser class OwnerInline(BaseOwnerInline): diff --git a/organizations/app_settings.py b/organizations/app_settings.py index 201ec919..48d2e884 100644 --- a/organizations/app_settings.py +++ b/organizations/app_settings.py @@ -26,7 +26,7 @@ from django.conf import settings from django.contrib.auth.models import User -from .utils import model_field_attr +from organizations.utils import model_field_attr ORGS_INVITATION_BACKEND = getattr(settings, 'INVITATION_BACKEND', diff --git a/organizations/base.py b/organizations/base.py index 8589c420..f06f2cdd 100644 --- a/organizations/base.py +++ b/organizations/base.py @@ -25,15 +25,17 @@ from django.conf import settings from django.db import models -from django.db.models.fields import FieldDoesNotExist from django.db.models.base import ModelBase +from django.db.models.fields import FieldDoesNotExist + try: import six except ImportError: from django.utils import six from django.utils.translation import ugettext_lazy as _ -from .managers import OrgManager, ActiveOrgManager +from organizations.managers import ActiveOrgManager +from organizations.managers import OrgManager USER_MODEL = getattr(settings, 'AUTH_USER_MODEL', 'auth.User') diff --git a/organizations/forms.py b/organizations/forms.py index 8ffb445f..197135d1 100644 --- a/organizations/forms.py +++ b/organizations/forms.py @@ -28,9 +28,10 @@ from django.contrib.sites.shortcuts import get_current_site from django.utils.translation import ugettext_lazy as _ -from .models import Organization, OrganizationUser -from .utils import create_organization -from .backends import invitation_backend +from organizations.backends import invitation_backend +from organizations.models import Organization +from organizations.models import OrganizationUser +from organizations.utils import create_organization class OrganizationForm(forms.ModelForm): diff --git a/organizations/mixins.py b/organizations/mixins.py index f17dc160..2e49d7e1 100644 --- a/organizations/mixins.py +++ b/organizations/mixins.py @@ -27,7 +27,8 @@ from django.shortcuts import get_object_or_404 from django.utils.translation import ugettext_lazy as _ -from .models import Organization, OrganizationUser +from organizations.models import Organization +from organizations.models import OrganizationUser class OrganizationMixin(object): diff --git a/organizations/models.py b/organizations/models.py index b999412e..0eabf196 100644 --- a/organizations/models.py +++ b/organizations/models.py @@ -23,9 +23,9 @@ # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -from .abstract import (AbstractOrganization, - AbstractOrganizationUser, - AbstractOrganizationOwner) +from organizations.abstract import AbstractOrganization +from organizations.abstract import AbstractOrganizationOwner +from organizations.abstract import AbstractOrganizationUser class Organization(AbstractOrganization): diff --git a/organizations/urls.py b/organizations/urls.py index b7a1a81b..516573e6 100644 --- a/organizations/urls.py +++ b/organizations/urls.py @@ -26,45 +26,44 @@ from django.conf.urls import url from django.contrib.auth.decorators import login_required -from .views import (OrganizationList, OrganizationDetail, - OrganizationUpdate, OrganizationDelete, OrganizationCreate, - OrganizationUserList, OrganizationUserDetail, OrganizationUserUpdate, - OrganizationUserCreate, OrganizationUserRemind, OrganizationUserDelete) +from organizations import views urlpatterns = [ # Organization URLs - url(r'^$', view=login_required(OrganizationList.as_view()), + url(r'^$', + view=login_required(views.OrganizationList.as_view()), name="organization_list"), - url(r'^add/$', view=login_required(OrganizationCreate.as_view()), + url(r'^add/$', + view=login_required(views.OrganizationCreate.as_view()), name="organization_add"), url(r'^(?P[\d]+)/$', - view=login_required(OrganizationDetail.as_view()), + view=login_required(views.OrganizationDetail.as_view()), name="organization_detail"), url(r'^(?P[\d]+)/edit/$', - view=login_required(OrganizationUpdate.as_view()), + view=login_required(views.OrganizationUpdate.as_view()), name="organization_edit"), url(r'^(?P[\d]+)/delete/$', - view=login_required(OrganizationDelete.as_view()), + view=login_required(views.OrganizationDelete.as_view()), name="organization_delete"), # Organization user URLs url(r'^(?P[\d]+)/people/$', - view=login_required(OrganizationUserList.as_view()), + view=login_required(views.OrganizationUserList.as_view()), name="organization_user_list"), url(r'^(?P[\d]+)/people/add/$', - view=login_required(OrganizationUserCreate.as_view()), + view=login_required(views.OrganizationUserCreate.as_view()), name="organization_user_add"), url(r'^(?P[\d]+)/people/(?P[\d]+)/remind/$', - view=login_required(OrganizationUserRemind.as_view()), + view=login_required(views.OrganizationUserRemind.as_view()), name="organization_user_remind"), url(r'^(?P[\d]+)/people/(?P[\d]+)/$', - view=login_required(OrganizationUserDetail.as_view()), + view=login_required(views.OrganizationUserDetail.as_view()), name="organization_user_detail"), url(r'^(?P[\d]+)/people/(?P[\d]+)/edit/$', - view=login_required(OrganizationUserUpdate.as_view()), + view=login_required(views.OrganizationUserUpdate.as_view()), name="organization_user_edit"), url(r'^(?P[\d]+)/people/(?P[\d]+)/delete/$', - view=login_required(OrganizationUserDelete.as_view()), + view=login_required(views.OrganizationUserDelete.as_view()), name="organization_user_delete"), ] diff --git a/organizations/views.py b/organizations/views.py index cf1fe200..11937596 100644 --- a/organizations/views.py +++ b/organizations/views.py @@ -26,18 +26,30 @@ from django.contrib.sites.shortcuts import get_current_site from django.core.urlresolvers import reverse from django.http import HttpResponseBadRequest -from django.shortcuts import render, redirect +from django.shortcuts import redirect +from django.shortcuts import render from django.utils.translation import ugettext as _ -from django.views.generic import (ListView, DetailView, UpdateView, CreateView, - DeleteView, FormView) - -from .backends import invitation_backend, registration_backend -from .forms import (OrganizationForm, OrganizationUserForm, - OrganizationUserAddForm, OrganizationAddForm, SignUpForm) -from .mixins import (OrganizationMixin, OrganizationUserMixin, - MembershipRequiredMixin, AdminRequiredMixin, OwnerRequiredMixin) -from .models import Organization -from .utils import create_organization +from django.views.generic import CreateView +from django.views.generic import DeleteView +from django.views.generic import DetailView +from django.views.generic import FormView +from django.views.generic import ListView +from django.views.generic import UpdateView + +from organizations.backends import invitation_backend +from organizations.backends import registration_backend +from organizations.forms import OrganizationAddForm +from organizations.forms import OrganizationForm +from organizations.forms import OrganizationUserAddForm +from organizations.forms import OrganizationUserForm +from organizations.forms import SignUpForm +from organizations.mixins import AdminRequiredMixin +from organizations.mixins import MembershipRequiredMixin +from organizations.mixins import OrganizationMixin +from organizations.mixins import OrganizationUserMixin +from organizations.mixins import OwnerRequiredMixin +from organizations.models import Organization +from organizations.utils import create_organization class BaseOrganizationList(ListView): diff --git a/tests/test_forms.py b/tests/test_forms.py index 2288d089..d7e7d3d7 100644 --- a/tests/test_forms.py +++ b/tests/test_forms.py @@ -2,10 +2,11 @@ from django.test.client import RequestFactory from django.test.utils import override_settings -from organizations.forms import (OrganizationForm, OrganizationUserForm, - OrganizationUserAddForm) +from organizations.forms import OrganizationForm +from organizations.forms import OrganizationUserAddForm +from organizations.forms import OrganizationUserForm from organizations.models import Organization -from .utils import request_factory_login +from tests.utils import request_factory_login @override_settings(USE_TZ=True) diff --git a/tests/test_mixins.py b/tests/test_mixins.py index be3c04ff..323ec9b8 100644 --- a/tests/test_mixins.py +++ b/tests/test_mixins.py @@ -5,10 +5,14 @@ from django.test.client import RequestFactory from django.test.utils import override_settings -from organizations.models import Organization, OrganizationUser -from organizations.mixins import (OrganizationMixin, OrganizationUserMixin, - MembershipRequiredMixin, AdminRequiredMixin, OwnerRequiredMixin) -from .utils import request_factory_login +from organizations.mixins import AdminRequiredMixin +from organizations.mixins import MembershipRequiredMixin +from organizations.mixins import OrganizationMixin +from organizations.mixins import OrganizationUserMixin +from organizations.mixins import OwnerRequiredMixin +from organizations.models import Organization +from organizations.models import OrganizationUser +from tests.utils import request_factory_login class ViewStub(object): diff --git a/tests/test_models.py b/tests/test_models.py index 6ca77fb5..60e6af05 100644 --- a/tests/test_models.py +++ b/tests/test_models.py @@ -2,17 +2,18 @@ from functools import partial -from django.db import IntegrityError from django.contrib.auth.models import User +from django.db import IntegrityError from django.test import TestCase from django.test.utils import override_settings -from organizations.models import (Organization, OrganizationUser, - OrganizationOwner) +from organizations.models import Organization +from organizations.models import OrganizationOwner +from organizations.models import OrganizationUser from organizations.utils import create_organization +from test_abstract.models import CustomOrganization from test_accounts.models import Account from test_custom.models import Team -from test_abstract.models import CustomOrganization @override_settings(USE_TZ=True) diff --git a/tests/test_signals.py b/tests/test_signals.py index 6466249d..0ce22443 100644 --- a/tests/test_signals.py +++ b/tests/test_signals.py @@ -1,13 +1,13 @@ -from mock import call -from mock_django.signals import mock_signal_receiver - from django.contrib.auth.models import User from django.test import TestCase from django.test.utils import override_settings +from mock import call +from mock_django.signals import mock_signal_receiver from organizations.models import Organization -from organizations.signals import (user_added, user_removed, - owner_changed) +from organizations.signals import owner_changed +from organizations.signals import user_added +from organizations.signals import user_removed @override_settings(USE_TZ=True) diff --git a/tests/test_templatetags.py b/tests/test_templatetags.py index a55dab66..a34554b3 100644 --- a/tests/test_templatetags.py +++ b/tests/test_templatetags.py @@ -1,6 +1,6 @@ -from django.test import TestCase -from django.template import Template, Context from django.contrib.auth.models import User +from django.template import Template, Context +from django.test import TestCase from django.test.utils import override_settings from organizations.models import Organization diff --git a/tests/test_utils.py b/tests/test_utils.py index 32450994..055bf538 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -1,13 +1,14 @@ from functools import partial -from django.test import TestCase from django.contrib.auth.models import User +from django.test import TestCase from django.test.utils import override_settings from organizations.models import Organization -from organizations.utils import create_organization, model_field_attr -from test_accounts.models import Account +from organizations.utils import create_organization +from organizations.utils import model_field_attr from test_abstract.models import CustomOrganization +from test_accounts.models import Account @override_settings(USE_TZ=True) diff --git a/tests/test_views.py b/tests/test_views.py index c2b6dfe1..e55f3318 100644 --- a/tests/test_views.py +++ b/tests/test_views.py @@ -4,13 +4,9 @@ from django.test.client import RequestFactory from django.test.utils import override_settings +from organizations import views from organizations.models import Organization -from organizations.views import (BaseOrganizationList, BaseOrganizationDetail, - BaseOrganizationCreate, BaseOrganizationUpdate, BaseOrganizationDelete, - BaseOrganizationUserList, BaseOrganizationUserDetail, - BaseOrganizationUserCreate, BaseOrganizationUserUpdate, - BaseOrganizationUserDelete, OrganizationSignup) -from .utils import request_factory_login +from tests.utils import request_factory_login @override_settings(USE_TZ=True) @@ -31,80 +27,80 @@ def setUp(self): def test_org_list(self): """Ensure that the status code 200 is returned""" - self.assertEqual(200, BaseOrganizationList( + self.assertEqual(200, views.BaseOrganizationList( request=self.kurt_request).get(self.kurt_request).status_code) - self.assertEqual(200, BaseOrganizationList( + self.assertEqual(200, views.BaseOrganizationList( request=self.dave_request).get(self.dave_request).status_code) def test_org_list_queryset(self): """Ensure only active organizations belonging to the user are listed""" - self.assertEqual(1, BaseOrganizationList( + self.assertEqual(1, views.BaseOrganizationList( request=self.kurt_request).get_queryset().count()) - self.assertEqual(2, BaseOrganizationList( + self.assertEqual(2, views.BaseOrganizationList( request=self.dave_request).get_queryset().count()) def test_org_detail(self): kwargs = {'organization_pk': self.nirvana.pk} - self.assertEqual(200, BaseOrganizationDetail( + self.assertEqual(200, views.BaseOrganizationDetail( request=self.kurt_request, kwargs=kwargs).get(self.kurt_request, **kwargs).status_code) def test_org_create(self): - self.assertEqual(200, BaseOrganizationCreate( + self.assertEqual(200, views.BaseOrganizationCreate( request=self.kurt_request).get(self.kurt_request).status_code) def test_org_update(self): kwargs = {'organization_pk': self.nirvana.pk} - self.assertEqual(200, BaseOrganizationUpdate( + self.assertEqual(200, views.BaseOrganizationUpdate( request=self.kurt_request, kwargs=kwargs).get(self.kurt_request, **kwargs).status_code) def test_org_delete(self): kwargs = {'organization_pk': self.nirvana.pk} - self.assertEqual(200, BaseOrganizationDelete( + self.assertEqual(200, views.BaseOrganizationDelete( request=self.kurt_request, kwargs=kwargs).get(self.kurt_request, **kwargs).status_code) def test_user_list(self): kwargs = {'organization_pk': self.nirvana.pk} - self.assertEqual(200, BaseOrganizationUserList( + self.assertEqual(200, views.BaseOrganizationUserList( request=self.kurt_request, kwargs=kwargs).get(self.kurt_request, **kwargs).status_code) def test_user_detail(self): kwargs = {'organization_pk': self.nirvana.pk, 'user_pk': self.kurt.pk} - self.assertEqual(200, BaseOrganizationUserDetail( + self.assertEqual(200, views.BaseOrganizationUserDetail( request=self.kurt_request, kwargs=kwargs).get(self.kurt_request, **kwargs).status_code) def test_bad_user_detail(self): kwargs = {'organization_pk': self.nirvana.pk, 'user_pk': self.dummy.pk} - self.assertRaises(Http404, BaseOrganizationUserDetail( + self.assertRaises(Http404, views.BaseOrganizationUserDetail( request=self.kurt_request, kwargs=kwargs).get, self.kurt_request, **kwargs) def test_user_create(self): kwargs = {'organization_pk': self.nirvana.pk} - self.assertEqual(200, BaseOrganizationUserCreate( + self.assertEqual(200, views.BaseOrganizationUserCreate( request=self.kurt_request, kwargs=kwargs).get(self.kurt_request, **kwargs).status_code) def test_user_update(self): kwargs = {'organization_pk': self.nirvana.pk, 'user_pk': self.kurt.pk} - self.assertEqual(200, BaseOrganizationUserUpdate( + self.assertEqual(200, views.BaseOrganizationUserUpdate( request=self.kurt_request, kwargs=kwargs).get(self.kurt_request, **kwargs).status_code) def test_user_delete(self): kwargs = {'organization_pk': self.nirvana.pk, 'user_pk': self.kurt.pk} - self.assertEqual(200, BaseOrganizationUserDelete( + self.assertEqual(200, views.BaseOrganizationUserDelete( request=self.kurt_request, kwargs=kwargs).get(self.kurt_request, **kwargs).status_code) def test_signup(self): """Ensure logged in users are redirected""" self.assertEqual(302, - OrganizationSignup(request=self.kurt_request).dispatch( + views.OrganizationSignup(request=self.kurt_request).dispatch( self.kurt_request).status_code) self.assertEqual(200, - OrganizationSignup(request=self.anon_request).dispatch(self.anon_request).status_code) + views.OrganizationSignup(request=self.anon_request).dispatch(self.anon_request).status_code)