Skip to content

Commit

Permalink
Upgrade Django to 1.10
Browse files Browse the repository at this point in the history
  • Loading branch information
berkerpeksag committed Sep 4, 2017
1 parent 1311231 commit 6767c63
Show file tree
Hide file tree
Showing 41 changed files with 150 additions and 82 deletions.
7 changes: 3 additions & 4 deletions base-requirements.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
dj-database-url==0.4.2
django-pipeline==1.6.13
django-sitetree==1.8.0
Django==1.9.13
Django==1.10.7
docutils==0.12
Markdown==2.5.2
Pillow==2.7.0
Expand All @@ -19,7 +19,7 @@ django-haystack==2.5.1
elasticsearch==1.3.0
pyelasticsearch==0.6.1
# TODO: 0.14.0 only supports Django 1.8 and 1.11.
django-tastypie==0.13.0
django-tastypie==0.13.3

pytz==2016.7
python-dateutil==2.4.0
Expand All @@ -29,8 +29,7 @@ requests==2.5.1
django-honeypot==0.6.0
django-markupfield==1.4.2

# TODO: 0.33.0 doesn't support Django 1.9.
django-allauth==0.32.0
django-allauth==0.33.0

django-waffle==0.12

Expand Down
2 changes: 1 addition & 1 deletion blogs/tests/test_views.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from django.core.management import call_command
from django.core.urlresolvers import reverse
from django.urls import reverse
from django.test import TestCase

from boxes.models import Box
Expand Down
2 changes: 1 addition & 1 deletion cms/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ def __init__(self, request=None, *args, **kwargs):
def save(self, commit=True):
obj = super().save(commit=False)

if self.request is not None and self.request.user.is_authenticated():
if self.request is not None and self.request.user.is_authenticated:
if not obj.pk:
obj.creator = self.request.user
else:
Expand Down
4 changes: 1 addition & 3 deletions cms/management/commands/generate_dev_fixtures.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,6 @@ def add_arguments(self, parser):
)

def handle(self, **options):
outputfile = options.get('outputfile')

