misc: update for compatibility with django 2.2 (#41623)
This commit is contained in:
parent
8231aedb30
commit
69d0db973d
|
@ -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
|
||||
|
|
|
@ -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={
|
||||
},
|
||||
|
|
|
@ -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)),
|
||||
],
|
||||
),
|
||||
]
|
||||
|
|
|
@ -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),
|
||||
]
|
||||
|
|
|
@ -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,
|
||||
),
|
||||
]
|
||||
|
|
|
@ -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),
|
||||
),
|
||||
]
|
||||
|
|
|
@ -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),
|
||||
),
|
||||
]
|
||||
|
|
|
@ -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),
|
||||
),
|
||||
]
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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'))
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)),
|
||||
],
|
||||
),
|
||||
]
|
||||
|
|
|
@ -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),
|
||||
),
|
||||
]
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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'),
|
||||
|
|
6
setup.py
6
setup.py
|
@ -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',
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
11
tox.ini
|
@ -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/
|
||||
|
|
Loading…
Reference in New Issue