mirror of
https://github.com/netbox-community/netbox.git
synced 2025-08-26 09:16:10 -06:00
12794 change User ref to get_user_model
This commit is contained in:
parent
b4a3156046
commit
66db448bf8
@ -1,5 +1,5 @@
|
|||||||
from django import forms
|
from django import forms
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth import get_user_model
|
||||||
from django.contrib.contenttypes.models import ContentType
|
from django.contrib.contenttypes.models import ContentType
|
||||||
from django.utils.translation import gettext as _
|
from django.utils.translation import gettext as _
|
||||||
|
|
||||||
@ -105,7 +105,7 @@ class JobFilterForm(SavedFiltersMixin, FilterForm):
|
|||||||
widget=DateTimePicker()
|
widget=DateTimePicker()
|
||||||
)
|
)
|
||||||
user = DynamicModelMultipleChoiceField(
|
user = DynamicModelMultipleChoiceField(
|
||||||
queryset=User.objects.all(),
|
queryset=get_user_model().objects.all(),
|
||||||
required=False,
|
required=False,
|
||||||
label=_('User'),
|
label=_('User'),
|
||||||
widget=APISelectMultiple(
|
widget=APISelectMultiple(
|
||||||
|
@ -5,7 +5,7 @@ import sys
|
|||||||
from django import get_version
|
from django import get_version
|
||||||
from django.apps import apps
|
from django.apps import apps
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth import get_user_model
|
||||||
from django.contrib.contenttypes.models import ContentType
|
from django.contrib.contenttypes.models import ContentType
|
||||||
from django.core.management.base import BaseCommand
|
from django.core.management.base import BaseCommand
|
||||||
|
|
||||||
@ -60,7 +60,7 @@ class Command(BaseCommand):
|
|||||||
|
|
||||||
# Additional objects to include
|
# Additional objects to include
|
||||||
namespace['ContentType'] = ContentType
|
namespace['ContentType'] = ContentType
|
||||||
namespace['User'] = User
|
namespace['User'] = get_user_model()
|
||||||
|
|
||||||
# Load convenience commands
|
# Load convenience commands
|
||||||
namespace.update({
|
namespace.update({
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import uuid
|
import uuid
|
||||||
|
|
||||||
import django_rq
|
import django_rq
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth import get_user_model
|
||||||
from django.contrib.contenttypes.fields import GenericForeignKey
|
from django.contrib.contenttypes.fields import GenericForeignKey
|
||||||
from django.contrib.contenttypes.models import ContentType
|
from django.contrib.contenttypes.models import ContentType
|
||||||
from django.core.validators import MinValueValidator
|
from django.core.validators import MinValueValidator
|
||||||
@ -69,7 +69,7 @@ class Job(models.Model):
|
|||||||
blank=True
|
blank=True
|
||||||
)
|
)
|
||||||
user = models.ForeignKey(
|
user = models.ForeignKey(
|
||||||
to=User,
|
to=get_user_model(),
|
||||||
on_delete=models.SET_NULL,
|
on_delete=models.SET_NULL,
|
||||||
related_name='+',
|
related_name='+',
|
||||||
blank=True,
|
blank=True,
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import django_filters
|
import django_filters
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth import get_user_model
|
||||||
from django.utils.translation import gettext as _
|
from django.utils.translation import gettext as _
|
||||||
|
|
||||||
from extras.filtersets import LocalConfigContextFilterSet
|
from extras.filtersets import LocalConfigContextFilterSet
|
||||||
@ -395,12 +395,12 @@ class RackReservationFilterSet(NetBoxModelFilterSet, TenancyFilterSet):
|
|||||||
label=_('Location (slug)'),
|
label=_('Location (slug)'),
|
||||||
)
|
)
|
||||||
user_id = django_filters.ModelMultipleChoiceFilter(
|
user_id = django_filters.ModelMultipleChoiceFilter(
|
||||||
queryset=User.objects.all(),
|
queryset=get_user_model().objects.all(),
|
||||||
label=_('User (ID)'),
|
label=_('User (ID)'),
|
||||||
)
|
)
|
||||||
user = django_filters.ModelMultipleChoiceFilter(
|
user = django_filters.ModelMultipleChoiceFilter(
|
||||||
field_name='user__username',
|
field_name='user__username',
|
||||||
queryset=User.objects.all(),
|
queryset=get_user_model().objects.all(),
|
||||||
to_field_name='username',
|
to_field_name='username',
|
||||||
label=_('User (name)'),
|
label=_('User (name)'),
|
||||||
)
|
)
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
from django import forms
|
from django import forms
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth import get_user_model
|
||||||
from django.utils.translation import gettext as _
|
from django.utils.translation import gettext as _
|
||||||
from timezone_field import TimeZoneFormField
|
from timezone_field import TimeZoneFormField
|
||||||
|
|
||||||
@ -322,7 +322,7 @@ class RackBulkEditForm(NetBoxModelBulkEditForm):
|
|||||||
|
|
||||||
class RackReservationBulkEditForm(NetBoxModelBulkEditForm):
|
class RackReservationBulkEditForm(NetBoxModelBulkEditForm):
|
||||||
user = forms.ModelChoiceField(
|
user = forms.ModelChoiceField(
|
||||||
queryset=User.objects.order_by(
|
queryset=get_user_model().objects.order_by(
|
||||||
'username'
|
'username'
|
||||||
),
|
),
|
||||||
required=False
|
required=False
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
from django import forms
|
from django import forms
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth import get_user_model
|
||||||
from django.utils.translation import gettext as _
|
from django.utils.translation import gettext as _
|
||||||
|
|
||||||
from dcim.choices import *
|
from dcim.choices import *
|
||||||
@ -376,7 +376,7 @@ class RackReservationFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
|
|||||||
label=_('Rack')
|
label=_('Rack')
|
||||||
)
|
)
|
||||||
user_id = DynamicModelMultipleChoiceField(
|
user_id = DynamicModelMultipleChoiceField(
|
||||||
queryset=User.objects.all(),
|
queryset=get_user_model().objects.all(),
|
||||||
required=False,
|
required=False,
|
||||||
label=_('User'),
|
label=_('User'),
|
||||||
widget=APISelectMultiple(
|
widget=APISelectMultiple(
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
from django import forms
|
from django import forms
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth import get_user_model
|
||||||
from django.contrib.contenttypes.models import ContentType
|
from django.contrib.contenttypes.models import ContentType
|
||||||
from django.utils.translation import gettext as _
|
from django.utils.translation import gettext as _
|
||||||
from timezone_field import TimeZoneFormField
|
from timezone_field import TimeZoneFormField
|
||||||
@ -236,7 +236,7 @@ class RackReservationForm(TenancyForm, NetBoxModelForm):
|
|||||||
help_text=_("Comma-separated list of numeric unit IDs. A range may be specified using a hyphen.")
|
help_text=_("Comma-separated list of numeric unit IDs. A range may be specified using a hyphen.")
|
||||||
)
|
)
|
||||||
user = forms.ModelChoiceField(
|
user = forms.ModelChoiceField(
|
||||||
queryset=User.objects.order_by(
|
queryset=get_user_model().objects.order_by(
|
||||||
'username'
|
'username'
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import decimal
|
import decimal
|
||||||
from functools import cached_property
|
from functools import cached_property
|
||||||
|
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth import get_user_model
|
||||||
from django.contrib.contenttypes.fields import GenericRelation
|
from django.contrib.contenttypes.fields import GenericRelation
|
||||||
from django.contrib.postgres.fields import ArrayField
|
from django.contrib.postgres.fields import ArrayField
|
||||||
from django.core.exceptions import ValidationError
|
from django.core.exceptions import ValidationError
|
||||||
@ -505,7 +505,7 @@ class RackReservation(PrimaryModel):
|
|||||||
null=True
|
null=True
|
||||||
)
|
)
|
||||||
user = models.ForeignKey(
|
user = models.ForeignKey(
|
||||||
to=User,
|
to=get_user_model(),
|
||||||
on_delete=models.PROTECT
|
on_delete=models.PROTECT
|
||||||
)
|
)
|
||||||
description = models.CharField(
|
description = models.CharField(
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
from django.contrib.auth.models import User
|
from django.contrib.auth import get_user_model
|
||||||
from django.test import override_settings
|
from django.test import override_settings
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
from rest_framework import status
|
from rest_framework import status
|
||||||
@ -363,7 +363,7 @@ class RackReservationTest(APIViewTestCases.APIViewTestCase):
|
|||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def setUpTestData(cls):
|
def setUpTestData(cls):
|
||||||
user = User.objects.create(username='user1', is_active=True)
|
user = get_user_model().objects.create(username='user1', is_active=True)
|
||||||
site = Site.objects.create(name='Test Site 1', slug='test-site-1')
|
site = Site.objects.create(name='Test Site 1', slug='test-site-1')
|
||||||
|
|
||||||
racks = (
|
racks = (
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
from django.contrib.auth.models import User
|
from django.contrib.auth import get_user_model
|
||||||
from django.test import TestCase
|
from django.test import TestCase
|
||||||
|
|
||||||
from dcim.choices import *
|
from dcim.choices import *
|
||||||
@ -593,11 +593,11 @@ class RackReservationTestCase(TestCase, ChangeLoggedFilterSetTests):
|
|||||||
Rack.objects.bulk_create(racks)
|
Rack.objects.bulk_create(racks)
|
||||||
|
|
||||||
users = (
|
users = (
|
||||||
User(username='User 1'),
|
get_user_model()(username='User 1'),
|
||||||
User(username='User 2'),
|
get_user_model()(username='User 2'),
|
||||||
User(username='User 3'),
|
get_user_model()(username='User 3'),
|
||||||
)
|
)
|
||||||
User.objects.bulk_create(users)
|
get_user_model().objects.bulk_create(users)
|
||||||
|
|
||||||
tenant_groups = (
|
tenant_groups = (
|
||||||
TenantGroup(name='Tenant group 1', slug='tenant-group-1'),
|
TenantGroup(name='Tenant group 1', slug='tenant-group-1'),
|
||||||
@ -650,7 +650,7 @@ class RackReservationTestCase(TestCase, ChangeLoggedFilterSetTests):
|
|||||||
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
|
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
|
||||||
|
|
||||||
def test_user(self):
|
def test_user(self):
|
||||||
users = User.objects.all()[:2]
|
users = get_user_model().objects.all()[:2]
|
||||||
params = {'user_id': [users[0].pk, users[1].pk]}
|
params = {'user_id': [users[0].pk, users[1].pk]}
|
||||||
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
|
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
|
||||||
params = {'user': [users[0].username, users[1].username]}
|
params = {'user': [users[0].username, users[1].username]}
|
||||||
|
@ -6,7 +6,7 @@ except ImportError:
|
|||||||
from backports.zoneinfo import ZoneInfo
|
from backports.zoneinfo import ZoneInfo
|
||||||
|
|
||||||
import yaml
|
import yaml
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth import get_user_model
|
||||||
from django.contrib.contenttypes.models import ContentType
|
from django.contrib.contenttypes.models import ContentType
|
||||||
from django.test import override_settings
|
from django.test import override_settings
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
@ -288,8 +288,8 @@ class RackReservationTestCase(ViewTestCases.PrimaryObjectViewTestCase):
|
|||||||
@classmethod
|
@classmethod
|
||||||
def setUpTestData(cls):
|
def setUpTestData(cls):
|
||||||
|
|
||||||
user2 = User.objects.create_user(username='testuser2')
|
user2 = get_user_model().objects.create_user(username='testuser2')
|
||||||
user3 = User.objects.create_user(username='testuser3')
|
user3 = get_user_model().objects.create_user(username='testuser3')
|
||||||
|
|
||||||
site = Site.objects.create(name='Site 1', slug='site-1')
|
site = Site.objects.create(name='Site 1', slug='site-1')
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
from django.contrib.auth.models import User
|
from django.contrib.auth import get_user_model
|
||||||
from django.contrib.contenttypes.models import ContentType
|
from django.contrib.contenttypes.models import ContentType
|
||||||
from django.core.exceptions import ObjectDoesNotExist
|
from django.core.exceptions import ObjectDoesNotExist
|
||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
@ -256,7 +256,7 @@ class JournalEntrySerializer(NetBoxModelSerializer):
|
|||||||
assigned_object = serializers.SerializerMethodField(read_only=True)
|
assigned_object = serializers.SerializerMethodField(read_only=True)
|
||||||
created_by = serializers.PrimaryKeyRelatedField(
|
created_by = serializers.PrimaryKeyRelatedField(
|
||||||
allow_null=True,
|
allow_null=True,
|
||||||
queryset=User.objects.all(),
|
queryset=get_user_model().objects.all(),
|
||||||
required=False,
|
required=False,
|
||||||
default=serializers.CurrentUserDefault()
|
default=serializers.CurrentUserDefault()
|
||||||
)
|
)
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import django_filters
|
import django_filters
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth import get_user_model
|
||||||
from django.contrib.contenttypes.models import ContentType
|
from django.contrib.contenttypes.models import ContentType
|
||||||
from django.db.models import Q
|
from django.db.models import Q
|
||||||
from django.utils.translation import gettext as _
|
from django.utils.translation import gettext as _
|
||||||
@ -159,12 +159,12 @@ class SavedFilterFilterSet(BaseFilterSet):
|
|||||||
)
|
)
|
||||||
content_types = ContentTypeFilter()
|
content_types = ContentTypeFilter()
|
||||||
user_id = django_filters.ModelMultipleChoiceFilter(
|
user_id = django_filters.ModelMultipleChoiceFilter(
|
||||||
queryset=User.objects.all(),
|
queryset=get_user_model().objects.all(),
|
||||||
label=_('User (ID)'),
|
label=_('User (ID)'),
|
||||||
)
|
)
|
||||||
user = django_filters.ModelMultipleChoiceFilter(
|
user = django_filters.ModelMultipleChoiceFilter(
|
||||||
field_name='user__username',
|
field_name='user__username',
|
||||||
queryset=User.objects.all(),
|
queryset=get_user_model().objects.all(),
|
||||||
to_field_name='username',
|
to_field_name='username',
|
||||||
label=_('User (name)'),
|
label=_('User (name)'),
|
||||||
)
|
)
|
||||||
@ -223,12 +223,12 @@ class JournalEntryFilterSet(NetBoxModelFilterSet):
|
|||||||
queryset=ContentType.objects.all()
|
queryset=ContentType.objects.all()
|
||||||
)
|
)
|
||||||
created_by_id = django_filters.ModelMultipleChoiceFilter(
|
created_by_id = django_filters.ModelMultipleChoiceFilter(
|
||||||
queryset=User.objects.all(),
|
queryset=get_user_model().objects.all(),
|
||||||
label=_('User (ID)'),
|
label=_('User (ID)'),
|
||||||
)
|
)
|
||||||
created_by = django_filters.ModelMultipleChoiceFilter(
|
created_by = django_filters.ModelMultipleChoiceFilter(
|
||||||
field_name='created_by__username',
|
field_name='created_by__username',
|
||||||
queryset=User.objects.all(),
|
queryset=get_user_model().objects.all(),
|
||||||
to_field_name='username',
|
to_field_name='username',
|
||||||
label=_('User (name)'),
|
label=_('User (name)'),
|
||||||
)
|
)
|
||||||
@ -510,12 +510,12 @@ class ObjectChangeFilterSet(BaseFilterSet):
|
|||||||
queryset=ContentType.objects.all()
|
queryset=ContentType.objects.all()
|
||||||
)
|
)
|
||||||
user_id = django_filters.ModelMultipleChoiceFilter(
|
user_id = django_filters.ModelMultipleChoiceFilter(
|
||||||
queryset=User.objects.all(),
|
queryset=get_user_model().objects.all(),
|
||||||
label=_('User (ID)'),
|
label=_('User (ID)'),
|
||||||
)
|
)
|
||||||
user = django_filters.ModelMultipleChoiceFilter(
|
user = django_filters.ModelMultipleChoiceFilter(
|
||||||
field_name='user__username',
|
field_name='user__username',
|
||||||
queryset=User.objects.all(),
|
queryset=get_user_model().objects.all(),
|
||||||
to_field_name='username',
|
to_field_name='username',
|
||||||
label=_('User name'),
|
label=_('User name'),
|
||||||
)
|
)
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
from django import forms
|
from django import forms
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth import get_user_model
|
||||||
from django.contrib.contenttypes.models import ContentType
|
from django.contrib.contenttypes.models import ContentType
|
||||||
from django.utils.translation import gettext as _
|
from django.utils.translation import gettext as _
|
||||||
|
|
||||||
@ -385,7 +385,7 @@ class JournalEntryFilterForm(NetBoxModelFilterSetForm):
|
|||||||
widget=DateTimePicker()
|
widget=DateTimePicker()
|
||||||
)
|
)
|
||||||
created_by_id = DynamicModelMultipleChoiceField(
|
created_by_id = DynamicModelMultipleChoiceField(
|
||||||
queryset=User.objects.all(),
|
queryset=get_user_model().objects.all(),
|
||||||
required=False,
|
required=False,
|
||||||
label=_('User'),
|
label=_('User'),
|
||||||
widget=APISelectMultiple(
|
widget=APISelectMultiple(
|
||||||
@ -429,7 +429,7 @@ class ObjectChangeFilterForm(SavedFiltersMixin, FilterForm):
|
|||||||
required=False
|
required=False
|
||||||
)
|
)
|
||||||
user_id = DynamicModelMultipleChoiceField(
|
user_id = DynamicModelMultipleChoiceField(
|
||||||
queryset=User.objects.all(),
|
queryset=get_user_model().objects.all(),
|
||||||
required=False,
|
required=False,
|
||||||
label=_('User'),
|
label=_('User'),
|
||||||
widget=APISelectMultiple(
|
widget=APISelectMultiple(
|
||||||
|
@ -4,7 +4,7 @@ import sys
|
|||||||
import traceback
|
import traceback
|
||||||
import uuid
|
import uuid
|
||||||
|
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth import get_user_model
|
||||||
from django.core.management.base import BaseCommand, CommandError
|
from django.core.management.base import BaseCommand, CommandError
|
||||||
from django.db import transaction
|
from django.db import transaction
|
||||||
|
|
||||||
@ -78,11 +78,11 @@ class Command(BaseCommand):
|
|||||||
# Take user from command line if provided and exists, other
|
# Take user from command line if provided and exists, other
|
||||||
if options['user']:
|
if options['user']:
|
||||||
try:
|
try:
|
||||||
user = User.objects.get(username=options['user'])
|
user = get_user_model().objects.get(username=options['user'])
|
||||||
except User.DoesNotExist:
|
except get_user_model().DoesNotExist:
|
||||||
user = User.objects.filter(is_superuser=True).order_by('pk')[0]
|
user = get_user_model().objects.filter(is_superuser=True).order_by('pk')[0]
|
||||||
else:
|
else:
|
||||||
user = User.objects.filter(is_superuser=True).order_by('pk')[0]
|
user = get_user_model().objects.filter(is_superuser=True).order_by('pk')[0]
|
||||||
|
|
||||||
# Setup logging to Stdout
|
# Setup logging to Stdout
|
||||||
formatter = logging.Formatter(f'[%(asctime)s][%(levelname)s] - %(message)s')
|
formatter = logging.Formatter(f'[%(asctime)s][%(levelname)s] - %(message)s')
|
||||||
@ -113,7 +113,7 @@ class Command(BaseCommand):
|
|||||||
job = Job.objects.create(
|
job = Job.objects.create(
|
||||||
object=module,
|
object=module,
|
||||||
name=script.name,
|
name=script.name,
|
||||||
user=User.objects.filter(is_superuser=True).order_by('pk')[0],
|
user=get_user_model().objects.filter(is_superuser=True).order_by('pk')[0],
|
||||||
job_id=uuid.uuid4()
|
job_id=uuid.uuid4()
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
from django.contrib.auth.models import User
|
from django.contrib.auth import get_user_model
|
||||||
from django.contrib.contenttypes.fields import GenericForeignKey
|
from django.contrib.contenttypes.fields import GenericForeignKey
|
||||||
from django.contrib.contenttypes.models import ContentType
|
from django.contrib.contenttypes.models import ContentType
|
||||||
from django.db import models
|
from django.db import models
|
||||||
@ -24,7 +24,7 @@ class ObjectChange(models.Model):
|
|||||||
db_index=True
|
db_index=True
|
||||||
)
|
)
|
||||||
user = models.ForeignKey(
|
user = models.ForeignKey(
|
||||||
to=User,
|
to=get_user_model(),
|
||||||
on_delete=models.SET_NULL,
|
on_delete=models.SET_NULL,
|
||||||
related_name='changes',
|
related_name='changes',
|
||||||
blank=True,
|
blank=True,
|
||||||
|
@ -3,7 +3,7 @@ import urllib.parse
|
|||||||
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth import get_user_model
|
||||||
from django.contrib.contenttypes.fields import GenericForeignKey
|
from django.contrib.contenttypes.fields import GenericForeignKey
|
||||||
from django.contrib.contenttypes.models import ContentType
|
from django.contrib.contenttypes.models import ContentType
|
||||||
from django.core.cache import cache
|
from django.core.cache import cache
|
||||||
@ -419,7 +419,7 @@ class SavedFilter(CloningMixin, ExportTemplatesMixin, ChangeLoggedModel):
|
|||||||
blank=True
|
blank=True
|
||||||
)
|
)
|
||||||
user = models.ForeignKey(
|
user = models.ForeignKey(
|
||||||
to=User,
|
to=get_user_model(),
|
||||||
on_delete=models.SET_NULL,
|
on_delete=models.SET_NULL,
|
||||||
blank=True,
|
blank=True,
|
||||||
null=True
|
null=True
|
||||||
@ -560,7 +560,7 @@ class JournalEntry(CustomFieldsMixin, CustomLinksMixin, TagsMixin, ExportTemplat
|
|||||||
fk_field='assigned_object_id'
|
fk_field='assigned_object_id'
|
||||||
)
|
)
|
||||||
created_by = models.ForeignKey(
|
created_by = models.ForeignKey(
|
||||||
to=User,
|
to=get_user_model(),
|
||||||
on_delete=models.SET_NULL,
|
on_delete=models.SET_NULL,
|
||||||
blank=True,
|
blank=True,
|
||||||
null=True
|
null=True
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import datetime
|
import datetime
|
||||||
|
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth import get_user_model
|
||||||
from django.contrib.contenttypes.models import ContentType
|
from django.contrib.contenttypes.models import ContentType
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
from django.utils.timezone import make_aware
|
from django.utils.timezone import make_aware
|
||||||
@ -396,7 +396,7 @@ class JournalEntryTest(APIViewTestCases.APIViewTestCase):
|
|||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def setUpTestData(cls):
|
def setUpTestData(cls):
|
||||||
user = User.objects.first()
|
user = get_user_model().objects.first()
|
||||||
site = Site.objects.create(name='Site 1', slug='site-1')
|
site = Site.objects.create(name='Site 1', slug='site-1')
|
||||||
|
|
||||||
journal_entries = (
|
journal_entries = (
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import uuid
|
import uuid
|
||||||
from datetime import datetime, timezone
|
from datetime import datetime, timezone
|
||||||
|
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth import get_user_model
|
||||||
from django.contrib.contenttypes.models import ContentType
|
from django.contrib.contenttypes.models import ContentType
|
||||||
from django.test import TestCase
|
from django.test import TestCase
|
||||||
|
|
||||||
@ -278,11 +278,11 @@ class SavedFilterTestCase(TestCase, BaseFilterSetTests):
|
|||||||
content_types = ContentType.objects.filter(model__in=['site', 'rack', 'device'])
|
content_types = ContentType.objects.filter(model__in=['site', 'rack', 'device'])
|
||||||
|
|
||||||
users = (
|
users = (
|
||||||
User(username='User 1'),
|
get_user_model()(username='User 1'),
|
||||||
User(username='User 2'),
|
get_user_model()(username='User 2'),
|
||||||
User(username='User 3'),
|
get_user_model()(username='User 3'),
|
||||||
)
|
)
|
||||||
User.objects.bulk_create(users)
|
get_user_model().objects.bulk_create(users)
|
||||||
|
|
||||||
saved_filters = (
|
saved_filters = (
|
||||||
SavedFilter(
|
SavedFilter(
|
||||||
@ -332,7 +332,7 @@ class SavedFilterTestCase(TestCase, BaseFilterSetTests):
|
|||||||
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1)
|
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1)
|
||||||
|
|
||||||
def test_user(self):
|
def test_user(self):
|
||||||
users = User.objects.filter(username__startswith='User')
|
users = get_user_model().objects.filter(username__startswith='User')
|
||||||
params = {'user': [users[0].username, users[1].username]}
|
params = {'user': [users[0].username, users[1].username]}
|
||||||
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
|
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
|
||||||
params = {'user_id': [users[0].pk, users[1].pk]}
|
params = {'user_id': [users[0].pk, users[1].pk]}
|
||||||
@ -493,11 +493,11 @@ class JournalEntryTestCase(TestCase, ChangeLoggedFilterSetTests):
|
|||||||
Rack.objects.bulk_create(racks)
|
Rack.objects.bulk_create(racks)
|
||||||
|
|
||||||
users = (
|
users = (
|
||||||
User(username='Alice'),
|
get_user_model()(username='Alice'),
|
||||||
User(username='Bob'),
|
get_user_model()(username='Bob'),
|
||||||
User(username='Charlie'),
|
get_user_model()(username='Charlie'),
|
||||||
)
|
)
|
||||||
User.objects.bulk_create(users)
|
get_user_model().objects.bulk_create(users)
|
||||||
|
|
||||||
journal_entries = (
|
journal_entries = (
|
||||||
JournalEntry(
|
JournalEntry(
|
||||||
@ -540,7 +540,7 @@ class JournalEntryTestCase(TestCase, ChangeLoggedFilterSetTests):
|
|||||||
JournalEntry.objects.bulk_create(journal_entries)
|
JournalEntry.objects.bulk_create(journal_entries)
|
||||||
|
|
||||||
def test_created_by(self):
|
def test_created_by(self):
|
||||||
users = User.objects.filter(username__in=['Alice', 'Bob'])
|
users = get_user_model().objects.filter(username__in=['Alice', 'Bob'])
|
||||||
params = {'created_by': [users[0].username, users[1].username]}
|
params = {'created_by': [users[0].username, users[1].username]}
|
||||||
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4)
|
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4)
|
||||||
params = {'created_by_id': [users[0].pk, users[1].pk]}
|
params = {'created_by_id': [users[0].pk, users[1].pk]}
|
||||||
@ -865,11 +865,11 @@ class ObjectChangeTestCase(TestCase, BaseFilterSetTests):
|
|||||||
@classmethod
|
@classmethod
|
||||||
def setUpTestData(cls):
|
def setUpTestData(cls):
|
||||||
users = (
|
users = (
|
||||||
User(username='user1'),
|
get_user_model()(username='user1'),
|
||||||
User(username='user2'),
|
get_user_model()(username='user2'),
|
||||||
User(username='user3'),
|
get_user_model()(username='user3'),
|
||||||
)
|
)
|
||||||
User.objects.bulk_create(users)
|
get_user_model().objects.bulk_create(users)
|
||||||
|
|
||||||
site = Site.objects.create(name='Test Site 1', slug='test-site-1')
|
site = Site.objects.create(name='Test Site 1', slug='test-site-1')
|
||||||
ipaddress = IPAddress.objects.create(address='192.0.2.1/24')
|
ipaddress = IPAddress.objects.create(address='192.0.2.1/24')
|
||||||
@ -933,7 +933,7 @@ class ObjectChangeTestCase(TestCase, BaseFilterSetTests):
|
|||||||
ObjectChange.objects.bulk_create(object_changes)
|
ObjectChange.objects.bulk_create(object_changes)
|
||||||
|
|
||||||
def test_user(self):
|
def test_user(self):
|
||||||
params = {'user_id': User.objects.filter(username__in=['user1', 'user2']).values_list('pk', flat=True)}
|
params = {'user_id': get_user_model().objects.filter(username__in=['user1', 'user2']).values_list('pk', flat=True)}
|
||||||
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4)
|
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4)
|
||||||
params = {'user': ['user1', 'user2']}
|
params = {'user': ['user1', 'user2']}
|
||||||
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4)
|
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4)
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import urllib.parse
|
import urllib.parse
|
||||||
import uuid
|
import uuid
|
||||||
|
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth import get_user_model
|
||||||
from django.contrib.contenttypes.models import ContentType
|
from django.contrib.contenttypes.models import ContentType
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
|
|
||||||
@ -115,11 +115,11 @@ class SavedFilterTestCase(ViewTestCases.PrimaryObjectViewTestCase):
|
|||||||
site_ct = ContentType.objects.get_for_model(Site)
|
site_ct = ContentType.objects.get_for_model(Site)
|
||||||
|
|
||||||
users = (
|
users = (
|
||||||
User(username='User 1'),
|
get_user_model()(username='User 1'),
|
||||||
User(username='User 2'),
|
get_user_model()(username='User 2'),
|
||||||
User(username='User 3'),
|
get_user_model()(username='User 3'),
|
||||||
)
|
)
|
||||||
User.objects.bulk_create(users)
|
get_user_model().objects.bulk_create(users)
|
||||||
|
|
||||||
saved_filters = (
|
saved_filters = (
|
||||||
SavedFilter(
|
SavedFilter(
|
||||||
@ -412,7 +412,7 @@ class ObjectChangeTestCase(TestCase):
|
|||||||
site.save()
|
site.save()
|
||||||
|
|
||||||
# Create three ObjectChanges
|
# Create three ObjectChanges
|
||||||
user = User.objects.create_user(username='testuser2')
|
user = get_user_model().objects.create_user(username='testuser2')
|
||||||
for i in range(1, 4):
|
for i in range(1, 4):
|
||||||
oc = site.to_objectchange(action=ObjectChangeActionChoices.ACTION_UPDATE)
|
oc = site.to_objectchange(action=ObjectChangeActionChoices.ACTION_UPDATE)
|
||||||
oc.user = user
|
oc.user = user
|
||||||
@ -423,7 +423,7 @@ class ObjectChangeTestCase(TestCase):
|
|||||||
|
|
||||||
url = reverse('extras:objectchange_list')
|
url = reverse('extras:objectchange_list')
|
||||||
params = {
|
params = {
|
||||||
"user": User.objects.first().pk,
|
"user": get_user_model().objects.first().pk,
|
||||||
}
|
}
|
||||||
|
|
||||||
response = self.client.get('{}?{}'.format(url, urllib.parse.urlencode(params)))
|
response = self.client.get('{}?{}'.format(url, urllib.parse.urlencode(params)))
|
||||||
@ -452,7 +452,7 @@ class JournalEntryTestCase(
|
|||||||
site_ct = ContentType.objects.get_for_model(Site)
|
site_ct = ContentType.objects.get_for_model(Site)
|
||||||
|
|
||||||
site = Site.objects.create(name='Site 1', slug='site-1')
|
site = Site.objects.create(name='Site 1', slug='site-1')
|
||||||
user = User.objects.create(username='User 1')
|
user = get_user_model().objects.create(username='User 1')
|
||||||
|
|
||||||
JournalEntry.objects.bulk_create((
|
JournalEntry.objects.bulk_create((
|
||||||
JournalEntry(assigned_object=site, created_by=user, comments='First entry'),
|
JournalEntry(assigned_object=site, created_by=user, comments='First entry'),
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
import datetime
|
import datetime
|
||||||
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.contrib.auth.models import Group, User
|
from django.contrib.auth import get_user_model
|
||||||
|
from django.contrib.auth.models import Group
|
||||||
from django.contrib.contenttypes.models import ContentType
|
from django.contrib.contenttypes.models import ContentType
|
||||||
from django.test import Client
|
from django.test import Client
|
||||||
from django.test.utils import override_settings
|
from django.test.utils import override_settings
|
||||||
@ -87,7 +88,7 @@ class ExternalAuthenticationTestCase(TestCase):
|
|||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def setUpTestData(cls):
|
def setUpTestData(cls):
|
||||||
cls.user = User.objects.create(username='remoteuser1')
|
cls.user = get_user_model().objects.create(username='remoteuser1')
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.client = Client()
|
self.client = Client()
|
||||||
@ -169,7 +170,7 @@ class ExternalAuthenticationTestCase(TestCase):
|
|||||||
response = self.client.get(reverse('home'), follow=True, **headers)
|
response = self.client.get(reverse('home'), follow=True, **headers)
|
||||||
self.assertEqual(response.status_code, 200)
|
self.assertEqual(response.status_code, 200)
|
||||||
|
|
||||||
self.user = User.objects.get(username='remoteuser1')
|
self.user = get_user_model().objects.get(username='remoteuser1')
|
||||||
self.assertEqual(self.user.first_name, "John", msg='User first name was not updated')
|
self.assertEqual(self.user.first_name, "John", msg='User first name was not updated')
|
||||||
self.assertEqual(self.user.last_name, "Smith", msg='User last name was not updated')
|
self.assertEqual(self.user.last_name, "Smith", msg='User last name was not updated')
|
||||||
self.assertEqual(self.user.email, "johnsmith@example.com", msg='User email was not updated')
|
self.assertEqual(self.user.email, "johnsmith@example.com", msg='User email was not updated')
|
||||||
@ -195,7 +196,7 @@ class ExternalAuthenticationTestCase(TestCase):
|
|||||||
self.assertEqual(response.status_code, 200)
|
self.assertEqual(response.status_code, 200)
|
||||||
|
|
||||||
# Local user should have been automatically created
|
# Local user should have been automatically created
|
||||||
new_user = User.objects.get(username='remoteuser2')
|
new_user = get_user_model().objects.get(username='remoteuser2')
|
||||||
self.assertEqual(int(self.client.session.get(
|
self.assertEqual(int(self.client.session.get(
|
||||||
'_auth_user_id')), new_user.pk, msg='Authentication failed')
|
'_auth_user_id')), new_user.pk, msg='Authentication failed')
|
||||||
|
|
||||||
@ -230,7 +231,7 @@ class ExternalAuthenticationTestCase(TestCase):
|
|||||||
response = self.client.get(reverse('home'), follow=True, **headers)
|
response = self.client.get(reverse('home'), follow=True, **headers)
|
||||||
self.assertEqual(response.status_code, 200)
|
self.assertEqual(response.status_code, 200)
|
||||||
|
|
||||||
new_user = User.objects.get(username='remoteuser2')
|
new_user = get_user_model().objects.get(username='remoteuser2')
|
||||||
self.assertEqual(int(self.client.session.get(
|
self.assertEqual(int(self.client.session.get(
|
||||||
'_auth_user_id')), new_user.pk, msg='Authentication failed')
|
'_auth_user_id')), new_user.pk, msg='Authentication failed')
|
||||||
self.assertListEqual(
|
self.assertListEqual(
|
||||||
@ -262,7 +263,7 @@ class ExternalAuthenticationTestCase(TestCase):
|
|||||||
response = self.client.get(reverse('home'), follow=True, **headers)
|
response = self.client.get(reverse('home'), follow=True, **headers)
|
||||||
self.assertEqual(response.status_code, 200)
|
self.assertEqual(response.status_code, 200)
|
||||||
|
|
||||||
new_user = User.objects.get(username='remoteuser2')
|
new_user = get_user_model().objects.get(username='remoteuser2')
|
||||||
self.assertEqual(int(self.client.session.get(
|
self.assertEqual(int(self.client.session.get(
|
||||||
'_auth_user_id')), new_user.pk, msg='Authentication failed')
|
'_auth_user_id')), new_user.pk, msg='Authentication failed')
|
||||||
self.assertTrue(new_user.has_perms(
|
self.assertTrue(new_user.has_perms(
|
||||||
@ -302,7 +303,7 @@ class ExternalAuthenticationTestCase(TestCase):
|
|||||||
response = self.client.get(reverse('home'), follow=True, **headers)
|
response = self.client.get(reverse('home'), follow=True, **headers)
|
||||||
self.assertEqual(response.status_code, 200)
|
self.assertEqual(response.status_code, 200)
|
||||||
|
|
||||||
new_user = User.objects.get(username='remoteuser2')
|
new_user = get_user_model().objects.get(username='remoteuser2')
|
||||||
self.assertEqual(int(self.client.session.get(
|
self.assertEqual(int(self.client.session.get(
|
||||||
'_auth_user_id')), new_user.pk, msg='Authentication failed')
|
'_auth_user_id')), new_user.pk, msg='Authentication failed')
|
||||||
self.assertListEqual(
|
self.assertListEqual(
|
||||||
@ -343,7 +344,7 @@ class ExternalAuthenticationTestCase(TestCase):
|
|||||||
response = self.client.get(reverse("home"), follow=True, **headers)
|
response = self.client.get(reverse("home"), follow=True, **headers)
|
||||||
self.assertEqual(response.status_code, 200)
|
self.assertEqual(response.status_code, 200)
|
||||||
|
|
||||||
new_user = User.objects.get(username="remoteuser2")
|
new_user = get_user_model().objects.get(username="remoteuser2")
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
int(self.client.session.get("_auth_user_id")),
|
int(self.client.session.get("_auth_user_id")),
|
||||||
new_user.pk,
|
new_user.pk,
|
||||||
@ -389,7 +390,7 @@ class ExternalAuthenticationTestCase(TestCase):
|
|||||||
response = self.client.get(reverse('home'), follow=True, **headers)
|
response = self.client.get(reverse('home'), follow=True, **headers)
|
||||||
self.assertEqual(response.status_code, 200)
|
self.assertEqual(response.status_code, 200)
|
||||||
|
|
||||||
new_user = User.objects.get(username='remoteuser2')
|
new_user = get_user_model().objects.get(username='remoteuser2')
|
||||||
self.assertEqual(int(self.client.session.get(
|
self.assertEqual(int(self.client.session.get(
|
||||||
'_auth_user_id')), new_user.pk, msg='Authentication failed')
|
'_auth_user_id')), new_user.pk, msg='Authentication failed')
|
||||||
self.assertListEqual(
|
self.assertListEqual(
|
||||||
@ -428,7 +429,7 @@ class ObjectPermissionAPIViewTestCase(TestCase):
|
|||||||
"""
|
"""
|
||||||
Create a test user and token for API calls.
|
Create a test user and token for API calls.
|
||||||
"""
|
"""
|
||||||
self.user = User.objects.create(username='testuser')
|
self.user = get_user_model().objects.create(username='testuser')
|
||||||
self.token = Token.objects.create(user=self.user)
|
self.token = Token.objects.create(user=self.user)
|
||||||
self.header = {'HTTP_AUTHORIZATION': 'Token {}'.format(self.token.key)}
|
self.header = {'HTTP_AUTHORIZATION': 'Token {}'.format(self.token.key)}
|
||||||
|
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
from django.contrib.auth.models import Group, User
|
from django.contrib.auth import get_user_model
|
||||||
|
from django.contrib.auth.models import Group
|
||||||
from django.contrib.contenttypes.models import ContentType
|
from django.contrib.contenttypes.models import ContentType
|
||||||
from drf_spectacular.utils import extend_schema_field
|
from drf_spectacular.utils import extend_schema_field
|
||||||
from drf_spectacular.types import OpenApiTypes
|
from drf_spectacular.types import OpenApiTypes
|
||||||
@ -28,7 +29,7 @@ class NestedUserSerializer(WritableNestedSerializer):
|
|||||||
url = serializers.HyperlinkedIdentityField(view_name='users-api:user-detail')
|
url = serializers.HyperlinkedIdentityField(view_name='users-api:user-detail')
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = User
|
model = get_user_model()
|
||||||
fields = ['id', 'url', 'display', 'username']
|
fields = ['id', 'url', 'display', 'username']
|
||||||
|
|
||||||
@extend_schema_field(OpenApiTypes.STR)
|
@extend_schema_field(OpenApiTypes.STR)
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.contrib.auth.models import Group, User
|
from django.contrib.auth import get_user_model
|
||||||
|
from django.contrib.auth.models import Group
|
||||||
from django.contrib.contenttypes.models import ContentType
|
from django.contrib.contenttypes.models import ContentType
|
||||||
from drf_spectacular.utils import extend_schema_field
|
from drf_spectacular.utils import extend_schema_field
|
||||||
from drf_spectacular.types import OpenApiTypes
|
from drf_spectacular.types import OpenApiTypes
|
||||||
@ -30,7 +31,7 @@ class UserSerializer(ValidatedModelSerializer):
|
|||||||
)
|
)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = User
|
model = get_user_model()
|
||||||
fields = (
|
fields = (
|
||||||
'id', 'url', 'display', 'username', 'password', 'first_name', 'last_name', 'email', 'is_staff', 'is_active',
|
'id', 'url', 'display', 'username', 'password', 'first_name', 'last_name', 'email', 'is_staff', 'is_active',
|
||||||
'date_joined', 'groups',
|
'date_joined', 'groups',
|
||||||
@ -124,7 +125,7 @@ class ObjectPermissionSerializer(ValidatedModelSerializer):
|
|||||||
many=True
|
many=True
|
||||||
)
|
)
|
||||||
users = SerializedPKRelatedField(
|
users = SerializedPKRelatedField(
|
||||||
queryset=User.objects.all(),
|
queryset=get_user_model().objects.all(),
|
||||||
serializer=NestedUserSerializer,
|
serializer=NestedUserSerializer,
|
||||||
required=False,
|
required=False,
|
||||||
many=True
|
many=True
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
from django.contrib.auth import authenticate
|
from django.contrib.auth import authenticate
|
||||||
from django.contrib.auth.models import Group, User
|
from django.contrib.auth import get_user_model
|
||||||
|
from django.contrib.auth.models import Group
|
||||||
from django.db.models import Count
|
from django.db.models import Count
|
||||||
from drf_spectacular.utils import extend_schema
|
from drf_spectacular.utils import extend_schema
|
||||||
from drf_spectacular.types import OpenApiTypes
|
from drf_spectacular.types import OpenApiTypes
|
||||||
@ -32,7 +33,7 @@ class UsersRootView(APIRootView):
|
|||||||
#
|
#
|
||||||
|
|
||||||
class UserViewSet(NetBoxModelViewSet):
|
class UserViewSet(NetBoxModelViewSet):
|
||||||
queryset = RestrictedQuerySet(model=User).prefetch_related('groups').order_by('username')
|
queryset = RestrictedQuerySet(model=get_user_model()).prefetch_related('groups').order_by('username')
|
||||||
serializer_class = serializers.UserSerializer
|
serializer_class = serializers.UserSerializer
|
||||||
filterset_class = filtersets.UserFilterSet
|
filterset_class = filtersets.UserFilterSet
|
||||||
|
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
import django_filters
|
import django_filters
|
||||||
from django.contrib.auth.models import Group, User
|
from django.contrib.auth import get_user_model
|
||||||
|
from django.contrib.auth.models import Group
|
||||||
from django.db.models import Q
|
from django.db.models import Q
|
||||||
from django.utils.translation import gettext as _
|
from django.utils.translation import gettext as _
|
||||||
|
|
||||||
@ -47,7 +48,7 @@ class UserFilterSet(BaseFilterSet):
|
|||||||
)
|
)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = User
|
model = get_user_model()
|
||||||
fields = ['id', 'username', 'first_name', 'last_name', 'email', 'is_staff', 'is_active']
|
fields = ['id', 'username', 'first_name', 'last_name', 'email', 'is_staff', 'is_active']
|
||||||
|
|
||||||
def search(self, queryset, name, value):
|
def search(self, queryset, name, value):
|
||||||
@ -68,12 +69,12 @@ class TokenFilterSet(BaseFilterSet):
|
|||||||
)
|
)
|
||||||
user_id = django_filters.ModelMultipleChoiceFilter(
|
user_id = django_filters.ModelMultipleChoiceFilter(
|
||||||
field_name='user',
|
field_name='user',
|
||||||
queryset=User.objects.all(),
|
queryset=get_user_model().objects.all(),
|
||||||
label=_('User'),
|
label=_('User'),
|
||||||
)
|
)
|
||||||
user = django_filters.ModelMultipleChoiceFilter(
|
user = django_filters.ModelMultipleChoiceFilter(
|
||||||
field_name='user__username',
|
field_name='user__username',
|
||||||
queryset=User.objects.all(),
|
queryset=get_user_model().objects.all(),
|
||||||
to_field_name='username',
|
to_field_name='username',
|
||||||
label=_('User (name)'),
|
label=_('User (name)'),
|
||||||
)
|
)
|
||||||
@ -116,12 +117,12 @@ class ObjectPermissionFilterSet(BaseFilterSet):
|
|||||||
)
|
)
|
||||||
user_id = django_filters.ModelMultipleChoiceFilter(
|
user_id = django_filters.ModelMultipleChoiceFilter(
|
||||||
field_name='users',
|
field_name='users',
|
||||||
queryset=User.objects.all(),
|
queryset=get_user_model().objects.all(),
|
||||||
label=_('User'),
|
label=_('User'),
|
||||||
)
|
)
|
||||||
user = django_filters.ModelMultipleChoiceFilter(
|
user = django_filters.ModelMultipleChoiceFilter(
|
||||||
field_name='users__username',
|
field_name='users__username',
|
||||||
queryset=User.objects.all(),
|
queryset=get_user_model().objects.all(),
|
||||||
to_field_name='username',
|
to_field_name='username',
|
||||||
label=_('User (name)'),
|
label=_('User (name)'),
|
||||||
)
|
)
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
import graphene
|
import graphene
|
||||||
|
|
||||||
from django.contrib.auth.models import Group, User
|
from django.contrib.auth import get_user_model
|
||||||
|
from django.contrib.auth.models import Group
|
||||||
from netbox.graphql.fields import ObjectField, ObjectListField
|
from netbox.graphql.fields import ObjectField, ObjectListField
|
||||||
from .types import *
|
from .types import *
|
||||||
from utilities.graphql_optimizer import gql_query_optimizer
|
from utilities.graphql_optimizer import gql_query_optimizer
|
||||||
@ -17,4 +18,4 @@ class UsersQuery(graphene.ObjectType):
|
|||||||
user_list = ObjectListField(UserType)
|
user_list = ObjectListField(UserType)
|
||||||
|
|
||||||
def resolve_user_list(root, info, **kwargs):
|
def resolve_user_list(root, info, **kwargs):
|
||||||
return gql_query_optimizer(User.objects.all(), info)
|
return gql_query_optimizer(get_user_model().objects.all(), info)
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
from django.contrib.auth.models import Group, User
|
from django.contrib.auth import get_user_model
|
||||||
|
from django.contrib.auth.models import Group
|
||||||
from graphene_django import DjangoObjectType
|
from graphene_django import DjangoObjectType
|
||||||
|
|
||||||
from users import filtersets
|
from users import filtersets
|
||||||
@ -25,7 +26,7 @@ class GroupType(DjangoObjectType):
|
|||||||
class UserType(DjangoObjectType):
|
class UserType(DjangoObjectType):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = User
|
model = get_user_model()
|
||||||
fields = (
|
fields = (
|
||||||
'id', 'username', 'password', 'first_name', 'last_name', 'email', 'is_staff', 'is_active', 'date_joined',
|
'id', 'username', 'password', 'first_name', 'last_name', 'email', 'is_staff', 'is_active', 'date_joined',
|
||||||
'groups',
|
'groups',
|
||||||
@ -34,4 +35,4 @@ class UserType(DjangoObjectType):
|
|||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def get_queryset(cls, queryset, info):
|
def get_queryset(cls, queryset, info):
|
||||||
return RestrictedQuerySet(model=User).restrict(info.context.user, 'view')
|
return RestrictedQuerySet(model=get_user_model()).restrict(info.context.user, 'view')
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
from django.contrib.auth.models import Group, User
|
from django.contrib.auth import get_user_model
|
||||||
|
from django.contrib.auth.models import Group
|
||||||
from django.contrib.contenttypes.models import ContentType
|
from django.contrib.contenttypes.models import ContentType
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
|
|
||||||
@ -18,7 +19,7 @@ class AppTest(APITestCase):
|
|||||||
|
|
||||||
|
|
||||||
class UserTest(APIViewTestCases.APIViewTestCase):
|
class UserTest(APIViewTestCases.APIViewTestCase):
|
||||||
model = User
|
model = get_user_model()
|
||||||
view_namespace = 'users'
|
view_namespace = 'users'
|
||||||
brief_fields = ['display', 'id', 'url', 'username']
|
brief_fields = ['display', 'id', 'url', 'username']
|
||||||
validation_excluded_fields = ['password']
|
validation_excluded_fields = ['password']
|
||||||
@ -44,11 +45,11 @@ class UserTest(APIViewTestCases.APIViewTestCase):
|
|||||||
def setUpTestData(cls):
|
def setUpTestData(cls):
|
||||||
|
|
||||||
users = (
|
users = (
|
||||||
User(username='User_1', password='password1'),
|
get_user_model()(username='User_1', password='password1'),
|
||||||
User(username='User_2', password='password2'),
|
get_user_model()(username='User_2', password='password2'),
|
||||||
User(username='User_3', password='password3'),
|
get_user_model()(username='User_3', password='password3'),
|
||||||
)
|
)
|
||||||
User.objects.bulk_create(users)
|
get_user_model().objects.bulk_create(users)
|
||||||
|
|
||||||
|
|
||||||
class GroupTest(APIViewTestCases.APIViewTestCase):
|
class GroupTest(APIViewTestCases.APIViewTestCase):
|
||||||
@ -130,7 +131,7 @@ class TokenTest(
|
|||||||
'username': 'user1',
|
'username': 'user1',
|
||||||
'password': 'abc123',
|
'password': 'abc123',
|
||||||
}
|
}
|
||||||
user = User.objects.create_user(**data)
|
user = get_user_model().objects.create_user(**data)
|
||||||
url = reverse('users-api:token_provision')
|
url = reverse('users-api:token_provision')
|
||||||
|
|
||||||
response = self.client.post(url, data, format='json', **self.header)
|
response = self.client.post(url, data, format='json', **self.header)
|
||||||
@ -158,7 +159,7 @@ class TokenTest(
|
|||||||
Test provisioning a Token for a different User with & without the grant_token permission.
|
Test provisioning a Token for a different User with & without the grant_token permission.
|
||||||
"""
|
"""
|
||||||
self.add_permissions('users.add_token')
|
self.add_permissions('users.add_token')
|
||||||
user2 = User.objects.create_user(username='testuser2')
|
user2 = get_user_model().objects.create_user(username='testuser2')
|
||||||
data = {
|
data = {
|
||||||
'user': user2.id,
|
'user': user2.id,
|
||||||
}
|
}
|
||||||
@ -196,11 +197,11 @@ class ObjectPermissionTest(
|
|||||||
Group.objects.bulk_create(groups)
|
Group.objects.bulk_create(groups)
|
||||||
|
|
||||||
users = (
|
users = (
|
||||||
User(username='User 1', is_active=True),
|
get_user_model()(username='User 1', is_active=True),
|
||||||
User(username='User 2', is_active=True),
|
get_user_model()(username='User 2', is_active=True),
|
||||||
User(username='User 3', is_active=True),
|
get_user_model()(username='User 3', is_active=True),
|
||||||
)
|
)
|
||||||
User.objects.bulk_create(users)
|
get_user_model().objects.bulk_create(users)
|
||||||
|
|
||||||
object_type = ContentType.objects.get(app_label='dcim', model='device')
|
object_type = ContentType.objects.get(app_label='dcim', model='device')
|
||||||
|
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
import datetime
|
import datetime
|
||||||
|
|
||||||
from django.contrib.auth.models import Group, User
|
from django.contrib.auth import get_user_model
|
||||||
|
from django.contrib.auth.models import Group
|
||||||
from django.contrib.contenttypes.models import ContentType
|
from django.contrib.contenttypes.models import ContentType
|
||||||
from django.test import TestCase
|
from django.test import TestCase
|
||||||
from django.utils.timezone import make_aware
|
from django.utils.timezone import make_aware
|
||||||
@ -11,7 +12,7 @@ from utilities.testing import BaseFilterSetTests
|
|||||||
|
|
||||||
|
|
||||||
class UserTestCase(TestCase, BaseFilterSetTests):
|
class UserTestCase(TestCase, BaseFilterSetTests):
|
||||||
queryset = User.objects.all()
|
queryset = get_user_model().objects.all()
|
||||||
filterset = filtersets.UserFilterSet
|
filterset = filtersets.UserFilterSet
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
@ -25,39 +26,39 @@ class UserTestCase(TestCase, BaseFilterSetTests):
|
|||||||
Group.objects.bulk_create(groups)
|
Group.objects.bulk_create(groups)
|
||||||
|
|
||||||
users = (
|
users = (
|
||||||
User(
|
get_user_model()(
|
||||||
username='User1',
|
username='User1',
|
||||||
first_name='Hank',
|
first_name='Hank',
|
||||||
last_name='Hill',
|
last_name='Hill',
|
||||||
email='hank@stricklandpropane.com',
|
email='hank@stricklandpropane.com',
|
||||||
is_staff=True
|
is_staff=True
|
||||||
),
|
),
|
||||||
User(
|
get_user_model()(
|
||||||
username='User2',
|
username='User2',
|
||||||
first_name='Dale',
|
first_name='Dale',
|
||||||
last_name='Gribble',
|
last_name='Gribble',
|
||||||
email='dale@dalesdeadbug.com'
|
email='dale@dalesdeadbug.com'
|
||||||
),
|
),
|
||||||
User(
|
get_user_model()(
|
||||||
username='User3',
|
username='User3',
|
||||||
first_name='Bill',
|
first_name='Bill',
|
||||||
last_name='Dauterive',
|
last_name='Dauterive',
|
||||||
email='bill.dauterive@army.mil'
|
email='bill.dauterive@army.mil'
|
||||||
),
|
),
|
||||||
User(
|
get_user_model()(
|
||||||
username='User4',
|
username='User4',
|
||||||
first_name='Jeff',
|
first_name='Jeff',
|
||||||
last_name='Boomhauer',
|
last_name='Boomhauer',
|
||||||
email='boomhauer@dangolemail.com'
|
email='boomhauer@dangolemail.com'
|
||||||
),
|
),
|
||||||
User(
|
get_user_model()(
|
||||||
username='User5',
|
username='User5',
|
||||||
first_name='Debbie',
|
first_name='Debbie',
|
||||||
last_name='Grund',
|
last_name='Grund',
|
||||||
is_active=False
|
is_active=False
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
User.objects.bulk_create(users)
|
get_user_model().objects.bulk_create(users)
|
||||||
|
|
||||||
users[0].groups.set([groups[0]])
|
users[0].groups.set([groups[0]])
|
||||||
users[1].groups.set([groups[1]])
|
users[1].groups.set([groups[1]])
|
||||||
@ -129,11 +130,11 @@ class ObjectPermissionTestCase(TestCase, BaseFilterSetTests):
|
|||||||
Group.objects.bulk_create(groups)
|
Group.objects.bulk_create(groups)
|
||||||
|
|
||||||
users = (
|
users = (
|
||||||
User(username='User1'),
|
get_user_model()(username='User1'),
|
||||||
User(username='User2'),
|
get_user_model()(username='User2'),
|
||||||
User(username='User3'),
|
get_user_model()(username='User3'),
|
||||||
)
|
)
|
||||||
User.objects.bulk_create(users)
|
get_user_model().objects.bulk_create(users)
|
||||||
|
|
||||||
object_types = (
|
object_types = (
|
||||||
ContentType.objects.get(app_label='dcim', model='site'),
|
ContentType.objects.get(app_label='dcim', model='site'),
|
||||||
@ -172,7 +173,7 @@ class ObjectPermissionTestCase(TestCase, BaseFilterSetTests):
|
|||||||
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
|
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
|
||||||
|
|
||||||
def test_user(self):
|
def test_user(self):
|
||||||
users = User.objects.filter(username__in=['User1', 'User2'])
|
users = get_user_model().objects.filter(username__in=['User1', 'User2'])
|
||||||
params = {'user_id': [users[0].pk, users[1].pk]}
|
params = {'user_id': [users[0].pk, users[1].pk]}
|
||||||
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
|
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
|
||||||
params = {'user': [users[0].username, users[1].username]}
|
params = {'user': [users[0].username, users[1].username]}
|
||||||
@ -196,11 +197,11 @@ class TokenTestCase(TestCase, BaseFilterSetTests):
|
|||||||
def setUpTestData(cls):
|
def setUpTestData(cls):
|
||||||
|
|
||||||
users = (
|
users = (
|
||||||
User(username='User1'),
|
get_user_model()(username='User1'),
|
||||||
User(username='User2'),
|
get_user_model()(username='User2'),
|
||||||
User(username='User3'),
|
get_user_model()(username='User3'),
|
||||||
)
|
)
|
||||||
User.objects.bulk_create(users)
|
get_user_model().objects.bulk_create(users)
|
||||||
|
|
||||||
future_date = make_aware(datetime.datetime(3000, 1, 1))
|
future_date = make_aware(datetime.datetime(3000, 1, 1))
|
||||||
past_date = make_aware(datetime.datetime(2000, 1, 1))
|
past_date = make_aware(datetime.datetime(2000, 1, 1))
|
||||||
@ -212,7 +213,7 @@ class TokenTestCase(TestCase, BaseFilterSetTests):
|
|||||||
Token.objects.bulk_create(tokens)
|
Token.objects.bulk_create(tokens)
|
||||||
|
|
||||||
def test_user(self):
|
def test_user(self):
|
||||||
users = User.objects.order_by('id')[:2]
|
users = get_user_model().objects.order_by('id')[:2]
|
||||||
params = {'user_id': [users[0].pk, users[1].pk]}
|
params = {'user_id': [users[0].pk, users[1].pk]}
|
||||||
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
|
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
|
||||||
params = {'user': [users[0].username, users[1].username]}
|
params = {'user': [users[0].username, users[1].username]}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
from django.contrib.auth.models import User
|
from django.contrib.auth import get_user_model
|
||||||
from django.test import TestCase
|
from django.test import TestCase
|
||||||
|
|
||||||
|
|
||||||
@ -7,7 +7,7 @@ class UserConfigTest(TestCase):
|
|||||||
@classmethod
|
@classmethod
|
||||||
def setUpTestData(cls):
|
def setUpTestData(cls):
|
||||||
|
|
||||||
user = User.objects.create_user(username='testuser')
|
user = get_user_model().objects.create_user(username='testuser')
|
||||||
user.config.data = {
|
user.config.data = {
|
||||||
'a': True,
|
'a': True,
|
||||||
'b': {
|
'b': {
|
||||||
@ -29,7 +29,7 @@ class UserConfigTest(TestCase):
|
|||||||
user.config.save()
|
user.config.save()
|
||||||
|
|
||||||
def test_get(self):
|
def test_get(self):
|
||||||
userconfig = User.objects.get(username='testuser').config
|
userconfig = get_user_model().objects.get(username='testuser').config
|
||||||
|
|
||||||
# Retrieve root and nested values
|
# Retrieve root and nested values
|
||||||
self.assertEqual(userconfig.get('a'), True)
|
self.assertEqual(userconfig.get('a'), True)
|
||||||
@ -49,7 +49,7 @@ class UserConfigTest(TestCase):
|
|||||||
self.assertEqual(userconfig.get('b.foo.x.invalid', 'DEFAULT'), 'DEFAULT')
|
self.assertEqual(userconfig.get('b.foo.x.invalid', 'DEFAULT'), 'DEFAULT')
|
||||||
|
|
||||||
def test_all(self):
|
def test_all(self):
|
||||||
userconfig = User.objects.get(username='testuser').config
|
userconfig = get_user_model().objects.get(username='testuser').config
|
||||||
flattened_data = {
|
flattened_data = {
|
||||||
'a': True,
|
'a': True,
|
||||||
'b.foo': 101,
|
'b.foo': 101,
|
||||||
@ -63,7 +63,7 @@ class UserConfigTest(TestCase):
|
|||||||
self.assertEqual(userconfig.all(), flattened_data)
|
self.assertEqual(userconfig.all(), flattened_data)
|
||||||
|
|
||||||
def test_set(self):
|
def test_set(self):
|
||||||
userconfig = User.objects.get(username='testuser').config
|
userconfig = get_user_model().objects.get(username='testuser').config
|
||||||
|
|
||||||
# Overwrite existing values
|
# Overwrite existing values
|
||||||
userconfig.set('a', 'abc')
|
userconfig.set('a', 'abc')
|
||||||
@ -92,7 +92,7 @@ class UserConfigTest(TestCase):
|
|||||||
userconfig.set('a.x', 1)
|
userconfig.set('a.x', 1)
|
||||||
|
|
||||||
def test_clear(self):
|
def test_clear(self):
|
||||||
userconfig = User.objects.get(username='testuser').config
|
userconfig = get_user_model().objects.get(username='testuser').config
|
||||||
|
|
||||||
# Clear existing values
|
# Clear existing values
|
||||||
userconfig.clear('a')
|
userconfig.clear('a')
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
from django.contrib.auth.models import User
|
from django.contrib.auth import get_user_model
|
||||||
from django.test import override_settings
|
from django.test import override_settings
|
||||||
from django.test.client import RequestFactory
|
from django.test.client import RequestFactory
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
@ -39,7 +39,7 @@ class UserPreferencesTest(TestCase):
|
|||||||
|
|
||||||
@override_settings(DEFAULT_USER_PREFERENCES=DEFAULT_USER_PREFERENCES)
|
@override_settings(DEFAULT_USER_PREFERENCES=DEFAULT_USER_PREFERENCES)
|
||||||
def test_default_preferences(self):
|
def test_default_preferences(self):
|
||||||
user = User.objects.create(username='User 1')
|
user = get_user_model().objects.create(username='User 1')
|
||||||
userconfig = user.config
|
userconfig = user.config
|
||||||
|
|
||||||
self.assertEqual(userconfig.data, DEFAULT_USER_PREFERENCES)
|
self.assertEqual(userconfig.data, DEFAULT_USER_PREFERENCES)
|
||||||
|
@ -2,7 +2,7 @@ import inspect
|
|||||||
import json
|
import json
|
||||||
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth import get_user_model
|
||||||
from django.contrib.contenttypes.models import ContentType
|
from django.contrib.contenttypes.models import ContentType
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
from django.test import override_settings
|
from django.test import override_settings
|
||||||
@ -45,7 +45,7 @@ class APITestCase(ModelTestCase):
|
|||||||
Create a user and token for API calls.
|
Create a user and token for API calls.
|
||||||
"""
|
"""
|
||||||
# Create the test user and assign permissions
|
# Create the test user and assign permissions
|
||||||
self.user = User.objects.create_user(username='testuser')
|
self.user = get_user_model().objects.create_user(username='testuser')
|
||||||
self.add_permissions(*self.user_permissions)
|
self.add_permissions(*self.user_permissions)
|
||||||
self.token = Token.objects.create(user=self.user)
|
self.token = Token.objects.create(user=self.user)
|
||||||
self.header = {'HTTP_AUTHORIZATION': f'Token {self.token.key}'}
|
self.header = {'HTTP_AUTHORIZATION': f'Token {self.token.key}'}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import json
|
import json
|
||||||
|
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth import get_user_model
|
||||||
from django.contrib.contenttypes.models import ContentType
|
from django.contrib.contenttypes.models import ContentType
|
||||||
from django.contrib.postgres.fields import ArrayField
|
from django.contrib.postgres.fields import ArrayField
|
||||||
from django.core.exceptions import FieldDoesNotExist
|
from django.core.exceptions import FieldDoesNotExist
|
||||||
@ -27,7 +27,7 @@ class TestCase(_TestCase):
|
|||||||
def setUp(self):
|
def setUp(self):
|
||||||
|
|
||||||
# Create the test user and assign permissions
|
# Create the test user and assign permissions
|
||||||
self.user = User.objects.create_user(username='testuser')
|
self.user = get_user_model().objects.create_user(username='testuser')
|
||||||
self.add_permissions(*self.user_permissions)
|
self.add_permissions(*self.user_permissions)
|
||||||
|
|
||||||
# Initialize the test client
|
# Initialize the test client
|
||||||
|
@ -2,7 +2,8 @@ import logging
|
|||||||
import re
|
import re
|
||||||
from contextlib import contextmanager
|
from contextlib import contextmanager
|
||||||
|
|
||||||
from django.contrib.auth.models import Permission, User
|
from django.contrib.auth import get_user_model
|
||||||
|
from django.contrib.auth.models import Permission
|
||||||
from django.utils.text import slugify
|
from django.utils.text import slugify
|
||||||
|
|
||||||
from dcim.models import Device, DeviceRole, DeviceType, Manufacturer, Site
|
from dcim.models import Device, DeviceRole, DeviceType, Manufacturer, Site
|
||||||
@ -63,7 +64,7 @@ def create_test_user(username='testuser', permissions=None):
|
|||||||
"""
|
"""
|
||||||
Create a User with the given permissions.
|
Create a User with the given permissions.
|
||||||
"""
|
"""
|
||||||
user = User.objects.create_user(username=username)
|
user = get_user_model().objects.create_user(username=username)
|
||||||
if permissions is None:
|
if permissions is None:
|
||||||
permissions = ()
|
permissions = ()
|
||||||
for perm_name in permissions:
|
for perm_name in permissions:
|
||||||
|
Loading…
Reference in New Issue
Block a user