server/python/django2/renkanmanager/admin.py
changeset 621 192ce5938726
parent 614 23416a833ca8
child 665 69d13e7dd286
equal deleted inserted replaced
620:22b5739772d8 621:192ce5938726
     1 from django import forms
     1 from django import forms
     2 from django.contrib import admin
     2 from django.contrib import admin
     3 from django.core.urlresolvers import reverse
     3 from django.core.urlresolvers import reverse
     4 from .models import Renkan, Revision, Workspace
     4 from .models import Renkan, Revision, Workspace
       
     5 from renkanmanager import settings
     5 
     6 
     6 class RenkanAdmin(admin.ModelAdmin):
     7 class RenkanAdmin(admin.ModelAdmin):
     7     list_display = ('renkan_guid', 'current_revision_link', 'title', 'creator', 'creation_date')
     8     list_display = ('renkan_guid', 'current_revision_link', 'title', 'creator_display_field', 'creation_date')
     8     ordering = ('creation_date',)
     9     ordering = ('-creation_date',)
     9     #readonly_fields = ('current_revision_link', 'source_revision', 'title', 'content', 'is_copy', 'revision_count', 'creation_date')
    10 
    10     readonly_fields = ('current_revision_link', 'title', 'content', 'is_copy', 'revision_count', 'creation_date')
    11     readonly_fields = ('current_revision_link', 'title', 'content', 'is_copy', 'revision_count', 'creation_date', 'renkan_guid')
       
    12 
    11     fieldsets = (
    13     fieldsets = (
    12         (None, {'fields': ('renkan_guid',)}),
    14         (None, {'fields': ('renkan_guid',)}),
    13         ("Révision courante", {'fields': ('current_revision_link', 'title', 'content')}),
    15         ("Révision courante", {'fields': ('current_revision_link', 'title', 'content')}),
    14         ("Copie", {'fields': ( 'is_copy', 'source_revision',)}),
    16         ("Copie", {'fields': ( 'is_copy', 'source_revision',)}),
    15         ("Création", {'fields': ('creator', 'creation_date')}),
    17         ("Création", {'fields': ('creator', 'creation_date')}),
    16     )
    18     )
    17 
    19 
       
    20     search_fields = ['renkan_guid', 'current_revision__title', 'creator__'+settings.RENKAN_USER_DISPLAY_FIELD]
       
    21 
       
    22     def creator_display_field(self, obj):
       
    23         return getattr(obj.creator, settings.RENKAN_USER_DISPLAY_FIELD) if obj.creator else None
       
    24     creator_display_field.short_description = 'creator'
       
    25 
       
    26     def get_queryset(self, request):
       
    27        queryset = super(RenkanAdmin, self).get_queryset(request)
       
    28        return queryset.select_related('current_revision', 'creator')
       
    29 
    18     def current_revision_link(self, obj):
    30     def current_revision_link(self, obj):
    19         return '<a href="%s">%s</a>' % (reverse("admin:renkanmanager_revision_change", args=(obj.current_revision.id,)), obj.current_revision.revision_guid)
    31         return '<a href="%s">%s</a>' % (reverse("admin:renkanmanager_revision_change", args=(obj.current_revision.id,)), obj.current_revision.revision_guid)
    20     current_revision_link.allow_tags = True
    32     current_revision_link.allow_tags = True
    21     current_revision_link.short_description = "Révision courante"
    33     current_revision_link.short_description = "Révision courante"
    22 
    34 
    23 class RevisionAdmin(admin.ModelAdmin):
    35 class RevisionAdmin(admin.ModelAdmin):
    24     list_display = ('revision_guid', 'parent_renkan_link', 'creator', 'title', 'creation_date')
    36     list_display = ('revision_guid', 'parent_renkan_link', 'creator_display_field', 'title', 'modification_date')
    25     ordering = ('creation_date',)
    37     ordering = ('-modification_date',)
    26     readonly_fields = ('parent_renkan_link', 'creation_date', 'modification_date',)
    38     readonly_fields = ('parent_renkan_link', 'creation_date', 'modification_date','revision_guid', 'parent_renkan')
       
    39 
       
    40     search_fields = ('revision_guid', 'parent_renkan__renkan_guid', 'title', 'creator__'+settings.RENKAN_USER_DISPLAY_FIELD)
       
    41 
    27     fieldsets = (
    42     fieldsets = (
    28         (None, {'fields': ('revision_guid', 'parent_renkan',)}),
    43         (None, {'fields': ('revision_guid', 'parent_renkan',)}),
    29         ("Contenu", {'fields': ('title', 'content',)}),
    44         ("Contenu", {'fields': ('title', 'content',)}),
    30         ("Création", {'fields': ('creator', 'creation_date')}),
    45         ("Création", {'fields': ('creator', 'creation_date')}),
    31         ("Edition", {'fields': ('last_updated_by', 'modification_date')})
    46         ("Edition", {'fields': ('last_updated_by', 'modification_date')})
    32     )
    47     )
    33 
    48 
       
    49     def creator_display_field(self, obj):
       
    50         return getattr(obj.creator, settings.RENKAN_USER_DISPLAY_FIELD) if obj.creator else None
       
    51     creator_display_field.short_description = 'creator'
       
    52 
       
    53 
    34     def parent_renkan_link(self, obj):
    54     def parent_renkan_link(self, obj):
    35         return '<a href="%s">%s</a>' % (reverse("admin:renkanmanager_renkan_change", args=(obj.parent_renkan.id,)), obj.parent_renkan.renkan_guid)
    55         return '<a href="%s">%s</a>' % (reverse("admin:renkanmanager_renkan_change", args=(obj.parent_renkan.id,)), obj.parent_renkan.renkan_guid)
    36 
    56 
    37     parent_renkan_link.allow_tags = True
    57     parent_renkan_link.allow_tags = True
    38     parent_renkan_link.short_description = "Renkan associé"
    58     parent_renkan_link.short_description = "Renkan associé"
    39 
    59 
       
    60     def get_queryset(self, request):
       
    61        queryset = super(RevisionAdmin, self).get_queryset(request)
       
    62        return queryset.select_related('parent_renkan', 'creator')
       
    63 
       
    64 
    40 class WorkspaceAdmin(admin.ModelAdmin):
    65 class WorkspaceAdmin(admin.ModelAdmin):
    41     pass
    66     pass
    42 
    67 
    43 admin.site.register(Renkan, RenkanAdmin)
    68 admin.site.register(Renkan, RenkanAdmin)
    44 admin.site.register(Revision, RevisionAdmin)
    69 admin.site.register(Revision, RevisionAdmin)
    45 admin.site.register(Workspace)
    70 admin.site.register(Workspace, WorkspaceAdmin)