misc: update for compatibility with django 2.2 (#41623)

This commit is contained in:
Frédéric Péters 2020-04-11 21:41:48 +02:00
parent 8231aedb30
commit 69d0db973d
23 changed files with 77 additions and 65 deletions

View File

@ -17,7 +17,7 @@
import datetime
from django.conf import settings
from django.core.urlresolvers import reverse
from django.urls import reverse
from django.contrib.auth.models import User
from django.utils.text import slugify
from django.utils.timezone import now

View File

@ -19,7 +19,7 @@ class Migration(migrations.Migration):
('document_filename', models.CharField(max_length=512, verbose_name='document filename')),
('document_file', models.FileField(upload_to=b'', verbose_name='file')),
('creation', models.DateTimeField(auto_now_add=True, verbose_name='creation date')),
('user', models.ForeignKey(verbose_name='user', to=settings.AUTH_USER_MODEL)),
('user', models.ForeignKey(verbose_name='user', to=settings.AUTH_USER_MODEL, on_delete=models.CASCADE)),
],
options={
},

View File

@ -53,9 +53,9 @@ class Migration(migrations.Migration):
('title', models.CharField(max_length=200, verbose_name='title', blank=True)),
('description', models.TextField(verbose_name='description', blank=True)),
('expiration_date', models.DateField(null=True, verbose_name='expiration date', blank=True)),
('document', models.ForeignKey(related_name='user_documents', verbose_name='document', to='fargo.Document')),
('origin', models.ForeignKey(verbose_name='origin', to='fargo.Origin', null=True)),
('user', models.ForeignKey(related_name='user_documents', verbose_name='user', to=settings.AUTH_USER_MODEL)),
('document', models.ForeignKey(related_name='user_documents', verbose_name='document', to='fargo.Document', on_delete=models.CASCADE)),
('origin', models.ForeignKey(verbose_name='origin', to='fargo.Origin', null=True, on_delete=models.CASCADE)),
('user', models.ForeignKey(related_name='user_documents', verbose_name='user', to=settings.AUTH_USER_MODEL, on_delete=models.CASCADE)),
],
options={
'ordering': ('-created', 'user'),
@ -74,8 +74,8 @@ class Migration(migrations.Migration):
('end', models.DateField(verbose_name='end date')),
('creator', models.CharField(max_length=256, verbose_name='creator')),
('created', models.DateTimeField(verbose_name='creation date')),
('origin', models.ForeignKey(verbose_name='origin', to='fargo.Origin', null=True)),
('user', models.ForeignKey(verbose_name='user', to=settings.AUTH_USER_MODEL)),
('origin', models.ForeignKey(verbose_name='origin', to='fargo.Origin', null=True, on_delete=models.CASCADE)),
('user', models.ForeignKey(verbose_name='user', to=settings.AUTH_USER_MODEL, on_delete=models.CASCADE)),
],
),
]

View File

@ -49,7 +49,7 @@ class Migration(migrations.Migration):
('end', models.DateField(verbose_name='end date')),
('creator', models.CharField(max_length=256, verbose_name='creator')),
('created', models.DateTimeField(auto_now_add=True, verbose_name='creation date')),
('user_document', models.ForeignKey(verbose_name='user document', to='fargo.UserDocument')),
('user_document', models.ForeignKey(verbose_name='user document', to='fargo.UserDocument', on_delete=models.CASCADE)),
],
),
migrations.AlterModelOptions(
@ -86,12 +86,12 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='userdocument',
name='document',
field=models.ForeignKey(related_name='user_documents', verbose_name='document', to='fargo.Document'),
field=models.ForeignKey(related_name='user_documents', verbose_name='document', to='fargo.Document', on_delete=models.CASCADE),
),
migrations.AddField(
model_name='userdocument',
name='user',
field=models.ForeignKey(verbose_name='user', to=settings.AUTH_USER_MODEL),
field=models.ForeignKey(verbose_name='user', to=settings.AUTH_USER_MODEL, on_delete=models.CASCADE),
),
migrations.RunPython(noop, clear_document),
]

View File

@ -25,7 +25,7 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='userdocument',
name='origin',
field=models.ForeignKey(verbose_name='origin', to='fargo.Origin', null=True),
field=models.ForeignKey(verbose_name='origin', to='fargo.Origin', null=True, on_delete=models.CASCADE),
preserve_default=True,
),
]

