from django import forms # noqa from django.contrib import admin # noqa from django_tabbed_changeform_admin.admin import DjangoTabbedChangeformAdmin # noqa from main.forms.layer.area_layer import FkAreaLayerInline # noqa from main.lib.utils.backend import get_user_groups # noqa from main.models import WfsLayer # noqa from django.db import models # noqa from django.forms import Textarea # noqa class WfsLayerAdmin(DjangoTabbedChangeformAdmin, admin.ModelAdmin): model = WfsLayer list_display = ('__str__', 'workspace', 'prefix') save_as = True inlines = [FkAreaLayerInline ] search_fields = ["name_de", "name_en", "info_de", "info_en", "workspace", "prefix"] formfield_overrides = { models.TextField: {'widget': Textarea( attrs={'rows': 7, 'cols': 100})}, } fieldsets = [ (None, { 'fields': (('name_de', 'name_en'), 'bucket', 'file_path', ), 'classes': ('tab-basic',), }), (None, { 'fields': ('workspace', 'prefix'), 'classes': ('tab-wfs',), }), (None, { 'fields': ('info_de', 'info_en'), 'classes': ('tab-description',), }), ] tabs = [ ("Basic Information", ["tab-basic"]), ("WFS", ["tab-wfs"]), ("Description", ["tab-description"]), ("Layer-Group (Area)", ["tab-area-inline"]), ] def get_readonly_fields(self, request, obj): fields = ['bucket', 'file_path'] if request.user.is_superuser: return [] return fields def get_queryset(self, request): # if not superuser, a user can see only see layers from his groups qs = super().get_queryset(request) if request.user.is_superuser: return qs return qs.filter(bucket__group__in=get_user_groups(request))