Misc cleanup

This commit is contained in:
Jeremy Stretch 2024-07-04 16:37:18 -04:00
parent 6bec89d46b
commit cbffc24810
6 changed files with 50 additions and 14 deletions

View File

@ -8,7 +8,7 @@ from core.models import DataSource, ObjectType
from dcim.models import DeviceRole, DeviceType, Location, Platform, Region, Site, SiteGroup from dcim.models import DeviceRole, DeviceType, Location, Platform, Region, Site, SiteGroup
from netbox.filtersets import BaseFilterSet, ChangeLoggedModelFilterSet, NetBoxModelFilterSet from netbox.filtersets import BaseFilterSet, ChangeLoggedModelFilterSet, NetBoxModelFilterSet
from tenancy.models import Tenant, TenantGroup from tenancy.models import Tenant, TenantGroup
from users.models import Group from users.models import Group, User
from utilities.filters import ContentTypeFilter, MultiValueCharFilter, MultiValueNumberFilter from utilities.filters import ContentTypeFilter, MultiValueCharFilter, MultiValueNumberFilter
from virtualization.models import Cluster, ClusterGroup, ClusterType from virtualization.models import Cluster, ClusterGroup, ClusterType
from .choices import * from .choices import *
@ -343,14 +343,16 @@ class NotificationGroupFilterSet(BaseFilterSet):
method='search', method='search',
label=_('Search'), label=_('Search'),
) )
# user_id = django_filters.ModelMultipleChoiceFilter( user_id = django_filters.ModelMultipleChoiceFilter(
# queryset=get_user_model().objects.all(), field_name='users',
# label=_('User (ID)'), queryset=User.objects.all(),
# ) label=_('User (ID)'),
# group_id = django_filters.ModelMultipleChoiceFilter( )
# queryset=Group.objects.all(), group_id = django_filters.ModelMultipleChoiceFilter(
# label=_('Group (ID)'), field_name='groups',
# ) queryset=Group.objects.all(),
label=_('Group (ID)'),
)
class Meta: class Meta:
model = NotificationGroup model = NotificationGroup

View File

@ -10,9 +10,11 @@ from core.models import ObjectType
from extras.choices import * from extras.choices import *
from extras.models import * from extras.models import *
from netbox.forms import NetBoxModelImportForm from netbox.forms import NetBoxModelImportForm
from users.models import Group, User
from utilities.forms import CSVModelForm from utilities.forms import CSVModelForm
from utilities.forms.fields import ( from utilities.forms.fields import (
CSVChoiceField, CSVContentTypeField, CSVModelChoiceField, CSVMultipleContentTypeField, SlugField, CSVChoiceField, CSVContentTypeField, CSVModelChoiceField, CSVModelMultipleChoiceField, CSVMultipleContentTypeField,
SlugField,
) )
__all__ = ( __all__ = (
@ -254,7 +256,25 @@ class JournalEntryImportForm(NetBoxModelImportForm):
class NotificationGroupImportForm(CSVModelForm): class NotificationGroupImportForm(CSVModelForm):
users = CSVModelMultipleChoiceField(
label=_('Users'),
queryset=User.objects.all(),
required=False,
to_field_name='username',
help_text=mark_safe(
_('User names separated by commas, encased with double quotes')
)
)
groups = CSVModelMultipleChoiceField(
label=_('Groups'),
queryset=Group.objects.all(),
required=False,
to_field_name='name',
help_text=mark_safe(
_('Group names separated by commas, encased with double quotes')
)
)
class Meta: class Meta:
model = NotificationGroup model = NotificationGroup
fields = ('name', 'description') fields = ('name', 'description', 'users', 'groups')

View File

@ -21,7 +21,7 @@ __all__ = (
) )
def get_event_type_choices(): def get_event_name_choices():
""" """
Compile a list of choices from all registered event types Compile a list of choices from all registered event types
""" """
@ -60,7 +60,7 @@ class Notification(models.Model):
event_name = models.CharField( event_name = models.CharField(
verbose_name=_('event'), verbose_name=_('event'),
max_length=50, max_length=50,
choices=get_event_type_choices choices=get_event_name_choices
) )
objects = NotificationQuerySet.as_manager() objects = NotificationQuerySet.as_manager()

View File

@ -156,4 +156,7 @@ class ConfigContextModelQuerySet(RestrictedQuerySet):
class NotificationQuerySet(RestrictedQuerySet): class NotificationQuerySet(RestrictedQuerySet):
def unread(self): def unread(self):
"""
Return only unread notifications.
"""
return self.filter(read__isnull=True) return self.filter(read__isnull=True)

View File

@ -322,11 +322,17 @@ class NotificationGroupTable(NetBoxTable):
linkify=True, linkify=True,
verbose_name=_('Name') verbose_name=_('Name')
) )
users = columns.ManyToManyColumn(
linkify_item=True
)
groups = columns.ManyToManyColumn(
linkify_item=True
)
class Meta(NetBoxTable.Meta): class Meta(NetBoxTable.Meta):
model = NotificationGroup model = NotificationGroup
fields = ('pk', 'name', 'description', 'groups', 'users') fields = ('pk', 'name', 'description', 'groups', 'users')
default_columns = ('name', 'description') default_columns = ('name', 'description', 'groups', 'users')
class WebhookTable(NetBoxTable): class WebhookTable(NetBoxTable):

View File

@ -84,6 +84,11 @@ DEFAULT_PERMISSIONS = getattr(configuration, 'DEFAULT_PERMISSIONS', {
'extras.add_bookmark': ({'user': '$user'},), 'extras.add_bookmark': ({'user': '$user'},),
'extras.change_bookmark': ({'user': '$user'},), 'extras.change_bookmark': ({'user': '$user'},),
'extras.delete_bookmark': ({'user': '$user'},), 'extras.delete_bookmark': ({'user': '$user'},),
# Permit users to manage their own notifications
'extras.view_notification': ({'user': '$user'},),
'extras.add_notification': ({'user': '$user'},),
'extras.change_notification': ({'user': '$user'},),
'extras.delete_notification': ({'user': '$user'},),
# Permit users to manage their own subscriptions # Permit users to manage their own subscriptions
'extras.view_subscription': ({'user': '$user'},), 'extras.view_subscription': ({'user': '$user'},),
'extras.add_subscription': ({'user': '$user'},), 'extras.add_subscription': ({'user': '$user'},),