Skip to content

Commit

Permalink
Added compatibility with django 2.0
Browse files Browse the repository at this point in the history
  • Loading branch information
AYZhu authored and bennylope committed Dec 10, 2017
1 parent 505f5c5 commit c1c88a7
Show file tree
Hide file tree
Showing 21 changed files with 138 additions and 241 deletions.
3 changes: 2 additions & 1 deletion README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ django-extensions, but you can configure your own in settings. The default::

ORGS_SLUGFIELD = 'django_extensions.db.fields.AutoSlugField'

Alternative::
Alternative (note: this is not compatible with Django 2.0)::

ORGS_SLUGFIELD = 'autoslug.fields.AutoSlugField'

Expand Down Expand Up @@ -205,6 +205,7 @@ The codebase is targeted and tested against:
* Django 1.9.x against Python 2.7, 3.4, 3.5, and PyPy
* Django 1.10.x against Python 2.7, 3.4, 3.5, 3.6, and PyPy
* Django 1.11.x against Python 2.7, 3.4, 3.5, 3.6, and PyPy
* Django 2.0.x against Python 3.6

To run the tests against all target environments, install `tox
<https://testrun.org/tox/latest/>`_ and then execute the command::
Expand Down
3 changes: 2 additions & 1 deletion conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
"""

import django
import os.path


def pytest_configure():
Expand Down Expand Up @@ -33,7 +34,7 @@ def pytest_configure():
MIDDLEWARE_CLASSES=[],
SITE_ID=1,
FIXTURE_DIRS=['tests/fixtures'],
ORGS_SLUGFIELD='autoslug.AutoSlugField',
ORGS_SLUGFIELD='django_extensions.db.fields.AutoSlugField',
ROOT_URLCONF="tests.urls",
TEMPLATES = [
{
Expand Down
2 changes: 1 addition & 1 deletion docs/getting_started.rst
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ URLs defined by that backend. You can do the same with the
Auto slug field
---------------

Historically Django-Organizations relied on `django-extensions
Django-Organizations relies on `django-extensions
<http://django-extensions.readthedocs.org/en/latest/>`_ for the base
`AutoSlugField
<http://django-extensions.readthedocs.org/en/latest/field_extensions.html>`_.
Expand Down
69 changes: 0 additions & 69 deletions example/accounts/migrations/0001_initial.py

This file was deleted.

72 changes: 0 additions & 72 deletions example/vendors/migrations/0001_initial.py

This file was deleted.

4 changes: 2 additions & 2 deletions manage.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,13 +30,13 @@
DATABASES={
"default": {
"ENGINE": "django.db.backends.sqlite3",
"NAME": "test.sqlite3",
}
},
MIDDLEWARE_CLASSES=(), # Silence Django 1.7 warnings
SITE_ID=1,
FIXTURE_DIRS=['tests/fixtures'],
ORGS_SLUGFIELD='autoslug.AutoSlugField',
# ORGS_SLUGFIELD='django_extensions.db.fields.AutoSlugField',
ORGS_SLUGFIELD='django_extensions.db.fields.AutoSlugField',
INSTALLED_APPS=INSTALLED_APPS,
ROOT_URLCONF="tests.urls",
)
Expand Down
6 changes: 5 additions & 1 deletion organizations/abstract.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,11 @@
import warnings

from django.conf import settings
from django.core.urlresolvers import reverse

try:
from django.core.urlresolvers import reverse
except ImportError:
from django.urls import reverse
from django.db import models
from django.utils.translation import ugettext_lazy as _

Expand Down
15 changes: 12 additions & 3 deletions organizations/backends/defaults.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,12 @@
from django.contrib.auth import get_user_model
from django.contrib.auth import login
from django.core.mail import EmailMessage
from django.core.urlresolvers import reverse

try:
from django.core.urlresolvers import reverse
except ImportError:
from django.urls import reverse

from django.http import Http404
from django.shortcuts import redirect
from django.shortcuts import render
Expand Down Expand Up @@ -217,8 +222,12 @@ def create_view(self, request):
"""
Initiates the organization and user account creation process
"""
if request.user.is_authenticated():
return redirect("organization_add")
try:
if request.user.is_authenticated():
return redirect("organization_add")
except TypeError:
if request.user.is_authenticated:
return redirect("organization_add")
form = org_registration_form(self.org_model)(request.POST or None)
if form.is_valid():
try:
Expand Down
15 changes: 9 additions & 6 deletions organizations/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,8 @@
from django.conf import settings
from django.db import models
from django.db.models.base import ModelBase
from django.db.models.fields import FieldDoesNotExist
# from django.db.models.fields import FieldDoesNotExist
from django.core.exceptions import FieldDoesNotExist

try:
import six
Expand All @@ -48,7 +49,7 @@ def __str__(self):
if six.PY3:
return self.__unicode__()
else:
return unicode(self).encode('utf-8')
return unicode(self).encode('utf-8') # noqa


class OrgMeta(ModelBase):
Expand Down Expand Up @@ -123,13 +124,14 @@ def update_org_users(cls, module):
cls.module_registry[module]['OrgUserModel']._meta.get_field("user")
except FieldDoesNotExist:
cls.module_registry[module]['OrgUserModel'].add_to_class("user",
models.ForeignKey(USER_MODEL, related_name="%(app_label)s_%(class)s"))
models.ForeignKey(USER_MODEL, related_name="%(app_label)s_%(class)s",
on_delete=models.CASCADE))
try:
cls.module_registry[module]['OrgUserModel']._meta.get_field("organization")
except FieldDoesNotExist:
cls.module_registry[module]['OrgUserModel'].add_to_class("organization",
models.ForeignKey(cls.module_registry[module]['OrgModel'],
related_name="organization_users"))
related_name="organization_users", on_delete=models.CASCADE))

def update_org_owner(cls, module):
"""
Expand All @@ -139,13 +141,14 @@ def update_org_owner(cls, module):
cls.module_registry[module]['OrgOwnerModel']._meta.get_field("organization_user")
except FieldDoesNotExist:
cls.module_registry[module]['OrgOwnerModel'].add_to_class("organization_user",
models.OneToOneField(cls.module_registry[module]['OrgUserModel']))
models.OneToOneField(cls.module_registry[module]['OrgUserModel'],
on_delete=models.CASCADE))
try:
cls.module_registry[module]['OrgOwnerModel']._meta.get_field("organization")
except FieldDoesNotExist:
cls.module_registry[module]['OrgOwnerModel'].add_to_class("organization",
models.OneToOneField(cls.module_registry[module]['OrgModel'],
related_name="owner"))
related_name="owner", on_delete=models.CASCADE))


