1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00

Merge branch 'develop' into feature

This commit is contained in:
jeremystretch
2022-11-01 17:13:11 -04:00
9 changed files with 40 additions and 9 deletions

View File

@ -14,7 +14,7 @@ body:
attributes: attributes:
label: NetBox version label: NetBox version
description: What version of NetBox are you currently running? description: What version of NetBox are you currently running?
placeholder: v3.3.6 placeholder: v3.3.7
validations: validations:
required: true required: true
- type: dropdown - type: dropdown

View File

@ -14,7 +14,7 @@ body:
attributes: attributes:
label: NetBox version label: NetBox version
description: What version of NetBox are you currently running? description: What version of NetBox are you currently running?
placeholder: v3.3.6 placeholder: v3.3.7
validations: validations:
required: true required: true
- type: dropdown - type: dropdown

View File

@ -1,6 +1,18 @@
# NetBox v3.3 # NetBox v3.3
## v3.3.7 (FUTURE) ## v3.3.8 (FUTURE)
---
## v3.3.7 (2022-11-01)
### Bug Fixes
* [#10282](https://github.com/netbox-community/netbox/issues/10282) - Enforce advisory locks when allocating available IP addresses to prevent race conditions
* [#10770](https://github.com/netbox-community/netbox/issues/10282) - Fix social authentication for new users
* [#10791](https://github.com/netbox-community/netbox/issues/10791) - Permit nullifying VLAN group `scope_type` via REST API
* [#10803](https://github.com/netbox-community/netbox/issues/10803) - Fix exception when ordering contacts by number of assignments
* [#10809](https://github.com/netbox-community/netbox/issues/10809) - Permit nullifying site `time_zone` via REST API
--- ---

View File

@ -130,7 +130,7 @@ class SiteSerializer(NetBoxModelSerializer):
region = NestedRegionSerializer(required=False, allow_null=True) region = NestedRegionSerializer(required=False, allow_null=True)
group = NestedSiteGroupSerializer(required=False, allow_null=True) group = NestedSiteGroupSerializer(required=False, allow_null=True)
tenant = NestedTenantSerializer(required=False, allow_null=True) tenant = NestedTenantSerializer(required=False, allow_null=True)
time_zone = TimeZoneSerializerField(required=False) time_zone = TimeZoneSerializerField(required=False, allow_null=True)
asns = SerializedPKRelatedField( asns = SerializedPKRelatedField(
queryset=ASN.objects.all(), queryset=ASN.objects.all(),
serializer=NestedASNSerializer, serializer=NestedASNSerializer,

View File

@ -175,6 +175,7 @@ class VLANGroupSerializer(NetBoxModelSerializer):
queryset=ContentType.objects.filter( queryset=ContentType.objects.filter(
model__in=VLANGROUP_SCOPE_TYPES model__in=VLANGROUP_SCOPE_TYPES
), ),
allow_null=True,
required=False, required=False,
default=None default=None
) )

View File

@ -112,6 +112,18 @@ class IPAddressViewSet(NetBoxModelViewSet):
serializer_class = serializers.IPAddressSerializer serializer_class = serializers.IPAddressSerializer
filterset_class = filtersets.IPAddressFilterSet filterset_class = filtersets.IPAddressFilterSet
@advisory_lock(ADVISORY_LOCK_KEYS['available-ips'])
def create(self, request, *args, **kwargs):
return super().create(request, *args, **kwargs)
@advisory_lock(ADVISORY_LOCK_KEYS['available-ips'])
def update(self, request, *args, **kwargs):
return super().update(request, *args, **kwargs)
@advisory_lock(ADVISORY_LOCK_KEYS['available-ips'])
def destroy(self, request, *args, **kwargs):
return super().destroy(request, *args, **kwargs)
class FHRPGroupViewSet(NetBoxModelViewSet): class FHRPGroupViewSet(NetBoxModelViewSet):
queryset = FHRPGroup.objects.prefetch_related('ip_addresses', 'tags') queryset = FHRPGroup.objects.prefetch_related('ip_addresses', 'tags')

View File

@ -496,7 +496,7 @@ for param in dir(configuration):
# Force usage of PostgreSQL's JSONB field for extra data # Force usage of PostgreSQL's JSONB field for extra data
SOCIAL_AUTH_JSONFIELD_ENABLED = True SOCIAL_AUTH_JSONFIELD_ENABLED = True
SOCIAL_AUTH_CLEAN_USERNAME_FUNCTION = 'netbox.users.utils.clean_username' SOCIAL_AUTH_CLEAN_USERNAME_FUNCTION = 'users.utils.clean_username'
# #
# Django Prometheus # Django Prometheus

View File

@ -195,6 +195,8 @@ class ContactGroupView(generic.ObjectView):
contacts = Contact.objects.restrict(request.user, 'view').filter( contacts = Contact.objects.restrict(request.user, 'view').filter(
group=instance group=instance
).annotate(
assignment_count=count_related(ContactAssignment, 'contact')
) )
contacts_table = tables.ContactTable(contacts, user=request.user, exclude=('group',)) contacts_table = tables.ContactTable(contacts, user=request.user, exclude=('group',))
contacts_table.configure(request) contacts_table.configure(request)
@ -353,14 +355,18 @@ class ContactBulkImportView(generic.BulkImportView):
class ContactBulkEditView(generic.BulkEditView): class ContactBulkEditView(generic.BulkEditView):
queryset = Contact.objects.all() queryset = Contact.objects.annotate(
assignment_count=count_related(ContactAssignment, 'contact')
)
filterset = filtersets.ContactFilterSet filterset = filtersets.ContactFilterSet
table = tables.ContactTable table = tables.ContactTable
form = forms.ContactBulkEditForm form = forms.ContactBulkEditForm
class ContactBulkDeleteView(generic.BulkDeleteView): class ContactBulkDeleteView(generic.BulkDeleteView):
queryset = Contact.objects.all() queryset = Contact.objects.annotate(
assignment_count=count_related(ContactAssignment, 'contact')
)
filterset = filtersets.ContactFilterSet filterset = filtersets.ContactFilterSet
table = tables.ContactTable table = tables.ContactTable

View File

@ -22,7 +22,7 @@ Markdown==3.3.7
mkdocs-material==8.5.7 mkdocs-material==8.5.7
mkdocstrings[python-legacy]==0.19.0 mkdocstrings[python-legacy]==0.19.0
netaddr==0.8.0 netaddr==0.8.0
Pillow==9.2.0 Pillow==9.3.0
psycopg2-binary==2.9.5 psycopg2-binary==2.9.5
PyYAML==6.0 PyYAML==6.0
sentry-sdk==1.10.1 sentry-sdk==1.10.1
@ -30,7 +30,7 @@ social-auth-app-django==5.0.0
social-auth-core[openidconnect]==4.3.0 social-auth-core[openidconnect]==4.3.0
svgwrite==1.4.3 svgwrite==1.4.3
tablib==3.2.1 tablib==3.2.1
tzdata==2022.5 tzdata==2022.6
# Workaround for #7401 # Workaround for #7401
jsonschema==3.2.0 jsonschema==3.2.0