content = io.StringIO()
call_command(
"dumpdata",
Expand All @@ -52,7 +50,7 @@ def handle(self, **options):
continue
obj['fields']['password'] = make_password(None)

with gzip.open(outputfile, 'wb') as out:
with gzip.open(options['outputfile'], 'wb') as out:
out.write(bytes(json.dumps(data, indent=4), 'UTF-8'))


2 changes: 1 addition & 1 deletion cms/views.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from django.core.urlresolvers import reverse
from django.urls import reverse
from django.shortcuts import render
from urllib.parse import urljoin

Expand Down
2 changes: 1 addition & 1 deletion community/models.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from django.contrib.postgres.fields import JSONField
from django.core.urlresolvers import reverse
from django.urls import reverse
from django.db import models
from django.utils.translation import ugettext_lazy as _

Expand Down
4 changes: 2 additions & 2 deletions dev-requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

# Required for running tests

factory-boy==2.9.0
Faker==0.7.18
factory-boy==2.9.2
Faker==0.8.1
tblib==1.3.2

# Extra stuff required for local dev
Expand Down
2 changes: 1 addition & 1 deletion downloads/models.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import re

from django.core.urlresolvers import reverse
from django.urls import reverse
from django.conf import settings
from django.db import models
from django.db.models.signals import post_save
Expand Down
2 changes: 1 addition & 1 deletion downloads/tests/test_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

from django.conf import settings
from django.contrib.auth import get_user_model
from django.core.urlresolvers import reverse
from django.urls import reverse
from django.test import TestCase, override_settings

from rest_framework.test import APITestCase
Expand Down
2 changes: 1 addition & 1 deletion downloads/views.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from django.core.urlresolvers import reverse
from django.urls import reverse
from django.views.generic import DetailView, TemplateView, ListView, RedirectView
from django.http import Http404

Expand Down
2 changes: 1 addition & 1 deletion events/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
from operator import itemgetter

from django.conf import settings
from django.core.urlresolvers import reverse
from django.urls import reverse
from django.db import models
from django.db.models import Q
from django.template.defaultfilters import date
Expand Down
2 changes: 1 addition & 1 deletion events/tests/test_views.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import datetime

from django.contrib.auth import get_user_model
from django.core.urlresolvers import reverse
from django.urls import reverse
from django.test import TestCase
from django.utils import timezone

Expand Down
2 changes: 1 addition & 1 deletion jobs/feeds.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from django.contrib.syndication.views import Feed
from django.core.urlresolvers import reverse_lazy
from django.urls import reverse_lazy

from .models import Job

Expand Down
2 changes: 1 addition & 1 deletion jobs/models.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import datetime

from django.conf import settings
from django.core.urlresolvers import reverse
from django.urls import reverse
from django.db import models
from django.db.models.signals import post_save
from django.dispatch import receiver
Expand Down
2 changes: 1 addition & 1 deletion jobs/search_indexes.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from django.core.urlresolvers import reverse
from django.urls import reverse
from django.template.defaultfilters import truncatewords_html, striptags

from haystack import indexes
Expand Down
6 changes: 5 additions & 1 deletion jobs/tests/test_views.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from django.contrib.auth import get_user_model
from django.core import mail
from django.core.urlresolvers import reverse
from django.urls import reverse
from django.test import TestCase

from ..models import Job
Expand Down Expand Up @@ -150,6 +150,10 @@ def test_job_edit(self):
# able to edit a job.
form = response.context['form']
data = form.initial
# Quoted from Django 1.10 release notes:
# Private API django.forms.models.model_to_dict() returns a
# queryset rather than a list of primary keys for ManyToManyFields.
data['job_types'] = [self.job_type.pk]
data['description'] = 'Lorem ipsum dolor sit amet'
response = self.client.post(url, data)
self.assertRedirects(response, '/jobs/%d/preview/' % job.pk)
Expand Down
4 changes: 2 additions & 2 deletions jobs/views.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from django.contrib import messages
from django.core.urlresolvers import reverse
from django.urls import reverse
from django.db.models import Q
from django.http import Http404, HttpResponse, HttpResponseRedirect
from django.shortcuts import get_object_or_404, redirect
Expand Down Expand Up @@ -217,7 +217,7 @@ def get_queryset(self):
queryset = Job.objects.select_related()
if self.has_jobs_board_admin_access():
return queryset
if self.request.user.is_authenticated():
if self.request.user.is_authenticated:
# Combine visible jobs and user's non-visible jobs.
# TODO: Add this to JobQuerySet and use where applicable.
return queryset.visible() | queryset.by(self.request.user)
Expand Down
2 changes: 1 addition & 1 deletion minutes/feeds.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from django.contrib.syndication.views import Feed
from django.core.urlresolvers import reverse_lazy
from django.urls import reverse_lazy

from .models import Minutes

Expand Down
2 changes: 1 addition & 1 deletion minutes/models.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from django.conf import settings
from django.core.urlresolvers import reverse
from django.urls import reverse
from django.db import models

from markupfield.fields import MarkupField
Expand Down
2 changes: 1 addition & 1 deletion minutes/tests/test_views.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import datetime

from django.core.urlresolvers import reverse
from django.urls import reverse
from django.contrib.auth import get_user_model
from django.test import TestCase

Expand Down
6 changes: 5 additions & 1 deletion pages/middleware.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,17 @@

class PageFallbackMiddleware:

def __init__(self, get_response):
self.get_response = get_response

def get_queryset(self, request):
if request.user.is_staff:
return Page.objects.all()
else:
return Page.objects.published()

def process_response(self, request, response):
def __call__(self, request):
response = self.get_response(request)
# No need to check for a page for non-404 responses.
if response.status_code != 404:
return response
Expand Down
4 changes: 2 additions & 2 deletions pydotorg/context_processors.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from django.conf import settings
from django.core.urlresolvers import resolve, Resolver404
from django.urls import resolve, Resolver404


def site_info(request):
Expand Down Expand Up @@ -27,4 +27,4 @@ def get_host_with_scheme(request):
def blog_url(request):
return {
'BLOG_URL': settings.PYTHON_BLOG_URL,
}
}
6 changes: 5 additions & 1 deletion pydotorg/middleware.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,11 @@ class AdminNoCaching:
Middleware to ensure the admin is not cached by Fastly or other caches
"""

def process_response(self, request, response):
def __init__(self, get_response):
self.get_response = get_response

def __call__(self, request):
response = self.get_response(request)
if request.path.startswith('/admin'):
response['Cache-Control'] = 'private'
return response
4 changes: 2 additions & 2 deletions pydotorg/mixins.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ def handle_no_permission(self):
)
if self.raise_exception:
if (self.redirect_unauthenticated_users and not
self.request.user.is_authenticated()):
self.request.user.is_authenticated):
return response
raise PermissionDenied(self.get_permission_denied_message())
return response
Expand Down Expand Up @@ -65,7 +65,7 @@ def check_membership(self, group):

def dispatch(self, request, *args, **kwargs):
in_group = False
if self.request.user.is_authenticated():
if self.request.user.is_authenticated:
in_group = self.check_membership(self.get_group_required())
if not in_group:
return self.handle_no_permission()
Expand Down
2 changes: 1 addition & 1 deletion pydotorg/resources.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ def is_authenticated(self, request, **kwargs):
return key_auth_check

def get_identifier(self, request):
if request.user.is_authenticated():
if request.user.is_authenticated:
return super().get_identifier(request)
else:
# returns a combination of IP address and hostname.
Expand Down
5 changes: 3 additions & 2 deletions pydotorg/settings/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@
SOCIALACCOUNT_EMAIL_REQUIRED = True
SOCIALACCOUNT_EMAIL_VERIFICATION = True
SOCIALACCOUNT_QUERY_EMAIL = True
ACCOUNT_USERNAME_VALIDATORS = 'users.validators.username_validators'

### Templates

Expand Down Expand Up @@ -112,7 +113,7 @@

# Note that we don't need to activate 'XFrameOptionsMiddleware' and
# 'SecurityMiddleware' because we set appropriate headers in python/psf-salt.
MIDDLEWARE_CLASSES = (
MIDDLEWARE = [
'pydotorg.middleware.AdminNoCaching',
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
Expand All @@ -124,7 +125,7 @@
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'pages.middleware.PageFallbackMiddleware',
'django.contrib.redirects.middleware.RedirectFallbackMiddleware',
)
]

AUTH_USER_MODEL = 'users.User'

Expand Down
4 changes: 2 additions & 2 deletions pydotorg/settings/local.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,9 @@
'debug_toolbar',
]

MIDDLEWARE_CLASSES += (
MIDDLEWARE += [
'debug_toolbar.middleware.DebugToolbarMiddleware',
)
]

CACHES = {
'default': {
Expand Down
2 changes: 1 addition & 1 deletion pydotorg/tests/test_views.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from django.core.urlresolvers import reverse
from django.urls import reverse
from django.db.models import signals
from django.test import TestCase

Expand Down
2 changes: 1 addition & 1 deletion sponsors/tests/test_views.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from django.core.urlresolvers import reverse
from django.urls import reverse
from django.test import TestCase

from ..models import Sponsor
Expand Down
2 changes: 1 addition & 1 deletion successstories/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
from django.contrib.sites.models import Site
from django.core.exceptions import ValidationError
from django.core.mail import EmailMessage
from django.core.urlresolvers import reverse
from django.urls import reverse
from django.db import models
from django.db.models.signals import post_save
from django.dispatch import receiver
Expand Down
2 changes: 1 addition & 1 deletion successstories/tests/test_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

from django.conf import settings
from django.core import mail
from django.core.urlresolvers import reverse
from django.urls import reverse
from django.contrib.auth import get_user_model
from django.test import TestCase

Expand Down
2 changes: 1 addition & 1 deletion successstories/views.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from django.contrib import messages
from django.core.urlresolvers import reverse
from django.urls import reverse
from django.utils.decorators import method_decorator
from django.views.generic import CreateView, DetailView, ListView

Expand Down
3 changes: 2 additions & 1 deletion users/factories.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ class Meta:
password = factory.PostGenerationMethodCall('set_password', 'password')
search_visibility = User.SEARCH_PUBLIC
email_privacy = User.EMAIL_PUBLIC
membership = factory.RelatedFactory('users.factories.MembershipFactory', 'creator')

@factory.post_generation
def groups(self, create, extracted, **kwargs):
Expand All @@ -33,4 +34,4 @@ class Meta:
psf_code_of_conduct = True
psf_announcements = True

creator = factory.SubFactory(UserFactory)
creator = factory.SubFactory(UserFactory, membership=None)
21 changes: 21 additions & 0 deletions users/migrations/0011_auto_20170902_0930.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.10.7 on 2017-09-02 09:30
from __future__ import unicode_literals

import django.contrib.auth.validators
from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('users', '0010_auto_20170828_1906'),
]

operations = [
migrations.AlterField(
model_name='user',
name='username',
field=models.CharField(error_messages={'unique': 'A user with that username already exists.'}, help_text='Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.', max_length=150, unique=True, validators=[django.contrib.auth.validators.UnicodeUsernameValidator()], verbose_name='username'),
),
]
2 changes: 1 addition & 1 deletion users/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

from django.conf import settings
from django.contrib.auth.models import AbstractUser
from django.core.urlresolvers import reverse
from django.urls import reverse
from django.db import models
from django.utils import timezone

Expand Down
Loading

0 comments on commit 6767c63

Please sign in to comment.