summaryrefslogtreecommitdiff
path: root/ishtar_common/admin.py
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common/admin.py')
-rw-r--r--ishtar_common/admin.py48
1 files changed, 47 insertions, 1 deletions
diff --git a/ishtar_common/admin.py b/ishtar_common/admin.py
index ab96dee8a..d1504069a 100644
--- a/ishtar_common/admin.py
+++ b/ishtar_common/admin.py
@@ -41,7 +41,7 @@ from django.forms import BaseInlineFormSet
from django.http import HttpResponseRedirect, HttpResponse
from django.shortcuts import render
from django.utils.decorators import method_decorator
-from django.utils.text import slugify
+from django.utils.text import slugify, mark_safe
from django.utils.translation import ugettext_lazy as _
from django.views.decorators.csrf import csrf_protect
@@ -499,6 +499,52 @@ class ProfileTypeAdmin(GeneralTypeAdmin):
admin_site.register(models.ProfileType, ProfileTypeAdmin)
+class ProfileTypeSummaryAdmin(admin.ModelAdmin):
+ change_list_template = 'admin/profiletype_summary_change_list.html'
+ search_fields = ('label',)
+ list_filter = ('available', 'label')
+
+ def has_add_permission(self, request, obj=None):
+ return False
+
+ def changelist_view(self, request, extra_context=None):
+ response = super(ProfileTypeSummaryAdmin, self).changelist_view(
+ request,
+ extra_context=extra_context,
+ )
+
+ try:
+ qs = response.context_data["cl"].queryset
+ except (AttributeError, KeyError):
+ return response
+
+ profile_types = list(
+ qs.order_by("label")
+ )
+ rights = {}
+ for profile_type in profile_types:
+ rights[profile_type.pk] = [g.pk for g in profile_type.groups.all()]
+ groups = []
+ ok = mark_safe(
+ u'<img src="{}admin/img/icon-yes.svg" alt="True">'.format(
+ settings.STATIC_URL
+ ))
+ for group in models.Group.objects.order_by("name"):
+ gp = [group.name]
+ for profile_type in profile_types:
+ gp.append(
+ ok if group.pk in rights[profile_type.pk]
+ else "-")
+ groups.append(gp)
+
+ response.context_data.update({"profile_types": profile_types,
+ "groups": groups})
+ return response
+
+
+admin_site.register(models.ProfileTypeSummary, ProfileTypeSummaryAdmin)
+
+
class ImporterDefaultValuesInline(admin.TabularInline):
model = models.ImporterDefaultValues