server/python/django2/renkanmanager/admin.py
author ymh <ymh.work@gmail.com>
Sun, 14 Jul 2024 21:59:51 +0200
changeset 665 69d13e7dd286
parent 621 192ce5938726
permissions -rw-r--r--
add file encoding
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
665
69d13e7dd286 add file encoding
ymh <ymh.work@gmail.com>
parents: 621
diff changeset
     1
# -*- coding: utf-8 -*-
612
aa4987fede52 admin for renkan objects
durandn
parents:
diff changeset
     2
from django import forms
aa4987fede52 admin for renkan objects
durandn
parents:
diff changeset
     3
from django.contrib import admin
aa4987fede52 admin for renkan objects
durandn
parents:
diff changeset
     4
from django.core.urlresolvers import reverse
aa4987fede52 admin for renkan objects
durandn
parents:
diff changeset
     5
from .models import Renkan, Revision, Workspace
621
192ce5938726 Correct renkan manager admin
ymh <ymh.work@gmail.com>
parents: 614
diff changeset
     6
from renkanmanager import settings
612
aa4987fede52 admin for renkan objects
durandn
parents:
diff changeset
     7
aa4987fede52 admin for renkan objects
durandn
parents:
diff changeset
     8
class RenkanAdmin(admin.ModelAdmin):
621
192ce5938726 Correct renkan manager admin
ymh <ymh.work@gmail.com>
parents: 614
diff changeset
     9
    list_display = ('renkan_guid', 'current_revision_link', 'title', 'creator_display_field', 'creation_date')
192ce5938726 Correct renkan manager admin
ymh <ymh.work@gmail.com>
parents: 614
diff changeset
    10
    ordering = ('-creation_date',)
192ce5938726 Correct renkan manager admin
ymh <ymh.work@gmail.com>
parents: 614
diff changeset
    11
192ce5938726 Correct renkan manager admin
ymh <ymh.work@gmail.com>
parents: 614
diff changeset
    12
    readonly_fields = ('current_revision_link', 'title', 'content', 'is_copy', 'revision_count', 'creation_date', 'renkan_guid')
192ce5938726 Correct renkan manager admin
ymh <ymh.work@gmail.com>
parents: 614
diff changeset
    13
612
aa4987fede52 admin for renkan objects
durandn
parents:
diff changeset
    14
    fieldsets = (
aa4987fede52 admin for renkan objects
durandn
parents:
diff changeset
    15
        (None, {'fields': ('renkan_guid',)}),
aa4987fede52 admin for renkan objects
durandn
parents:
diff changeset
    16
        ("Révision courante", {'fields': ('current_revision_link', 'title', 'content')}),
aa4987fede52 admin for renkan objects
durandn
parents:
diff changeset
    17
        ("Copie", {'fields': ( 'is_copy', 'source_revision',)}),
aa4987fede52 admin for renkan objects
durandn
parents:
diff changeset
    18
        ("Création", {'fields': ('creator', 'creation_date')}),
aa4987fede52 admin for renkan objects
durandn
parents:
diff changeset
    19
    )
614
23416a833ca8 Change guid fields to more optimal type + migration
ymh <ymh.work@gmail.com>
parents: 612
diff changeset
    20
621
192ce5938726 Correct renkan manager admin
ymh <ymh.work@gmail.com>
parents: 614
diff changeset
    21
    search_fields = ['renkan_guid', 'current_revision__title', 'creator__'+settings.RENKAN_USER_DISPLAY_FIELD]
192ce5938726 Correct renkan manager admin
ymh <ymh.work@gmail.com>
parents: 614
diff changeset
    22
192ce5938726 Correct renkan manager admin
ymh <ymh.work@gmail.com>
parents: 614
diff changeset
    23
    def creator_display_field(self, obj):
192ce5938726 Correct renkan manager admin
ymh <ymh.work@gmail.com>
parents: 614
diff changeset
    24
        return getattr(obj.creator, settings.RENKAN_USER_DISPLAY_FIELD) if obj.creator else None
192ce5938726 Correct renkan manager admin
ymh <ymh.work@gmail.com>
parents: 614
diff changeset
    25
    creator_display_field.short_description = 'creator'
192ce5938726 Correct renkan manager admin
ymh <ymh.work@gmail.com>
parents: 614
diff changeset
    26
192ce5938726 Correct renkan manager admin
ymh <ymh.work@gmail.com>
parents: 614
diff changeset
    27
    def get_queryset(self, request):
192ce5938726 Correct renkan manager admin
ymh <ymh.work@gmail.com>
parents: 614
diff changeset
    28
       queryset = super(RenkanAdmin, self).get_queryset(request)
192ce5938726 Correct renkan manager admin
ymh <ymh.work@gmail.com>
parents: 614
diff changeset
    29
       return queryset.select_related('current_revision', 'creator')
192ce5938726 Correct renkan manager admin
ymh <ymh.work@gmail.com>
parents: 614
diff changeset
    30
612
aa4987fede52 admin for renkan objects
durandn
parents:
diff changeset
    31
    def current_revision_link(self, obj):
aa4987fede52 admin for renkan objects
durandn
parents:
diff changeset
    32
        return '<a href="%s">%s</a>' % (reverse("admin:renkanmanager_revision_change", args=(obj.current_revision.id,)), obj.current_revision.revision_guid)
aa4987fede52 admin for renkan objects
durandn
parents:
diff changeset
    33
    current_revision_link.allow_tags = True
614
23416a833ca8 Change guid fields to more optimal type + migration
ymh <ymh.work@gmail.com>
parents: 612
diff changeset
    34
    current_revision_link.short_description = "Révision courante"
612
aa4987fede52 admin for renkan objects
durandn
parents:
diff changeset
    35
