Correct renkan manager admin
authorymh <ymh.work@gmail.com>
Thu, 23 Jun 2016 17:50:37 +0200
changeset 621 192ce5938726
parent 620 22b5739772d8
child 622 02e3c464223f
Correct renkan manager admin
server/python/django2/renkanmanager/admin.py
server/python/django2/renkanmanager/models.py
--- a/server/python/django2/renkanmanager/admin.py	Wed Jun 22 01:15:52 2016 +0200
+++ b/server/python/django2/renkanmanager/admin.py	Thu Jun 23 17:50:37 2016 +0200
@@ -2,12 +2,14 @@
 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', 'creation_date')
-    ordering = ('creation_date',)
-    #readonly_fields = ('current_revision_link', 'source_revision', 'title', 'content', 'is_copy', 'revision_count', 'creation_date')
-    readonly_fields = ('current_revision_link', 'title', 'content', 'is_copy', 'revision_count', 'creation_date')
+    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')}),
@@ -15,15 +17,28 @@
         ("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', 'title', 'creation_date')
-    ordering = ('creation_date',)
-    readonly_fields = ('parent_renkan_link', 'creation_date', 'modification_date',)
+    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',)}),
@@ -31,15 +46,25 @@
         ("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)
+admin.site.register(Workspace, WorkspaceAdmin)
--- a/server/python/django2/renkanmanager/models.py	Wed Jun 22 01:15:52 2016 +0200
+++ b/server/python/django2/renkanmanager/models.py	Thu Jun 23 17:50:37 2016 +0200
@@ -125,7 +125,7 @@
         return self.current_revision and self.current_revision.content or ''
 
     def __str__(self):
-        return self.renkan_guid
+        return str(self.renkan_guid)
 
     @transaction.atomic
     def save_renkan(self, updator, timestamp="", title="", content="", create_new_revision=False):