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) |