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:
2
.github/ISSUE_TEMPLATE/bug_report.yaml
vendored
2
.github/ISSUE_TEMPLATE/bug_report.yaml
vendored
@ -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
|
||||||
|
2
.github/ISSUE_TEMPLATE/feature_request.yaml
vendored
2
.github/ISSUE_TEMPLATE/feature_request.yaml
vendored
@ -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
|
||||||
|
@ -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
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
@ -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,
|
||||||
|
@ -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
|
||||||
)
|
)
|
||||||
|
@ -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')
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
Reference in New Issue
Block a user