mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-14 09:51:22 -06:00
Merge branch 'develop' into feature
This commit is contained in:
commit
c78da79ce6
52
docs/administration/authentication/google.md
Normal file
52
docs/administration/authentication/google.md
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
# Google
|
||||||
|
|
||||||
|
This guide explains how to configure single sign-on (SSO) support for NetBox using [Google OAuth2](https://developers.google.com/identity/protocols/oauth2/web-server) as an authentication backend.
|
||||||
|
|
||||||
|
## Google OAuth2 Configuration
|
||||||
|
|
||||||
|
1. Log into [console.cloud.google.com](https://console.cloud.google.com/).
|
||||||
|
2. Create new project for NetBox.
|
||||||
|
3. Under "APIs and Services" click "OAuth consent screen" and enter the required information.
|
||||||
|
4. Under "Credentials," click "Create Credentials" and select "OAuth 2.0 Client ID." Select type "Web application."
|
||||||
|
- "Authorized JavaScript origins" should follow the format `http[s]://<netbox>[:<port>]`
|
||||||
|
- "Authorized redirect URIs" should follow the format `http[s]://<netbox>[:<port>]/oauth/complete/google-oauth2/`
|
||||||
|
5. Copy the "Client ID" and "Client Secret" values somewhere convenient.
|
||||||
|
|
||||||
|
!!! note
|
||||||
|
Google requires the NetBox hostname to use a public top-level-domain (e.g. `.com`, `.net`). The use of IP addresses is not permitted (except `127.0.0.1`).
|
||||||
|
|
||||||
|
For more information, consult [Google's documentation](https://developers.google.com/identity/protocols/oauth2/web-server#prerequisites).
|
||||||
|
|
||||||
|
## NetBox Configuration
|
||||||
|
|
||||||
|
### 1. Enter configuration parameters
|
||||||
|
|
||||||
|
Enter the following configuration parameters in `configuration.py`, substituting your own values:
|
||||||
|
|
||||||
|
```python
|
||||||
|
REMOTE_AUTH_BACKEND = 'social_core.backends.google.GoogleOAuth2'
|
||||||
|
SOCIAL_AUTH_GOOGLE_OAUTH2_KEY = '{CLIENT_ID}'
|
||||||
|
SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET = '{CLIENT_SECRET}'
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. Restart NetBox
|
||||||
|
|
||||||
|
Restart the NetBox services so that the new configuration takes effect. This is typically done with the command below:
|
||||||
|
|
||||||
|
```no-highlight
|
||||||
|
sudo systemctl restart netbox
|
||||||
|
```
|
||||||
|
|
||||||
|
## Testing
|
||||||
|
|
||||||
|
Log out of NetBox if already authenticated, and click the "Log In" button at top right. You should see the normal login form as well as an option to authenticate using Google. Click that link.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
You should be redirected to Google's authentication portal. Enter the username/email and password of your test account to continue. You may also be prompted to grant this application access to your account.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
If successful, you will be redirected back to the NetBox UI, and will be logged in as the Google user. You can verify this by navigating to your profile (using the button at top right).
|
||||||
|
|
||||||
|
This user account has been replicated locally to NetBox, and can now be assigned groups and permissions.
|
@ -16,7 +16,7 @@ Under the Azure Active Directory dashboard, navigate to **Add > App registration
|
|||||||
|
|
||||||
Enter a name for the registration (e.g. "NetBox") and ensure that the "single tenant" option is selected.
|
Enter a name for the registration (e.g. "NetBox") and ensure that the "single tenant" option is selected.
|
||||||
|
|
||||||
Under "Redirect URI", select "Web" for the platform and enter the path to your NetBox installation, ending with `/oauth/complete/entraid-oauth2/`. Note that this URI **must** begin with `https://` unless you are referencing localhost (for development purposes).
|
Under "Redirect URI", select "Web" for the platform and enter the path to your NetBox installation, ending with `/oauth/complete/azuread-oauth2/`. Note that this URI **must** begin with `https://` unless you are referencing localhost (for development purposes).
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
@ -72,6 +72,9 @@ script_order = (MyCustomScript, AnotherCustomScript)
|
|||||||
|
|
||||||
Script attributes are defined under a class named `Meta` within the script. These are optional, but encouraged.
|
Script attributes are defined under a class named `Meta` within the script. These are optional, but encouraged.
|
||||||
|
|
||||||
|
!!! warning
|
||||||
|
These are also defined and used as properties on the base custom script class, so don't use the same names as variables or override them in your custom script.
|
||||||
|
|
||||||
### `name`
|
### `name`
|
||||||
|
|
||||||
This is the human-friendly names of your script. If omitted, the class name will be used.
|
This is the human-friendly names of your script. If omitted, the class name will be used.
|
||||||
|
@ -76,4 +76,4 @@ When adding a new dependency, a short description of the package and the URL of
|
|||||||
|
|
||||||
* When referring to NetBox in writing, use the proper form "NetBox," with the letters N and B capitalized. The lowercase form "netbox" should be used in code, filenames, etc. but never "Netbox" or any other deviation.
|
* When referring to NetBox in writing, use the proper form "NetBox," with the letters N and B capitalized. The lowercase form "netbox" should be used in code, filenames, etc. but never "Netbox" or any other deviation.
|
||||||
|
|
||||||
* There is an SVG form of the NetBox logo at [docs/netbox_logo.svg](../netbox_logo.svg). It is preferred to use this logo for all purposes as it scales to arbitrary sizes without loss of resolution. If a raster image is required, the SVG logo should be converted to a PNG image of the prescribed size.
|
* There are SVG forms of the NetBox logo for both [light mode](../netbox_logo_light.svg) and [dark mode](../netbox_logo_dark.svg) available. It is preferred to use the SVG logo for all purposes as it scales to arbitrary sizes without loss of resolution. If a raster image is required, the SVG logo should be converted to a PNG image of the desired size.
|
||||||
|
@ -5,6 +5,10 @@ img {
|
|||||||
margin-right: auto;
|
margin-right: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.md-content img {
|
||||||
|
background-color: rgba(255, 255, 255, 0.64);
|
||||||
|
}
|
||||||
|
|
||||||
/* Tables */
|
/* Tables */
|
||||||
table {
|
table {
|
||||||
margin-bottom: 24px;
|
margin-bottom: 24px;
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
{style="height: 100px; margin-bottom: 3em"}
|
{style="height: 100px; margin-bottom: 3em; background: none;"}
|
||||||
|
{style="height: 100px; margin-bottom: 3em; background: none;"}
|
||||||
|
|
||||||
# The Premier Network Source of Truth
|
# The Premier Network Source of Truth
|
||||||
|
|
||||||
|
BIN
docs/media/authentication/google_login_portal.png
Normal file
BIN
docs/media/authentication/google_login_portal.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 28 KiB |
BIN
docs/media/authentication/netbox_google_login.png
Normal file
BIN
docs/media/authentication/netbox_google_login.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 20 KiB |
24
docs/netbox_logo_dark.svg
Normal file
24
docs/netbox_logo_dark.svg
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg id="Layer_2" data-name="Layer 2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1299.6 366">
|
||||||
|
<defs>
|
||||||
|
<style>
|
||||||
|
.cls-1 {
|
||||||
|
fill: #00f2d4;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cls-1, .cls-2 {
|
||||||
|
stroke-width: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cls-2 {
|
||||||
|
fill: #fff;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</defs>
|
||||||
|
<g id="Layer_1-2" data-name="Layer 1">
|
||||||
|
<g>
|
||||||
|
<path class="cls-2" d="M337.27,228.59c-12.35,0-22.88,7.8-26.94,18.74h-174.71c-2.9-7.83-9.12-14.04-16.95-16.95V55.67c10.94-4.06,18.74-14.59,18.74-26.94,0-15.87-12.86-28.73-28.73-28.73s-28.73,12.86-28.73,28.73c0,12.35,7.8,22.88,18.74,26.94v174.71c-10.94,4.06-18.74,14.59-18.74,26.94,0,4.28.94,8.33,2.62,11.98l-41.85,41.85c-3.65-1.68-7.7-2.62-11.98-2.62-15.87,0-28.73,12.86-28.73,28.73s12.86,28.73,28.73,28.73,28.73-12.86,28.73-28.73c0-4.28-.94-8.33-2.62-11.98l41.85-41.85c3.65,1.68,7.7,2.62,11.98,2.62,12.35,0,22.88-7.8,26.94-18.74h174.71c4.06,10.94,14.59,18.74,26.94,18.74,15.87,0,28.73-12.86,28.73-28.73s-12.86-28.73-28.73-28.73Z"/>
|
||||||
|
<path class="cls-1" d="M366,28.73c0,15.87-12.86,28.73-28.73,28.73-4.28,0-8.33-.94-11.98-2.62l-41.85,41.85c1.68,3.65,2.62,7.7,2.62,11.98,0,12.35-7.8,22.88-18.74,26.94v174.71c10.94,4.06,18.74,14.59,18.74,26.94,0,15.87-12.86,28.73-28.73,28.73s-28.73-12.86-28.73-28.73c0-12.35,7.8-22.88,18.74-26.94v-174.71c-7.83-2.9-14.04-9.12-16.95-16.95H55.67c-4.06,10.94-14.59,18.74-26.94,18.74-15.87,0-28.73-12.86-28.73-28.73s12.86-28.73,28.73-28.73c12.35,0,22.88,7.8,26.94,18.74h174.71c4.06-10.94,14.59-18.74,26.94-18.74,4.28,0,8.33.94,11.98,2.62l41.85-41.85c-1.68-3.65-2.62-7.7-2.62-11.98,0-15.87,12.86-28.73,28.73-28.73s28.73,12.86,28.73,28.73ZM579.76,136.45c-4.63-4.38-10.18-7.68-16.24-9.66-6.09-2.07-12.48-3.11-18.91-3.08-9.75-.17-19.37,2.17-27.95,6.78-2.68,1.56-5.23,3.35-7.61,5.34v-9.04h-34.53v134.64h34.53v-69.06c-.08-5.7.68-11.38,2.26-16.86,1.26-4.03,3.36-7.74,6.17-10.89,2.41-2.69,5.44-4.74,8.84-5.96,3.71-1.26,7.6-1.89,11.51-1.85,2.99,0,5.97.41,8.84,1.23,2.62.91,5,2.38,6.99,4.32,2.11,2.28,3.78,4.93,4.93,7.81,1.32,4.12,1.95,8.42,1.85,12.74v78.52h34.53v-85.1c.22-7.94-1.18-15.84-4.11-23.23-2.37-6.33-6.16-12.03-11.1-16.65ZM744.41,169.34c2.28,8.16,3.46,16.6,3.49,25.08v13.77h-98.46c.38,2.33,1.22,4.57,2.47,6.58,1.83,3.77,4.51,7.08,7.81,9.66,3.42,2.8,7.32,4.96,11.51,6.37,4.42,1.57,9.08,2.33,13.77,2.26,5.63.24,11.21-1.19,16.03-4.11,5.19-3.31,9.78-7.48,13.57-12.33l3.49-4.11,26.31,20.14-3.29,4.52c-14.18,18.09-34.12,27.34-59.2,27.34-9.78.09-19.49-1.72-28.57-5.34-8.34-3.34-15.84-8.46-21.99-15.01-6.02-6.49-10.7-14.1-13.77-22.4-3.18-8.83-4.78-18.16-4.73-27.54-.02-9.49,1.72-18.9,5.14-27.75,3.36-8.35,8.32-15.96,14.59-22.4,6.24-6.44,13.72-11.54,21.99-15.01,8.74-3.58,18.1-5.4,27.54-5.34,11.92,0,21.99,2.06,30.42,6.37,7.92,3.9,14.87,9.52,20.35,16.44,5.36,6.74,9.28,14.5,11.51,22.82ZM711.31,178.39c-.43-2.36-.98-4.69-1.64-6.99-1.14-3.45-3.04-6.61-5.55-9.25-2.45-2.78-5.56-4.9-9.04-6.17-8.68-3.42-18.36-3.27-26.93.41-3.87,1.69-7.37,4.13-10.28,7.19-2.81,2.83-5.05,6.18-6.58,9.87-.73,1.58-1.28,3.23-1.64,4.93h61.66ZM827.24,230.8c-2.56.57-5.18.84-7.81.82-2.41.12-4.82-.37-6.99-1.44-1.42-1.08-2.55-2.49-3.29-4.11-.93-2.36-1.42-4.87-1.44-7.4-.21-3.29-.41-6.58-.41-9.87v-50.57h33.71v-31.45h-33.71v-34.53h-34.53v34.53h-21.79v31.45h21.79v58.79c-.04,5.15.24,10.3.82,15.42.38,5.56,1.99,10.97,4.73,15.83,3.21,5.18,7.85,9.32,13.36,11.92,5.76,2.88,13.36,4.32,23.43,4.32,3.71-.04,7.42-.31,11.1-.82,4.47-.56,8.79-1.95,12.74-4.11l2.88-1.44v-34.33l-8.43,4.93c-1.93,1.02-4.01,1.72-6.17,2.06ZM997.03,166.46c3.16,8.91,4.76,18.3,4.73,27.75.04,9.32-1.56,18.57-4.73,27.34-3.07,8.3-7.75,15.92-13.77,22.4-6.1,6.56-13.53,11.74-21.79,15.21-8.94,3.62-18.51,5.44-28.16,5.34-9.17-.04-18.22-2.07-26.52-5.96-4.12-1.71-7.93-4.07-11.31-6.99v9.87h-34.53V53.41h34.53v83.04c3.23-2.59,6.75-4.8,10.48-6.58,8.54-4.07,17.88-6.18,27.34-6.17,9.65-.09,19.22,1.72,28.16,5.34,8.18,3.52,15.58,8.62,21.79,15.01,5.91,6.58,10.57,14.17,13.77,22.4ZM963.11,178.8c-1.41-4.39-3.8-8.39-6.99-11.72-3.07-3.26-6.78-5.85-10.89-7.61-9.47-3.57-19.92-3.57-29.39,0-4.12,1.76-7.83,4.35-10.89,7.61-3.12,3.37-5.5,7.37-6.99,11.72-1.71,4.96-2.55,10.17-2.47,15.42-.05,5.24.78,10.45,2.47,15.42,1.54,4.27,3.91,8.18,6.99,11.51,3.01,3.32,6.74,5.92,10.89,7.61,9.42,3.83,19.97,3.83,29.39,0,4.16-1.68,7.88-4.28,10.89-7.61,3.15-3.28,5.54-7.21,6.99-11.51,1.68-4.96,2.52-10.18,2.47-15.42.07-5.24-.77-10.46-2.47-15.42ZM1136.6,244.16c-28.24,27.15-72.89,27.15-101.13,0-13.17-13.29-20.56-31.24-20.55-49.95-.1-28.4,16.95-54.05,43.17-64.95,17.9-7.4,38.01-7.4,55.91,0,26.14,11,43.15,36.59,43.17,64.95,0,18.71-7.38,36.66-20.55,49.95ZM1118.51,178.8c-1.42-4.34-3.73-8.33-6.78-11.72-3.1-3.22-6.8-5.8-10.89-7.61-9.55-3.56-20.05-3.56-29.6,0-4.09,1.81-7.79,4.39-10.89,7.61-3.05,3.39-5.36,7.38-6.78,11.72-1.88,4.92-2.79,10.15-2.67,15.42-.08,5.26.82,10.49,2.67,15.42,1.47,4.25,3.77,8.17,6.78,11.51,3.05,3.28,6.77,5.87,10.89,7.61,9.49,3.84,20.11,3.84,29.6,0,4.13-1.74,7.84-4.33,10.89-7.61,3.01-3.34,5.32-7.26,6.78-11.51,1.75-4.95,2.66-10.16,2.67-15.42,0-5.25-.9-10.47-2.67-15.42ZM1291.58,126.79h-42.34l-26.52,39.47-26.93-39.47h-44.4l48.1,63.1-54.27,71.53h42.96l33.5-47.69,33.71,47.69h44.19l-54.27-71.53,46.25-63.1Z"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 5.0 KiB |
Before Width: | Height: | Size: 5.0 KiB After Width: | Height: | Size: 5.0 KiB |
@ -1,5 +1,17 @@
|
|||||||
# NetBox v4.1
|
# NetBox v4.1
|
||||||
|
|
||||||
|
## v4.1.5 (FUTURE)
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* [#17710](https://github.com/netbox-community/netbox/issues/17710) - Remove cached fields on CableTermination model from GraphQL API
|
||||||
|
* [#17740](https://github.com/netbox-community/netbox/issues/17740) - Ensure support for image attachments with a `.webp` file extension
|
||||||
|
* [#17749](https://github.com/netbox-community/netbox/issues/17749) - Restore missing `devicetypes` and `children` fields for several objects in GraphQL API
|
||||||
|
* [#17754](https://github.com/netbox-community/netbox/issues/17754) - Remove paginator from version history table under plugin view
|
||||||
|
* [#17759](https://github.com/netbox-community/netbox/issues/17759) - Retain `job_timeout` value when scheduling a recurring custom script
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## v4.1.4 (2024-10-15)
|
## v4.1.4 (2024-10-15)
|
||||||
|
|
||||||
### Enhancements
|
### Enhancements
|
||||||
|
@ -156,6 +156,7 @@ nav:
|
|||||||
- Administration:
|
- Administration:
|
||||||
- Authentication:
|
- Authentication:
|
||||||
- Overview: 'administration/authentication/overview.md'
|
- Overview: 'administration/authentication/overview.md'
|
||||||
|
- Google: 'administration/authentication/google.md'
|
||||||
- Microsoft Entra ID: 'administration/authentication/microsoft-entra-id.md'
|
- Microsoft Entra ID: 'administration/authentication/microsoft-entra-id.md'
|
||||||
- Okta: 'administration/authentication/okta.md'
|
- Okta: 'administration/authentication/okta.md'
|
||||||
- Permissions: 'administration/permissions.md'
|
- Permissions: 'administration/permissions.md'
|
||||||
|
@ -112,7 +112,7 @@ class ModularComponentTemplateType(ComponentTemplateType):
|
|||||||
|
|
||||||
@strawberry_django.type(
|
@strawberry_django.type(
|
||||||
models.CableTermination,
|
models.CableTermination,
|
||||||
exclude=('termination_type', 'termination_id'),
|
exclude=('termination_type', 'termination_id', '_device', '_rack', '_location', '_site'),
|
||||||
filters=CableTerminationFilter
|
filters=CableTerminationFilter
|
||||||
)
|
)
|
||||||
class CableTerminationType(NetBoxObjectType):
|
class CableTerminationType(NetBoxObjectType):
|
||||||
@ -243,6 +243,7 @@ class DeviceType(ConfigContextMixin, ImageAttachmentsMixin, ContactsMixin, NetBo
|
|||||||
consoleserverports: List[Annotated["ConsoleServerPortType", strawberry.lazy('dcim.graphql.types')]]
|
consoleserverports: List[Annotated["ConsoleServerPortType", strawberry.lazy('dcim.graphql.types')]]
|
||||||
poweroutlets: List[Annotated["PowerOutletType", strawberry.lazy('dcim.graphql.types')]]
|
poweroutlets: List[Annotated["PowerOutletType", strawberry.lazy('dcim.graphql.types')]]
|
||||||
frontports: List[Annotated["FrontPortType", strawberry.lazy('dcim.graphql.types')]]
|
frontports: List[Annotated["FrontPortType", strawberry.lazy('dcim.graphql.types')]]
|
||||||
|
devicebays: List[Annotated["DeviceBayType", strawberry.lazy('dcim.graphql.types')]]
|
||||||
modulebays: List[Annotated["ModuleBayType", strawberry.lazy('dcim.graphql.types')]]
|
modulebays: List[Annotated["ModuleBayType", strawberry.lazy('dcim.graphql.types')]]
|
||||||
services: List[Annotated["ServiceType", strawberry.lazy('ipam.graphql.types')]]
|
services: List[Annotated["ServiceType", strawberry.lazy('ipam.graphql.types')]]
|
||||||
inventoryitems: List[Annotated["InventoryItemType", strawberry.lazy('dcim.graphql.types')]]
|
inventoryitems: List[Annotated["InventoryItemType", strawberry.lazy('dcim.graphql.types')]]
|
||||||
|
@ -49,7 +49,6 @@ class ScriptJob(JobRunner):
|
|||||||
script.log_info(message=_("Database changes have been reverted automatically."))
|
script.log_info(message=_("Database changes have been reverted automatically."))
|
||||||
if script.failed:
|
if script.failed:
|
||||||
logger.warning("Script failed")
|
logger.warning("Script failed")
|
||||||
raise
|
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
if type(e) is AbortScript:
|
if type(e) is AbortScript:
|
||||||
|
@ -33,7 +33,7 @@ def image_upload(instance, filename):
|
|||||||
|
|
||||||
# Rename the file to the provided name, if any. Attempt to preserve the file extension.
|
# Rename the file to the provided name, if any. Attempt to preserve the file extension.
|
||||||
extension = filename.rsplit('.')[-1].lower()
|
extension = filename.rsplit('.')[-1].lower()
|
||||||
if instance.name and extension in ['bmp', 'gif', 'jpeg', 'jpg', 'png']:
|
if instance.name and extension in ['bmp', 'gif', 'jpeg', 'jpg', 'png', 'webp']:
|
||||||
filename = '.'.join([instance.name, extension])
|
filename = '.'.join([instance.name, extension])
|
||||||
elif instance.name:
|
elif instance.name:
|
||||||
filename = instance.name
|
filename = instance.name
|
||||||
|
@ -20,10 +20,10 @@ AUTH_BACKEND_ATTRS = {
|
|||||||
'amazon': ('Amazon AWS', 'aws'),
|
'amazon': ('Amazon AWS', 'aws'),
|
||||||
'apple': ('Apple', 'apple'),
|
'apple': ('Apple', 'apple'),
|
||||||
'auth0': ('Auth0', None),
|
'auth0': ('Auth0', None),
|
||||||
'entraid-oauth2': ('Microsoft Entra ID', 'microsoft'),
|
'azuread-oauth2': ('Microsoft Entra ID', 'microsoft'),
|
||||||
'entraid-b2c-oauth2': ('Microsoft Entra ID', 'microsoft'),
|
'azuread-b2c-oauth2': ('Microsoft Entra ID', 'microsoft'),
|
||||||
'entraid-tenant-oauth2': ('Microsoft Entra ID', 'microsoft'),
|
'azuread-tenant-oauth2': ('Microsoft Entra ID', 'microsoft'),
|
||||||
'entraid-v2-tenant-oauth2': ('Microsoft Entra ID', 'microsoft'),
|
'azuread-v2-tenant-oauth2': ('Microsoft Entra ID', 'microsoft'),
|
||||||
'bitbucket': ('BitBucket', 'bitbucket'),
|
'bitbucket': ('BitBucket', 'bitbucket'),
|
||||||
'bitbucket-oauth2': ('BitBucket', 'bitbucket'),
|
'bitbucket-oauth2': ('BitBucket', 'bitbucket'),
|
||||||
'digitalocean': ('DigitalOcean', 'digital-ocean'),
|
'digitalocean': ('DigitalOcean', 'digital-ocean'),
|
||||||
|
@ -68,6 +68,8 @@ class JobRunner(ABC):
|
|||||||
finally:
|
finally:
|
||||||
if job.interval:
|
if job.interval:
|
||||||
new_scheduled_time = (job.scheduled or job.started) + timedelta(minutes=job.interval)
|
new_scheduled_time = (job.scheduled or job.started) + timedelta(minutes=job.interval)
|
||||||
|
if job.object and getattr(job.object, "python_class", None):
|
||||||
|
kwargs["job_timeout"] = job.object.python_class.job_timeout
|
||||||
cls.enqueue(
|
cls.enqueue(
|
||||||
instance=job.object,
|
instance=job.object,
|
||||||
user=job.user,
|
user=job.user,
|
||||||
|
BIN
netbox/project-static/dist/netbox.css
vendored
BIN
netbox/project-static/dist/netbox.css
vendored
Binary file not shown.
@ -28,16 +28,19 @@
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Remove the bottom margin of <p> elements inside a table cell
|
// Remove the bottom margin of the last <p> elements in markdown
|
||||||
td > .rendered-markdown {
|
.rendered-markdown {
|
||||||
max-height: 200px;
|
|
||||||
overflow-y: scroll;
|
|
||||||
|
|
||||||
p:last-of-type {
|
p:last-of-type {
|
||||||
margin-bottom: 0;
|
margin-bottom: 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// fix layout of rendered markdown inside a table cell
|
||||||
|
td > .rendered-markdown {
|
||||||
|
max-height: 200px;
|
||||||
|
overflow-y: scroll;
|
||||||
|
}
|
||||||
|
|
||||||
// Markdown preview
|
// Markdown preview
|
||||||
.markdown-widget {
|
.markdown-widget {
|
||||||
.preview {
|
.preview {
|
||||||
|
@ -131,6 +131,11 @@ body[data-bs-theme=dark] {
|
|||||||
.toast {
|
.toast {
|
||||||
color: var(--#{$prefix}body-color);
|
color: var(--#{$prefix}body-color);
|
||||||
}
|
}
|
||||||
|
.table-primary {
|
||||||
|
--tblr-table-bg: rgba(var(--tblr-secondary-rgb), 0.48);
|
||||||
|
--tblr-table-hover-bg: inherit;
|
||||||
|
--tblr-table-hover-color: inherit;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Do not apply padding to <code> elements inside a <pre>
|
// Do not apply padding to <code> elements inside a <pre>
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
{% load helpers %}
|
{% load helpers %}
|
||||||
{% load form_helpers %}
|
{% load form_helpers %}
|
||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
|
{% load render_table from django_tables2 %}
|
||||||
|
|
||||||
{% block title %}{{ plugin.title_long }}{% endblock %}
|
{% block title %}{{ plugin.title_long }}{% endblock %}
|
||||||
|
|
||||||
@ -93,8 +94,8 @@
|
|||||||
<div class="col col-6">
|
<div class="col col-6">
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<h2 class="card-header">{% trans "Version History" %}</h2>
|
<h2 class="card-header">{% trans "Version History" %}</h2>
|
||||||
<div class="htmx-container table-responsive" id="object_list">
|
<div class="table-responsive">
|
||||||
{% include 'htmx/table.html' %}
|
{% render_table table 'inc/table.html' %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
{% if 'bulk_rename' in actions %}
|
{% if 'bulk_rename' in actions %}
|
||||||
{% with bulk_rename_view=model|validated_viewname:"bulk_rename" %}
|
{% with bulk_rename_view=model|validated_viewname:"bulk_rename" %}
|
||||||
<button type="submit" name="_rename" {% formaction %}="{% url bulk_rename_view %}" class="btn btn-outline-warning">
|
<button type="submit" name="_rename" {% formaction %}="{% url bulk_rename_view %}" class="btn btn-outline-warning btn-float">
|
||||||
<i class="mdi mdi-pencil-outline" aria-hidden="true"></i> {% trans "Rename Selected" %}
|
<i class="mdi mdi-pencil-outline" aria-hidden="true"></i> {% trans "Rename Selected" %}
|
||||||
</button>
|
</button>
|
||||||
{% endwith %}
|
{% endwith %}
|
||||||
|
@ -78,7 +78,7 @@
|
|||||||
{% if 'bulk_edit' in actions %}
|
{% if 'bulk_edit' in actions %}
|
||||||
<div class="btn-group" role="group">
|
<div class="btn-group" role="group">
|
||||||
{% bulk_edit_button model query_params=request.GET %}
|
{% bulk_edit_button model query_params=request.GET %}
|
||||||
<button type="submit" name="_rename" {% formaction %}="{% url 'dcim:device_bulk_rename' %}?return_url={% url 'dcim:device_list' %}{% if request.GET %}?{{ request.GET.urlencode }}{% endif %}" class="btn btn-outline-warning">
|
<button type="submit" name="_rename" {% formaction %}="{% url 'dcim:device_bulk_rename' %}?return_url={% url 'dcim:device_list' %}{% if request.GET %}?{{ request.GET.urlencode }}{% endif %}" class="btn btn-outline-warning btn-float">
|
||||||
<i class="mdi mdi-pencil-outline" aria-hidden="true"></i> {% trans "Rename" %}
|
<i class="mdi mdi-pencil-outline" aria-hidden="true"></i> {% trans "Rename" %}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
@ -66,6 +66,7 @@ class TenantGroupType(OrganizationalObjectType):
|
|||||||
parent: Annotated["TenantGroupType", strawberry.lazy('tenancy.graphql.types')] | None
|
parent: Annotated["TenantGroupType", strawberry.lazy('tenancy.graphql.types')] | None
|
||||||
|
|
||||||
tenants: List[TenantType]
|
tenants: List[TenantType]
|
||||||
|
children: List[Annotated["TenantGroupType", strawberry.lazy('tenancy.graphql.types')]]
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -99,6 +100,7 @@ class ContactGroupType(OrganizationalObjectType):
|
|||||||
parent: Annotated["ContactGroupType", strawberry.lazy('tenancy.graphql.types')] | None
|
parent: Annotated["ContactGroupType", strawberry.lazy('tenancy.graphql.types')] | None
|
||||||
|
|
||||||
contacts: List[ContactType]
|
contacts: List[ContactType]
|
||||||
|
children: List[Annotated["ContactGroupType", strawberry.lazy('tenancy.graphql.types')]]
|
||||||
|
|
||||||
|
|
||||||
@strawberry_django.type(
|
@strawberry_django.type(
|
||||||
|
@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2024-10-16 05:01+0000\n"
|
"POT-Creation-Date: 2024-10-18 05:01+0000\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
@ -212,14 +212,13 @@ msgstr ""
|
|||||||
#: netbox/dcim/tables/power.py:26 netbox/dcim/tables/power.py:93
|
#: netbox/dcim/tables/power.py:26 netbox/dcim/tables/power.py:93
|
||||||
#: netbox/dcim/tables/racks.py:122 netbox/dcim/tables/racks.py:207
|
#: netbox/dcim/tables/racks.py:122 netbox/dcim/tables/racks.py:207
|
||||||
#: netbox/dcim/tables/sites.py:134 netbox/extras/filtersets.py:525
|
#: netbox/dcim/tables/sites.py:134 netbox/extras/filtersets.py:525
|
||||||
#: netbox/ipam/forms/bulk_edit.py:217 netbox/ipam/forms/bulk_edit.py:284
|
#: netbox/ipam/forms/bulk_edit.py:218 netbox/ipam/forms/bulk_edit.py:285
|
||||||
#: netbox/ipam/forms/bulk_edit.py:451 netbox/ipam/forms/bulk_edit.py:529
|
#: netbox/ipam/forms/bulk_edit.py:484 netbox/ipam/forms/bulk_import.py:171
|
||||||
#: netbox/ipam/forms/bulk_import.py:171 netbox/ipam/forms/bulk_import.py:429
|
#: netbox/ipam/forms/bulk_import.py:429 netbox/ipam/forms/filtersets.py:153
|
||||||
#: netbox/ipam/forms/filtersets.py:153 netbox/ipam/forms/filtersets.py:231
|
#: netbox/ipam/forms/filtersets.py:231 netbox/ipam/forms/filtersets.py:432
|
||||||
#: netbox/ipam/forms/filtersets.py:432 netbox/ipam/forms/filtersets.py:489
|
#: netbox/ipam/forms/filtersets.py:489 netbox/ipam/forms/model_forms.py:205
|
||||||
#: netbox/ipam/forms/model_forms.py:205 netbox/ipam/forms/model_forms.py:636
|
#: netbox/ipam/forms/model_forms.py:636 netbox/ipam/tables/ip.py:245
|
||||||
#: netbox/ipam/tables/ip.py:245 netbox/ipam/tables/vlans.py:118
|
#: netbox/ipam/tables/vlans.py:118 netbox/ipam/tables/vlans.py:221
|
||||||
#: netbox/ipam/tables/vlans.py:221
|
|
||||||
#: netbox/templates/circuits/inc/circuit_termination_fields.html:6
|
#: netbox/templates/circuits/inc/circuit_termination_fields.html:6
|
||||||
#: netbox/templates/dcim/device.html:22
|
#: netbox/templates/dcim/device.html:22
|
||||||
#: netbox/templates/dcim/inc/cable_termination.html:8
|
#: netbox/templates/dcim/inc/cable_termination.html:8
|
||||||
@ -415,13 +414,13 @@ msgstr ""
|
|||||||
#: netbox/extras/forms/bulk_edit.py:256 netbox/extras/forms/bulk_edit.py:274
|
#: netbox/extras/forms/bulk_edit.py:256 netbox/extras/forms/bulk_edit.py:274
|
||||||
#: netbox/extras/forms/bulk_edit.py:298 netbox/extras/forms/bulk_edit.py:312
|
#: netbox/extras/forms/bulk_edit.py:298 netbox/extras/forms/bulk_edit.py:312
|
||||||
#: netbox/extras/forms/bulk_edit.py:339 netbox/extras/tables/tables.py:79
|
#: netbox/extras/forms/bulk_edit.py:339 netbox/extras/tables/tables.py:79
|
||||||
#: netbox/ipam/forms/bulk_edit.py:52 netbox/ipam/forms/bulk_edit.py:72
|
#: netbox/ipam/forms/bulk_edit.py:53 netbox/ipam/forms/bulk_edit.py:73
|
||||||
#: netbox/ipam/forms/bulk_edit.py:92 netbox/ipam/forms/bulk_edit.py:116
|
#: netbox/ipam/forms/bulk_edit.py:93 netbox/ipam/forms/bulk_edit.py:117
|
||||||
#: netbox/ipam/forms/bulk_edit.py:145 netbox/ipam/forms/bulk_edit.py:174
|
#: netbox/ipam/forms/bulk_edit.py:146 netbox/ipam/forms/bulk_edit.py:175
|
||||||
#: netbox/ipam/forms/bulk_edit.py:193 netbox/ipam/forms/bulk_edit.py:275
|
#: netbox/ipam/forms/bulk_edit.py:194 netbox/ipam/forms/bulk_edit.py:276
|
||||||
#: netbox/ipam/forms/bulk_edit.py:320 netbox/ipam/forms/bulk_edit.py:368
|
#: netbox/ipam/forms/bulk_edit.py:321 netbox/ipam/forms/bulk_edit.py:369
|
||||||
#: netbox/ipam/forms/bulk_edit.py:411 netbox/ipam/forms/bulk_edit.py:427
|
#: netbox/ipam/forms/bulk_edit.py:412 netbox/ipam/forms/bulk_edit.py:428
|
||||||
#: netbox/ipam/forms/bulk_edit.py:561 netbox/ipam/forms/bulk_edit.py:592
|
#: netbox/ipam/forms/bulk_edit.py:516 netbox/ipam/forms/bulk_edit.py:547
|
||||||
#: netbox/templates/account/token.html:35
|
#: netbox/templates/account/token.html:35
|
||||||
#: netbox/templates/circuits/circuit.html:59
|
#: netbox/templates/circuits/circuit.html:59
|
||||||
#: netbox/templates/circuits/circuitgroup.html:32
|
#: netbox/templates/circuits/circuitgroup.html:32
|
||||||
@ -430,7 +429,7 @@ msgstr ""
|
|||||||
#: netbox/templates/circuits/provider.html:33
|
#: netbox/templates/circuits/provider.html:33
|
||||||
#: netbox/templates/circuits/providernetwork.html:32
|
#: netbox/templates/circuits/providernetwork.html:32
|
||||||
#: netbox/templates/core/datasource.html:54
|
#: netbox/templates/core/datasource.html:54
|
||||||
#: netbox/templates/core/plugin.html:79 netbox/templates/dcim/cable.html:36
|
#: netbox/templates/core/plugin.html:80 netbox/templates/dcim/cable.html:36
|
||||||
#: netbox/templates/dcim/consoleport.html:44
|
#: netbox/templates/dcim/consoleport.html:44
|
||||||
#: netbox/templates/dcim/consoleserverport.html:44
|
#: netbox/templates/dcim/consoleserverport.html:44
|
||||||
#: netbox/templates/dcim/device.html:94 netbox/templates/dcim/devicebay.html:32
|
#: netbox/templates/dcim/device.html:94 netbox/templates/dcim/devicebay.html:32
|
||||||
@ -654,8 +653,8 @@ msgstr ""
|
|||||||
#: netbox/dcim/tables/devices.py:1063 netbox/dcim/tables/modules.py:69
|
#: netbox/dcim/tables/devices.py:1063 netbox/dcim/tables/modules.py:69
|
||||||
#: netbox/dcim/tables/power.py:74 netbox/dcim/tables/racks.py:126
|
#: netbox/dcim/tables/power.py:74 netbox/dcim/tables/racks.py:126
|
||||||
#: netbox/dcim/tables/sites.py:82 netbox/dcim/tables/sites.py:138
|
#: netbox/dcim/tables/sites.py:82 netbox/dcim/tables/sites.py:138
|
||||||
#: netbox/ipam/forms/bulk_edit.py:255 netbox/ipam/forms/bulk_edit.py:305
|
#: netbox/ipam/forms/bulk_edit.py:256 netbox/ipam/forms/bulk_edit.py:306
|
||||||
#: netbox/ipam/forms/bulk_edit.py:353 netbox/ipam/forms/bulk_edit.py:551
|
#: netbox/ipam/forms/bulk_edit.py:354 netbox/ipam/forms/bulk_edit.py:506
|
||||||
#: netbox/ipam/forms/bulk_import.py:192 netbox/ipam/forms/bulk_import.py:257
|
#: netbox/ipam/forms/bulk_import.py:192 netbox/ipam/forms/bulk_import.py:257
|
||||||
#: netbox/ipam/forms/bulk_import.py:293 netbox/ipam/forms/bulk_import.py:450
|
#: netbox/ipam/forms/bulk_import.py:293 netbox/ipam/forms/bulk_import.py:450
|
||||||
#: netbox/ipam/forms/filtersets.py:210 netbox/ipam/forms/filtersets.py:281
|
#: netbox/ipam/forms/filtersets.py:210 netbox/ipam/forms/filtersets.py:281
|
||||||
@ -720,11 +719,11 @@ msgstr ""
|
|||||||
#: netbox/dcim/forms/filtersets.py:978 netbox/dcim/forms/filtersets.py:1008
|
#: netbox/dcim/forms/filtersets.py:978 netbox/dcim/forms/filtersets.py:1008
|
||||||
#: netbox/dcim/forms/filtersets.py:1130 netbox/dcim/tables/power.py:88
|
#: netbox/dcim/forms/filtersets.py:1130 netbox/dcim/tables/power.py:88
|
||||||
#: netbox/extras/filtersets.py:612 netbox/extras/forms/filtersets.py:323
|
#: netbox/extras/filtersets.py:612 netbox/extras/forms/filtersets.py:323
|
||||||
#: netbox/extras/forms/filtersets.py:396 netbox/ipam/forms/bulk_edit.py:42
|
#: netbox/extras/forms/filtersets.py:396 netbox/ipam/forms/bulk_edit.py:43
|
||||||
#: netbox/ipam/forms/bulk_edit.py:67 netbox/ipam/forms/bulk_edit.py:111
|
#: netbox/ipam/forms/bulk_edit.py:68 netbox/ipam/forms/bulk_edit.py:112
|
||||||
#: netbox/ipam/forms/bulk_edit.py:140 netbox/ipam/forms/bulk_edit.py:165
|
#: netbox/ipam/forms/bulk_edit.py:141 netbox/ipam/forms/bulk_edit.py:166
|
||||||
#: netbox/ipam/forms/bulk_edit.py:250 netbox/ipam/forms/bulk_edit.py:300
|
#: netbox/ipam/forms/bulk_edit.py:251 netbox/ipam/forms/bulk_edit.py:301
|
||||||
#: netbox/ipam/forms/bulk_edit.py:348 netbox/ipam/forms/bulk_edit.py:546
|
#: netbox/ipam/forms/bulk_edit.py:349 netbox/ipam/forms/bulk_edit.py:501
|
||||||
#: netbox/ipam/forms/bulk_import.py:38 netbox/ipam/forms/bulk_import.py:67
|
#: netbox/ipam/forms/bulk_import.py:38 netbox/ipam/forms/bulk_import.py:67
|
||||||
#: netbox/ipam/forms/bulk_import.py:95 netbox/ipam/forms/bulk_import.py:115
|
#: netbox/ipam/forms/bulk_import.py:95 netbox/ipam/forms/bulk_import.py:115
|
||||||
#: netbox/ipam/forms/bulk_import.py:135 netbox/ipam/forms/bulk_import.py:164
|
#: netbox/ipam/forms/bulk_import.py:135 netbox/ipam/forms/bulk_import.py:164
|
||||||
@ -950,9 +949,9 @@ msgstr ""
|
|||||||
#: netbox/dcim/tables/devices.py:157 netbox/dcim/tables/power.py:30
|
#: netbox/dcim/tables/devices.py:157 netbox/dcim/tables/power.py:30
|
||||||
#: netbox/dcim/tables/racks.py:118 netbox/dcim/tables/racks.py:212
|
#: netbox/dcim/tables/racks.py:118 netbox/dcim/tables/racks.py:212
|
||||||
#: netbox/extras/filtersets.py:536 netbox/extras/forms/filtersets.py:320
|
#: netbox/extras/filtersets.py:536 netbox/extras/forms/filtersets.py:320
|
||||||
#: netbox/ipam/forms/bulk_edit.py:460 netbox/ipam/forms/filtersets.py:173
|
#: netbox/ipam/forms/filtersets.py:173 netbox/ipam/forms/filtersets.py:414
|
||||||
#: netbox/ipam/forms/filtersets.py:414 netbox/ipam/forms/filtersets.py:437
|
#: netbox/ipam/forms/filtersets.py:437 netbox/ipam/forms/filtersets.py:467
|
||||||
#: netbox/ipam/forms/filtersets.py:467 netbox/templates/dcim/device.html:26
|
#: netbox/templates/dcim/device.html:26
|
||||||
#: netbox/templates/dcim/device_edit.html:30
|
#: netbox/templates/dcim/device_edit.html:30
|
||||||
#: netbox/templates/dcim/inc/cable_termination.html:12
|
#: netbox/templates/dcim/inc/cable_termination.html:12
|
||||||
#: netbox/templates/dcim/location.html:26
|
#: netbox/templates/dcim/location.html:26
|
||||||
@ -992,11 +991,10 @@ msgstr ""
|
|||||||
#: netbox/dcim/forms/filtersets.py:1600 netbox/dcim/forms/filtersets.py:1624
|
#: netbox/dcim/forms/filtersets.py:1600 netbox/dcim/forms/filtersets.py:1624
|
||||||
#: netbox/dcim/forms/model_forms.py:112 netbox/dcim/forms/object_create.py:375
|
#: netbox/dcim/forms/model_forms.py:112 netbox/dcim/forms/object_create.py:375
|
||||||
#: netbox/dcim/tables/devices.py:143 netbox/dcim/tables/sites.py:85
|
#: netbox/dcim/tables/devices.py:143 netbox/dcim/tables/sites.py:85
|
||||||
#: netbox/extras/filtersets.py:503 netbox/ipam/forms/bulk_edit.py:207
|
#: netbox/extras/filtersets.py:503 netbox/ipam/forms/bulk_edit.py:208
|
||||||
#: netbox/ipam/forms/bulk_edit.py:441 netbox/ipam/forms/bulk_edit.py:519
|
#: netbox/ipam/forms/bulk_edit.py:474 netbox/ipam/forms/filtersets.py:217
|
||||||
#: netbox/ipam/forms/filtersets.py:217 netbox/ipam/forms/filtersets.py:422
|
#: netbox/ipam/forms/filtersets.py:422 netbox/ipam/forms/filtersets.py:475
|
||||||
#: netbox/ipam/forms/filtersets.py:475 netbox/templates/dcim/device.html:18
|
#: netbox/templates/dcim/device.html:18 netbox/templates/dcim/rack.html:16
|
||||||
#: netbox/templates/dcim/rack.html:16
|
|
||||||
#: netbox/templates/dcim/rackreservation.html:22
|
#: netbox/templates/dcim/rackreservation.html:22
|
||||||
#: netbox/templates/dcim/region.html:26 netbox/templates/dcim/site.html:31
|
#: netbox/templates/dcim/region.html:26 netbox/templates/dcim/site.html:31
|
||||||
#: netbox/templates/ipam/prefix.html:49 netbox/templates/ipam/vlan.html:16
|
#: netbox/templates/ipam/prefix.html:49 netbox/templates/ipam/vlan.html:16
|
||||||
@ -1016,9 +1014,9 @@ msgstr ""
|
|||||||
#: netbox/dcim/forms/filtersets.py:744 netbox/dcim/forms/filtersets.py:988
|
#: netbox/dcim/forms/filtersets.py:744 netbox/dcim/forms/filtersets.py:988
|
||||||
#: netbox/dcim/forms/filtersets.py:1102 netbox/dcim/forms/filtersets.py:1141
|
#: netbox/dcim/forms/filtersets.py:1102 netbox/dcim/forms/filtersets.py:1141
|
||||||
#: netbox/dcim/forms/object_create.py:383 netbox/extras/filtersets.py:520
|
#: netbox/dcim/forms/object_create.py:383 netbox/extras/filtersets.py:520
|
||||||
#: netbox/ipam/forms/bulk_edit.py:212 netbox/ipam/forms/bulk_edit.py:448
|
#: netbox/ipam/forms/bulk_edit.py:213 netbox/ipam/forms/bulk_edit.py:479
|
||||||
#: netbox/ipam/forms/bulk_edit.py:524 netbox/ipam/forms/filtersets.py:222
|
#: netbox/ipam/forms/filtersets.py:222 netbox/ipam/forms/filtersets.py:427
|
||||||
#: netbox/ipam/forms/filtersets.py:427 netbox/ipam/forms/filtersets.py:480
|
#: netbox/ipam/forms/filtersets.py:480
|
||||||
#: netbox/virtualization/forms/bulk_edit.py:86
|
#: netbox/virtualization/forms/bulk_edit.py:86
|
||||||
#: netbox/virtualization/forms/filtersets.py:69
|
#: netbox/virtualization/forms/filtersets.py:69
|
||||||
#: netbox/virtualization/forms/filtersets.py:138
|
#: netbox/virtualization/forms/filtersets.py:138
|
||||||
@ -1083,7 +1081,7 @@ msgstr ""
|
|||||||
#: netbox/circuits/tables/circuits.py:155 netbox/dcim/forms/bulk_edit.py:117
|
#: netbox/circuits/tables/circuits.py:155 netbox/dcim/forms/bulk_edit.py:117
|
||||||
#: netbox/dcim/forms/bulk_import.py:100 netbox/dcim/forms/model_forms.py:117
|
#: netbox/dcim/forms/bulk_import.py:100 netbox/dcim/forms/model_forms.py:117
|
||||||
#: netbox/dcim/tables/sites.py:89 netbox/extras/forms/filtersets.py:480
|
#: netbox/dcim/tables/sites.py:89 netbox/extras/forms/filtersets.py:480
|
||||||
#: netbox/ipam/filtersets.py:999 netbox/ipam/forms/bulk_edit.py:538
|
#: netbox/ipam/filtersets.py:999 netbox/ipam/forms/bulk_edit.py:493
|
||||||
#: netbox/ipam/forms/bulk_import.py:436 netbox/ipam/forms/model_forms.py:528
|
#: netbox/ipam/forms/bulk_import.py:436 netbox/ipam/forms/model_forms.py:528
|
||||||
#: netbox/ipam/tables/fhrp.py:67 netbox/ipam/tables/vlans.py:122
|
#: netbox/ipam/tables/fhrp.py:67 netbox/ipam/tables/vlans.py:122
|
||||||
#: netbox/ipam/tables/vlans.py:226
|
#: netbox/ipam/tables/vlans.py:226
|
||||||
@ -1168,7 +1166,7 @@ msgstr ""
|
|||||||
msgid "status"
|
msgid "status"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/circuits/models/circuits.py:84 netbox/templates/core/plugin.html:19
|
#: netbox/circuits/models/circuits.py:84 netbox/templates/core/plugin.html:20
|
||||||
msgid "installed"
|
msgid "installed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1386,7 +1384,7 @@ msgstr ""
|
|||||||
#: netbox/extras/tables/tables.py:361 netbox/extras/tables/tables.py:378
|
#: netbox/extras/tables/tables.py:361 netbox/extras/tables/tables.py:378
|
||||||
#: netbox/extras/tables/tables.py:401 netbox/extras/tables/tables.py:439
|
#: netbox/extras/tables/tables.py:401 netbox/extras/tables/tables.py:439
|
||||||
#: netbox/extras/tables/tables.py:491 netbox/extras/tables/tables.py:514
|
#: netbox/extras/tables/tables.py:491 netbox/extras/tables/tables.py:514
|
||||||
#: netbox/ipam/forms/bulk_edit.py:406 netbox/ipam/forms/filtersets.py:386
|
#: netbox/ipam/forms/bulk_edit.py:407 netbox/ipam/forms/filtersets.py:386
|
||||||
#: netbox/ipam/tables/asn.py:16 netbox/ipam/tables/ip.py:85
|
#: netbox/ipam/tables/asn.py:16 netbox/ipam/tables/ip.py:85
|
||||||
#: netbox/ipam/tables/ip.py:160 netbox/ipam/tables/services.py:15
|
#: netbox/ipam/tables/ip.py:160 netbox/ipam/tables/services.py:15
|
||||||
#: netbox/ipam/tables/services.py:40 netbox/ipam/tables/vlans.py:64
|
#: netbox/ipam/tables/services.py:40 netbox/ipam/tables/vlans.py:64
|
||||||
@ -1396,7 +1394,7 @@ msgstr ""
|
|||||||
#: netbox/templates/circuits/provideraccount.html:28
|
#: netbox/templates/circuits/provideraccount.html:28
|
||||||
#: netbox/templates/circuits/providernetwork.html:24
|
#: netbox/templates/circuits/providernetwork.html:24
|
||||||
#: netbox/templates/core/datasource.html:34 netbox/templates/core/job.html:44
|
#: netbox/templates/core/datasource.html:34 netbox/templates/core/job.html:44
|
||||||
#: netbox/templates/core/plugin.html:53 netbox/templates/core/rq_worker.html:43
|
#: netbox/templates/core/plugin.html:54 netbox/templates/core/rq_worker.html:43
|
||||||
#: netbox/templates/dcim/consoleport.html:28
|
#: netbox/templates/dcim/consoleport.html:28
|
||||||
#: netbox/templates/dcim/consoleserverport.html:28
|
#: netbox/templates/dcim/consoleserverport.html:28
|
||||||
#: netbox/templates/dcim/devicebay.html:24
|
#: netbox/templates/dcim/devicebay.html:24
|
||||||
@ -1654,7 +1652,7 @@ msgid "Cancelled"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/core/data_backends.py:32 netbox/core/tables/plugins.py:51
|
#: netbox/core/data_backends.py:32 netbox/core/tables/plugins.py:51
|
||||||
#: netbox/templates/core/plugin.html:87
|
#: netbox/templates/core/plugin.html:88
|
||||||
#: netbox/templates/dcim/interface.html:216
|
#: netbox/templates/dcim/interface.html:216
|
||||||
msgid "Local"
|
msgid "Local"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -2072,7 +2070,7 @@ msgstr ""
|
|||||||
#: netbox/core/models/data.py:49 netbox/extras/choices.py:37
|
#: netbox/core/models/data.py:49 netbox/extras/choices.py:37
|
||||||
#: netbox/extras/models/models.py:164 netbox/extras/tables/tables.py:656
|
#: netbox/extras/models/models.py:164 netbox/extras/tables/tables.py:656
|
||||||
#: netbox/templates/core/datasource.html:58
|
#: netbox/templates/core/datasource.html:58
|
||||||
#: netbox/templates/core/plugin.html:65
|
#: netbox/templates/core/plugin.html:66
|
||||||
msgid "URL"
|
msgid "URL"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -2320,7 +2318,7 @@ msgstr ""
|
|||||||
msgid "No plugin data found"
|
msgid "No plugin data found"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/core/tables/plugins.py:48 netbox/templates/core/plugin.html:61
|
#: netbox/core/tables/plugins.py:48 netbox/templates/core/plugin.html:62
|
||||||
msgid "Author"
|
msgid "Author"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -2328,7 +2326,7 @@ msgstr ""
|
|||||||
msgid "Installed"
|
msgid "Installed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/core/tables/plugins.py:57 netbox/templates/core/plugin.html:83
|
#: netbox/core/tables/plugins.py:57 netbox/templates/core/plugin.html:84
|
||||||
msgid "Certified"
|
msgid "Certified"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -3237,8 +3235,8 @@ msgstr ""
|
|||||||
#: netbox/dcim/tables/devices.py:626 netbox/ipam/filtersets.py:316
|
#: netbox/dcim/tables/devices.py:626 netbox/ipam/filtersets.py:316
|
||||||
#: netbox/ipam/filtersets.py:327 netbox/ipam/filtersets.py:483
|
#: netbox/ipam/filtersets.py:327 netbox/ipam/filtersets.py:483
|
||||||
#: netbox/ipam/filtersets.py:584 netbox/ipam/filtersets.py:595
|
#: netbox/ipam/filtersets.py:584 netbox/ipam/filtersets.py:595
|
||||||
#: netbox/ipam/forms/bulk_edit.py:241 netbox/ipam/forms/bulk_edit.py:297
|
#: netbox/ipam/forms/bulk_edit.py:242 netbox/ipam/forms/bulk_edit.py:298
|
||||||
#: netbox/ipam/forms/bulk_edit.py:339 netbox/ipam/forms/bulk_import.py:157
|
#: netbox/ipam/forms/bulk_edit.py:340 netbox/ipam/forms/bulk_import.py:157
|
||||||
#: netbox/ipam/forms/bulk_import.py:243 netbox/ipam/forms/bulk_import.py:279
|
#: netbox/ipam/forms/bulk_import.py:243 netbox/ipam/forms/bulk_import.py:279
|
||||||
#: netbox/ipam/forms/filtersets.py:67 netbox/ipam/forms/filtersets.py:172
|
#: netbox/ipam/forms/filtersets.py:67 netbox/ipam/forms/filtersets.py:172
|
||||||
#: netbox/ipam/forms/filtersets.py:309 netbox/ipam/forms/model_forms.py:62
|
#: netbox/ipam/forms/filtersets.py:309 netbox/ipam/forms/model_forms.py:62
|
||||||
@ -3501,7 +3499,7 @@ msgstr ""
|
|||||||
#: netbox/extras/forms/bulk_edit.py:53 netbox/extras/forms/bulk_edit.py:133
|
#: netbox/extras/forms/bulk_edit.py:53 netbox/extras/forms/bulk_edit.py:133
|
||||||
#: netbox/extras/forms/bulk_edit.py:183 netbox/extras/forms/bulk_edit.py:288
|
#: netbox/extras/forms/bulk_edit.py:183 netbox/extras/forms/bulk_edit.py:288
|
||||||
#: netbox/extras/forms/filtersets.py:64 netbox/extras/forms/filtersets.py:156
|
#: netbox/extras/forms/filtersets.py:64 netbox/extras/forms/filtersets.py:156
|
||||||
#: netbox/extras/forms/filtersets.py:243 netbox/ipam/forms/bulk_edit.py:189
|
#: netbox/extras/forms/filtersets.py:243 netbox/ipam/forms/bulk_edit.py:190
|
||||||
#: netbox/templates/dcim/device.html:324
|
#: netbox/templates/dcim/device.html:324
|
||||||
#: netbox/templates/dcim/devicetype.html:49
|
#: netbox/templates/dcim/devicetype.html:49
|
||||||
#: netbox/templates/dcim/moduletype.html:34 netbox/templates/dcim/rack.html:81
|
#: netbox/templates/dcim/moduletype.html:34 netbox/templates/dcim/rack.html:81
|
||||||
@ -3559,8 +3557,8 @@ msgstr ""
|
|||||||
#: netbox/dcim/tables/devices.py:169 netbox/dcim/tables/devices.py:809
|
#: netbox/dcim/tables/devices.py:169 netbox/dcim/tables/devices.py:809
|
||||||
#: netbox/dcim/tables/devices.py:937 netbox/dcim/tables/devicetypes.py:304
|
#: netbox/dcim/tables/devices.py:937 netbox/dcim/tables/devicetypes.py:304
|
||||||
#: netbox/dcim/tables/racks.py:129 netbox/extras/filtersets.py:552
|
#: netbox/dcim/tables/racks.py:129 netbox/extras/filtersets.py:552
|
||||||
#: netbox/ipam/forms/bulk_edit.py:260 netbox/ipam/forms/bulk_edit.py:310
|
#: netbox/ipam/forms/bulk_edit.py:261 netbox/ipam/forms/bulk_edit.py:311
|
||||||
#: netbox/ipam/forms/bulk_edit.py:358 netbox/ipam/forms/bulk_edit.py:556
|
#: netbox/ipam/forms/bulk_edit.py:359 netbox/ipam/forms/bulk_edit.py:511
|
||||||
#: netbox/ipam/forms/bulk_import.py:197 netbox/ipam/forms/bulk_import.py:262
|
#: netbox/ipam/forms/bulk_import.py:197 netbox/ipam/forms/bulk_import.py:262
|
||||||
#: netbox/ipam/forms/bulk_import.py:298 netbox/ipam/forms/bulk_import.py:455
|
#: netbox/ipam/forms/bulk_import.py:298 netbox/ipam/forms/bulk_import.py:455
|
||||||
#: netbox/ipam/forms/filtersets.py:237 netbox/ipam/forms/filtersets.py:289
|
#: netbox/ipam/forms/filtersets.py:237 netbox/ipam/forms/filtersets.py:289
|
||||||
@ -3630,8 +3628,8 @@ msgstr ""
|
|||||||
#: netbox/dcim/forms/model_forms.py:306 netbox/dcim/forms/model_forms.py:479
|
#: netbox/dcim/forms/model_forms.py:306 netbox/dcim/forms/model_forms.py:479
|
||||||
#: netbox/dcim/forms/model_forms.py:755 netbox/dcim/forms/object_create.py:400
|
#: netbox/dcim/forms/model_forms.py:755 netbox/dcim/forms/object_create.py:400
|
||||||
#: netbox/dcim/tables/devices.py:161 netbox/dcim/tables/power.py:70
|
#: netbox/dcim/tables/devices.py:161 netbox/dcim/tables/power.py:70
|
||||||
#: netbox/dcim/tables/racks.py:217 netbox/ipam/forms/bulk_edit.py:468
|
#: netbox/dcim/tables/racks.py:217 netbox/ipam/forms/filtersets.py:442
|
||||||
#: netbox/ipam/forms/filtersets.py:442 netbox/templates/dcim/device.html:30
|
#: netbox/templates/dcim/device.html:30
|
||||||
#: netbox/templates/dcim/inc/cable_termination.html:16
|
#: netbox/templates/dcim/inc/cable_termination.html:16
|
||||||
#: netbox/templates/dcim/powerfeed.html:28 netbox/templates/dcim/rack.html:13
|
#: netbox/templates/dcim/powerfeed.html:28 netbox/templates/dcim/rack.html:13
|
||||||
#: netbox/templates/dcim/rack/base.html:4
|
#: netbox/templates/dcim/rack/base.html:4
|
||||||
@ -4012,8 +4010,8 @@ msgid "Wireless LANs"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/forms/bulk_edit.py:1508 netbox/dcim/forms/filtersets.py:1328
|
#: netbox/dcim/forms/bulk_edit.py:1508 netbox/dcim/forms/filtersets.py:1328
|
||||||
#: netbox/dcim/forms/model_forms.py:1390 netbox/ipam/forms/bulk_edit.py:285
|
#: netbox/dcim/forms/model_forms.py:1390 netbox/ipam/forms/bulk_edit.py:286
|
||||||
#: netbox/ipam/forms/bulk_edit.py:377 netbox/ipam/forms/filtersets.py:169
|
#: netbox/ipam/forms/bulk_edit.py:378 netbox/ipam/forms/filtersets.py:169
|
||||||
#: netbox/templates/dcim/interface.html:122
|
#: netbox/templates/dcim/interface.html:122
|
||||||
#: netbox/templates/ipam/prefix.html:95
|
#: netbox/templates/ipam/prefix.html:95
|
||||||
#: netbox/virtualization/forms/model_forms.py:349
|
#: netbox/virtualization/forms/model_forms.py:349
|
||||||
@ -4196,9 +4194,8 @@ msgstr ""
|
|||||||
#: netbox/dcim/forms/bulk_import.py:517 netbox/dcim/forms/filtersets.py:728
|
#: netbox/dcim/forms/bulk_import.py:517 netbox/dcim/forms/filtersets.py:728
|
||||||
#: netbox/dcim/forms/filtersets.py:898 netbox/dcim/forms/model_forms.py:522
|
#: netbox/dcim/forms/filtersets.py:898 netbox/dcim/forms/model_forms.py:522
|
||||||
#: netbox/dcim/tables/devices.py:202 netbox/extras/filtersets.py:596
|
#: netbox/dcim/tables/devices.py:202 netbox/extras/filtersets.py:596
|
||||||
#: netbox/extras/forms/filtersets.py:322 netbox/ipam/forms/bulk_edit.py:482
|
#: netbox/extras/forms/filtersets.py:322 netbox/ipam/forms/filtersets.py:415
|
||||||
#: netbox/ipam/forms/filtersets.py:415 netbox/ipam/forms/filtersets.py:447
|
#: netbox/ipam/forms/filtersets.py:447 netbox/templates/dcim/device.html:239
|
||||||
#: netbox/templates/dcim/device.html:239
|
|
||||||
#: netbox/templates/virtualization/cluster.html:10
|
#: netbox/templates/virtualization/cluster.html:10
|
||||||
#: netbox/templates/virtualization/virtualmachine.html:92
|
#: netbox/templates/virtualization/virtualmachine.html:92
|
||||||
#: netbox/templates/virtualization/virtualmachine.html:101
|
#: netbox/templates/virtualization/virtualmachine.html:101
|
||||||
@ -4644,7 +4641,7 @@ msgid "Has virtual device contexts"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/dcim/forms/filtersets.py:903 netbox/extras/filtersets.py:585
|
#: netbox/dcim/forms/filtersets.py:903 netbox/extras/filtersets.py:585
|
||||||
#: netbox/ipam/forms/bulk_edit.py:479 netbox/ipam/forms/filtersets.py:452
|
#: netbox/ipam/forms/filtersets.py:452
|
||||||
#: netbox/virtualization/forms/filtersets.py:112
|
#: netbox/virtualization/forms/filtersets.py:112
|
||||||
msgid "Cluster group"
|
msgid "Cluster group"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -6847,7 +6844,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: netbox/dcim/tables/sites.py:30 netbox/dcim/tables/sites.py:57
|
#: netbox/dcim/tables/sites.py:30 netbox/dcim/tables/sites.py:57
|
||||||
#: netbox/extras/forms/filtersets.py:351 netbox/extras/forms/model_forms.py:517
|
#: netbox/extras/forms/filtersets.py:351 netbox/extras/forms/model_forms.py:517
|
||||||
#: netbox/ipam/forms/bulk_edit.py:130 netbox/ipam/forms/model_forms.py:153
|
#: netbox/ipam/forms/bulk_edit.py:131 netbox/ipam/forms/model_forms.py:153
|
||||||
#: netbox/ipam/tables/asn.py:66 netbox/netbox/navigation/menu.py:15
|
#: netbox/ipam/tables/asn.py:66 netbox/netbox/navigation/menu.py:15
|
||||||
#: netbox/netbox/navigation/menu.py:17
|
#: netbox/netbox/navigation/menu.py:17
|
||||||
msgid "Sites"
|
msgid "Sites"
|
||||||
@ -9009,7 +9006,7 @@ msgid "Prefixes which contain this prefix or IP"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/ipam/filtersets.py:304 netbox/ipam/filtersets.py:572
|
#: netbox/ipam/filtersets.py:304 netbox/ipam/filtersets.py:572
|
||||||
#: netbox/ipam/forms/bulk_edit.py:342 netbox/ipam/forms/filtersets.py:196
|
#: netbox/ipam/forms/bulk_edit.py:343 netbox/ipam/forms/filtersets.py:196
|
||||||
#: netbox/ipam/forms/filtersets.py:331
|
#: netbox/ipam/forms/filtersets.py:331
|
||||||
msgid "Mask length"
|
msgid "Mask length"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -9135,16 +9132,16 @@ msgstr ""
|
|||||||
msgid "Address pattern"
|
msgid "Address pattern"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/ipam/forms/bulk_edit.py:49
|
#: netbox/ipam/forms/bulk_edit.py:50
|
||||||
msgid "Enforce unique space"
|
msgid "Enforce unique space"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/ipam/forms/bulk_edit.py:87
|
#: netbox/ipam/forms/bulk_edit.py:88
|
||||||
msgid "Is private"
|
msgid "Is private"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/ipam/forms/bulk_edit.py:108 netbox/ipam/forms/bulk_edit.py:137
|
#: netbox/ipam/forms/bulk_edit.py:109 netbox/ipam/forms/bulk_edit.py:138
|
||||||
#: netbox/ipam/forms/bulk_edit.py:162 netbox/ipam/forms/bulk_import.py:89
|
#: netbox/ipam/forms/bulk_edit.py:163 netbox/ipam/forms/bulk_import.py:89
|
||||||
#: netbox/ipam/forms/bulk_import.py:109 netbox/ipam/forms/bulk_import.py:129
|
#: netbox/ipam/forms/bulk_import.py:109 netbox/ipam/forms/bulk_import.py:129
|
||||||
#: netbox/ipam/forms/filtersets.py:110 netbox/ipam/forms/filtersets.py:125
|
#: netbox/ipam/forms/filtersets.py:110 netbox/ipam/forms/filtersets.py:125
|
||||||
#: netbox/ipam/forms/filtersets.py:148 netbox/ipam/forms/model_forms.py:96
|
#: netbox/ipam/forms/filtersets.py:148 netbox/ipam/forms/model_forms.py:96
|
||||||
@ -9158,18 +9155,18 @@ msgstr ""
|
|||||||
msgid "RIR"
|
msgid "RIR"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/ipam/forms/bulk_edit.py:170
|
#: netbox/ipam/forms/bulk_edit.py:171
|
||||||
msgid "Date added"
|
msgid "Date added"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/ipam/forms/bulk_edit.py:228 netbox/ipam/forms/model_forms.py:586
|
#: netbox/ipam/forms/bulk_edit.py:229 netbox/ipam/forms/model_forms.py:586
|
||||||
#: netbox/ipam/forms/model_forms.py:633 netbox/ipam/tables/ip.py:251
|
#: netbox/ipam/forms/model_forms.py:633 netbox/ipam/tables/ip.py:251
|
||||||
#: netbox/templates/ipam/vlan_edit.html:37
|
#: netbox/templates/ipam/vlan_edit.html:37
|
||||||
#: netbox/templates/ipam/vlangroup.html:27
|
#: netbox/templates/ipam/vlangroup.html:27
|
||||||
msgid "VLAN Group"
|
msgid "VLAN Group"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/ipam/forms/bulk_edit.py:233 netbox/ipam/forms/bulk_import.py:185
|
#: netbox/ipam/forms/bulk_edit.py:234 netbox/ipam/forms/bulk_import.py:185
|
||||||
#: netbox/ipam/forms/filtersets.py:256 netbox/ipam/forms/model_forms.py:218
|
#: netbox/ipam/forms/filtersets.py:256 netbox/ipam/forms/model_forms.py:218
|
||||||
#: netbox/ipam/models/vlans.py:234 netbox/ipam/tables/ip.py:255
|
#: netbox/ipam/models/vlans.py:234 netbox/ipam/tables/ip.py:255
|
||||||
#: netbox/templates/ipam/prefix.html:60 netbox/templates/ipam/vlan.html:12
|
#: netbox/templates/ipam/prefix.html:60 netbox/templates/ipam/vlan.html:12
|
||||||
@ -9184,30 +9181,30 @@ msgstr ""
|
|||||||
msgid "VLAN"
|
msgid "VLAN"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/ipam/forms/bulk_edit.py:244
|
#: netbox/ipam/forms/bulk_edit.py:245
|
||||||
msgid "Prefix length"
|
msgid "Prefix length"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/ipam/forms/bulk_edit.py:267 netbox/ipam/forms/filtersets.py:241
|
#: netbox/ipam/forms/bulk_edit.py:268 netbox/ipam/forms/filtersets.py:241
|
||||||
#: netbox/templates/ipam/prefix.html:85
|
#: netbox/templates/ipam/prefix.html:85
|
||||||
msgid "Is a pool"
|
msgid "Is a pool"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/ipam/forms/bulk_edit.py:272 netbox/ipam/forms/bulk_edit.py:317
|
#: netbox/ipam/forms/bulk_edit.py:273 netbox/ipam/forms/bulk_edit.py:318
|
||||||
#: netbox/ipam/forms/filtersets.py:248 netbox/ipam/forms/filtersets.py:293
|
#: netbox/ipam/forms/filtersets.py:248 netbox/ipam/forms/filtersets.py:293
|
||||||
#: netbox/ipam/models/ip.py:272 netbox/ipam/models/ip.py:539
|
#: netbox/ipam/models/ip.py:272 netbox/ipam/models/ip.py:539
|
||||||
msgid "Treat as fully utilized"
|
msgid "Treat as fully utilized"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/ipam/forms/bulk_edit.py:286 netbox/ipam/forms/filtersets.py:171
|
#: netbox/ipam/forms/bulk_edit.py:287 netbox/ipam/forms/filtersets.py:171
|
||||||
msgid "VLAN Assignment"
|
msgid "VLAN Assignment"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/ipam/forms/bulk_edit.py:365 netbox/ipam/models/ip.py:772
|
#: netbox/ipam/forms/bulk_edit.py:366 netbox/ipam/models/ip.py:772
|
||||||
msgid "DNS name"
|
msgid "DNS name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/ipam/forms/bulk_edit.py:386 netbox/ipam/forms/bulk_edit.py:579
|
#: netbox/ipam/forms/bulk_edit.py:387 netbox/ipam/forms/bulk_edit.py:534
|
||||||
#: netbox/ipam/forms/bulk_import.py:394 netbox/ipam/forms/bulk_import.py:469
|
#: netbox/ipam/forms/bulk_import.py:394 netbox/ipam/forms/bulk_import.py:469
|
||||||
#: netbox/ipam/forms/bulk_import.py:495 netbox/ipam/forms/filtersets.py:390
|
#: netbox/ipam/forms/bulk_import.py:495 netbox/ipam/forms/filtersets.py:390
|
||||||
#: netbox/ipam/forms/filtersets.py:530 netbox/templates/ipam/fhrpgroup.html:22
|
#: netbox/ipam/forms/filtersets.py:530 netbox/templates/ipam/fhrpgroup.html:22
|
||||||
@ -9217,12 +9214,12 @@ msgstr ""
|
|||||||
msgid "Protocol"
|
msgid "Protocol"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/ipam/forms/bulk_edit.py:393 netbox/ipam/forms/filtersets.py:397
|
#: netbox/ipam/forms/bulk_edit.py:394 netbox/ipam/forms/filtersets.py:397
|
||||||
#: netbox/ipam/tables/fhrp.py:22 netbox/templates/ipam/fhrpgroup.html:26
|
#: netbox/ipam/tables/fhrp.py:22 netbox/templates/ipam/fhrpgroup.html:26
|
||||||
msgid "Group ID"
|
msgid "Group ID"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/ipam/forms/bulk_edit.py:398 netbox/ipam/forms/filtersets.py:402
|
#: netbox/ipam/forms/bulk_edit.py:399 netbox/ipam/forms/filtersets.py:402
|
||||||
#: netbox/wireless/forms/bulk_edit.py:68 netbox/wireless/forms/bulk_edit.py:115
|
#: netbox/wireless/forms/bulk_edit.py:68 netbox/wireless/forms/bulk_edit.py:115
|
||||||
#: netbox/wireless/forms/bulk_import.py:62
|
#: netbox/wireless/forms/bulk_import.py:62
|
||||||
#: netbox/wireless/forms/bulk_import.py:65
|
#: netbox/wireless/forms/bulk_import.py:65
|
||||||
@ -9233,11 +9230,11 @@ msgstr ""
|
|||||||
msgid "Authentication type"
|
msgid "Authentication type"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/ipam/forms/bulk_edit.py:403 netbox/ipam/forms/filtersets.py:406
|
#: netbox/ipam/forms/bulk_edit.py:404 netbox/ipam/forms/filtersets.py:406
|
||||||
msgid "Authentication key"
|
msgid "Authentication key"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/ipam/forms/bulk_edit.py:420 netbox/ipam/forms/filtersets.py:383
|
#: netbox/ipam/forms/bulk_edit.py:421 netbox/ipam/forms/filtersets.py:383
|
||||||
#: netbox/ipam/forms/model_forms.py:474 netbox/netbox/navigation/menu.py:386
|
#: netbox/ipam/forms/model_forms.py:474 netbox/netbox/navigation/menu.py:386
|
||||||
#: netbox/templates/ipam/fhrpgroup.html:49
|
#: netbox/templates/ipam/fhrpgroup.html:49
|
||||||
#: netbox/templates/wireless/inc/authentication_attrs.html:5
|
#: netbox/templates/wireless/inc/authentication_attrs.html:5
|
||||||
@ -9249,25 +9246,25 @@ msgstr ""
|
|||||||
msgid "Authentication"
|
msgid "Authentication"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/ipam/forms/bulk_edit.py:432 netbox/ipam/forms/model_forms.py:575
|
#: netbox/ipam/forms/bulk_edit.py:436 netbox/ipam/forms/model_forms.py:575
|
||||||
msgid "Scope type"
|
msgid "Scope type"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/ipam/forms/bulk_edit.py:490 netbox/ipam/models/vlans.py:60
|
#: netbox/ipam/forms/bulk_edit.py:439 netbox/ipam/forms/bulk_edit.py:453
|
||||||
msgid "VLAN ID ranges"
|
#: netbox/ipam/forms/model_forms.py:578 netbox/ipam/forms/model_forms.py:588
|
||||||
msgstr ""
|
#: netbox/ipam/tables/vlans.py:71 netbox/templates/ipam/vlangroup.html:38
|
||||||
|
|
||||||
#: netbox/ipam/forms/bulk_edit.py:498 netbox/ipam/forms/model_forms.py:578
|
|
||||||
#: netbox/ipam/forms/model_forms.py:588 netbox/ipam/tables/vlans.py:71
|
|
||||||
#: netbox/templates/ipam/vlangroup.html:38
|
|
||||||
msgid "Scope"
|
msgid "Scope"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/ipam/forms/bulk_edit.py:570
|
#: netbox/ipam/forms/bulk_edit.py:446 netbox/ipam/models/vlans.py:60
|
||||||
|
msgid "VLAN ID ranges"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: netbox/ipam/forms/bulk_edit.py:525
|
||||||
msgid "Site & Group"
|
msgid "Site & Group"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/ipam/forms/bulk_edit.py:584 netbox/ipam/forms/model_forms.py:659
|
#: netbox/ipam/forms/bulk_edit.py:539 netbox/ipam/forms/model_forms.py:659
|
||||||
#: netbox/ipam/forms/model_forms.py:691 netbox/ipam/tables/services.py:19
|
#: netbox/ipam/forms/model_forms.py:691 netbox/ipam/tables/services.py:19
|
||||||
#: netbox/ipam/tables/services.py:49 netbox/templates/ipam/service.html:36
|
#: netbox/ipam/tables/services.py:49 netbox/templates/ipam/service.html:36
|
||||||
#: netbox/templates/ipam/servicetemplate.html:23
|
#: netbox/templates/ipam/servicetemplate.html:23
|
||||||
@ -10849,7 +10846,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: netbox/netbox/navigation/menu.py:454 netbox/netbox/navigation/menu.py:502
|
#: netbox/netbox/navigation/menu.py:454 netbox/netbox/navigation/menu.py:502
|
||||||
#: netbox/templates/500.html:35 netbox/templates/account/preferences.html:22
|
#: netbox/templates/500.html:35 netbox/templates/account/preferences.html:22
|
||||||
#: netbox/templates/core/plugin.html:12
|
#: netbox/templates/core/plugin.html:13
|
||||||
#: netbox/templates/core/plugin_list.html:7
|
#: netbox/templates/core/plugin_list.html:7
|
||||||
#: netbox/templates/core/plugin_list.html:12
|
#: netbox/templates/core/plugin_list.html:12
|
||||||
msgid "Plugins"
|
msgid "Plugins"
|
||||||
@ -11088,19 +11085,19 @@ msgstr ""
|
|||||||
msgid "Row {i}: Object with ID {id} does not exist"
|
msgid "Row {i}: Object with ID {id} does not exist"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/netbox/views/generic/bulk_views.py:699
|
#: netbox/netbox/views/generic/bulk_views.py:702
|
||||||
#: netbox/netbox/views/generic/bulk_views.py:897
|
#: netbox/netbox/views/generic/bulk_views.py:900
|
||||||
#: netbox/netbox/views/generic/bulk_views.py:945
|
#: netbox/netbox/views/generic/bulk_views.py:948
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "No {object_type} were selected."
|
msgid "No {object_type} were selected."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/netbox/views/generic/bulk_views.py:779
|
#: netbox/netbox/views/generic/bulk_views.py:782
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "Renamed {count} {object_type}"
|
msgid "Renamed {count} {object_type}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/netbox/views/generic/bulk_views.py:875
|
#: netbox/netbox/views/generic/bulk_views.py:878
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "Deleted {count} {object_type}"
|
msgid "Deleted {count} {object_type}"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -11769,35 +11766,35 @@ msgstr ""
|
|||||||
msgid "Indefinite"
|
msgid "Indefinite"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/templates/core/plugin.html:21
|
#: netbox/templates/core/plugin.html:22
|
||||||
msgid "Not installed"
|
msgid "Not installed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/templates/core/plugin.html:32
|
#: netbox/templates/core/plugin.html:33
|
||||||
msgid "Overview"
|
msgid "Overview"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/templates/core/plugin.html:38
|
#: netbox/templates/core/plugin.html:39
|
||||||
msgid "Install"
|
msgid "Install"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/templates/core/plugin.html:50
|
#: netbox/templates/core/plugin.html:51
|
||||||
msgid "Plugin Details"
|
msgid "Plugin Details"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/templates/core/plugin.html:57
|
#: netbox/templates/core/plugin.html:58
|
||||||
msgid "Summary"
|
msgid "Summary"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/templates/core/plugin.html:75
|
#: netbox/templates/core/plugin.html:76
|
||||||
msgid "License"
|
msgid "License"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/templates/core/plugin.html:95
|
#: netbox/templates/core/plugin.html:96
|
||||||
msgid "Version History"
|
msgid "Version History"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: netbox/templates/core/plugin.html:106
|
#: netbox/templates/core/plugin.html:107
|
||||||
msgid "Local Installation Instructions"
|
msgid "Local Installation Instructions"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -43,9 +43,12 @@ class HTMXSelect(forms.Select):
|
|||||||
"""
|
"""
|
||||||
Selection widget that will re-generate the HTML form upon the selection of a new option.
|
Selection widget that will re-generate the HTML form upon the selection of a new option.
|
||||||
"""
|
"""
|
||||||
def __init__(self, hx_url='.', hx_target_id='form_fields', attrs=None, **kwargs):
|
def __init__(self, method='get', hx_url='.', hx_target_id='form_fields', attrs=None, **kwargs):
|
||||||
|
method = method.lower()
|
||||||
|
if method not in ('delete', 'get', 'patch', 'post', 'put'):
|
||||||
|
raise ValueError(f"Unsupported HTTP method: {method}")
|
||||||
_attrs = {
|
_attrs = {
|
||||||
'hx-get': hx_url,
|
f'hx-{method}': hx_url,
|
||||||
'hx-include': f'#{hx_target_id}',
|
'hx-include': f'#{hx_target_id}',
|
||||||
'hx-target': f'#{hx_target_id}',
|
'hx-target': f'#{hx_target_id}',
|
||||||
}
|
}
|
||||||
|
@ -23,6 +23,7 @@ class WirelessLANGroupType(OrganizationalObjectType):
|
|||||||
parent: Annotated["WirelessLANGroupType", strawberry.lazy('wireless.graphql.types')] | None
|
parent: Annotated["WirelessLANGroupType", strawberry.lazy('wireless.graphql.types')] | None
|
||||||
|
|
||||||
wireless_lans: List[Annotated["WirelessLANType", strawberry.lazy('wireless.graphql.types')]]
|
wireless_lans: List[Annotated["WirelessLANType", strawberry.lazy('wireless.graphql.types')]]
|
||||||
|
children: List[Annotated["WirelessLANGroupType", strawberry.lazy('wireless.graphql.types')]]
|
||||||
|
|
||||||
|
|
||||||
@strawberry_django.type(
|
@strawberry_django.type(
|
||||||
|
Loading…
Reference in New Issue
Block a user