class AbstractBaseOrganization(UnicodeMixin, models.Model):
Expand Down
40 changes: 21 additions & 19 deletions organizations/migrations/0001_initial.py
Original file line number Diff line number Diff line change
@@ -1,15 +1,16 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
# Generated by Django 2.0 on 2017-12-05 00:17

from django.conf import settings
from django.db import migrations, models
import organizations.fields
import organizations.base
import django.db.models.deletion
import django.utils.timezone
from django.conf import settings

import organizations.base
import organizations.fields

class Migration(migrations.Migration):

initial = True

dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
]
Expand All @@ -18,57 +19,58 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='Organization',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(help_text='The name of the organization', max_length=200)),
('is_active', models.BooleanField(default=True)),
('created', organizations.fields.AutoCreatedField(default=django.utils.timezone.now, editable=False)),
('modified', organizations.fields.AutoLastModifiedField(default=django.utils.timezone.now, editable=False)),
('slug', organizations.fields.SlugField(populate_from=b'name', editable=True, max_length=200, help_text='The name in all lowercase, suitable for URL identification', unique=True)),
('slug', organizations.fields.SlugField(editable=True, help_text='The name in all lowercase, suitable for URL identification', max_length=200, populate_from='name', unique=True)),
],
options={
'ordering': ['name'],
'abstract': False,
'verbose_name': 'organization',
'verbose_name_plural': 'organizations',
'ordering': ['name'],
'abstract': False,
},
bases=(organizations.base.UnicodeMixin, models.Model),
),
migrations.CreateModel(
name='OrganizationOwner',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('created', organizations.fields.AutoCreatedField(default=django.utils.timezone.now, editable=False)),
('modified', organizations.fields.AutoLastModifiedField(default=django.utils.timezone.now, editable=False)),
('organization', models.OneToOneField(related_name='owner', to='organizations.Organization')),
('organization', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='owner', to='organizations.Organization')),
],
options={
'verbose_name': 'organization owner',
'verbose_name_plural': 'organization owners',
'abstract': False,
},
bases=(organizations.base.UnicodeMixin, models.Model),
),
migrations.CreateModel(
name='OrganizationUser',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('created', organizations.fields.AutoCreatedField(default=django.utils.timezone.now, editable=False)),
('modified', organizations.fields.AutoLastModifiedField(default=django.utils.timezone.now, editable=False)),
('is_admin', models.BooleanField(default=False)),
('organization', models.ForeignKey(related_name='organization_users', to='organizations.Organization')),
('user', models.ForeignKey(related_name='organizations_organizationuser', to=settings.AUTH_USER_MODEL)),
('organization', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='organization_users', to='organizations.Organization')),
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='organizations_organizationuser', to=settings.AUTH_USER_MODEL)),
],
options={
'ordering': ['organization', 'user'],
'abstract': False,
'verbose_name': 'organization user',
'verbose_name_plural': 'organization users',
'ordering': ['organization', 'user'],
'abstract': False,
},
bases=(organizations.base.UnicodeMixin, models.Model),
),
migrations.AddField(
model_name='organizationowner',
name='organization_user',
field=models.OneToOneField(to='organizations.OrganizationUser'),
field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to='organizations.OrganizationUser'),
),
migrations.AddField(
model_name='organization',
Expand All @@ -77,6 +79,6 @@ class Migration(migrations.Migration):
),
migrations.AlterUniqueTogether(
name='organizationuser',
unique_together=set([('user', 'organization')]),
unique_together={('user', 'organization')},
),
]
Loading

0 comments on commit c1c88a7

Please sign in to comment.