loko/streetup/projects/admin.py
2026-07-22 14:48:40 +02:00

87 lines
2.8 KiB
Python

from django.contrib.gis import admin
from .models import (
Project, ProjectPhase, ProjectTag,
ProjectTemplate, ProjectTemplateAttribute,
ProjectAttributeChoiceSet, ProjectAttributeChoice,
ProjectTeamAccess, ProjectUserAccess,
)
@admin.register(ProjectTag)
class ProjectTagAdmin(admin.ModelAdmin):
list_display = ("name_fr", "slug", "order")
prepopulated_fields = {"slug": ("name_fr",)}
search_fields = ("name_fr", "name_nl")
class ProjectTeamAccessInline(admin.TabularInline):
model = ProjectTeamAccess
extra = 1
autocomplete_fields = ['team']
fields = ('team', 'can_view', 'can_edit')
verbose_name = "Accès équipe"
verbose_name_plural = "Accès équipes"
class ProjectUserAccessInline(admin.TabularInline):
model = ProjectUserAccess
extra = 1
autocomplete_fields = ['user']
fields = ('user', 'can_view', 'can_edit')
verbose_name = "Accès direct utilisateur"
verbose_name_plural = "Accès directs utilisateurs"
@admin.register(Project)
class ProjectAdmin(admin.ModelAdmin):
list_display = ("name", "start_date", "end_date")
search_fields = ("name",)
inlines = [ProjectTeamAccessInline, ProjectUserAccessInline]
@admin.register(ProjectTeamAccess)
class ProjectTeamAccessAdmin(admin.ModelAdmin):
list_display = ("project", "team", "can_view", "can_edit")
list_filter = ("can_view", "can_edit", "team__company")
search_fields = ("project__name", "project__code", "team__name")
autocomplete_fields = ("team",)
@admin.register(ProjectUserAccess)
class ProjectUserAccessAdmin(admin.ModelAdmin):
list_display = ("project", "user", "can_view", "can_edit")
list_filter = ("can_view", "can_edit")
search_fields = ("project__name", "project__code", "user__username", "user__first_name", "user__last_name")
@admin.register(ProjectPhase)
class PhaseAdmin(admin.ModelAdmin):
list_display = ("name", "project", "start_date", "end_date")
search_fields = ("name", "project")
class ProjectAttributeChoiceInline(admin.TabularInline):
model = ProjectAttributeChoice
extra = 1
fields = ("value", "label_fr", "label_nl", "order")
@admin.register(ProjectAttributeChoiceSet)
class ProjectAttributeChoiceSetAdmin(admin.ModelAdmin):
list_display = ("name_fr", "name_nl")
search_fields = ("name_fr", "name_nl")
inlines = [ProjectAttributeChoiceInline]
class ProjectTemplateAttributeInline(admin.TabularInline):
model = ProjectTemplateAttribute
extra = 1
fields = ("name_fr", "name_nl", "attribute_type", "choice_set", "is_required", "order", "help_text_fr", "help_text_nl")
@admin.register(ProjectTemplate)
class ProjectTemplateAdmin(admin.ModelAdmin):
list_display = ("name_fr", "name_nl", "is_active")
list_filter = ("is_active",)
search_fields = ("name_fr", "name_nl")
inlines = [ProjectTemplateAttributeInline]