142 lines
5.0 KiB
Python
142 lines
5.0 KiB
Python
import django.contrib.admin as admin
|
|
from django.utils.translation import ugettext as _
|
|
from django.contrib.auth import admin as auth_admin
|
|
from django.conf.urls.defaults import patterns
|
|
|
|
import models
|
|
import forms
|
|
import views
|
|
from docbow_project.log import models as log_models, admin as log_admin
|
|
import docbow_project.actions as actions
|
|
|
|
class DocbowAdminSite(admin.AdminSite):
|
|
pass
|
|
|
|
site = DocbowAdminSite('docbow_admin')
|
|
|
|
class DocumentAdmin(admin.ModelAdmin):
|
|
list_display = [ 'date', 'sender', 'recipients', 'filetype', 'filename_links', 'comment' ]
|
|
list_filter = [ 'sender', 'to_user', 'to_list', 'filetype' ]
|
|
fields = [ 'date', 'sender', 'recipients', 'filetype', 'filename_links', 'comment']
|
|
readonly_fields = [ 'sender', 'filetype', 'date', 'recipients', 'filename_links', 'comment' ]
|
|
filter_horizontal = [ 'to_user', 'to_list' ]
|
|
date_hierarchy = 'date'
|
|
|
|
|
|
class SendingLimitationAdmin(admin.ModelAdmin):
|
|
list_display = [ 'mailing_list', 'filetypes_list', 'lists_list' ]
|
|
filter_horizontal = [ 'filetypes', 'lists' ]
|
|
actions = [ actions.export_as_csv ]
|
|
|
|
def lists_list(self, obj):
|
|
return ', '.join(obj.lists.values_list('name', flat=True))
|
|
lists_list.short_description = _('Limitation des destinataires')
|
|
|
|
def filetypes_list(self, obj):
|
|
return ', '.join(obj.filetypes.values_list('name', flat=True))
|
|
filetypes_list.short_description = _('Limitation des types de fichier')
|
|
|
|
|
|
class MailingListAdmin(admin.ModelAdmin):
|
|
list_display = [ 'name' ]
|
|
search_fields = [ 'name', 'members__username', 'members__first_name',
|
|
'members__last_name']
|
|
ordering = ['name']
|
|
form = forms.MailingListForm
|
|
actions = [ actions.export_as_csv ]
|
|
|
|
class Media:
|
|
js = ('docbow/js/SelectBox-count.js',)
|
|
|
|
class AttachedFileAdmin(admin.ModelAdmin):
|
|
def get_model_perms(self, request):
|
|
return {}
|
|
|
|
def get_urls(self):
|
|
urls = super(AttachedFileAdmin, self).get_urls()
|
|
attached_file_urls = patterns('',
|
|
(r'^(.+)/download/$', self.download)
|
|
)
|
|
return attached_file_urls + urls
|
|
|
|
def download(self, request, object_id):
|
|
attached_file = models.AttachedFile.objects.get(pk=object_id)
|
|
return views.upload(request, attached_file)
|
|
|
|
class DocbowUserAdmin(auth_admin.UserAdmin):
|
|
fieldsets = (
|
|
(None, {'fields': ('username', 'password')}),
|
|
(_('Personal info'), {'fields': ('first_name', 'last_name', 'email')}),
|
|
(_('Permissions'), {'fields': ('is_active', 'is_staff')}),
|
|
(_('Important dates'), {'fields': ('last_login', 'date_joined')}),
|
|
(_('Groups'), {'fields': ('groups',)}),
|
|
)
|
|
readonly_fields = [ 'last_login', 'date_joined' ]
|
|
exclude = [ 'user_permissions' ]
|
|
actions = [ actions.export_as_csv ]
|
|
|
|
class DocbowGroupAdmin(auth_admin.GroupAdmin):
|
|
exclude = [ 'permissions' ]
|
|
|
|
class MailboxAdmin(admin.ModelAdmin):
|
|
list_display = [ 'owner', 'document', 'date', 'seen' ]
|
|
list_filter = [ 'owner', 'outbox' ]
|
|
def queryset(self, request):
|
|
qs = super(MailboxAdmin, self).queryset(request)
|
|
return qs
|
|
def lookup_allowed(self, *args, **kwargs):
|
|
return True
|
|
|
|
class InboxAdmin(MailboxAdmin):
|
|
list_display = [ 'date', 'owner', 'document', 'seen' ]
|
|
fields = [ 'date', 'owner', 'document', 'seen' ]
|
|
readonly_fields = [ 'date', 'owner', 'document', 'seen' ]
|
|
def queryset(self, request):
|
|
qs = super(InboxAdmin, self).queryset(request)
|
|
qs = qs.filter(outbox=False)
|
|
return qs
|
|
|
|
class OutboxAdmin(MailboxAdmin):
|
|
list_display = [ 'date', 'owner', 'document' ]
|
|
fields = list_display
|
|
readonly_fields = list_display
|
|
def queryset(self, request):
|
|
qs = super(OutboxAdmin, self).queryset(request)
|
|
qs = qs.filter(outbox=True)
|
|
return qs
|
|
|
|
class ContentAdmin(admin.ModelAdmin):
|
|
verbose_name = _('Predefined content description')
|
|
|
|
class AutomaticForwardingAdmin(admin.ModelAdmin):
|
|
filter_horizontal = [ 'filetypes', 'originaly_to_user', 'forward_to_user',
|
|
'forward_to_list' ]
|
|
form = forms.AutomaticForwardingForm
|
|
|
|
|
|
|
|
# Docbow Admin Site
|
|
site.register(models.DocbowUser, DocbowUserAdmin)
|
|
site.register(models.DocbowGroup, DocbowGroupAdmin)
|
|
|
|
site.register(models.FileType)
|
|
site.register(models.Content, ContentAdmin)
|
|
site.register(models.Document, DocumentAdmin)
|
|
site.register(models.MailingList, MailingListAdmin)
|
|
site.register(models.Delegation)
|
|
site.register(models.Inbox, InboxAdmin)
|
|
site.register(models.Outbox, OutboxAdmin)
|
|
site.register(log_models.LogLine, log_admin.LogLineAdmin)
|
|
site.register(models.AttachedFile, AttachedFileAdmin)
|
|
site.register(models.SendingLimitation, SendingLimitationAdmin)
|
|
site.register(models.AutomaticForwarding, AutomaticForwardingAdmin)
|
|
|
|
# Superadmin Admin Site
|
|
admin.site.register(models.FileType)
|
|
admin.site.register(models.Content, ContentAdmin)
|
|
admin.site.register(models.Document)
|
|
admin.site.register(models.AttachedFile)
|
|
admin.site.register(models.MailingList, MailingListAdmin)
|
|
admin.site.register(models.Delegation)
|
|
admin.site.register(models.Mailbox, MailboxAdmin)
|