mirror of
https://github.com/netbox-community/netbox.git
synced 2025-12-21 12:52:21 -06:00
Introduced consolidated object table template
This commit is contained in:
@@ -11,7 +11,7 @@ register = template.Library()
|
||||
# Filters
|
||||
#
|
||||
|
||||
@register.filter(name='oneline')
|
||||
@register.filter()
|
||||
def oneline(value):
|
||||
"""
|
||||
Replace each line break with a single space
|
||||
@@ -19,7 +19,7 @@ def oneline(value):
|
||||
return value.replace('\n', ' ')
|
||||
|
||||
|
||||
@register.filter(name='getlist')
|
||||
@register.filter()
|
||||
def getlist(value, arg):
|
||||
"""
|
||||
Return all values of a QueryDict key
|
||||
@@ -27,7 +27,7 @@ def getlist(value, arg):
|
||||
return value.getlist(arg)
|
||||
|
||||
|
||||
@register.filter(name='gfm', is_safe=True)
|
||||
@register.filter(is_safe=True)
|
||||
def gfm(value):
|
||||
"""
|
||||
Render text as GitHub-Flavored Markdown
|
||||
@@ -36,11 +36,29 @@ def gfm(value):
|
||||
return mark_safe(html)
|
||||
|
||||
|
||||
@register.filter()
|
||||
def user_can_add(model, user):
|
||||
perm_name = '{}:add_{}'.format(model._meta.app_label, model.__class__.__name__.lower())
|
||||
return user.has_perm(perm_name)
|
||||
|
||||
|
||||
@register.filter()
|
||||
def user_can_change(model, user):
|
||||
perm_name = '{}:change_{}'.format(model._meta.app_label, model.__class__.__name__.lower())
|
||||
return user.has_perm(perm_name)
|
||||
|
||||
|
||||
@register.filter()
|
||||
def user_can_delete(model, user):
|
||||
perm_name = '{}:delete_{}'.format(model._meta.app_label, model.__class__.__name__.lower())
|
||||
return user.has_perm(perm_name)
|
||||
|
||||
|
||||
#
|
||||
# Tags
|
||||
#
|
||||
|
||||
@register.simple_tag(name='querystring_toggle')
|
||||
@register.simple_tag()
|
||||
def querystring_toggle(request, multi=True, page_key='page', **kwargs):
|
||||
"""
|
||||
Add or remove a parameter in the HTTP GET query string
|
||||
|
||||
@@ -2,7 +2,7 @@ from django.conf import settings
|
||||
from django.contrib import messages
|
||||
from django.contrib.admin.views.decorators import staff_member_required
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.core.urlresolvers import reverse, NoReverseMatch
|
||||
from django.db import transaction, IntegrityError
|
||||
from django.db.models import ProtectedError
|
||||
from django.http import HttpResponseRedirect
|
||||
@@ -31,7 +31,8 @@ class ObjectListView(View):
|
||||
|
||||
def get(self, request, *args, **kwargs):
|
||||
|
||||
object_ct = ContentType.objects.get_for_model(self.queryset.model)
|
||||
model = self.queryset.model
|
||||
object_ct = ContentType.objects.get_for_model(model)
|
||||
|
||||
if self.filter:
|
||||
self.queryset = self.filter(request.GET, self.queryset).qs
|
||||
@@ -58,17 +59,16 @@ class ObjectListView(View):
|
||||
|
||||
# Construct the table based on the user's permissions
|
||||
table = self.table(self.queryset)
|
||||
table.model = model
|
||||
if 'pk' in table.base_columns and any([request.user.has_perm(perm) for perm in self.edit_permissions]):
|
||||
table.base_columns['pk'].visible = True
|
||||
RequestConfig(request, paginate={'per_page': settings.PAGINATE_COUNT, 'klass': EnhancedPaginator})\
|
||||
.configure(table)
|
||||
|
||||
export_templates = ExportTemplate.objects.filter(content_type=object_ct)
|
||||
|
||||
return render(request, self.template_name, {
|
||||
'table': table,
|
||||
'filter_form': self.filter_form(request.GET, label_suffix='') if self.filter_form else None,
|
||||
'export_templates': export_templates,
|
||||
'export_templates': ExportTemplate.objects.filter(content_type=object_ct),
|
||||
})
|
||||
|
||||
def alter_queryset(self, request):
|
||||
|
||||
Reference in New Issue
Block a user