Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion bin/navcheckservice
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ import sys
import IPy
import logging

from django.utils.six.moves import input
from six.moves import input

from nav.logs import init_stderr_logging
from nav.statemon import checkermap
Expand Down
6 changes: 3 additions & 3 deletions bin/smsd.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
import sys
import time

from django.utils.encoding import smart_text
from nav.compatibility import smart_str

import nav.config
import nav.daemon
Expand Down Expand Up @@ -431,8 +431,8 @@ def backoffaction(error, retrylimitaction):
for index, msg in enumerate(msgs):
error_message += u'\n%s: "%s" --> %s' % (
index + 1,
smart_text(msg['msg']),
smart_text(msg['name']),
smart_str(msg['msg']),
smart_str(msg['name']),
)

error_message += u"\nError message: %s" % error
Expand Down
2 changes: 1 addition & 1 deletion python/nav/Snmp/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@

"""
from __future__ import absolute_import
from django.utils import six
import six

BACKEND = None

Expand Down
2 changes: 1 addition & 1 deletion python/nav/Snmp/pynetsnmp.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
c_uint64,
)

from django.utils import six
import six
from IPy import IP
from pynetsnmp import netsnmp
from pynetsnmp.netsnmp import (
Expand Down
2 changes: 1 addition & 1 deletion python/nav/activeipcollector/manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
import time
from IPy import IP

from django.utils.six.moves import range
from six.moves import range

import nav.activeipcollector.collector as collector
from nav.metrics.carbon import send_metrics
Expand Down
6 changes: 5 additions & 1 deletion python/nav/alertengine/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@
from datetime import datetime, timedelta

from django.db import transaction, reset_queries
from django.utils.lru_cache import lru_cache

from nav.models.profiles import (
Account,
Expand All @@ -36,6 +35,11 @@
)
from nav.models.event import AlertQueue

try: # Django >= 3
from functools import lru_cache
except ImportError:
from django.utils.lru_cache import lru_cache


_logger = logging.getLogger(__name__)

Expand Down
6 changes: 3 additions & 3 deletions python/nav/alertengine/dispatchers/slack_dispatcher.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
import json
import time

from django.utils import six
from django.utils.six.moves.urllib.request import Request, urlopen
from django.utils.six.moves.urllib.error import HTTPError
import six
from six.moves.urllib.request import Request, urlopen
from six.moves.urllib.error import HTTPError

from nav.alertengine.dispatchers import Dispatcher, DispatcherException

Expand Down
2 changes: 1 addition & 1 deletion python/nav/asyncdns.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@
from twisted.names.error import DNSServerError, DNSNameError
from twisted.names.error import DNSNotImplementedError, DNSQueryRefusedError

from django.utils import six
import six


def reverse_lookup(addresses):
Expand Down
4 changes: 2 additions & 2 deletions python/nav/auditlog/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
import operator

from django.db.models import Q
from django.utils import six
import six

from rest_framework import serializers
from rest_framework import viewsets, filters
Expand Down Expand Up @@ -137,6 +137,6 @@ class LogEntryViewSet(NAVDefaultsMixin, viewsets.ReadOnlyModelViewSet):
)
queryset = LogEntry.objects.all()
serializer_class = LogEntrySerializer
filter_fields = ('subsystem', 'object_pk', 'verb')
filterset_fields = ('subsystem', 'object_pk', 'verb')
search_fields = ('summary',)
ordering = ('timestamp',)
8 changes: 3 additions & 5 deletions python/nav/auditlog/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,7 @@
import logging

from django.db import models
from django.utils.encoding import python_2_unicode_compatible
from django.utils.encoding import force_text
from nav.compatibility import force_str
from django.utils.timezone import now as utcnow

from nav.models.fields import VarcharField, LegacyGenericForeignKey
Expand All @@ -30,7 +29,6 @@
_logger = logging.getLogger(__name__)


@python_2_unicode_compatible
class LogEntry(models.Model):
"""
Logs mostly user actions in NAV
Expand Down Expand Up @@ -99,8 +97,8 @@ def add_log_entry(
self.target_pk = target.pk if target else None
self.timestamp = utcnow()
self.subsystem = subsystem if subsystem else None
self.before = force_text(before)
self.after = force_text(after)
self.before = force_str(before)
self.after = force_str(after)
self.save()
return self

Expand Down
6 changes: 3 additions & 3 deletions python/nav/auditlog/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,14 @@

from __future__ import unicode_literals, absolute_import

from django.conf.urls import url
from django.urls import re_path

from .views import AuditlogOverview, AuditlogNetboxDetail


urlpatterns = [
url(r'^$', AuditlogOverview.as_view(), name='auditlog-home'),
url(
re_path(r'^$', AuditlogOverview.as_view(), name='auditlog-home'),
re_path(
r'^netbox/(?P<netboxid>\d+)$',
AuditlogNetboxDetail.as_view(),
name='auditlog-netbox-detail',
Expand Down
4 changes: 2 additions & 2 deletions python/nav/auditlog/utils.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from __future__ import unicode_literals

from django.utils.encoding import force_text
from nav.compatibility import force_str
from django.db.models import Q

from . import find_modelname
Expand All @@ -26,7 +26,7 @@ def get_auditlog_entries(
if pks is None:
pks = []
if queryset is not None and queryset.exists():
qs_pks = set(force_text(o.pk) for o in queryset)
qs_pks = set(force_str(o.pk) for o in queryset)
if qs_pks:
if pks:
pks = qs_pks.intersection(pks)
Expand Down
2 changes: 1 addition & 1 deletion python/nav/bitvector.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
import array
import re

from django.utils import six
import six

from .six import encode_array

Expand Down
2 changes: 1 addition & 1 deletion python/nav/bulkimport.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
import json

from django.core.exceptions import ValidationError
from django.utils import six
import six

from nav.models.fields import PointField
from nav.models.manage import Netbox, Room, Organization
Expand Down
2 changes: 1 addition & 1 deletion python/nav/bulkparse.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
import io
import json

from django.utils import six
import six
from IPy import IP

from nav.django.validators import is_valid_point_string
Expand Down
2 changes: 1 addition & 1 deletion python/nav/colors.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
COLOR_WHITE,
COLOR_YELLOW,
)
from django.utils import six
import six

__all__ = [
'COLOR_BLACK',
Expand Down
25 changes: 25 additions & 0 deletions python/nav/compatibility.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Django 2.2 has only *_text, Django 3.2 has both *_text and *_str,
# Django 4.0 has only *_str. These are imported so many places that
# it is better to do it once, hence this file

# When no longer supporting 2.2:
# s/nav.compatibility \(import \w+_str\)/django.utils.encoding \1/
try:
from django.utils.encoding import force_str
except ImoprtError:
from django.utils.encoding import force_text as force_str

try:
from django.utils.encoding import smart_str
except ImoprtError:
from django.utils.encoding import smart_text as smart_str

# lru_cache isn't used that much but one application of sed is faster
# than changing a block into a line three times.

# When no longer supporting 2.2:
# s/nav.compatibility import lru_cache/functools import lru_cache/
try:
from functools import lru_cache
except ImportError:
from django.utils.lru_cache import lru_cache
2 changes: 1 addition & 1 deletion python/nav/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
import configparser
import pkg_resources

from django.utils import six
import six

from nav.errors import GeneralException
from . import buildconf
Expand Down
2 changes: 1 addition & 1 deletion python/nav/db/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
import psycopg2
import psycopg2.extensions

from django.utils import six
import six

import nav
from nav import config
Expand Down
2 changes: 1 addition & 1 deletion python/nav/django/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@

from django import forms
from django.forms import Field, Textarea
from django.utils import six
import six

from nav.util import is_valid_cidr
from nav.django import validators, widgets
Expand Down
2 changes: 2 additions & 0 deletions python/nav/django/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -227,6 +227,8 @@
'django.contrib.postgres',
)

DEFAULT_AUTO_FIELD = 'django.db.models.AutoField'

REST_FRAMEWORK = {
'DEFAULT_FILTER_BACKENDS': ('django_filters.rest_framework.DjangoFilterBackend',),
'DEFAULT_PAGINATION_CLASS': 'nav.web.api.v1.NavPageNumberPagination',
Expand Down
2 changes: 1 addition & 1 deletion python/nav/django/templatetags/report.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
from django import template
from django.template.defaultfilters import stringfilter
from django.urls import reverse
from django.utils.six.moves.urllib.parse import urlencode
from six.moves.urllib.parse import urlencode


register = template.Library()
Expand Down
74 changes: 37 additions & 37 deletions python/nav/django/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
import sys
import os
import logging
from django.conf.urls import include, url
from django.urls import re_path, include
from django.contrib.staticfiles.urls import staticfiles_urlpatterns

from nav.config import find_config_dir
Expand All @@ -30,42 +30,42 @@
_logger = logging.getLogger(__name__)

urlpatterns += [
url(r'^status/', include('nav.web.status2.urls')),
url(r'^ajax/', include('nav.web.ajax.urls')),
url(r'^business/', include('nav.web.business.urls')),
url(r'^alertprofiles/', include('nav.web.alertprofiles.urls')),
url(r'^api/', include(('nav.web.api.urls', 'api'))),
# url(r'^api/', include(('nav.web.api.urls', 'api'), namespace='api')),
url(r'^arnold/', include('nav.web.arnold.urls')),
url(r'^devicehistory/', include('nav.web.devicehistory.urls')),
url(r'^geomap/', include('nav.web.geomap.urls')),
url(r'^search/', include('nav.web.info.urls')),
url(r'^ipdevinfo/', include('nav.web.ipdevinfo.urls')),
url(r'^l2trace/', include('nav.web.l2trace.urls')),
url(r'^machinetracker/', include('nav.web.machinetracker.urls')),
url(r'^macwatch/', include('nav.web.macwatch.urls')),
url(r'^maintenance/', include('nav.web.maintenance.urls')),
url(r'^messages/', include('nav.web.messages.urls')),
url(r'^neighbors/', include('nav.web.neighbors.urls')),
url(r'^netmap/', include('nav.web.netmap.urls')),
url(r'^networkexplorer/', include('nav.web.networkexplorer.urls')),
url(r'^portadmin/', include('nav.web.portadmin.urls')),
url(r'^radius/', include('nav.web.radius.urls')),
url(r'^report/', include('nav.web.report.urls')),
url(r'^seeddb/', include('nav.web.seeddb.urls')),
url(r'^stats/', include('nav.web.sortedstats.urls')),
url(r'^syslogger/', include('nav.web.syslogger.urls')),
url(r'^ipam/', include('nav.web.ipam.urls')),
url(r'^threshold/', include('nav.web.threshold.urls')),
url(r'^graphite/', include('nav.web.graphite.urls')),
url(r'^navlets/', include('nav.web.navlets.urls')),
url(r'^watchdog/', include('nav.web.watchdog.urls')),
url(r'^useradmin/', include('nav.web.useradmin.urls')),
url(r'^styleguide/', styleguide_index),
url(r'^refresh_session/', refresh_session, name='refresh-session'),
url(r'^auditlog/', include('nav.auditlog.urls')),
url(r'^interfaces/', include('nav.web.interface_browser.urls')),
url(r'^500/', force_500),
re_path(r'^status/', include('nav.web.status2.urls')),
re_path(r'^ajax/', include('nav.web.ajax.urls')),
re_path(r'^business/', include('nav.web.business.urls')),
re_path(r'^alertprofiles/', include('nav.web.alertprofiles.urls')),
re_path(r'^api/', include(('nav.web.api.urls', 'api'))),
# re_path(r'^api/', include(('nav.web.api.urls', 'api'), namespace='api')),
re_path(r'^arnold/', include('nav.web.arnold.urls')),
re_path(r'^devicehistory/', include('nav.web.devicehistory.urls')),
re_path(r'^geomap/', include('nav.web.geomap.urls')),
re_path(r'^search/', include('nav.web.info.urls')),
re_path(r'^ipdevinfo/', include('nav.web.ipdevinfo.urls')),
re_path(r'^l2trace/', include('nav.web.l2trace.urls')),
re_path(r'^machinetracker/', include('nav.web.machinetracker.urls')),
re_path(r'^macwatch/', include('nav.web.macwatch.urls')),
re_path(r'^maintenance/', include('nav.web.maintenance.urls')),
re_path(r'^messages/', include('nav.web.messages.urls')),
re_path(r'^neighbors/', include('nav.web.neighbors.urls')),
re_path(r'^netmap/', include('nav.web.netmap.urls')),
re_path(r'^networkexplorer/', include('nav.web.networkexplorer.urls')),
re_path(r'^portadmin/', include('nav.web.portadmin.urls')),
re_path(r'^radius/', include('nav.web.radius.urls')),
re_path(r'^report/', include('nav.web.report.urls')),
re_path(r'^seeddb/', include('nav.web.seeddb.urls')),
re_path(r'^stats/', include('nav.web.sortedstats.urls')),
re_path(r'^syslogger/', include('nav.web.syslogger.urls')),
re_path(r'^ipam/', include('nav.web.ipam.urls')),
re_path(r'^threshold/', include('nav.web.threshold.urls')),
re_path(r'^graphite/', include('nav.web.graphite.urls')),
re_path(r'^navlets/', include('nav.web.navlets.urls')),
re_path(r'^watchdog/', include('nav.web.watchdog.urls')),
re_path(r'^useradmin/', include('nav.web.useradmin.urls')),
re_path(r'^styleguide/', styleguide_index),
re_path(r'^refresh_session/', refresh_session, name='refresh-session'),
re_path(r'^auditlog/', include('nav.auditlog.urls')),
re_path(r'^interfaces/', include('nav.web.interface_browser.urls')),
re_path(r'^500/', force_500),
]

# Load local url-config
Expand Down
2 changes: 1 addition & 1 deletion python/nav/django/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
#

"""Utility methods for django used in NAV"""
from django.db.models.fields import FieldDoesNotExist
from django.core.exceptions import FieldDoesNotExist
from django.urls import reverse
from django.utils.http import urlencode

Expand Down
2 changes: 1 addition & 1 deletion python/nav/django/validators.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
import json
from decimal import Decimal, InvalidOperation

from django.utils import six
import six
from django.utils.translation import ugettext
from django.core.exceptions import ValidationError

Expand Down
Loading