server/python/django2/renkanmanager/admin.py
author ymh <ymh.work@gmail.com>
Wed, 27 Jul 2016 13:55:18 +0200
changeset 633 fdff56da097d
parent 621 192ce5938726
child 665 69d13e7dd286
permissions -rw-r--r--
allow to highlight edges. Add a url selector for edge + seach edges in edge box. remove max width of title

from django import forms
from django.contrib import admin
from django.core.urlresolvers import reverse
from .models import Renkan, Revision, Workspace
from renkanmanager import settings

class RenkanAdmin(admin.ModelAdmin):
    list_display = ('renkan_guid', 'current_revision_link', 'title', 'creator_display_field', 'creation_date')
    ordering = ('-creation_date',)

    readonly_fields = ('current_revision_link', 'title', 'content', 'is_copy', 'revision_count', 'creation_date', 'renkan_guid')

    fieldsets = (
        (None, {'fields': ('renkan_guid',)}),
        ("Révision courante", {'fields': ('current_revision_link', 'title', 'content')}),
        ("Copie", {'fields': ( 'is_copy', 'source_revision',)}),
        ("Création", {'fields': ('creator', 'creation_date')}),
    )

    search_fields = ['renkan_guid', 'current_revision__title', 'creator__'+settings.RENKAN_USER_DISPLAY_FIELD]

    def creator_display_field(self, obj):
        return getattr(obj.creator, settings.RENKAN_USER_DISPLAY_FIELD) if obj.creator else None
    creator_display_field.short_description = 'creator'

    def get_queryset(self, request):
       queryset = super(RenkanAdmin, self).get_queryset(request)
       return queryset.select_related('current_revision', 'creator')

    def current_revision_link(self, obj):
        return '<a href="%s">%s</a>' % (reverse("admin:renkanmanager_revision_change", args=(obj.current_revision.id,)), obj.current_revision.revision_guid)
    current_revision_link.allow_tags = True
    current_revision_link.short_description = "Révision courante"

class RevisionAdmin(admin.ModelAdmin):
    list_display = ('revision_guid', 'parent_renkan_link', 'creator_display_field', 'title', 'modification_date')
    ordering = ('-modification_date',)
    readonly_fields = ('parent_renkan_link', 'creation_date', 'modification_date','revision_guid', 'parent_renkan')

    search_fields = ('revision_guid', 'parent_renkan__renkan_guid', 'title', 'creator__'+settings.RENKAN_USER_DISPLAY_FIELD)

    fieldsets = (
        (None, {'fields': ('revision_guid', 'parent_renkan',)}),
        ("Contenu", {'fields': ('title', 'content',)}),
        ("Création", {'fields': ('creator', 'creation_date')}),
        ("Edition", {'fields': ('last_updated_by', 'modification_date')})
    )

    def creator_display_field(self, obj):
        return getattr(obj.creator, settings.RENKAN_USER_DISPLAY_FIELD) if obj.creator else None
    creator_display_field.short_description = 'creator'


    def parent_renkan_link(self, obj):
        return '<a href="%s">%s</a>' % (reverse("admin:renkanmanager_renkan_change", args=(obj.parent_renkan.id,)), obj.parent_renkan.renkan_guid)

    parent_renkan_link.allow_tags = True
    parent_renkan_link.short_description = "Renkan associé"

    def get_queryset(self, request):
       queryset = super(RevisionAdmin, self).get_queryset(request)
       return queryset.select_related('parent_renkan', 'creator')


class WorkspaceAdmin(admin.ModelAdmin):
    pass

admin.site.register(Renkan, RenkanAdmin)
admin.site.register(Revision, RevisionAdmin)
admin.site.register(Workspace, WorkspaceAdmin)