From f09321f6ab93c463ee8bd0e51c17fdb2cd9dc4eb Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Fri, 21 Jul 2017 00:25:18 -0400 Subject: [PATCH] Fix deprecation warnings for Django 1.11 and Django 2.0. Signed-off-by: Roberto Rosario --- mayan/apps/acls/models.py | 7 ++-- mayan/apps/acls/tests/test_api.py | 2 +- mayan/apps/acls/tests/test_links.py | 2 +- mayan/apps/acls/views.py | 2 +- mayan/apps/authentication/tests/test_views.py | 2 +- mayan/apps/authentication/views.py | 5 +-- mayan/apps/cabinets/models.py | 5 +-- mayan/apps/cabinets/tests/test_api.py | 2 +- mayan/apps/cabinets/views.py | 2 +- mayan/apps/checkouts/apps.py | 2 +- mayan/apps/checkouts/models.py | 15 ++++++--- mayan/apps/checkouts/views.py | 2 +- mayan/apps/common/classes.py | 2 +- mayan/apps/common/mixins.py | 2 +- mayan/apps/common/models.py | 4 +-- mayan/apps/common/templatetags/common_tags.py | 10 +++--- mayan/apps/common/tests/test_api.py | 2 +- mayan/apps/common/tests/test_views.py | 4 +-- mayan/apps/common/utils.py | 2 +- mayan/apps/common/views.py | 2 +- mayan/apps/converter/models.py | 2 +- mayan/apps/converter/views.py | 2 +- mayan/apps/django_gpg/models.py | 2 +- mayan/apps/django_gpg/tests/test_api.py | 2 +- mayan/apps/django_gpg/views.py | 2 +- mayan/apps/document_comments/models.py | 8 ++--- .../apps/document_comments/tests/test_api.py | 2 +- mayan/apps/document_comments/views.py | 2 +- mayan/apps/document_indexing/models.py | 16 ++++++--- mayan/apps/document_indexing/views.py | 2 +- mayan/apps/document_signatures/models.py | 6 ++-- .../document_signatures/tests/test_links.py | 2 +- mayan/apps/document_signatures/views.py | 2 +- mayan/apps/document_states/models.py | 33 ++++++++++++------- mayan/apps/document_states/tests/test_api.py | 2 +- mayan/apps/document_states/views.py | 2 +- mayan/apps/documents/apps.py | 2 +- mayan/apps/documents/managers.py | 4 +-- mayan/apps/documents/models.py | 22 ++++++++----- mayan/apps/documents/tests/test_api.py | 2 +- mayan/apps/documents/tests/test_links.py | 2 +- .../documents/views/document_page_views.py | 2 +- .../documents/views/document_type_views.py | 2 +- mayan/apps/documents/views/document_views.py | 2 +- mayan/apps/documents/widgets.py | 2 +- mayan/apps/dynamic_search/tests/test_api.py | 2 +- mayan/apps/dynamic_search/views.py | 2 +- mayan/apps/events/tests/test_api.py | 2 +- mayan/apps/events/widgets.py | 2 +- mayan/apps/folders/models.py | 2 +- mayan/apps/folders/tests/test_api.py | 2 +- mayan/apps/folders/views.py | 2 +- mayan/apps/linking/models.py | 3 +- mayan/apps/linking/tests/test_api.py | 2 +- mayan/apps/linking/views.py | 2 +- mayan/apps/mailer/models.py | 3 +- mayan/apps/mailer/views.py | 2 +- mayan/apps/metadata/models.py | 12 ++++--- mayan/apps/metadata/tests/test_api.py | 2 +- mayan/apps/metadata/views.py | 2 +- mayan/apps/motd/tests/test_api.py | 2 +- mayan/apps/motd/views.py | 2 +- mayan/apps/navigation/classes.py | 2 +- .../templatetags/navigation_tags.py | 4 +-- mayan/apps/navigation/tests/test_classes.py | 2 +- mayan/apps/ocr/models.py | 8 ++--- mayan/apps/ocr/tests/test_api.py | 2 +- mayan/apps/ocr/views.py | 2 +- mayan/apps/permissions/models.py | 2 +- mayan/apps/permissions/tests/test_api.py | 2 +- mayan/apps/permissions/tests/test_views.py | 4 +-- mayan/apps/permissions/views.py | 2 +- mayan/apps/sources/models.py | 9 ++--- mayan/apps/sources/views.py | 6 ++-- mayan/apps/sources/wizards.py | 2 +- mayan/apps/statistics/views.py | 2 +- mayan/apps/tags/models.py | 2 +- mayan/apps/tags/tests/test_api.py | 2 +- mayan/apps/tags/views.py | 2 +- mayan/apps/user_management/tests/test_api.py | 2 +- mayan/apps/user_management/views.py | 2 +- 81 files changed, 173 insertions(+), 135 deletions(-) diff --git a/mayan/apps/acls/models.py b/mayan/apps/acls/models.py index e580c980e0..9e9e0e2531 100644 --- a/mayan/apps/acls/models.py +++ b/mayan/apps/acls/models.py @@ -30,7 +30,7 @@ class AccessControlList(models.Model): in the Setup menu. """ content_type = models.ForeignKey( - ContentType, + ContentType, on_delete=models.CASCADE, related_name='object_content_type' ) object_id = models.PositiveIntegerField() @@ -43,7 +43,10 @@ class AccessControlList(models.Model): StoredPermission, blank=True, related_name='acls', verbose_name=_('Permissions') ) - role = models.ForeignKey(Role, related_name='acls', verbose_name=_('Role')) + role = models.ForeignKey( + Role, on_delete=models.CASCADE, related_name='acls', + verbose_name=_('Role') + ) objects = AccessControlListManager() diff --git a/mayan/apps/acls/tests/test_api.py b/mayan/apps/acls/tests/test_api.py index e339d10568..ec74d12d74 100644 --- a/mayan/apps/acls/tests/test_api.py +++ b/mayan/apps/acls/tests/test_api.py @@ -2,8 +2,8 @@ from __future__ import absolute_import, unicode_literals from django.contrib.auth import get_user_model from django.contrib.contenttypes.models import ContentType -from django.core.urlresolvers import reverse from django.test import override_settings +from django.urls import reverse from rest_framework.test import APITestCase diff --git a/mayan/apps/acls/tests/test_links.py b/mayan/apps/acls/tests/test_links.py index f7edc1a51c..633323a77d 100644 --- a/mayan/apps/acls/tests/test_links.py +++ b/mayan/apps/acls/tests/test_links.py @@ -1,7 +1,7 @@ from __future__ import unicode_literals from django.contrib.contenttypes.models import ContentType -from django.core.urlresolvers import reverse +from django.urls import resolve, reverse from documents.tests.test_views import GenericDocumentViewTestCase from user_management.tests.literals import ( diff --git a/mayan/apps/acls/views.py b/mayan/apps/acls/views.py index b2913d940a..b2becb9056 100644 --- a/mayan/apps/acls/views.py +++ b/mayan/apps/acls/views.py @@ -4,9 +4,9 @@ import itertools import logging from django.contrib.contenttypes.models import ContentType -from django.core.urlresolvers import reverse from django.http import Http404, HttpResponseRedirect from django.shortcuts import get_object_or_404 +from django.urls import reverse from django.utils.encoding import force_text from django.utils.translation import ugettext_lazy as _ diff --git a/mayan/apps/authentication/tests/test_views.py b/mayan/apps/authentication/tests/test_views.py index b3c81c3242..4958edc0f7 100644 --- a/mayan/apps/authentication/tests/test_views.py +++ b/mayan/apps/authentication/tests/test_views.py @@ -3,8 +3,8 @@ from __future__ import absolute_import, unicode_literals from django.conf import settings from django.contrib.auth import get_user_model from django.core import mail -from django.core.urlresolvers import reverse from django.test import override_settings +from django.urls import reverse from common.tests import BaseTestCase from smart_settings.classes import Namespace diff --git a/mayan/apps/authentication/views.py b/mayan/apps/authentication/views.py index cdd3fdfd40..fae18384df 100644 --- a/mayan/apps/authentication/views.py +++ b/mayan/apps/authentication/views.py @@ -6,10 +6,11 @@ from django.contrib.auth.views import ( login, password_change, password_reset, password_reset_confirm, password_reset_complete, password_reset_done ) -from django.core.urlresolvers import reverse from django.http import HttpResponseRedirect from django.shortcuts import redirect +from django.urls import reverse from django.utils.translation import ugettext_lazy as _ + from stronghold.decorators import public from .forms import EmailAuthenticationForm, UsernameAuthenticationForm @@ -29,7 +30,7 @@ def login_view(request): else: kwargs['authentication_form'] = UsernameAuthenticationForm - if not request.user.is_authenticated(): + if not request.user.is_authenticated: extra_context = {'appearance_type': 'plain'} result = login(request, extra_context=extra_context, **kwargs) diff --git a/mayan/apps/cabinets/models.py b/mayan/apps/cabinets/models.py index c4d58652bb..753ad2ec2e 100644 --- a/mayan/apps/cabinets/models.py +++ b/mayan/apps/cabinets/models.py @@ -1,8 +1,8 @@ from __future__ import absolute_import, unicode_literals from django.core.exceptions import NON_FIELD_ERRORS, ValidationError -from django.core.urlresolvers import reverse from django.db import models, transaction +from django.urls import reverse from django.utils.encoding import python_2_unicode_compatible from django.utils.translation import ugettext_lazy as _ @@ -19,7 +19,8 @@ from .search import cabinet_search # NOQA @python_2_unicode_compatible class Cabinet(MPTTModel): parent = TreeForeignKey( - 'self', blank=True, db_index=True, null=True, related_name='children' + 'self', blank=True, db_index=True, null=True, + on_delete=models.CASCADE, related_name='children' ) label = models.CharField(max_length=128, verbose_name=_('Label')) documents = models.ManyToManyField( diff --git a/mayan/apps/cabinets/tests/test_api.py b/mayan/apps/cabinets/tests/test_api.py index 6e54de6b64..4205fcf865 100644 --- a/mayan/apps/cabinets/tests/test_api.py +++ b/mayan/apps/cabinets/tests/test_api.py @@ -1,8 +1,8 @@ from __future__ import unicode_literals from django.contrib.auth import get_user_model -from django.core.urlresolvers import reverse from django.test import override_settings +from django.urls import reverse from django.utils.encoding import force_text from rest_framework.test import APITestCase diff --git a/mayan/apps/cabinets/views.py b/mayan/apps/cabinets/views.py index 3d71d9e90b..37d38c324f 100644 --- a/mayan/apps/cabinets/views.py +++ b/mayan/apps/cabinets/views.py @@ -3,8 +3,8 @@ from __future__ import absolute_import, unicode_literals import logging from django.contrib import messages -from django.core.urlresolvers import reverse_lazy from django.shortcuts import get_object_or_404 +from django.urls import reverse_lazy from django.utils.translation import ugettext_lazy as _, ungettext from acls.models import AccessControlList diff --git a/mayan/apps/checkouts/apps.py b/mayan/apps/checkouts/apps.py index 83f76242d7..740f3652ea 100644 --- a/mayan/apps/checkouts/apps.py +++ b/mayan/apps/checkouts/apps.py @@ -5,8 +5,8 @@ from datetime import timedelta from kombu import Exchange, Queue from django.apps import apps -from django.core.urlresolvers import reverse_lazy from django.db.models.signals import pre_save +from django.urls import reverse_lazy from django.utils.translation import ugettext_lazy as _ from acls import ModelPermission diff --git a/mayan/apps/checkouts/models.py b/mayan/apps/checkouts/models.py index 9830154868..71b2f379d4 100644 --- a/mayan/apps/checkouts/models.py +++ b/mayan/apps/checkouts/models.py @@ -4,8 +4,8 @@ import logging from django.conf import settings from django.core.exceptions import ValidationError -from django.core.urlresolvers import reverse from django.db import models +from django.urls import reverse from django.utils.encoding import force_text, python_2_unicode_compatible from django.utils.timezone import now from django.utils.translation import ugettext_lazy as _ @@ -24,7 +24,9 @@ class DocumentCheckout(models.Model): """ Model to store the state and information of a document checkout """ - document = models.OneToOneField(Document, verbose_name=_('Document')) + document = models.OneToOneField( + Document, on_delete=models.CASCADE, verbose_name=_('Document') + ) checkout_datetime = models.DateTimeField( auto_now_add=True, verbose_name=_('Check out date and time') ) @@ -34,7 +36,10 @@ class DocumentCheckout(models.Model): ), verbose_name=_('Check out expiration date and time') ) - user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=_('User')) + user = models.ForeignKey( + settings.AUTH_USER_MODEL, on_delete=models.CASCADE, + verbose_name=_('User') + ) block_new_version = models.BooleanField( default=True, help_text=_( @@ -89,7 +94,9 @@ class DocumentCheckout(models.Model): class NewVersionBlock(models.Model): - document = models.ForeignKey(Document, verbose_name=_('Document')) + document = models.ForeignKey( + Document, on_delete=models.CASCADE, verbose_name=_('Document') + ) objects = NewVersionBlockManager() diff --git a/mayan/apps/checkouts/views.py b/mayan/apps/checkouts/views.py index 1e512650c2..761df9e9f2 100644 --- a/mayan/apps/checkouts/views.py +++ b/mayan/apps/checkouts/views.py @@ -1,9 +1,9 @@ from __future__ import absolute_import, unicode_literals from django.contrib import messages -from django.core.urlresolvers import reverse from django.http import HttpResponseRedirect from django.shortcuts import get_object_or_404 +from django.urls import reverse from django.utils.translation import ugettext_lazy as _ from documents.models import Document diff --git a/mayan/apps/common/classes.py b/mayan/apps/common/classes.py index d6ce37a3fe..dcbc7c652e 100644 --- a/mayan/apps/common/classes.py +++ b/mayan/apps/common/classes.py @@ -1,8 +1,8 @@ from __future__ import unicode_literals from django.apps import apps -from django.core.urlresolvers import reverse from django.db import models +from django.urls import reverse from django.utils.encoding import force_text, python_2_unicode_compatible from django.utils.translation import ugettext diff --git a/mayan/apps/common/mixins.py b/mayan/apps/common/mixins.py index 6a302880d4..a8c3788db7 100644 --- a/mayan/apps/common/mixins.py +++ b/mayan/apps/common/mixins.py @@ -3,9 +3,9 @@ from __future__ import unicode_literals from django.conf import settings from django.contrib import messages from django.core.exceptions import PermissionDenied -from django.core.urlresolvers import reverse from django.db.models.query import QuerySet from django.http import HttpResponseRedirect +from django.urls import reverse from django.utils.translation import ungettext, ugettext_lazy as _ from permissions import Permission diff --git a/mayan/apps/common/models.py b/mayan/apps/common/models.py index 84a1f61f19..1dd28f3dd0 100644 --- a/mayan/apps/common/models.py +++ b/mayan/apps/common/models.py @@ -49,8 +49,8 @@ class SharedUploadedFile(models.Model): @python_2_unicode_compatible class UserLocaleProfile(models.Model): user = models.OneToOneField( - settings.AUTH_USER_MODEL, related_name='locale_profile', - verbose_name=_('User') + settings.AUTH_USER_MODEL, on_delete=models.CASCADE, + related_name='locale_profile', verbose_name=_('User') ) timezone = models.CharField( choices=zip(common_timezones, common_timezones), max_length=48, diff --git a/mayan/apps/common/templatetags/common_tags.py b/mayan/apps/common/templatetags/common_tags.py index 2cb3733b73..8a7b5a6a54 100644 --- a/mayan/apps/common/templatetags/common_tags.py +++ b/mayan/apps/common/templatetags/common_tags.py @@ -24,12 +24,12 @@ except sh.CommandNotFound: DATE = None -@register.assignment_tag +@register.simple_tag def get_collections(): return Collection.get_all() -@register.assignment_tag +@register.simple_tag def get_dashboard_widgets(): return DashboardWidget.get_all() @@ -52,7 +52,7 @@ def project_copyright(): return settings.PROJECT_COPYRIGHT -@register.assignment_tag +@register.simple_tag def project_description(): return getattr(settings, 'PROJECT_DESCRIPTION', mayan.__description__) @@ -77,7 +77,7 @@ def project_version(): return mayan.__version__ -@register.assignment_tag(takes_context=True) +@register.simple_tag(takes_context=True) def render_subtemplate(context, template_name, template_context): """ Renders the specified template with the mixed parent and @@ -89,7 +89,7 @@ def render_subtemplate(context, template_name, template_context): return get_template(template_name).render(new_context) -@register.assignment_tag +@register.simple_tag def build(): if BUILD: try: diff --git a/mayan/apps/common/tests/test_api.py b/mayan/apps/common/tests/test_api.py index 2a8f456b1c..e28c22d6af 100644 --- a/mayan/apps/common/tests/test_api.py +++ b/mayan/apps/common/tests/test_api.py @@ -1,6 +1,6 @@ from __future__ import unicode_literals -from django.core.urlresolvers import reverse +from django.urls import reverse from rest_api.tests import BaseAPITestCase diff --git a/mayan/apps/common/tests/test_views.py b/mayan/apps/common/tests/test_views.py index 988567145d..c0320ca575 100644 --- a/mayan/apps/common/tests/test_views.py +++ b/mayan/apps/common/tests/test_views.py @@ -3,9 +3,9 @@ from __future__ import absolute_import, unicode_literals from django.conf.urls import url from django.contrib.auth import get_user_model from django.contrib.auth.models import Group -from django.core.urlresolvers import clear_url_caches, reverse from django.http import HttpResponse from django.template import Context, Template +from django.urls import clear_url_caches, reverse from acls.models import AccessControlList from permissions.models import Role @@ -91,7 +91,7 @@ class GenericViewTestCase(BaseTestCase): user = get_user_model().objects.get(username=username) self.assertTrue(logged_in) - self.assertTrue(user.is_authenticated()) + self.assertTrue(user.is_authenticated) def login_user(self): self.login(username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD) diff --git a/mayan/apps/common/utils.py b/mayan/apps/common/utils.py index bcea9cb1dd..4581cd74bb 100644 --- a/mayan/apps/common/utils.py +++ b/mayan/apps/common/utils.py @@ -8,7 +8,7 @@ import types import xmlrpclib from django.conf import settings -from django.core.urlresolvers import resolve as django_resolve +from django.urls import resolve as django_resolve from django.urls.base import get_script_prefix from django.utils.datastructures import MultiValueDict from django.utils.encoding import force_text diff --git a/mayan/apps/common/views.py b/mayan/apps/common/views.py index a05d2a2dba..127bcd3bbc 100644 --- a/mayan/apps/common/views.py +++ b/mayan/apps/common/views.py @@ -4,9 +4,9 @@ from json import dumps from django.conf import settings from django.contrib import messages -from django.core.urlresolvers import reverse, reverse_lazy from django.http import Http404, HttpResponseRedirect from django.template import RequestContext +from django.urls import reverse, reverse_lazy from django.utils import timezone, translation from django.utils.http import urlencode from django.utils.translation import ugettext_lazy as _, ugettext diff --git a/mayan/apps/converter/models.py b/mayan/apps/converter/models.py index 32faf5ac45..c5edfe4d8b 100644 --- a/mayan/apps/converter/models.py +++ b/mayan/apps/converter/models.py @@ -29,7 +29,7 @@ class Transformation(models.Model): transformation argument. Example: if a page is rotated with the Rotation transformation, this field will show by how many degrees it was rotated. """ - content_type = models.ForeignKey(ContentType) + content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE) object_id = models.PositiveIntegerField() content_object = GenericForeignKey('content_type', 'object_id') diff --git a/mayan/apps/converter/views.py b/mayan/apps/converter/views.py index 540ad144a9..a0cf45cc1d 100644 --- a/mayan/apps/converter/views.py +++ b/mayan/apps/converter/views.py @@ -3,9 +3,9 @@ from __future__ import absolute_import, unicode_literals import logging from django.contrib.contenttypes.models import ContentType -from django.core.urlresolvers import reverse from django.http import Http404 from django.shortcuts import get_object_or_404 +from django.urls import reverse from django.utils.translation import ugettext_lazy as _ from acls.models import AccessControlList diff --git a/mayan/apps/django_gpg/models.py b/mayan/apps/django_gpg/models.py index ebffe2c084..1e5b942080 100644 --- a/mayan/apps/django_gpg/models.py +++ b/mayan/apps/django_gpg/models.py @@ -4,8 +4,8 @@ from datetime import date import logging from django.core.exceptions import ValidationError -from django.core.urlresolvers import reverse from django.db import models +from django.urls import reverse from django.utils.encoding import python_2_unicode_compatible from django.utils.translation import ugettext_lazy as _ diff --git a/mayan/apps/django_gpg/tests/test_api.py b/mayan/apps/django_gpg/tests/test_api.py index 605f973911..f382c006a2 100644 --- a/mayan/apps/django_gpg/tests/test_api.py +++ b/mayan/apps/django_gpg/tests/test_api.py @@ -1,8 +1,8 @@ from __future__ import unicode_literals from django.contrib.auth import get_user_model -from django.core.urlresolvers import reverse from django.test import override_settings +from django.urls import reverse from rest_api.tests import BaseAPITestCase from user_management.tests.literals import ( diff --git a/mayan/apps/django_gpg/views.py b/mayan/apps/django_gpg/views.py index 4e6591640a..df28ecf0be 100644 --- a/mayan/apps/django_gpg/views.py +++ b/mayan/apps/django_gpg/views.py @@ -4,7 +4,7 @@ import logging from django.contrib import messages from django.core.files.base import ContentFile -from django.core.urlresolvers import reverse, reverse_lazy +from django.urls import reverse, reverse_lazy from django.utils.translation import ugettext_lazy as _ from common.generics import ( diff --git a/mayan/apps/document_comments/models.py b/mayan/apps/document_comments/models.py index 24a317e132..ddcf37a470 100644 --- a/mayan/apps/document_comments/models.py +++ b/mayan/apps/document_comments/models.py @@ -19,12 +19,12 @@ logger = logging.getLogger(__name__) @python_2_unicode_compatible class Comment(models.Model): document = models.ForeignKey( - Document, db_index=True, related_name='comments', - verbose_name=_('Document') + Document, db_index=True, on_delete=models.CASCADE, + related_name='comments', verbose_name=_('Document') ) user = models.ForeignKey( - settings.AUTH_USER_MODEL, editable=False, related_name='comments', - verbose_name=_('User'), + settings.AUTH_USER_MODEL, editable=False, on_delete=models.CASCADE, + related_name='comments', verbose_name=_('User'), ) # Translators: Comment here is a noun and refers to the actual text stored comment = models.TextField(verbose_name=_('Comment')) diff --git a/mayan/apps/document_comments/tests/test_api.py b/mayan/apps/document_comments/tests/test_api.py index 62fce7d2ee..d612fe5cfd 100644 --- a/mayan/apps/document_comments/tests/test_api.py +++ b/mayan/apps/document_comments/tests/test_api.py @@ -1,8 +1,8 @@ from __future__ import unicode_literals from django.contrib.auth import get_user_model -from django.core.urlresolvers import reverse from django.test import override_settings +from django.urls import reverse from rest_framework.test import APITestCase diff --git a/mayan/apps/document_comments/views.py b/mayan/apps/document_comments/views.py index 767dc85b13..6a5855fe98 100644 --- a/mayan/apps/document_comments/views.py +++ b/mayan/apps/document_comments/views.py @@ -1,7 +1,7 @@ from __future__ import absolute_import, unicode_literals -from django.core.urlresolvers import reverse from django.shortcuts import get_object_or_404 +from django.urls import reverse from django.utils.translation import ugettext_lazy as _ from acls.models import AccessControlList diff --git a/mayan/apps/document_indexing/models.py b/mayan/apps/document_indexing/models.py index 27106b3557..3e9bf1fcdd 100644 --- a/mayan/apps/document_indexing/models.py +++ b/mayan/apps/document_indexing/models.py @@ -2,9 +2,9 @@ from __future__ import absolute_import, unicode_literals import logging -from django.core.urlresolvers import reverse from django.db import models, transaction from django.template import Context, Template +from django.urls import reverse from django.utils.encoding import force_text, python_2_unicode_compatible from django.utils.translation import ugettext, ugettext_lazy as _ @@ -145,9 +145,12 @@ class IndexTemplateNode(MPTTModel): hierarchy of levels. Each level can contain further levels or a list of documents but not both. """ - parent = TreeForeignKey('self', blank=True, null=True) + parent = TreeForeignKey( + 'self', blank=True, null=True, on_delete=models.CASCADE + ) index = models.ForeignKey( - Index, related_name='node_templates', verbose_name=_('Index') + Index, on_delete=models.CASCADE, related_name='node_templates', + verbose_name=_('Index') ) expression = models.TextField( help_text=_( @@ -272,9 +275,12 @@ class IndexTemplateNode(MPTTModel): @python_2_unicode_compatible class IndexInstanceNode(MPTTModel): - parent = TreeForeignKey('self', null=True, blank=True) + parent = TreeForeignKey( + 'self', blank=True, null=True, on_delete=models.CASCADE + ) index_template_node = models.ForeignKey( - IndexTemplateNode, related_name='index_instance_nodes', + IndexTemplateNode, on_delete=models.CASCADE, + related_name='index_instance_nodes', verbose_name=_('Index template node') ) value = models.CharField( diff --git a/mayan/apps/document_indexing/views.py b/mayan/apps/document_indexing/views.py index 3a5ca04e7f..872321162c 100644 --- a/mayan/apps/document_indexing/views.py +++ b/mayan/apps/document_indexing/views.py @@ -1,8 +1,8 @@ from __future__ import absolute_import, unicode_literals from django.contrib import messages -from django.core.urlresolvers import reverse, reverse_lazy from django.shortcuts import get_object_or_404 +from django.urls import reverse, reverse_lazy from django.utils.html import mark_safe from django.utils.translation import ugettext_lazy as _ diff --git a/mayan/apps/document_signatures/models.py b/mayan/apps/document_signatures/models.py index 0bd47554b1..6647d52f94 100644 --- a/mayan/apps/document_signatures/models.py +++ b/mayan/apps/document_signatures/models.py @@ -3,8 +3,8 @@ from __future__ import unicode_literals import logging import uuid -from django.core.urlresolvers import reverse from django.db import models +from django.urls import reverse from django.utils.encoding import force_text, python_2_unicode_compatible from django.utils.translation import ugettext_lazy as _ @@ -37,8 +37,8 @@ class SignatureBaseModel(models.Model): """ document_version = models.ForeignKey( - DocumentVersion, editable=False, related_name='signatures', - verbose_name=_('Document version') + DocumentVersion, editable=False, on_delete=models.CASCADE, + related_name='signatures', verbose_name=_('Document version') ) # Basic fields date = models.DateField( diff --git a/mayan/apps/document_signatures/tests/test_links.py b/mayan/apps/document_signatures/tests/test_links.py index 169af19344..a228983a29 100644 --- a/mayan/apps/document_signatures/tests/test_links.py +++ b/mayan/apps/document_signatures/tests/test_links.py @@ -1,7 +1,7 @@ from __future__ import unicode_literals from django.core.files import File -from django.core.urlresolvers import reverse +from django.urls import reverse from documents.tests.literals import TEST_DOCUMENT_PATH from documents.tests.test_views import GenericDocumentViewTestCase diff --git a/mayan/apps/document_signatures/views.py b/mayan/apps/document_signatures/views.py index 8354baf618..4cf27a4507 100644 --- a/mayan/apps/document_signatures/views.py +++ b/mayan/apps/document_signatures/views.py @@ -4,9 +4,9 @@ import logging from django.contrib import messages from django.core.files import File -from django.core.urlresolvers import reverse from django.http import HttpResponseRedirect from django.shortcuts import get_object_or_404 +from django.urls import reverse from django.utils.encoding import force_text from django.utils.translation import ugettext_lazy as _ diff --git a/mayan/apps/document_states/models.py b/mayan/apps/document_states/models.py index 3c70c7395e..10d17b57d1 100644 --- a/mayan/apps/document_states/models.py +++ b/mayan/apps/document_states/models.py @@ -4,9 +4,9 @@ import logging from django.conf import settings from django.core.exceptions import PermissionDenied, ValidationError -from django.core.urlresolvers import reverse from django.db import IntegrityError, models from django.db.models import F, Max, Q +from django.urls import reverse from django.utils.encoding import force_text, python_2_unicode_compatible from django.utils.translation import ugettext_lazy as _ @@ -90,7 +90,8 @@ class WorkflowState(models.Model): the Completion Amount will show 66%. """ workflow = models.ForeignKey( - Workflow, related_name='states', verbose_name=_('Workflow') + Workflow, on_delete=models.CASCADE, related_name='states', + verbose_name=_('Workflow') ) label = models.CharField(max_length=255, verbose_name=_('Label')) initial = models.BooleanField( @@ -150,16 +151,18 @@ class WorkflowState(models.Model): @python_2_unicode_compatible class WorkflowTransition(models.Model): workflow = models.ForeignKey( - Workflow, related_name='transitions', verbose_name=_('Workflow') + Workflow, on_delete=models.CASCADE, related_name='transitions', + verbose_name=_('Workflow') ) label = models.CharField(max_length=255, verbose_name=_('Label')) origin_state = models.ForeignKey( - WorkflowState, related_name='origin_transitions', - verbose_name=_('Origin state') + WorkflowState, on_delete=models.CASCADE, + related_name='origin_transitions', verbose_name=_('Origin state') ) destination_state = models.ForeignKey( - WorkflowState, related_name='destination_transitions', + WorkflowState, on_delete=models.CASCADE, + related_name='destination_transitions', verbose_name=_('Destination state') ) @@ -178,10 +181,12 @@ class WorkflowTransition(models.Model): @python_2_unicode_compatible class WorkflowInstance(models.Model): workflow = models.ForeignKey( - Workflow, related_name='instances', verbose_name=_('Workflow') + Workflow, on_delete=models.CASCADE, related_name='instances', + verbose_name=_('Workflow') ) document = models.ForeignKey( - Document, related_name='workflows', verbose_name=_('Document') + Document, on_delete=models.CASCADE, related_name='workflows', + verbose_name=_('Document') ) def __str__(self): @@ -290,16 +295,20 @@ class WorkflowInstanceLogEntry(models.Model): the document state to the Actual state. """ workflow_instance = models.ForeignKey( - WorkflowInstance, related_name='log_entries', - verbose_name=_('Workflow instance') + WorkflowInstance, on_delete=models.CASCADE, + related_name='log_entries', verbose_name=_('Workflow instance') ) datetime = models.DateTimeField( auto_now_add=True, db_index=True, verbose_name=_('Datetime') ) transition = models.ForeignKey( - WorkflowTransition, verbose_name=_('Transition') + WorkflowTransition, on_delete=models.CASCADE, + verbose_name=_('Transition') + ) + user = models.ForeignKey( + settings.AUTH_USER_MODEL, on_delete=models.CASCADE, + verbose_name=_('User') ) - user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=_('User')) comment = models.TextField(blank=True, verbose_name=_('Comment')) def __str__(self): diff --git a/mayan/apps/document_states/tests/test_api.py b/mayan/apps/document_states/tests/test_api.py index 2c3e0db9d5..a00d5cd1ae 100644 --- a/mayan/apps/document_states/tests/test_api.py +++ b/mayan/apps/document_states/tests/test_api.py @@ -2,8 +2,8 @@ from __future__ import absolute_import, unicode_literals from django.contrib.auth import get_user_model from django.contrib.auth.models import Group -from django.core.urlresolvers import reverse from django.test import override_settings +from django.urls import reverse from rest_framework.test import APITestCase diff --git a/mayan/apps/document_states/views.py b/mayan/apps/document_states/views.py index 4cbc79af5e..efbdda4d0e 100644 --- a/mayan/apps/document_states/views.py +++ b/mayan/apps/document_states/views.py @@ -1,10 +1,10 @@ from __future__ import absolute_import, unicode_literals from django.contrib import messages -from django.core.urlresolvers import reverse, reverse_lazy from django.db.utils import IntegrityError from django.http import HttpResponseRedirect from django.shortcuts import get_object_or_404 +from django.urls import reverse, reverse_lazy from django.utils.translation import ugettext_lazy as _ from acls.models import AccessControlList diff --git a/mayan/apps/documents/apps.py b/mayan/apps/documents/apps.py index ddc620863f..fa88a11f89 100644 --- a/mayan/apps/documents/apps.py +++ b/mayan/apps/documents/apps.py @@ -4,7 +4,7 @@ from datetime import timedelta from kombu import Exchange, Queue -from django.core.urlresolvers import reverse_lazy +from django.urls import reverse_lazy from django.utils.translation import ugettext_lazy as _ from acls import ModelPermission diff --git a/mayan/apps/documents/managers.py b/mayan/apps/documents/managers.py index db4d6d7c0f..9a217d72dd 100644 --- a/mayan/apps/documents/managers.py +++ b/mayan/apps/documents/managers.py @@ -144,7 +144,7 @@ class PassthroughManager(models.Manager): class RecentDocumentManager(models.Manager): def add_document_for_user(self, user, document): - if user.is_authenticated(): + if user.is_authenticated: new_recent, created = self.model.objects.get_or_create( user=user, document=document ) @@ -160,7 +160,7 @@ class RecentDocumentManager(models.Manager): def get_for_user(self, user): document_model = apps.get_model('documents', 'document') - if user.is_authenticated(): + if user.is_authenticated: return document_model.objects.filter( recentdocument__user=user ).order_by('-recentdocument__datetime_accessed') diff --git a/mayan/apps/documents/models.py b/mayan/apps/documents/models.py index 7ae0083c54..808eb7298e 100644 --- a/mayan/apps/documents/models.py +++ b/mayan/apps/documents/models.py @@ -6,8 +6,8 @@ import uuid from django.conf import settings from django.core.files import File -from django.core.urlresolvers import reverse from django.db import models, transaction +from django.urls import reverse from django.utils.encoding import force_text, python_2_unicode_compatible from django.utils.timezone import now from django.utils.translation import ugettext, ugettext_lazy as _ @@ -150,7 +150,7 @@ class Document(models.Model): uuid = models.UUIDField(default=uuid.uuid4, editable=False) document_type = models.ForeignKey( - DocumentType, related_name='documents', + DocumentType, on_delete=models.CASCADE, related_name='documents', verbose_name=_('Document type') ) label = models.CharField( @@ -363,7 +363,8 @@ class DocumentVersion(models.Model): cls._post_save_hooks[order] = func document = models.ForeignKey( - Document, related_name='versions', verbose_name=_('Document') + Document, on_delete=models.CASCADE, related_name='versions', + verbose_name=_('Document') ) timestamp = models.DateTimeField( auto_now_add=True, db_index=True, verbose_name=_('Timestamp') @@ -648,7 +649,7 @@ class DocumentTypeFilename(models.Model): quick rename functionality """ document_type = models.ForeignKey( - DocumentType, related_name='filenames', + DocumentType, on_delete=models.CASCADE, related_name='filenames', verbose_name=_('Document type') ) filename = models.CharField( @@ -672,7 +673,7 @@ class DocumentPage(models.Model): Model that describes a document version page """ document_version = models.ForeignKey( - DocumentVersion, related_name='pages', + DocumentVersion, on_delete=models.CASCADE, related_name='pages', verbose_name=_('Document version') ) page_number = models.PositiveIntegerField( @@ -845,7 +846,7 @@ class DocumentPage(models.Model): class DocumentPageCachedImage(models.Model): document_page = models.ForeignKey( - DocumentPage, related_name='cached_images', + DocumentPage, on_delete=models.CASCADE, related_name='cached_images', verbose_name=_('Document page') ) filename = models.CharField(max_length=128, verbose_name=_('Filename')) @@ -874,10 +875,12 @@ class RecentDocument(models.Model): a given user """ user = models.ForeignKey( - settings.AUTH_USER_MODEL, db_index=True, editable=False, verbose_name=_('User') + settings.AUTH_USER_MODEL, db_index=True, editable=False, + on_delete=models.CASCADE, verbose_name=_('User') ) document = models.ForeignKey( - Document, editable=False, verbose_name=_('Document') + Document, editable=False, on_delete=models.CASCADE, + verbose_name=_('Document') ) datetime_accessed = models.DateTimeField( auto_now=True, db_index=True, verbose_name=_('Accessed') @@ -901,7 +904,8 @@ class RecentDocument(models.Model): @python_2_unicode_compatible class DuplicatedDocument(models.Model): document = models.ForeignKey( - Document, related_name='duplicates', verbose_name=_('Document') + Document, on_delete=models.CASCADE, related_name='duplicates', + verbose_name=_('Document') ) documents = models.ManyToManyField( Document, verbose_name=_('Duplicated documents') diff --git a/mayan/apps/documents/tests/test_api.py b/mayan/apps/documents/tests/test_api.py index 4b53236c17..a3dca0cd58 100644 --- a/mayan/apps/documents/tests/test_api.py +++ b/mayan/apps/documents/tests/test_api.py @@ -7,8 +7,8 @@ import time from json import loads from django.contrib.auth import get_user_model -from django.core.urlresolvers import reverse from django.test import override_settings +from django.urls import reverse from django.utils.encoding import force_text from django_downloadview import assert_download_response diff --git a/mayan/apps/documents/tests/test_links.py b/mayan/apps/documents/tests/test_links.py index a6f75d7481..df71f850cf 100644 --- a/mayan/apps/documents/tests/test_links.py +++ b/mayan/apps/documents/tests/test_links.py @@ -4,7 +4,7 @@ from __future__ import unicode_literals import time -from django.core.urlresolvers import reverse +from django.urls import reverse from acls.models import AccessControlList from user_management.tests.literals import ( diff --git a/mayan/apps/documents/views/document_page_views.py b/mayan/apps/documents/views/document_page_views.py index c9cefb7f92..a820480c57 100644 --- a/mayan/apps/documents/views/document_page_views.py +++ b/mayan/apps/documents/views/document_page_views.py @@ -5,8 +5,8 @@ import urlparse from django.conf import settings from django.contrib import messages -from django.core.urlresolvers import reverse from django.shortcuts import get_object_or_404 +from django.urls import reverse from django.utils.http import urlencode from django.utils.translation import ugettext_lazy as _ from django.views.generic import RedirectView diff --git a/mayan/apps/documents/views/document_type_views.py b/mayan/apps/documents/views/document_type_views.py index b5f13ee0b5..f561adec2a 100644 --- a/mayan/apps/documents/views/document_type_views.py +++ b/mayan/apps/documents/views/document_type_views.py @@ -2,8 +2,8 @@ from __future__ import absolute_import, unicode_literals import logging -from django.core.urlresolvers import reverse, reverse_lazy from django.shortcuts import get_object_or_404 +from django.urls import reverse, reverse_lazy from django.utils.translation import ugettext_lazy as _ from acls.models import AccessControlList diff --git a/mayan/apps/documents/views/document_views.py b/mayan/apps/documents/views/document_views.py index 73a05b6391..fe33e2033a 100644 --- a/mayan/apps/documents/views/document_views.py +++ b/mayan/apps/documents/views/document_views.py @@ -4,9 +4,9 @@ import logging from django.contrib import messages from django.core.exceptions import PermissionDenied -from django.core.urlresolvers import reverse, reverse_lazy from django.http import HttpResponseRedirect from django.shortcuts import get_object_or_404 +from django.urls import reverse, reverse_lazy from django.utils.encoding import force_text from django.utils.http import urlencode from django.utils.translation import ugettext_lazy as _, ungettext diff --git a/mayan/apps/documents/widgets.py b/mayan/apps/documents/widgets.py index d117cf115a..bb811afefe 100644 --- a/mayan/apps/documents/widgets.py +++ b/mayan/apps/documents/widgets.py @@ -1,7 +1,7 @@ from __future__ import unicode_literals from django import forms -from django.core.urlresolvers import reverse +from django.urls import reverse from django.utils.encoding import force_text from django.utils.html import strip_tags from django.utils.http import urlencode diff --git a/mayan/apps/dynamic_search/tests/test_api.py b/mayan/apps/dynamic_search/tests/test_api.py index c72e9745d3..6cfb9e77dd 100644 --- a/mayan/apps/dynamic_search/tests/test_api.py +++ b/mayan/apps/dynamic_search/tests/test_api.py @@ -3,8 +3,8 @@ from __future__ import unicode_literals from json import loads from django.contrib.auth import get_user_model -from django.core.urlresolvers import reverse from django.test import override_settings +from django.urls import reverse from documents.models import DocumentType from documents.search import document_search diff --git a/mayan/apps/dynamic_search/views.py b/mayan/apps/dynamic_search/views.py index 322feb21ee..685058e5aa 100644 --- a/mayan/apps/dynamic_search/views.py +++ b/mayan/apps/dynamic_search/views.py @@ -2,7 +2,7 @@ from __future__ import unicode_literals import logging -from django.core.urlresolvers import reverse +from django.urls import reverse from django.utils.translation import ugettext_lazy as _ from django.views.generic.base import RedirectView diff --git a/mayan/apps/events/tests/test_api.py b/mayan/apps/events/tests/test_api.py index 63cea28c6c..11e66206d3 100644 --- a/mayan/apps/events/tests/test_api.py +++ b/mayan/apps/events/tests/test_api.py @@ -1,6 +1,6 @@ from __future__ import unicode_literals -from django.core.urlresolvers import reverse +from django.urls import reverse from rest_api.tests import BaseAPITestCase diff --git a/mayan/apps/events/widgets.py b/mayan/apps/events/widgets.py index 7ecb624007..e2cb52cf1c 100644 --- a/mayan/apps/events/widgets.py +++ b/mayan/apps/events/widgets.py @@ -1,6 +1,6 @@ from __future__ import unicode_literals -from django.core.urlresolvers import reverse +from django.urls import reverse from django.utils.safestring import mark_safe from .classes import Event diff --git a/mayan/apps/folders/models.py b/mayan/apps/folders/models.py index 067ca1ff73..a6ff58bd5f 100644 --- a/mayan/apps/folders/models.py +++ b/mayan/apps/folders/models.py @@ -1,7 +1,7 @@ from __future__ import absolute_import, unicode_literals -from django.core.urlresolvers import reverse from django.db import models +from django.urls import reverse from django.utils.encoding import python_2_unicode_compatible from django.utils.translation import ugettext_lazy as _ diff --git a/mayan/apps/folders/tests/test_api.py b/mayan/apps/folders/tests/test_api.py index 6da4b1b16b..4a828ab673 100644 --- a/mayan/apps/folders/tests/test_api.py +++ b/mayan/apps/folders/tests/test_api.py @@ -1,8 +1,8 @@ from __future__ import unicode_literals from django.contrib.auth import get_user_model -from django.core.urlresolvers import reverse from django.test import override_settings +from django.urls import reverse from documents.models import DocumentType from documents.tests import TEST_DOCUMENT_TYPE, TEST_SMALL_DOCUMENT_PATH diff --git a/mayan/apps/folders/views.py b/mayan/apps/folders/views.py index 2f470e73e3..2f236bac03 100644 --- a/mayan/apps/folders/views.py +++ b/mayan/apps/folders/views.py @@ -3,8 +3,8 @@ from __future__ import absolute_import, unicode_literals import logging from django.contrib import messages -from django.core.urlresolvers import reverse_lazy from django.shortcuts import get_object_or_404 +from django.urls import reverse_lazy from django.utils.translation import ugettext_lazy as _, ungettext from acls.models import AccessControlList diff --git a/mayan/apps/linking/models.py b/mayan/apps/linking/models.py index 7b89185370..68498d873b 100644 --- a/mayan/apps/linking/models.py +++ b/mayan/apps/linking/models.py @@ -102,7 +102,8 @@ class ResolvedSmartLink(SmartLink): @python_2_unicode_compatible class SmartLinkCondition(models.Model): smart_link = models.ForeignKey( - SmartLink, related_name='conditions', verbose_name=_('Smart link') + SmartLink, on_delete=models.CASCADE, related_name='conditions', + verbose_name=_('Smart link') ) inclusion = models.CharField( choices=INCLUSION_CHOICES, default=INCLUSION_AND, diff --git a/mayan/apps/linking/tests/test_api.py b/mayan/apps/linking/tests/test_api.py index 0d0778a785..a90ec2349a 100644 --- a/mayan/apps/linking/tests/test_api.py +++ b/mayan/apps/linking/tests/test_api.py @@ -1,8 +1,8 @@ from __future__ import unicode_literals from django.contrib.auth import get_user_model -from django.core.urlresolvers import reverse from django.test import override_settings +from django.urls import reverse from documents.models import DocumentType from documents.tests.literals import ( diff --git a/mayan/apps/linking/views.py b/mayan/apps/linking/views.py index 776a84d1a1..0295f96930 100644 --- a/mayan/apps/linking/views.py +++ b/mayan/apps/linking/views.py @@ -3,8 +3,8 @@ from __future__ import absolute_import, unicode_literals import logging from django.contrib import messages -from django.core.urlresolvers import reverse, reverse_lazy from django.shortcuts import get_object_or_404 +from django.urls import reverse, reverse_lazy from django.utils.translation import ugettext_lazy as _ from acls.models import AccessControlList diff --git a/mayan/apps/mailer/models.py b/mayan/apps/mailer/models.py index 790abd5a12..375defd765 100644 --- a/mayan/apps/mailer/models.py +++ b/mayan/apps/mailer/models.py @@ -111,7 +111,8 @@ class UserMailer(models.Model): class UserMailerLogEntry(models.Model): user_mailer = models.ForeignKey( - UserMailer, related_name='error_log', verbose_name=_('User mailer') + UserMailer, on_delete=models.CASCADE, related_name='error_log', + verbose_name=_('User mailer') ) datetime = models.DateTimeField( auto_now_add=True, editable=False, verbose_name=_('Date time') diff --git a/mayan/apps/mailer/views.py b/mayan/apps/mailer/views.py index 34b234ab71..d59c36878b 100644 --- a/mayan/apps/mailer/views.py +++ b/mayan/apps/mailer/views.py @@ -1,10 +1,10 @@ from __future__ import absolute_import, unicode_literals from django.contrib.sites.models import Site -from django.core.urlresolvers import reverse, reverse_lazy from django.http import Http404, HttpResponseRedirect from django.shortcuts import get_object_or_404 from django.template import Context, Template +from django.urls import reverse, reverse_lazy from django.utils.html import strip_tags from django.utils.translation import ungettext, ugettext_lazy as _ diff --git a/mayan/apps/metadata/models.py b/mayan/apps/metadata/models.py index 0fd67c9771..9211673950 100644 --- a/mayan/apps/metadata/models.py +++ b/mayan/apps/metadata/models.py @@ -151,9 +151,12 @@ class DocumentMetadata(models.Model): """ document = models.ForeignKey( - Document, related_name='metadata', verbose_name=_('Document') + Document, on_delete=models.CASCADE, related_name='metadata', + verbose_name=_('Document') + ) + metadata_type = models.ForeignKey( + MetadataType, on_delete=models.CASCADE, verbose_name=_('Type') ) - metadata_type = models.ForeignKey(MetadataType, verbose_name=_('Type')) value = models.CharField( blank=True, db_index=True, max_length=255, null=True, verbose_name=_('Value') @@ -200,11 +203,12 @@ class DocumentMetadata(models.Model): @python_2_unicode_compatible class DocumentTypeMetadataType(models.Model): document_type = models.ForeignKey( - DocumentType, related_name='metadata', + DocumentType, on_delete=models.CASCADE, related_name='metadata', verbose_name=_('Document type') ) metadata_type = models.ForeignKey( - MetadataType, verbose_name=_('Metadata type') + MetadataType, on_delete=models.CASCADE, + verbose_name=_('Metadata type') ) required = models.BooleanField(default=False, verbose_name=_('Required')) diff --git a/mayan/apps/metadata/tests/test_api.py b/mayan/apps/metadata/tests/test_api.py index 8aca6bc2a2..435cf8ba13 100644 --- a/mayan/apps/metadata/tests/test_api.py +++ b/mayan/apps/metadata/tests/test_api.py @@ -1,8 +1,8 @@ from __future__ import unicode_literals from django.contrib.auth import get_user_model -from django.core.urlresolvers import reverse from django.test import override_settings +from django.urls import reverse from documents.models import DocumentType from documents.tests import TEST_DOCUMENT_TYPE_LABEL, TEST_SMALL_DOCUMENT_PATH diff --git a/mayan/apps/metadata/views.py b/mayan/apps/metadata/views.py index feaf3b552b..5719d1a827 100644 --- a/mayan/apps/metadata/views.py +++ b/mayan/apps/metadata/views.py @@ -3,9 +3,9 @@ from __future__ import absolute_import, unicode_literals from django.conf import settings from django.contrib import messages from django.core.exceptions import ValidationError -from django.core.urlresolvers import reverse, reverse_lazy from django.http import HttpResponseRedirect from django.shortcuts import get_object_or_404 +from django.urls import reverse, reverse_lazy from django.utils.encoding import force_text from django.utils.http import urlencode from django.utils.translation import ugettext_lazy as _, ungettext diff --git a/mayan/apps/motd/tests/test_api.py b/mayan/apps/motd/tests/test_api.py index 53b6ba7c30..c8f49ffd15 100644 --- a/mayan/apps/motd/tests/test_api.py +++ b/mayan/apps/motd/tests/test_api.py @@ -1,8 +1,8 @@ from __future__ import unicode_literals from django.contrib.auth import get_user_model -from django.core.urlresolvers import reverse from django.test import override_settings +from django.urls import reverse from rest_api.tests import BaseAPITestCase from user_management.tests.literals import ( diff --git a/mayan/apps/motd/views.py b/mayan/apps/motd/views.py index 8d1c391e7d..324c09455d 100644 --- a/mayan/apps/motd/views.py +++ b/mayan/apps/motd/views.py @@ -2,7 +2,7 @@ from __future__ import absolute_import, unicode_literals import logging -from django.core.urlresolvers import reverse_lazy +from django.urls import reverse_lazy from django.utils.translation import ugettext_lazy as _ from common.views import ( diff --git a/mayan/apps/navigation/classes.py b/mayan/apps/navigation/classes.py index cc7310e946..746020174d 100644 --- a/mayan/apps/navigation/classes.py +++ b/mayan/apps/navigation/classes.py @@ -8,9 +8,9 @@ import urlparse from django.apps import apps from django.conf import settings from django.core.exceptions import PermissionDenied -from django.core.urlresolvers import resolve, reverse from django.template import VariableDoesNotExist, Variable from django.template.defaulttags import URLNode +from django.urls import resolve, reverse from django.utils.encoding import force_text from django.utils.http import urlencode, urlquote diff --git a/mayan/apps/navigation/templatetags/navigation_tags.py b/mayan/apps/navigation/templatetags/navigation_tags.py index 97a48ca462..13ca30c523 100644 --- a/mayan/apps/navigation/templatetags/navigation_tags.py +++ b/mayan/apps/navigation/templatetags/navigation_tags.py @@ -8,12 +8,12 @@ from ..forms import MultiItemForm register = Library() -@register.assignment_tag(takes_context=True) +@register.simple_tag(takes_context=True) def get_menu_links(context, name, source=None): return Menu.get(name).resolve(context=context, source=source) -@register.assignment_tag(takes_context=True) +@register.simple_tag(takes_context=True) def get_menus_links(context, names, source=None): result = [] diff --git a/mayan/apps/navigation/tests/test_classes.py b/mayan/apps/navigation/tests/test_classes.py index 82aa68d01e..7a0932b093 100644 --- a/mayan/apps/navigation/tests/test_classes.py +++ b/mayan/apps/navigation/tests/test_classes.py @@ -1,7 +1,7 @@ from __future__ import absolute_import, unicode_literals -from django.core.urlresolvers import reverse from django.template import Context +from django.urls import reverse from acls.models import AccessControlList from common.tests.literals import TEST_VIEW_NAME diff --git a/mayan/apps/ocr/models.py b/mayan/apps/ocr/models.py index f0723c4cfe..d8b35691f5 100644 --- a/mayan/apps/ocr/models.py +++ b/mayan/apps/ocr/models.py @@ -12,8 +12,8 @@ class DocumentTypeSettings(models.Model): Define for OCR for a specific document should behave """ document_type = models.OneToOneField( - DocumentType, related_name='ocr_settings', unique=True, - verbose_name=_('Document type') + DocumentType, on_delete=models.CASCADE, related_name='ocr_settings', + unique=True, verbose_name=_('Document type') ) auto_ocr = models.BooleanField( default=True, @@ -28,7 +28,7 @@ class DocumentTypeSettings(models.Model): @python_2_unicode_compatible class DocumentVersionOCRError(models.Model): document_version = models.ForeignKey( - DocumentVersion, related_name='ocr_errors', + DocumentVersion, on_delete=models.CASCADE, related_name='ocr_errors', verbose_name=_('Document version') ) datetime_submitted = models.DateTimeField( @@ -51,7 +51,7 @@ class DocumentPageContent(models.Model): Model that describes a document page content """ document_page = models.OneToOneField( - DocumentPage, related_name='ocr_content', + DocumentPage, on_delete=models.CASCADE, related_name='ocr_content', verbose_name=_('Document page') ) content = models.TextField(blank=True, verbose_name=_('Content')) diff --git a/mayan/apps/ocr/tests/test_api.py b/mayan/apps/ocr/tests/test_api.py index ce6bbd5c1c..fb73bef98d 100644 --- a/mayan/apps/ocr/tests/test_api.py +++ b/mayan/apps/ocr/tests/test_api.py @@ -3,7 +3,7 @@ from __future__ import unicode_literals import json from django.contrib.auth import get_user_model -from django.core.urlresolvers import reverse +from django.urls import reverse from rest_framework import status diff --git a/mayan/apps/ocr/views.py b/mayan/apps/ocr/views.py index 29b3ecc3d3..c97ce8326c 100644 --- a/mayan/apps/ocr/views.py +++ b/mayan/apps/ocr/views.py @@ -1,9 +1,9 @@ from __future__ import absolute_import, unicode_literals from django.contrib import messages -from django.core.urlresolvers import reverse from django.http import HttpResponseRedirect from django.shortcuts import get_object_or_404 +from django.urls import reverse from django.utils.translation import ugettext_lazy as _ from acls.models import AccessControlList diff --git a/mayan/apps/permissions/models.py b/mayan/apps/permissions/models.py index 47ffc81912..3a286576e7 100644 --- a/mayan/apps/permissions/models.py +++ b/mayan/apps/permissions/models.py @@ -3,8 +3,8 @@ from __future__ import unicode_literals import logging from django.contrib.auth.models import Group -from django.core.urlresolvers import reverse from django.db import models +from django.urls import reverse from django.utils.encoding import force_text, python_2_unicode_compatible from django.utils.translation import ugettext_lazy as _ diff --git a/mayan/apps/permissions/tests/test_api.py b/mayan/apps/permissions/tests/test_api.py index ddceaa758e..f68789277e 100644 --- a/mayan/apps/permissions/tests/test_api.py +++ b/mayan/apps/permissions/tests/test_api.py @@ -2,7 +2,7 @@ from __future__ import unicode_literals from django.contrib.auth import get_user_model from django.contrib.auth.models import Group -from django.core.urlresolvers import reverse +from django.urls import reverse from rest_api.tests import BaseAPITestCase from user_management.tests.literals import ( diff --git a/mayan/apps/permissions/tests/test_views.py b/mayan/apps/permissions/tests/test_views.py index 1e12dade90..fa1b7bddae 100644 --- a/mayan/apps/permissions/tests/test_views.py +++ b/mayan/apps/permissions/tests/test_views.py @@ -1,8 +1,8 @@ from __future__ import unicode_literals from django.contrib.auth import get_user_model -from django.core.urlresolvers import reverse from django.test.client import Client +from django.urls import reverse from common.tests import BaseTestCase from user_management.tests import ( @@ -27,7 +27,7 @@ class PermissionsViewsTestCase(BaseTestCase): username=TEST_ADMIN_USERNAME, password=TEST_ADMIN_PASSWORD ) self.assertTrue(logged_in) - self.assertTrue(self.admin_user.is_authenticated()) + self.assertTrue(self.admin_user.is_authenticated) def test_role_creation_view(self): response = self.client.post( diff --git a/mayan/apps/permissions/views.py b/mayan/apps/permissions/views.py index 7722b5df21..3afa69b5eb 100644 --- a/mayan/apps/permissions/views.py +++ b/mayan/apps/permissions/views.py @@ -3,8 +3,8 @@ from __future__ import unicode_literals import itertools from django.contrib.auth.models import Group -from django.core.urlresolvers import reverse_lazy from django.shortcuts import get_object_or_404 +from django.urls import reverse_lazy from django.utils.encoding import force_text from django.utils.translation import ugettext_lazy as _ diff --git a/mayan/apps/sources/models.py b/mayan/apps/sources/models.py index bb302a8636..47d17f4241 100644 --- a/mayan/apps/sources/models.py +++ b/mayan/apps/sources/models.py @@ -419,7 +419,7 @@ class IntervalBaseModel(OutOfProcessSource): DocumentType, help_text=_( 'Assign a document type to documents uploaded from this source.' - ), + ), on_delete=models.CASCADE, verbose_name=_('Document type') ) uncompress = models.CharField( @@ -509,14 +509,14 @@ class EmailBaseModel(IntervalBaseModel): MetadataType, blank=True, help_text=_( 'Select a metadata type valid for the document type selected in ' 'which to store the email\'s subject.' - ), null=True, related_name='email_subject', + ), on_delete=models.CASCADE, null=True, related_name='email_subject', verbose_name=_('Subject metadata type') ) from_metadata_type = models.ForeignKey( MetadataType, blank=True, help_text=_( 'Select a metadata type valid for the document type selected in ' 'which to store the email\'s "from" value.' - ), null=True, related_name='email_from', + ), on_delete=models.CASCADE, null=True, related_name='email_from', verbose_name=_('From metadata type') ) store_body = models.BooleanField( @@ -767,7 +767,8 @@ class WatchFolderSource(IntervalBaseModel): class SourceLog(models.Model): source = models.ForeignKey( - Source, related_name='logs', verbose_name=_('Source') + Source, on_delete=models.CASCADE, related_name='logs', + verbose_name=_('Source') ) datetime = models.DateTimeField( auto_now_add=True, editable=False, verbose_name=_('Date time') diff --git a/mayan/apps/sources/views.py b/mayan/apps/sources/views.py index a07ad38a0a..5692ba8d47 100644 --- a/mayan/apps/sources/views.py +++ b/mayan/apps/sources/views.py @@ -1,9 +1,9 @@ from __future__ import absolute_import, unicode_literals from django.contrib import messages -from django.core.urlresolvers import reverse, reverse_lazy from django.http import HttpResponseRedirect, JsonResponse from django.shortcuts import get_object_or_404 +from django.urls import reverse, reverse_lazy from django.utils.encoding import force_text from django.utils.translation import ugettext_lazy as _ @@ -232,7 +232,7 @@ class UploadInteractiveView(UploadBaseView): if forms['document_form'].cleaned_data['document_type_available_filenames']: label = forms['document_form'].cleaned_data['document_type_available_filenames'].filename - if not self.request.user.is_anonymous(): + if not self.request.user.is_anonymous: user_id = self.request.user.pk else: user_id = None @@ -372,7 +372,7 @@ class UploadInteractiveVersionView(UploadBaseView): except Exception as exception: messages.error(self.request, exception) - if not self.request.user.is_anonymous(): + if not self.request.user.is_anonymous: user_id = self.request.user.pk else: user_id = None diff --git a/mayan/apps/sources/wizards.py b/mayan/apps/sources/wizards.py index ebdbd263f6..7da8359991 100644 --- a/mayan/apps/sources/wizards.py +++ b/mayan/apps/sources/wizards.py @@ -1,8 +1,8 @@ from __future__ import unicode_literals from django.contrib import messages -from django.core.urlresolvers import reverse from django.http import HttpResponseRedirect +from django.urls import reverse from django.utils.encoding import force_text from django.utils.http import urlencode from django.utils.translation import ugettext_lazy as _ diff --git a/mayan/apps/statistics/views.py b/mayan/apps/statistics/views.py index 6746d0ef75..b0f4c8fb9f 100644 --- a/mayan/apps/statistics/views.py +++ b/mayan/apps/statistics/views.py @@ -1,7 +1,7 @@ from __future__ import unicode_literals -from django.core.urlresolvers import reverse from django.http import Http404 +from django.urls import reverse from django.utils.translation import ugettext_lazy as _ from common.generics import ConfirmView, SimpleView, SingleObjectListView diff --git a/mayan/apps/tags/models.py b/mayan/apps/tags/models.py index 0abb2800af..7572d9448c 100644 --- a/mayan/apps/tags/models.py +++ b/mayan/apps/tags/models.py @@ -1,7 +1,7 @@ from __future__ import absolute_import, unicode_literals -from django.core.urlresolvers import reverse from django.db import models +from django.urls import reverse from django.utils.encoding import python_2_unicode_compatible from django.utils.translation import ugettext_lazy as _ diff --git a/mayan/apps/tags/tests/test_api.py b/mayan/apps/tags/tests/test_api.py index 9ae2e5513a..97f8752f62 100644 --- a/mayan/apps/tags/tests/test_api.py +++ b/mayan/apps/tags/tests/test_api.py @@ -1,8 +1,8 @@ from __future__ import unicode_literals from django.contrib.auth import get_user_model -from django.core.urlresolvers import reverse from django.test import override_settings +from django.urls import reverse from django.utils.encoding import force_text from documents.models import DocumentType diff --git a/mayan/apps/tags/views.py b/mayan/apps/tags/views.py index ee166d4479..b7b9b101d0 100644 --- a/mayan/apps/tags/views.py +++ b/mayan/apps/tags/views.py @@ -3,8 +3,8 @@ from __future__ import absolute_import, unicode_literals import logging from django.contrib import messages -from django.core.urlresolvers import reverse_lazy from django.shortcuts import get_object_or_404 +from django.urls import reverse_lazy from django.utils.translation import ugettext_lazy as _, ungettext from acls.models import AccessControlList diff --git a/mayan/apps/user_management/tests/test_api.py b/mayan/apps/user_management/tests/test_api.py index 7aec08c631..8ca4476924 100644 --- a/mayan/apps/user_management/tests/test_api.py +++ b/mayan/apps/user_management/tests/test_api.py @@ -2,7 +2,7 @@ from __future__ import unicode_literals from django.contrib.auth import get_user_model from django.contrib.auth.models import Group -from django.core.urlresolvers import reverse +from django.urls import reverse from rest_api.tests import BaseAPITestCase diff --git a/mayan/apps/user_management/views.py b/mayan/apps/user_management/views.py index 28eae4ff32..52c6bb2aa8 100644 --- a/mayan/apps/user_management/views.py +++ b/mayan/apps/user_management/views.py @@ -4,9 +4,9 @@ from django.contrib import messages from django.contrib.auth import get_user_model from django.contrib.auth.models import Group from django.contrib.contenttypes.models import ContentType -from django.core.urlresolvers import reverse, reverse_lazy from django.http import HttpResponseRedirect from django.shortcuts import get_object_or_404 +from django.urls import reverse, reverse_lazy from django.utils.translation import ungettext, ugettext_lazy as _ from common.views import (