aa4987fede52 admin for renkan objects
durandn
parents:
diff changeset
    36
class RevisionAdmin(admin.ModelAdmin):
621
192ce5938726 Correct renkan manager admin
ymh <ymh.work@gmail.com>
parents: 614
diff changeset
    37
    list_display = ('revision_guid', 'parent_renkan_link', 'creator_display_field', 'title', 'modification_date')
192ce5938726 Correct renkan manager admin
ymh <ymh.work@gmail.com>
parents: 614
diff changeset
    38
    ordering = ('-modification_date',)
192ce5938726 Correct renkan manager admin
ymh <ymh.work@gmail.com>
parents: 614
diff changeset
    39
    readonly_fields = ('parent_renkan_link', 'creation_date', 'modification_date','revision_guid', 'parent_renkan')
192ce5938726 Correct renkan manager admin
ymh <ymh.work@gmail.com>
parents: 614
diff changeset
    40
192ce5938726 Correct renkan manager admin
ymh <ymh.work@gmail.com>
parents: 614
diff changeset
    41
    search_fields = ('revision_guid', 'parent_renkan__renkan_guid', 'title', 'creator__'+settings.RENKAN_USER_DISPLAY_FIELD)
192ce5938726 Correct renkan manager admin
ymh <ymh.work@gmail.com>
parents: 614
diff changeset
    42
612
aa4987fede52 admin for renkan objects
durandn
parents:
diff changeset
    43
    fieldsets = (
aa4987fede52 admin for renkan objects
durandn
parents:
diff changeset
    44
        (None, {'fields': ('revision_guid', 'parent_renkan',)}),
aa4987fede52 admin for renkan objects
durandn
parents:
diff changeset
    45
        ("Contenu", {'fields': ('title', 'content',)}),
aa4987fede52 admin for renkan objects
durandn
parents:
diff changeset
    46
        ("Création", {'fields': ('creator', 'creation_date')}),
aa4987fede52 admin for renkan objects
durandn
parents:
diff changeset
    47
        ("Edition", {'fields': ('last_updated_by', 'modification_date')})
aa4987fede52 admin for renkan objects
durandn
parents:
diff changeset
    48
    )
614
23416a833ca8 Change guid fields to more optimal type + migration
ymh <ymh.work@gmail.com>
parents: 612
diff changeset
    49
621
192ce5938726 Correct renkan manager admin
ymh <ymh.work@gmail.com>
parents: 614
diff changeset
    50
    def creator_display_field(self, obj):
192ce5938726 Correct renkan manager admin
ymh <ymh.work@gmail.com>
parents: 614
diff changeset
    51
        return getattr(obj.creator, settings.RENKAN_USER_DISPLAY_FIELD) if obj.creator else None
192ce5938726 Correct renkan manager admin
ymh <ymh.work@gmail.com>
parents: 614
diff changeset
    52
    creator_display_field.short_description = 'creator'
192ce5938726 Correct renkan manager admin
ymh <ymh.work@gmail.com>
parents: 614
diff changeset
    53
192ce5938726 Correct renkan manager admin
ymh <ymh.work@gmail.com>
parents: 614
diff changeset
    54
612
aa4987fede52 admin for renkan objects
durandn
parents:
diff changeset
    55
    def parent_renkan_link(self, obj):
aa4987fede52 admin for renkan objects
durandn
parents:
diff changeset
    56
        return '<a href="%s">%s</a>' % (reverse("admin:renkanmanager_renkan_change", args=(obj.parent_renkan.id,)), obj.parent_renkan.renkan_guid)
aa4987fede52 admin for renkan objects
durandn
parents:
diff changeset
    57
aa4987fede52 admin for renkan objects
durandn
parents:
diff changeset
    58
    parent_renkan_link.allow_tags = True
614
23416a833ca8 Change guid fields to more optimal type + migration
ymh <ymh.work@gmail.com>
parents: 612
diff changeset
    59
    parent_renkan_link.short_description = "Renkan associé"
23416a833ca8 Change guid fields to more optimal type + migration
ymh <ymh.work@gmail.com>
parents: 612
diff changeset
    60
621
192ce5938726 Correct renkan manager admin
ymh <ymh.work@gmail.com>
parents: 614
diff changeset
    61
    def get_queryset(self, request):
192ce5938726 Correct renkan manager admin
ymh <ymh.work@gmail.com>
parents: 614
diff changeset
    62
       queryset = super(RevisionAdmin, self).get_queryset(request)
192ce5938726 Correct renkan manager admin
ymh <ymh.work@gmail.com>
parents: 614
diff changeset
    63
       return queryset.select_related('parent_renkan', 'creator')
192ce5938726 Correct renkan manager admin
ymh <ymh.work@gmail.com>
parents: 614
diff changeset
    64
192ce5938726 Correct renkan manager admin
ymh <ymh.work@gmail.com>
parents: 614
diff changeset
    65
612
aa4987fede52 admin for renkan objects
durandn
parents:
diff changeset
    66
class WorkspaceAdmin(admin.ModelAdmin):
aa4987fede52 admin for renkan objects
durandn
parents:
diff changeset
    67
    pass
aa4987fede52 admin for renkan objects
durandn
parents:
diff changeset
    68
aa4987fede52 admin for renkan objects
durandn
parents:
diff changeset
    69
admin.site.register(Renkan, RenkanAdmin)
aa4987fede52 admin for renkan objects
durandn
parents:
diff changeset
    70
admin.site.register(Revision, RevisionAdmin)
621
192ce5938726 Correct renkan manager admin
ymh <ymh.work@gmail.com>
parents: 614
diff changeset
    71
admin.site.register(Workspace, WorkspaceAdmin)