From cf4c6f6e3d2ea83635ded8ca5a84288f86e2c547 Mon Sep 17 00:00:00 2001 From: Olga Matyla Date: Thu, 25 Apr 2024 12:07:18 +0200 Subject: [PATCH] Update to Django 1.9 --- requirements/base.txt | 7 +++---- src/ralph/access_cards/admin.py | 3 ++- src/ralph/accessories/admin.py | 3 ++- src/ralph/accessories/models.py | 2 +- src/ralph/accounts/admin.py | 5 +++-- src/ralph/accounts/models.py | 2 +- src/ralph/admin/__init__.py | 21 -------------------- src/ralph/admin/apps.py | 3 ++- src/ralph/admin/autocomplete.py | 4 ++-- src/ralph/admin/m2m.py | 2 +- src/ralph/admin/mixins.py | 5 +++-- src/ralph/admin/widgets.py | 4 ++-- src/ralph/assets/admin.py | 5 +++-- src/ralph/assets/models/assets.py | 2 +- src/ralph/assets/models/base.py | 2 +- src/ralph/assets/views.py | 2 +- src/ralph/attachments/models.py | 4 ++-- src/ralph/back_office/admin.py | 7 ++++--- src/ralph/configuration_management/models.py | 2 +- src/ralph/dashboards/admin.py | 3 ++- src/ralph/data_center/admin.py | 6 ++++-- src/ralph/data_center/forms.py | 2 +- src/ralph/data_importer/models.py | 4 ++-- src/ralph/deployment/admin.py | 3 ++- src/ralph/dhcp/admin.py | 5 +++-- src/ralph/domains/admin.py | 3 ++- src/ralph/domains/models/domains.py | 2 +- src/ralph/lib/custom_fields/admin.py | 3 ++- src/ralph/lib/custom_fields/fields.py | 13 ++++++++---- src/ralph/lib/custom_fields/models.py | 4 ++-- src/ralph/lib/mixins/fields.py | 6 +++--- src/ralph/lib/permissions/__init__.py | 9 --------- src/ralph/lib/permissions/api.py | 2 +- src/ralph/lib/permissions/apps.py | 1 + src/ralph/lib/table/__init__.py | 3 --- src/ralph/lib/template/loaders.py | 4 ++-- src/ralph/lib/transitions/admin.py | 3 ++- src/ralph/lib/transitions/checks.py | 2 +- src/ralph/lib/transitions/views.py | 4 ++-- src/ralph/licences/admin.py | 3 ++- src/ralph/licences/models.py | 4 ++-- src/ralph/networks/admin.py | 5 +++-- src/ralph/networks/forms.py | 2 +- src/ralph/networks/views.py | 4 ++-- src/ralph/operations/admin.py | 3 ++- src/ralph/reports/admin.py | 3 ++- src/ralph/security/models.py | 2 +- src/ralph/security/views.py | 3 ++- src/ralph/settings/base.py | 12 +++++------ src/ralph/settings/local.template | 4 ++-- src/ralph/settings/test.py | 2 +- src/ralph/sim_cards/admin.py | 3 ++- src/ralph/ssl_certificates/admin.py | 3 ++- src/ralph/supports/admin.py | 3 ++- src/ralph/tests/mixins.py | 2 +- src/ralph/trade_marks/admin.py | 3 ++- src/ralph/urls/base.py | 2 +- src/ralph/virtual/admin.py | 7 ++++--- src/ralph/virtual/models.py | 4 ++-- 59 files changed, 119 insertions(+), 122 deletions(-) diff --git a/requirements/base.txt b/requirements/base.txt index a1a56cad95..2f76f21cb2 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -1,6 +1,6 @@ -r openstack.txt -r hermes.txt -Django==1.8.19 +Django==1.9.13 dj.choices==0.11.0 django-extensions==1.7.5 django-filter==0.13.0 @@ -8,13 +8,12 @@ django-import-export==0.4.2 django-money==0.15.1 py-moneyed==1.2 django-mptt==0.8.7 -django-reversion==1.8.6 +django-reversion==1.10.0 django-rq==2.0 django-sitetree==1.7.0 -django-taggit==0.17.1 +django-taggit==0.18.1 django-taggit-serializer==0.1.5 django-threadlocals==0.8 -django-transaction-hooks==0.2 # it's merged to Django 1.9 - remove this when Django version will be bumped to 1.9 django-cryptography==0.3 djangorestframework==3.2.2 djangorestframework_xml==1.2.0 diff --git a/src/ralph/access_cards/admin.py b/src/ralph/access_cards/admin.py index 7cc76b4abb..f56105b955 100644 --- a/src/ralph/access_cards/admin.py +++ b/src/ralph/access_cards/admin.py @@ -1,7 +1,8 @@ from django.utils.translation import ugettext_lazy as _ from ralph.access_cards.models import AccessCard, AccessZone -from ralph.admin import RalphAdmin, RalphMPTTAdmin, register +from ralph.admin.mixins import RalphAdmin, RalphMPTTAdmin +from ralph.admin.decorators import register from ralph.lib.transitions.admin import TransitionAdminMixin diff --git a/src/ralph/accessories/admin.py b/src/ralph/accessories/admin.py index 6afc1ace73..4fa10d5721 100644 --- a/src/ralph/accessories/admin.py +++ b/src/ralph/accessories/admin.py @@ -1,7 +1,8 @@ from django.utils.translation import ugettext_lazy as _ from ralph.accessories.models import Accessory, AccessoryUser -from ralph.admin import RalphAdmin, RalphTabularInline, register +from ralph.admin.mixins import RalphAdmin, RalphTabularInline +from ralph.admin.decorators import register from ralph.admin.views.extra import RalphDetailViewAdmin from ralph.lib.transitions.admin import TransitionAdminMixin diff --git a/src/ralph/accessories/models.py b/src/ralph/accessories/models.py index a1eb6a0ec9..9f582b9e0d 100644 --- a/src/ralph/accessories/models.py +++ b/src/ralph/accessories/models.py @@ -213,7 +213,7 @@ def free(self): free._permission_field = 'number_bought' -@reversion.register() +# @reversion.register() class AccessoryUser(models.Model): accessory = models.ForeignKey(Accessory) user = models.ForeignKey( diff --git a/src/ralph/accounts/admin.py b/src/ralph/accounts/admin.py index 9012a9aee3..f7b605476c 100644 --- a/src/ralph/accounts/admin.py +++ b/src/ralph/accounts/admin.py @@ -14,12 +14,13 @@ from django.utils.translation import ugettext_lazy as _ from ralph.accounts.models import RalphUser, Region, Team -from ralph.admin import RalphAdmin, register +from ralph.admin.mixins import RalphAdmin +from ralph.admin.decorators import register from ralph.admin.helpers import getattr_dunder from ralph.admin.mixins import RalphAdminFormMixin from ralph.admin.views.extra import RalphDetailView from ralph.back_office.models import BackOfficeAsset, BackOfficeAssetStatus -from ralph.lib.table import Table +from ralph.lib.table.table import Table from ralph.lib.transitions.models import TransitionsHistory from ralph.licences.models import Licence from ralph.sim_cards.models import SIMCard diff --git a/src/ralph/accounts/models.py b/src/ralph/accounts/models.py index 4aca57acc1..bfd3a8286d 100644 --- a/src/ralph/accounts/models.py +++ b/src/ralph/accounts/models.py @@ -13,7 +13,7 @@ from ralph.admin.autocomplete import AutocompleteTooltipMixin from ralph.lib.mixins.models import AdminAbsoluteUrlMixin, NamedMixin -from ralph.lib.permissions import ( +from ralph.lib.permissions.models import ( PermByFieldMixin, PermissionsForObjectMixin, user_permission diff --git a/src/ralph/admin/__init__.py b/src/ralph/admin/__init__.py index a584458339..ac25e79c80 100644 --- a/src/ralph/admin/__init__.py +++ b/src/ralph/admin/__init__.py @@ -1,22 +1 @@ -from ralph.admin.sites import ralph_site -from ralph.admin.mixins import ( - RalphAdmin, - RalphAdminForm, - RalphMPTTAdmin, - RalphStackedInline, - RalphTabularInline, -) -from ralph.admin.decorators import register - default_app_config = 'ralph.admin.apps.RalphAdminConfig' - -__all__ = [ - 'ralph_site', - 'default_app_config', - 'register', - 'RalphAdmin', - 'RalphAdminForm', - 'RalphMPTTAdmin', - 'RalphStackedInline', - 'RalphTabularInline', -] diff --git a/src/ralph/admin/apps.py b/src/ralph/admin/apps.py index ff3cf25b7b..e5b701d881 100644 --- a/src/ralph/admin/apps.py +++ b/src/ralph/admin/apps.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -from ralph.admin.filters import register_custom_filters + from ralph.apps import RalphAppConfig @@ -9,5 +9,6 @@ class RalphAdminConfig(RalphAppConfig): verbose_name = 'Ralph Admin' def ready(self): + from ralph.admin.filters import register_custom_filters register_custom_filters() super().ready() diff --git a/src/ralph/admin/autocomplete.py b/src/ralph/admin/autocomplete.py index d012dcc46c..bfbcfcebfc 100644 --- a/src/ralph/admin/autocomplete.py +++ b/src/ralph/admin/autocomplete.py @@ -4,10 +4,10 @@ from functools import reduce from dj.choices import Choices +from django.apps import apps from django.conf.urls import url from django.core.exceptions import FieldDoesNotExist from django.db.models import Manager, Q -from django.db.models.loading import get_model from django.http import Http404, HttpResponseBadRequest, JsonResponse from django.views.generic import View @@ -164,7 +164,7 @@ class AutocompleteList(SuggestView): def dispatch(self, request, *args, **kwargs): try: - model = get_model(kwargs['app'], kwargs['model']) + model = apps.get_model(kwargs['app'], kwargs['model']) except LookupError: return HttpResponseBadRequest('Model not found') diff --git a/src/ralph/admin/m2m.py b/src/ralph/admin/m2m.py index bf9c77566a..29f373e88c 100644 --- a/src/ralph/admin/m2m.py +++ b/src/ralph/admin/m2m.py @@ -55,7 +55,7 @@ class AuthorAdmin(admin.ModelAdmin): from django.utils.text import get_text_list from django.utils.translation import ugettext_lazy as _ -from ralph.admin import RalphStackedInline, RalphTabularInline +from ralph.admin.mixins import RalphStackedInline, RalphTabularInline from ralph.admin.mixins import RalphAdminForm diff --git a/src/ralph/admin/mixins.py b/src/ralph/admin/mixins.py index de146bf8cc..bab5dbdf33 100644 --- a/src/ralph/admin/mixins.py +++ b/src/ralph/admin/mixins.py @@ -21,7 +21,8 @@ from import_export.admin import ImportExportModelAdmin from import_export.widgets import ForeignKeyWidget from mptt.admin import MPTTAdminForm, MPTTModelAdmin -from reversion import VersionAdmin + +from reversion.admin import VersionAdmin from ralph.admin import widgets from ralph.admin.autocomplete import AjaxAutocompleteMixin @@ -473,8 +474,8 @@ class RalphAdmin( PermissionAdminMixin, RalphAdminImportExportMixin, AjaxAutocompleteMixin, + VersionAdmin, RalphAdminMixin, - VersionAdmin ): @property def media(self): diff --git a/src/ralph/admin/widgets.py b/src/ralph/admin/widgets.py index ceb554c1b9..659e4f063b 100644 --- a/src/ralph/admin/widgets.py +++ b/src/ralph/admin/widgets.py @@ -8,11 +8,11 @@ from urllib import parse from django import forms +from django.apps import apps from django.contrib.admin.templatetags.admin_static import static from django.contrib.admin.views.main import TO_FIELD_VAR from django.core.exceptions import FieldDoesNotExist from django.core.urlresolvers import reverse -from django.db.models.loading import get_model from django.forms.utils import flatatt from django.template import loader from django.template.context import RenderContext @@ -232,7 +232,7 @@ def get_search_fields(self): limit_models = getattr(self.field, 'limit_models', []) if limit_models: polymorphic_models = [ - get_model(*i.split('.')) for i in limit_models + apps.get_model(*i.split('.')) for i in limit_models ] search_fields_tooltip = defaultdict(list) diff --git a/src/ralph/assets/admin.py b/src/ralph/assets/admin.py index 6ff1b39fa9..9585bf6881 100644 --- a/src/ralph/assets/admin.py +++ b/src/ralph/assets/admin.py @@ -2,7 +2,8 @@ from django.db.models import Count from django.utils.translation import ugettext_lazy as _ -from ralph.admin import RalphAdmin, RalphMPTTAdmin, RalphTabularInline, register +from ralph.admin.mixins import RalphAdmin, RalphMPTTAdmin, RalphTabularInline +from ralph.admin.decorators import register from ralph.admin.views.extra import RalphDetailView from ralph.assets.models.assets import ( Asset, @@ -34,7 +35,7 @@ ) from ralph.data_importer import resources from ralph.lib.custom_fields.admin import CustomFieldValueAdminMixin -from ralph.lib.table import Table, TableWithUrl +from ralph.lib.table.table import Table, TableWithUrl from ralph.security.views import ScanStatusInTableMixin diff --git a/src/ralph/assets/models/assets.py b/src/ralph/assets/models/assets.py index a4ae5b4eb8..ea7c14142c 100644 --- a/src/ralph/assets/models/assets.py +++ b/src/ralph/assets/models/assets.py @@ -31,7 +31,7 @@ PriceMixin, TimeStampMixin ) -from ralph.lib.permissions import PermByFieldMixin +from ralph.lib.permissions.models import PermByFieldMixin from ralph.lib.permissions.models import PermissionsBase logger = logging.getLogger(__name__) diff --git a/src/ralph/assets/models/base.py b/src/ralph/assets/models/base.py index 681a58adbe..323409046b 100644 --- a/src/ralph/assets/models/base.py +++ b/src/ralph/assets/models/base.py @@ -11,7 +11,7 @@ WithCustomFieldsMixin ) from ralph.lib.mixins.models import TaggableMixin, TimeStampMixin -from ralph.lib.permissions import PermByFieldMixin +from ralph.lib.permissions.models import PermByFieldMixin from ralph.lib.permissions.models import PermissionsBase from ralph.lib.polymorphic.models import ( Polymorphic, diff --git a/src/ralph/assets/views.py b/src/ralph/assets/views.py index b869aeefe8..9ebf25c303 100644 --- a/src/ralph/assets/views.py +++ b/src/ralph/assets/views.py @@ -1,6 +1,6 @@ from django.utils.translation import ugettext_lazy as _ -from ralph.admin import RalphTabularInline +from ralph.admin.mixins import RalphTabularInline from ralph.admin.views.extra import RalphDetailViewAdmin from ralph.assets.models.components import ( Disk, diff --git a/src/ralph/attachments/models.py b/src/ralph/attachments/models.py index b5223f8a8c..d34e9415da 100644 --- a/src/ralph/attachments/models.py +++ b/src/ralph/attachments/models.py @@ -3,7 +3,7 @@ import string from django.conf import settings -from django.contrib.contenttypes import generic +from django.contrib.contenttypes import fields from django.contrib.contenttypes.models import ContentType from django.core.files.base import ContentFile from django.db import models, transaction @@ -169,7 +169,7 @@ class AttachmentItem(models.Model): attachment = models.ForeignKey(Attachment, related_name='items') content_type = models.ForeignKey(ContentType) object_id = models.PositiveIntegerField() - content_object = generic.GenericForeignKey('content_type', 'object_id') + content_object = fields.GenericForeignKey('content_type', 'object_id') objects = AttachmentItemManager() diff --git a/src/ralph/back_office/admin.py b/src/ralph/back_office/admin.py index 0dfd71084b..4bf1801cbd 100644 --- a/src/ralph/back_office/admin.py +++ b/src/ralph/back_office/admin.py @@ -1,10 +1,11 @@ # -*- coding: utf-8 -*- from django import forms +from django.apps import apps from django.conf import settings -from django.db.models.loading import get_model from django.utils.translation import ugettext_lazy as _ -from ralph.admin import RalphAdmin, RalphTabularInline, register +from ralph.admin.mixins import RalphAdmin, RalphTabularInline +from ralph.admin.decorators import register from ralph.admin.filters import LiquidatedStatusFilter, TagsListFilter from ralph.admin.mixins import BulkEditChangeListMixin from ralph.admin.sites import ralph_site @@ -217,7 +218,7 @@ class BackOfficeAssetBulkForm(Form): queryset=Licence.objects.all(), label=_('licences'), required=False, widget=AutocompleteWidget( - field=get_model( + field=apps.get_model( 'licences.BaseObjectLicence' )._meta.get_field('licence'), admin_site=ralph_site, diff --git a/src/ralph/configuration_management/models.py b/src/ralph/configuration_management/models.py index ce14bc4a61..4be83267e2 100644 --- a/src/ralph/configuration_management/models.py +++ b/src/ralph/configuration_management/models.py @@ -5,7 +5,7 @@ from ralph.assets.models import BaseObject from ralph.lib.mixins.models import TimeStampMixin -from ralph.lib.permissions import PermByFieldMixin +from ralph.lib.permissions.models import PermByFieldMixin class SCMCheckResult(Choices): diff --git a/src/ralph/dashboards/admin.py b/src/ralph/dashboards/admin.py index e4e93d17ae..93b9fcb5ce 100644 --- a/src/ralph/dashboards/admin.py +++ b/src/ralph/dashboards/admin.py @@ -7,7 +7,8 @@ from django.core.urlresolvers import reverse from django.utils.translation import ugettext as _ -from ralph.admin import RalphAdmin, register +from ralph.admin.mixins import RalphAdmin +from ralph.admin.decorators import register from ralph.admin.mixins import RalphAdminForm from ralph.dashboards.models import Dashboard, Graph diff --git a/src/ralph/data_center/admin.py b/src/ralph/data_center/admin.py index 943a461f5a..ae4702dbb7 100644 --- a/src/ralph/data_center/admin.py +++ b/src/ralph/data_center/admin.py @@ -10,7 +10,9 @@ from django.db.models import Prefetch, Q from django.utils.translation import ugettext_lazy as _ -from ralph.admin import filters, RalphAdmin, RalphTabularInline, register +from ralph.admin import filters +from ralph.admin.mixins import RalphAdmin, RalphTabularInline +from ralph.admin.decorators import register from ralph.admin.filters import ( BaseObjectHostnameFilter, ChoicesListFilter, @@ -60,7 +62,7 @@ from ralph.data_importer import resources from ralph.deployment.mixins import ActiveDeploymentMessageMixin from ralph.lib.custom_fields.admin import CustomFieldValueAdminMixin -from ralph.lib.table import Table +from ralph.lib.table.table import Table from ralph.lib.transitions.admin import TransitionAdminMixin from ralph.licences.models import BaseObjectLicence from ralph.networks.forms import SimpleNetworkWithManagementIPForm diff --git a/src/ralph/data_center/forms.py b/src/ralph/data_center/forms.py index 234ac737de..f205e43c8d 100644 --- a/src/ralph/data_center/forms.py +++ b/src/ralph/data_center/forms.py @@ -13,7 +13,7 @@ class DataCenterAssetForm(PriceFormMixin, AssetFormMixin, RalphAdminForm): MODEL_TYPE = ObjectModelType.data_center - management_ip = forms.IPAddressField(required=False) + management_ip = forms.GenericIPAddressField(required=False, protocol='IPv4') management_hostname = CharFormFieldWithAutoStrip(required=False) ip_fields = ['management_ip', 'management_hostname'] diff --git a/src/ralph/data_importer/models.py b/src/ralph/data_importer/models.py index e4c01317d2..9c88794a04 100644 --- a/src/ralph/data_importer/models.py +++ b/src/ralph/data_importer/models.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -from django.contrib.contenttypes import generic +from django.contrib.contenttypes import fields from django.contrib.contenttypes.models import ContentType from django.db import models @@ -20,7 +20,7 @@ class ImportedObjects(TimeStampMixin, models.Model): old_ci_uid = models.CharField( max_length=255, db_index=True, null=True, blank=True ) - object = generic.GenericForeignKey('content_type', 'object_pk') + object = fields.GenericForeignKey('content_type', 'object_pk') def __str__(self): return "{} - {}".format( diff --git a/src/ralph/deployment/admin.py b/src/ralph/deployment/admin.py index b0f1ef616a..db907b9ede 100644 --- a/src/ralph/deployment/admin.py +++ b/src/ralph/deployment/admin.py @@ -1,6 +1,7 @@ from django.utils.translation import ugettext_lazy as _ -from ralph.admin import RalphAdmin, register +from ralph.admin.mixins import RalphAdmin +from ralph.admin.decorators import register from ralph.deployment.forms import PrebootConfigurationForm from ralph.deployment.models import ( Deployment, diff --git a/src/ralph/dhcp/admin.py b/src/ralph/dhcp/admin.py index abb465765f..48cf7f3537 100644 --- a/src/ralph/dhcp/admin.py +++ b/src/ralph/dhcp/admin.py @@ -2,14 +2,15 @@ from django.template.defaultfilters import date, timesince_filter from django.utils.translation import ugettext_lazy as _ -from ralph.admin import RalphAdmin, RalphTabularInline, register +from ralph.admin.mixins import RalphAdmin, RalphTabularInline +from ralph.admin.decorators import register from ralph.dhcp.models import ( DHCPServer, DNSServer, DNSServerGroup, DNSServerGroupOrder ) -from ralph.lib.table import TableWithUrl +from ralph.lib.table.table import TableWithUrl @register(DHCPServer) diff --git a/src/ralph/domains/admin.py b/src/ralph/domains/admin.py index 7b41d73a8a..66c4ffc20f 100644 --- a/src/ralph/domains/admin.py +++ b/src/ralph/domains/admin.py @@ -2,7 +2,8 @@ from django.utils.html import format_html from django.utils.translation import ugettext_lazy as _ -from ralph.admin import RalphAdmin, RalphTabularInline, register +from ralph.admin.mixins import RalphAdmin, RalphTabularInline +from ralph.admin.decorators import register from ralph.admin.filters import DateListFilter from ralph.attachments.admin import AttachmentsMixin from ralph.data_importer.resources import DomainContractResource, DomainResource diff --git a/src/ralph/domains/models/domains.py b/src/ralph/domains/models/domains.py index fe8f7edf40..5e490a936d 100644 --- a/src/ralph/domains/models/domains.py +++ b/src/ralph/domains/models/domains.py @@ -14,7 +14,7 @@ PriceMixin, TimeStampMixin ) -from ralph.lib.permissions import PermByFieldMixin +from ralph.lib.permissions.models import PermByFieldMixin class DomainRegistrant( diff --git a/src/ralph/lib/custom_fields/admin.py b/src/ralph/lib/custom_fields/admin.py index 1320b75aec..3caae171e8 100644 --- a/src/ralph/lib/custom_fields/admin.py +++ b/src/ralph/lib/custom_fields/admin.py @@ -3,7 +3,8 @@ from django.contrib.admin.utils import unquote from django.contrib.contenttypes.models import ContentType -from ralph.admin import RalphAdmin, register +from ralph.admin.decorators import register +from ralph.admin.mixins import RalphAdmin from ralph.admin.mixins import RalphGenericTabularInline from ralph.lib.custom_fields.forms import ( CustomFieldValueForm, diff --git a/src/ralph/lib/custom_fields/fields.py b/src/ralph/lib/custom_fields/fields.py index 926e8b6f11..1730aac67d 100644 --- a/src/ralph/lib/custom_fields/fields.py +++ b/src/ralph/lib/custom_fields/fields.py @@ -5,7 +5,6 @@ from django.contrib.contenttypes.fields import ( create_generic_related_manager, GenericRelation, - ReverseGenericRelatedObjectsDescriptor ) from django.contrib.contenttypes.models import ContentType from django.db import connection, models @@ -148,9 +147,15 @@ def values_list(self, *fields): ) -class ReverseGenericRelatedObjectsWithInheritanceDescriptor( - ReverseGenericRelatedObjectsDescriptor -): +class ReverseGenericRelatedObjectsWithInheritanceDescriptor(): + + def __init__(self, field, for_concrete_model=True): + """ + imported from ReverseGenericRelatedObjectsDescriptor + """ + self.field = field + self.for_concrete_model = for_concrete_model + def __get__(self, instance, instance_type=None): """ Overwrite of ReverseGenericRelatedObjectsDescriptor's __get__ diff --git a/src/ralph/lib/custom_fields/models.py b/src/ralph/lib/custom_fields/models.py index cd5970531d..5f2b8e665d 100644 --- a/src/ralph/lib/custom_fields/models.py +++ b/src/ralph/lib/custom_fields/models.py @@ -4,7 +4,7 @@ from dj.choices import Choices from django import forms from django.contrib.auth.models import Group -from django.contrib.contenttypes import generic +from django.contrib.contenttypes import fields from django.contrib.contenttypes.models import ContentType from django.core.exceptions import ValidationError @@ -132,7 +132,7 @@ class CustomFieldValue(TimeStampMixin, models.Model): value = models.CharField(max_length=CUSTOM_FIELD_VALUE_MAX_LENGTH) content_type = models.ForeignKey(ContentType) object_id = models.PositiveIntegerField(db_index=True) - object = generic.GenericForeignKey('content_type', 'object_id') + object = fields.GenericForeignKey('content_type', 'object_id') objects = models.Manager() # generic relation has to use specific manager (queryset) diff --git a/src/ralph/lib/mixins/fields.py b/src/ralph/lib/mixins/fields.py index 995cb30513..02194bf78d 100644 --- a/src/ralph/lib/mixins/fields.py +++ b/src/ralph/lib/mixins/fields.py @@ -2,12 +2,12 @@ import netaddr from django import forms +from django.apps import apps from django.conf import settings from django.contrib.admin.widgets import AdminTextInputWidget from django.contrib.contenttypes.models import ContentType from django.core.exceptions import ValidationError from django.db import models -from django.db.models.loading import get_model from django.forms.utils import flatatt from django.utils import six from django.utils.html import format_html, smart_urlquote @@ -227,7 +227,7 @@ def limit_choices(self): """ if self.limit_models: content_types = ContentType.objects.get_for_models( - *[get_model(*i.split('.')) for i in self.limit_models] + *[apps.get_model(*i.split('.')) for i in self.limit_models] ) return {'content_type__in': content_types.values()} @@ -237,7 +237,7 @@ def get_limit_models(self): """ Returns Model class list from limit_models. """ - return [get_model(model) for model in self.limit_models] + return [apps.get_model(model) for model in self.limit_models] class TagWidget(forms.TextInput): diff --git a/src/ralph/lib/permissions/__init__.py b/src/ralph/lib/permissions/__init__.py index 501f22b4b9..e69de29bb2 100644 --- a/src/ralph/lib/permissions/__init__.py +++ b/src/ralph/lib/permissions/__init__.py @@ -1,9 +0,0 @@ -from ralph.lib.permissions.models import ( - PermByFieldMixin, - PermissionsForObjectMixin, - user_permission -) - -default_app_config = 'ralph.lib.permissions.apps.PermissionAppConfig' - -__all__ = ['PermByFieldMixin', 'PermissionsForObjectMixin', 'user_permission'] diff --git a/src/ralph/lib/permissions/api.py b/src/ralph/lib/permissions/api.py index ae637eddac..9ddecc0066 100644 --- a/src/ralph/lib/permissions/api.py +++ b/src/ralph/lib/permissions/api.py @@ -11,7 +11,7 @@ from rest_framework.filters import BaseFilterBackend from rest_framework.permissions import IsAuthenticated as DRFIsAuthenticated -from ralph.lib.permissions import PermByFieldMixin, PermissionsForObjectMixin +from ralph.lib.permissions.models import PermByFieldMixin, PermissionsForObjectMixin ADD_PERM = ['%(app_label)s.add_%(model_name)s'] CHANGE_PERM = ['%(app_label)s.change_%(model_name)s'] diff --git a/src/ralph/lib/permissions/apps.py b/src/ralph/lib/permissions/apps.py index ddc88f5886..24d71b3487 100644 --- a/src/ralph/lib/permissions/apps.py +++ b/src/ralph/lib/permissions/apps.py @@ -11,6 +11,7 @@ class PermissionAppConfig(AppConfig): verbose_name = 'Permissions' def ready(self): + default_app_config = 'ralph.lib.permissions.apps.PermissionAppConfig' post_migrate.disconnect( dispatch_uid='django.contrib.auth.management.create_permissions' ) diff --git a/src/ralph/lib/table/__init__.py b/src/ralph/lib/table/__init__.py index 64ccbba1a4..e69de29bb2 100644 --- a/src/ralph/lib/table/__init__.py +++ b/src/ralph/lib/table/__init__.py @@ -1,3 +0,0 @@ -from ralph.lib.table.table import Table, TableWithUrl - -__all__ = ['Table', 'TableWithUrl'] diff --git a/src/ralph/lib/template/loaders.py b/src/ralph/lib/template/loaders.py index 6d0c71a502..64fe48e662 100644 --- a/src/ralph/lib/template/loaders.py +++ b/src/ralph/lib/template/loaders.py @@ -3,7 +3,7 @@ from os.path import abspath, dirname, join from django.apps import apps -from django.template import TemplateDoesNotExist +from django.template.loader import TemplateDoesNotExist from django.template.loaders.base import Loader as BaseLoader @@ -50,7 +50,7 @@ def get_template_path(self, template_name, template_dirs=None): template_parts = template_name.split(":", 1) if len(template_parts) != 2: - raise TemplateDoesNotExist() + raise TemplateDoesNotExist(template_name) app_label, template_name = template_parts app = apps.get_app_config(app_label) diff --git a/src/ralph/lib/transitions/admin.py b/src/ralph/lib/transitions/admin.py index 2230cf6897..41398b3923 100644 --- a/src/ralph/lib/transitions/admin.py +++ b/src/ralph/lib/transitions/admin.py @@ -9,7 +9,8 @@ from django.utils.functional import curry from django.utils.http import urlencode -from ralph.admin import RalphAdmin, register +from ralph.admin.mixins import RalphAdmin +from ralph.admin.decorators import register from ralph.admin.views.extra import RalphDetailView from ralph.helpers import get_model_view_url_name from ralph.lib.transitions.forms import TransitionForm diff --git a/src/ralph/lib/transitions/checks.py b/src/ralph/lib/transitions/checks.py index e0ed14e64d..7d05a4b874 100644 --- a/src/ralph/lib/transitions/checks.py +++ b/src/ralph/lib/transitions/checks.py @@ -2,7 +2,7 @@ from django.core.checks import Error from django.db.utils import DatabaseError -from django.template.base import TemplateDoesNotExist +from django.template.loader import TemplateDoesNotExist from django.template.loader import get_template diff --git a/src/ralph/lib/transitions/views.py b/src/ralph/lib/transitions/views.py index 84ebf3c4b9..4b88e5b9cb 100644 --- a/src/ralph/lib/transitions/views.py +++ b/src/ralph/lib/transitions/views.py @@ -2,9 +2,9 @@ from itertools import repeat from django import forms +from django.apps import apps from django.contrib import messages from django.core.urlresolvers import reverse -from django.db.models.loading import get_model from django.db.transaction import atomic, non_atomic_requests from django.http import ( Http404, @@ -95,7 +95,7 @@ def form_fields_from_actions(self): autocomplete_model = options.get('autocomplete_model', False) model = self.obj if autocomplete_model: - model = get_model(autocomplete_model) + model = apps.get_model(autocomplete_model) if autocomplete_field: field = model._meta.get_field(autocomplete_field) diff --git a/src/ralph/licences/admin.py b/src/ralph/licences/admin.py index 70013ae94d..1fa34c4dc6 100644 --- a/src/ralph/licences/admin.py +++ b/src/ralph/licences/admin.py @@ -1,7 +1,8 @@ # -*- coding: utf-8 -*- from django.utils.translation import ugettext_lazy as _ -from ralph.admin import RalphAdmin, RalphTabularInline, register +from ralph.admin.mixins import RalphAdmin, RalphTabularInline +from ralph.admin.decorators import register from ralph.admin.filters import TagsListFilter from ralph.admin.mixins import BulkEditChangeListMixin from ralph.admin.views.extra import RalphDetailViewAdmin diff --git a/src/ralph/licences/models.py b/src/ralph/licences/models.py index 92f5a9ca32..a227f64a02 100644 --- a/src/ralph/licences/models.py +++ b/src/ralph/licences/models.py @@ -19,7 +19,7 @@ NamedMixin, PriceMixin ) -from ralph.lib.permissions import PermByFieldMixin +from ralph.lib.permissions.models import PermByFieldMixin from ralph.lib.polymorphic.models import PolymorphicQuerySet @@ -313,7 +313,7 @@ def get_autocomplete_queryset(cls): ) -@reversion.register() +# @reversion.register() class BaseObjectLicence(models.Model): licence = models.ForeignKey(Licence) base_object = BaseObjectForeignKey( diff --git a/src/ralph/networks/admin.py b/src/ralph/networks/admin.py index 8427cb318d..dcb31f3fd8 100644 --- a/src/ralph/networks/admin.py +++ b/src/ralph/networks/admin.py @@ -4,7 +4,8 @@ from django.utils.html import escape from django.utils.translation import ugettext_lazy as _ -from ralph.admin import RalphAdmin, register +from ralph.admin.mixins import RalphAdmin +from ralph.admin.decorators import register from ralph.admin.filters import RelatedAutocompleteFieldListFilter from ralph.admin.helpers import CastToInteger from ralph.admin.mixins import RalphMPTTAdmin @@ -12,7 +13,7 @@ from ralph.assets.models import BaseObject from ralph.data_importer import resources from ralph.lib.mixins.admin import ParentChangeMixin -from ralph.lib.table import TableWithUrl +from ralph.lib.table.table import TableWithUrl from ralph.networks.filters import ( ContainsIPAddressFilter, IPRangeFilter, diff --git a/src/ralph/networks/forms.py b/src/ralph/networks/forms.py index 67b880b665..5f7fd3a87e 100755 --- a/src/ralph/networks/forms.py +++ b/src/ralph/networks/forms.py @@ -99,7 +99,7 @@ class SimpleNetworkForm(EthernetLockDeleteForm): modified/deleted. """ hostname = CharFormFieldWithAutoStrip(label='Hostname', required=False) - address = forms.IPAddressField(label='IP address', required=False) + address = forms.GenericIPAddressField(label='IP address', required=False, protocol='IPv4') ip_fields = ['hostname', 'address'] diff --git a/src/ralph/networks/views.py b/src/ralph/networks/views.py index a1ad126206..347653f0d8 100644 --- a/src/ralph/networks/views.py +++ b/src/ralph/networks/views.py @@ -1,10 +1,10 @@ from django.utils.translation import ugettext_lazy as _ -from ralph.admin import RalphTabularInline +from ralph.admin.mixins import RalphTabularInline from ralph.admin.m2m import RalphTabularM2MInline from ralph.admin.views.extra import RalphDetailViewAdmin from ralph.assets.models.components import Ethernet -from ralph.lib.table import TableWithUrl +from ralph.lib.table.table import TableWithUrl from ralph.networks.forms import NetworkForm, NetworkInlineFormset from ralph.networks.models import Network diff --git a/src/ralph/operations/admin.py b/src/ralph/operations/admin.py index 127cbf6525..42f448d275 100644 --- a/src/ralph/operations/admin.py +++ b/src/ralph/operations/admin.py @@ -5,7 +5,8 @@ from django.utils import timezone from django.utils.translation import ugettext_lazy as _ -from ralph.admin import RalphAdmin, RalphMPTTAdmin, register +from ralph.admin.mixins import RalphAdmin, RalphMPTTAdmin +from ralph.admin.decorators import register from ralph.admin.mixins import RalphAdminForm from ralph.admin.views.main import RalphChangeList from ralph.admin.widgets import AdminDateTimeWidget diff --git a/src/ralph/reports/admin.py b/src/ralph/reports/admin.py index c63af43a9d..dc0a8393f2 100644 --- a/src/ralph/reports/admin.py +++ b/src/ralph/reports/admin.py @@ -1,4 +1,5 @@ -from ralph.admin import RalphAdmin, RalphTabularInline, register +from ralph.admin.mixins import RalphAdmin, RalphTabularInline +from ralph.admin.decorators import register from ralph.reports.forms import ReportTemplateFormset from ralph.reports.models import Report, ReportLanguage, ReportTemplate diff --git a/src/ralph/security/models.py b/src/ralph/security/models.py index 2e58d7f686..2940ff8715 100644 --- a/src/ralph/security/models.py +++ b/src/ralph/security/models.py @@ -11,7 +11,7 @@ TaggableMixin, TimeStampMixin ) -from ralph.lib.permissions import PermByFieldMixin +from ralph.lib.permissions.models import PermByFieldMixin def any_exceeded(vulnerabilties): diff --git a/src/ralph/security/views.py b/src/ralph/security/views.py index 03d7123445..8f0b0c0038 100644 --- a/src/ralph/security/views.py +++ b/src/ralph/security/views.py @@ -7,7 +7,8 @@ from django.utils.safestring import mark_safe from django.utils.translation import ugettext_lazy as _ -from ralph.admin import RalphAdmin, RalphTabularInline, register +from ralph.admin.mixins import RalphAdmin, RalphTabularInline +from ralph.admin.decorators import register from ralph.admin.helpers import get_admin_url from ralph.admin.sites import ralph_site from ralph.admin.views.extra import RalphDetailView diff --git a/src/ralph/settings/base.py b/src/ralph/settings/base.py index 62be387907..5fa055bad3 100644 --- a/src/ralph/settings/base.py +++ b/src/ralph/settings/base.py @@ -56,10 +56,11 @@ def get_sentinels(sentinels_string): # Application definition INSTALLED_APPS = ( + 'django.contrib.contenttypes', + 'taggit', + 'django.contrib.auth', 'ralph.admin', 'django.contrib.admin', - 'django.contrib.auth', - 'django.contrib.contenttypes', 'django.contrib.humanize', 'django.contrib.sessions', 'django.contrib.messages', @@ -98,12 +99,11 @@ def get_sentinels(sentinels_string): 'ralph.lib.transitions', 'ralph.lib.permissions', 'ralph.lib.custom_fields', - 'ralph.lib.hooks', - 'ralph.notifications', + # 'ralph.lib.hooks', + # 'ralph.notifications', 'ralph.ssl_certificates', 'rest_framework', 'rest_framework.authtoken', - 'taggit', 'taggit_serializer', 'djmoney', ) @@ -169,7 +169,7 @@ def get_sentinels(sentinels_string): DATABASES = { 'default': { - 'ENGINE': os.environ.get('DATABASE_ENGINE', 'transaction_hooks.backends.mysql'), # noqa + 'ENGINE': os.environ.get('DATABASE_ENGINE', 'django.db.backends.mysql'), # noqa 'NAME': os.environ.get('DATABASE_NAME', 'ralph_ng'), 'USER': os.environ.get('DATABASE_USER', 'ralph_ng'), 'PASSWORD': os.environ.get('DATABASE_PASSWORD', 'ralph_ng') or None, diff --git a/src/ralph/settings/local.template b/src/ralph/settings/local.template index cd4cdf0c18..fe205aaf91 100644 --- a/src/ralph/settings/local.template +++ b/src/ralph/settings/local.template @@ -2,7 +2,7 @@ from ralph.settings.dev import * # noqa DATABASES = { 'default': { - 'ENGINE': 'transaction_hooks.backends.mysql', + 'ENGINE': 'django.db.backends.mysql', 'NAME': os.environ.get('DATABASE_NAME', 'ralph_ng'), 'USER': os.environ.get('DATABASE_USER', 'ralph_ng'), 'PASSWORD': os.environ.get('DATABASE_PASSWORD', 'ralph_ng') or None, @@ -11,7 +11,7 @@ DATABASES = { 'ATOMIC_REQUESTS': True, 'TEST': { 'NAME': 'test_ralph_ng', - 'ENGINE': 'transaction_hooks.backends.postgresql_psycopg2', + 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'USER': os.environ.get('DATABASE_USER', 'ralph_ng'), 'PASSWORD': os.environ.get('DATABASE_PASSWORD', 'ralph_ng') or None, 'HOST': os.environ.get('DATABASE_HOST', '127.0.0.1'), diff --git a/src/ralph/settings/test.py b/src/ralph/settings/test.py index 2d65b0c153..72aa5910ca 100644 --- a/src/ralph/settings/test.py +++ b/src/ralph/settings/test.py @@ -10,7 +10,7 @@ TEST_DB_ENGINE = os.environ.get('TEST_DB_ENGINE', 'mysql') if TEST_DB_ENGINE == 'psql': DATABASES['default'].update({ - 'ENGINE': 'transaction_hooks.backends.postgresql_psycopg2', + 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'PORT': os.environ.get('DATABASE_PORT', 5432), 'OPTIONS': {}, }) diff --git a/src/ralph/sim_cards/admin.py b/src/ralph/sim_cards/admin.py index b201ffd2b1..f2a48a836d 100644 --- a/src/ralph/sim_cards/admin.py +++ b/src/ralph/sim_cards/admin.py @@ -1,6 +1,7 @@ from django.utils.translation import ugettext_lazy as _ -from ralph.admin import RalphAdmin, register +from ralph.admin.mixins import RalphAdmin +from ralph.admin.decorators import register from ralph.admin.mixins import BulkEditChangeListMixin, RalphAdminMixin from ralph.admin.views.multiadd import MulitiAddAdminMixin from ralph.lib.transitions.admin import TransitionAdminMixin diff --git a/src/ralph/ssl_certificates/admin.py b/src/ralph/ssl_certificates/admin.py index 78769d24f8..65a04a9d11 100644 --- a/src/ralph/ssl_certificates/admin.py +++ b/src/ralph/ssl_certificates/admin.py @@ -1,6 +1,7 @@ from django.utils.translation import ugettext_lazy as _ -from ralph.admin import RalphAdmin, register +from ralph.admin.mixins import RalphAdmin +from ralph.admin.decorators import register from ralph.admin.filters import DateListFilter from ralph.attachments.admin import AttachmentsMixin from ralph.ssl_certificates.forms import SSLCertificateForm diff --git a/src/ralph/supports/admin.py b/src/ralph/supports/admin.py index 9b334433fe..0327c9b6d0 100644 --- a/src/ralph/supports/admin.py +++ b/src/ralph/supports/admin.py @@ -4,7 +4,8 @@ from django.http import HttpResponseRedirect from django.utils.translation import ugettext_lazy as _ -from ralph.admin import RalphAdmin, RalphTabularInline, register +from ralph.admin.mixins import RalphAdmin, RalphTabularInline +from ralph.admin.decorators import register from ralph.admin.filters import TagsListFilter from ralph.admin.helpers import generate_html_link from ralph.admin.mixins import BulkEditChangeListMixin diff --git a/src/ralph/tests/mixins.py b/src/ralph/tests/mixins.py index 2b69e81ad9..2a054b08c7 100644 --- a/src/ralph/tests/mixins.py +++ b/src/ralph/tests/mixins.py @@ -4,7 +4,7 @@ from django.conf import settings from django.core.urlresolvers import clear_url_caches -from django.utils.importlib import import_module +from importlib import import_module from ralph.tests.factories import UserFactory diff --git a/src/ralph/trade_marks/admin.py b/src/ralph/trade_marks/admin.py index 3e301b0c7b..e0be597a14 100644 --- a/src/ralph/trade_marks/admin.py +++ b/src/ralph/trade_marks/admin.py @@ -3,7 +3,8 @@ from django.utils.safestring import mark_safe from django.utils.translation import ugettext_lazy as _ -from ralph.admin import RalphAdmin, RalphTabularInline, register +from ralph.admin.mixins import RalphAdmin, RalphTabularInline +from ralph.admin.decorators import register from ralph.admin.filters import ( ChoicesListFilter, custom_title_filter, diff --git a/src/ralph/urls/base.py b/src/ralph/urls/base.py index ff910b006e..44d40da9d7 100644 --- a/src/ralph/urls/base.py +++ b/src/ralph/urls/base.py @@ -3,7 +3,7 @@ from rest_framework.authtoken import views from sitetree.sitetreeapp import SiteTree # noqa -from ralph.admin import ralph_site as admin +from ralph.admin.sites import ralph_site as admin from ralph.api import router from ralph.health_check import status_health, status_ping diff --git a/src/ralph/virtual/admin.py b/src/ralph/virtual/admin.py index 811d94394f..42b53b4a22 100644 --- a/src/ralph/virtual/admin.py +++ b/src/ralph/virtual/admin.py @@ -6,7 +6,8 @@ from django.db.models import Count, Prefetch from django.utils.translation import ugettext_lazy as _ -from ralph.admin import RalphAdmin, RalphAdminForm, RalphTabularInline, register +from ralph.admin.mixins import RalphAdmin, RalphAdminForm, RalphTabularInline +from ralph.admin.decorators import register from ralph.admin.filters import BaseObjectHostnameFilter, TagsListFilter from ralph.assets.models import BaseObject from ralph.assets.models.components import Ethernet @@ -50,7 +51,7 @@ class CloudHostSecurityInfoView(SecurityInfo): url_name = 'security_cloudhost_security_info' -@register(VirtualServerType) +# @register(VirtualServerType) class VirtualServerTypeForm(RalphAdmin): pass @@ -255,7 +256,7 @@ class CloudHostSCMInfo(SCMCheckInfo): url_name = 'cloudhost_scm_info' -@register(CloudHost) +# @register(CloudHost) class CloudHostAdmin( SCMStatusCheckInChangeListMixin, ScanStatusInChangeListMixin, CustomFieldValueAdminMixin, RalphAdmin diff --git a/src/ralph/virtual/models.py b/src/ralph/virtual/models.py index bde08a2e70..e2cd25a1fc 100644 --- a/src/ralph/virtual/models.py +++ b/src/ralph/virtual/models.py @@ -203,7 +203,7 @@ def save(self, *args, **kwargs): pass super(CloudHost, self).save(*args, **kwargs) - cloudflavor = models.ForeignKey(CloudFlavor, verbose_name='Instance Type') + # cloudflavor = models.ForeignKey(CloudFlavor, verbose_name='Instance Type') cloudprovider = models.ForeignKey(CloudProvider) cloudprovider._autocomplete = False @@ -364,7 +364,7 @@ class VirtualServer( unique=True, ) # TODO: remove this field - cluster = models.ForeignKey(Cluster, blank=True, null=True) + # cluster = models.ForeignKey(Cluster, blank=True, null=True) previous_dc_host_update_fields = ['hostname'] _allow_in_dashboard = True