View File

@ -21,6 +21,6 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='validation',
name='user',
field=models.ForeignKey(verbose_name='user', to=settings.AUTH_USER_MODEL, null=True),
field=models.ForeignKey(verbose_name='user', to=settings.AUTH_USER_MODEL, null=True, on_delete=models.CASCADE),
),
]

View File

@ -19,6 +19,6 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='validation',
name='user',
field=models.ForeignKey(verbose_name='user', to=settings.AUTH_USER_MODEL),
field=models.ForeignKey(verbose_name='user', to=settings.AUTH_USER_MODEL, on_delete=models.CASCADE),
),
]

View File

@ -14,6 +14,6 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='validation',
name='origin',
field=models.ForeignKey(verbose_name='origin', to='fargo.Origin', null=True),
field=models.ForeignKey(verbose_name='origin', to='fargo.Origin', null=True, on_delete=models.CASCADE),
),
]

View File

@ -15,7 +15,7 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='userdocument',
name='user',
field=models.ForeignKey(related_name='user_documents', verbose_name='user', to=settings.AUTH_USER_MODEL),
field=models.ForeignKey(related_name='user_documents', verbose_name='user', to=settings.AUTH_USER_MODEL, on_delete=models.CASCADE),
),
migrations.AlterField(
model_name='validation',

View File

@ -22,7 +22,7 @@ import re
import threading
from django.conf import settings
from django.core.urlresolvers import reverse
from django.urls import reverse
from django.db import models
from django.utils.encoding import python_2_unicode_compatible
from django.utils.translation import ugettext_lazy as _
@ -62,11 +62,13 @@ class UserDocument(models.Model):
user = models.ForeignKey(
settings.AUTH_USER_MODEL,
verbose_name=_('user'),
related_name='user_documents')
related_name='user_documents',
on_delete=models.CASCADE)
document = models.ForeignKey(
'Document',
related_name='user_documents',
verbose_name=_('document'))
verbose_name=_('document'),
on_delete=models.CASCADE)
filename = models.CharField(
verbose_name=_('filename'),
max_length=512)
@ -76,7 +78,8 @@ class UserDocument(models.Model):
origin = models.ForeignKey(
Origin,
verbose_name=_('origin'),
null=True)
null=True,
on_delete=models.CASCADE)
deletable_by_user = models.BooleanField(
verbose_name=_('deletable by user'),
default=True)
@ -132,7 +135,8 @@ class Validation(models.Model):
'''
user = models.ForeignKey(
settings.AUTH_USER_MODEL,
verbose_name=_('user'))
verbose_name=_('user'),
on_delete=models.CASCADE)
content_hash = models.CharField(
max_length=128,
verbose_name=_('content hash'),
@ -141,7 +145,8 @@ class Validation(models.Model):
origin = models.ForeignKey(
Origin,
verbose_name=_('origin'),
null=True)
null=True,
on_delete=models.CASCADE)
document_type = models.CharField(max_length=256, verbose_name=_('document type'))
data = JSONField(null=True, verbose_name=_('data'))
start = models.DateField(verbose_name=_('start date'))

View File

@ -21,7 +21,7 @@ from copy import deepcopy
from django.core.exceptions import PermissionDenied
from django.views.decorators.clickjacking import xframe_options_exempt
from django.views.generic import CreateView, DeleteView, UpdateView, View, TemplateView
from django.core.urlresolvers import reverse, reverse_lazy
from django.urls import reverse, reverse_lazy
from django.contrib.auth.decorators import login_required
from django.shortcuts import get_object_or_404, resolve_url
from django.http import (HttpResponse, HttpResponseRedirect,
@ -35,6 +35,8 @@ from django.utils.http import quote
from django.utils.translation import ugettext as _
from django.utils.decorators import method_decorator
from django.utils.functional import cached_property
from django.utils.decorators import method_decorator
from django.views.decorators.cache import never_cache
from django.conf import settings
from django_tables2 import SingleTableMixin
@ -290,24 +292,29 @@ class ChooseDocumentKind(TemplateView):
return ctx
def login(request, *args, **kwargs):
if any(get_idps()):
if 'next' not in request.GET:
return HttpResponseRedirect(resolve_url('mellon_login'))
return HttpResponseRedirect(resolve_url('mellon_login') + '?next='
+ quote(request.GET.get('next')))
return auth_views.login(request, *args, **kwargs)
class LoginView(auth_views.LoginView):
def get(self, request, *args, **kwargs):
if any(get_idps()):
if not 'next' in request.GET:
return HttpResponseRedirect(resolve_url('mellon_login'))
return HttpResponseRedirect(
resolve_url('mellon_login') + '?next=' + quote(request.GET.get('next'))
)
return super(LoginView, self).get(request, *args, **kwargs)
def logout(request, next_page=None):
if any(get_idps()):
return HttpResponseRedirect(resolve_url('mellon_logout'))
auth_logout(request)
if next_page is not None:
next_page = resolve_url(next_page)
else:
next_page = '/'
return HttpResponseRedirect(next_page)
login = LoginView.as_view()
class LogoutView(auth_views.LogoutView):
@method_decorator(never_cache)
def dispatch(self, request, *args, **kwargs):
if any(get_idps()):
return HttpResponseRedirect(resolve_url('mellon_logout'))
return super(LogoutView, self).dispatch(request, *args, **kwargs)
logout = LogoutView.as_view()
class DocumentTypes(View):

View File

@ -90,7 +90,7 @@ class FargoOAUTH2Authentication(BasicAuthentication):
return True, None
def authenticate_credentials(self, client_id, client_secret):
def authenticate_credentials(self, client_id, client_secret, request=None):
try:
client = OAuth2Client.objects.get(
client_id=client_id, client_secret=client_secret)

View File

@ -18,7 +18,7 @@ import os
from django.core.management.base import BaseCommand
from django.core.files.base import ContentFile
from django.core.urlresolvers import reverse
from django.urls import reverse
from fargo.utils import make_url
from fargo.fargo.models import Document

View File

@ -19,7 +19,7 @@ class Migration(migrations.Migration):
('access_token', models.CharField(default=fargo.oauth2.models.generate_uuid, max_length=255)),
('code', models.CharField(default=fargo.oauth2.models.generate_uuid, max_length=255)),
('creation_date', models.DateTimeField(auto_now=True)),
('user_document', models.ForeignKey(to='fargo.UserDocument')),
('user_document', models.ForeignKey(to='fargo.UserDocument', on_delete=models.CASCADE)),
],
),
migrations.CreateModel(
@ -37,7 +37,7 @@ class Migration(migrations.Migration):
fields=[
('hash_key', models.CharField(max_length=128, serialize=False, primary_key=True)),
('filename', models.CharField(max_length=512)),
('document', models.ForeignKey(to='fargo.Document', related_name='oauth2_tempfiles')),
('document', models.ForeignKey(to='fargo.Document', related_name='oauth2_tempfiles', on_delete=models.CASCADE)),
],
),
]

View File

@ -53,8 +53,8 @@ class Migration(migrations.Migration):
('uuid', models.CharField(default=fargo.oauth2.models.generate_uuid, max_length=32, serialize=False, primary_key=True)),
('filename', models.CharField(max_length=512)),
('creation_date', models.DateTimeField(auto_now_add=True)),
('client', models.ForeignKey(to='oauth2.OAuth2Client')),
('document', models.ForeignKey(related_name='oauth2_tempfiles', to='fargo.Document')),
('client', models.ForeignKey(to='oauth2.OAuth2Client', on_delete=models.CASCADE)),
('document', models.ForeignKey(related_name='oauth2_tempfiles', to='fargo.Document', on_delete=models.CASCADE)),
],
options={
'ordering': ('creation_date',),
@ -65,11 +65,11 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='oauth2authorize',
name='client',
field=models.ForeignKey(to='oauth2.OAuth2Client'),
field=models.ForeignKey(to='oauth2.OAuth2Client', on_delete=models.CASCADE),
),
migrations.AddField(
model_name='oauth2authorize',
name='user_document',
field=models.ForeignKey(to='fargo.UserDocument'),
field=models.ForeignKey(to='fargo.UserDocument', on_delete=models.CASCADE),
),
]

View File

@ -82,8 +82,8 @@ class CleanupQuerySet(QuerySet):
class OAuth2Authorize(models.Model):
client = models.ForeignKey(OAuth2Client)
user_document = models.ForeignKey(UserDocument)
client = models.ForeignKey(OAuth2Client, on_delete=models.CASCADE)
user_document = models.ForeignKey(UserDocument, on_delete=models.CASCADE)
access_token = models.CharField(max_length=255, default=generate_uuid)
code = models.CharField(max_length=255, default=generate_uuid)
creation_date = models.DateTimeField(auto_now_add=True)
@ -107,8 +107,8 @@ class OAuth2Authorize(models.Model):
class OAuth2TempFile(models.Model):
uuid = models.CharField(max_length=32, default=generate_uuid, primary_key=True)
client = models.ForeignKey(OAuth2Client)
document = models.ForeignKey(Document, related_name='oauth2_tempfiles')
client = models.ForeignKey(OAuth2Client, on_delete=models.CASCADE)
document = models.ForeignKey(Document, related_name='oauth2_tempfiles', on_delete=models.CASCADE)
filename = models.CharField(max_length=512)
creation_date = models.DateTimeField(auto_now_add=True)

View File

@ -21,7 +21,7 @@ from django.utils.http import quote
from django.utils.translation import ugettext as _
from django.utils.timezone import now
from django.core.files.base import ContentFile
from django.core.urlresolvers import reverse
from django.urls import reverse
from django.http import (HttpResponse, HttpResponseBadRequest,
HttpResponseRedirect)
from django.views.decorators.csrf import csrf_exempt

View File

@ -60,12 +60,11 @@ INSTALLED_APPS = (
'sorl.thumbnail',
)
MIDDLEWARE_CLASSES = (
MIDDLEWARE = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
)
@ -217,7 +216,7 @@ REST_FRAMEWORK = {
'rest_framework.permissions.IsAdminUser',
),
'DEFAULT_FILTER_BACKENDS': (
'rest_framework.filters.DjangoFilterBackend',
'django_filters.rest_framework.DjangoFilterBackend',
'rest_framework.filters.OrderingFilter',
),
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.LimitOffsetPagination',

View File

@ -37,7 +37,7 @@ urlpatterns = [
url(r'^upload/$', upload, name='upload'),
url(r'^remote-download/(?P<filename>[^/]*)$', remote_download,
name='remote_download'),
url(r'^admin/', include(admin.site.urls)),
url(r'^admin/', admin.site.urls),
url(r'^login/$', login, name='auth_login'),
url(r'^logout/$', logout, name='auth_logout'),
url(r'^document-types/$', document_types, name='document_types'),

View File

@ -107,12 +107,12 @@ setup(
'Programming Language :: Python :: 2',
],
install_requires=[
'django>=1.11,<1.12',
'django>=1.11,<2.3',
'gadjo',
'django-tables2>=1.5,<2.0',
'django-jsonfield >= 0.9.3',
'django-filter>1,<2',
'djangorestframework>=3.4,<3.7',
'django-filter>1,<2.2',
'djangorestframework>=3.4,<3.8',
'file-magic',
'requests',
'sorl-thumbnail',

View File

@ -20,7 +20,7 @@ import json
import mock
import pytest
from django.core.urlresolvers import reverse
from django.urls import reverse
from django.core.management import call_command
from django.utils.http import quote, urlencode
from django.utils.six.moves.urllib import parse as urlparse

View File

@ -19,7 +19,7 @@
from webtest import Upload
import pytest
from django.core.urlresolvers import reverse
from django.urls import reverse
from django.utils.six.moves.urllib import parse as urlparse
try:

11
tox.ini
View File

@ -1,6 +1,6 @@
[tox]
toxworkdir = {env:TMPDIR:/tmp}/tox-{env:USER}/fargo/{env:BRANCH_NAME:}
envlist = {py2,py3}-dj111-{sqlite,pg}-coverage-pylint
envlist = py3-dj111-{sqlite,pg}-coverage-pylint,py3-dj22-pg
[testenv]
usedevelop = True
@ -15,18 +15,19 @@ setenv =
deps =
pytest
pg: psycopg2
pylint<1.8
pylint-django<0.8.1
pylint
pylint-django
attrs<19.2
dj111: django>=1.11,<1.12
dj22: django>=2.2,<2.3
pytest-cov
pytest-random
pytest-mock
pytest-django
pytest-freezegun
django-webtest<1.9.3
django-webtest
WebTest
mock
py2: django-jsonfield<1.3
commands =
py.test {env:COVERAGE:} {posargs:tests/}
pylint: ./pylint.sh fargo/