-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathadmin.py
62 lines (44 loc) · 2.05 KB
/
admin.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
from django.contrib import admin
from django.db import models
from django.http import HttpResponse
from xml.etree import ElementTree
from biblentry.models import BibliographicCategory, BibliographicEntry, Language
from tinymce.widgets import TinyMCE
class StyledEntryTextarea (TinyMCE):
def __init__ (self, *args, **kwargs):
mce_attrs = kwargs.setdefault('mce_attrs', {})
mce_attrs['plugins'] = 'paste,biblentry,save'
mce_attrs['theme_advanced_buttons1'] = 'italic,BiblEntryauthor,BiblEntryeditor,BiblEntrytitlemonograph,BiblEntrytitlearticle,BiblEntrydate,BiblEntryunmark,separator,undo,redo,separator,code'
mce_attrs['theme_advanced_buttons2'] = ''
super(StyledEntryTextarea, self).__init__(*args, **kwargs)
class BibliographicCategoryAdmin (admin.ModelAdmin):
list_display = ('name',)
search_fields = ['name']
class BibliographicEntryAdmin (admin.ModelAdmin):
fieldsets = (
('Reference', {'fields': ('styled_entry',)}),
('Others', {'fields': ('language', 'categories', 'siglum')}),
)
list_display = ('id', 'siglum', 'author', 'publication_date', 'title_monograph',
'title_article')
list_display_links = list_display
list_filter = ['language']
ordering = ['styled_entry']
actions = ['export_as_TEI']
formfield_overrides = {
models.TextField: {'widget': StyledEntryTextarea }
}
def export_as_TEI (self, request, queryset):
entries = ['<listBibl>']
entries.extend(queryset.values_list('tei_entry', flat=True))
entries.append('</listBibl>')
root = ElementTree.fromstringlist(entries)
tei = ElementTree.tostring(root, encoding='utf-8')
response = HttpResponse(tei, mimetype='text/xml')
return response
class LanguageAdmin (admin.ModelAdmin):
list_display = ('name',)
search_fields = ['name']
admin.site.register(BibliographicCategory, BibliographicCategoryAdmin)
admin.site.register(BibliographicEntry, BibliographicEntryAdmin)
admin.site.register(Language)#, LanguageAdmin)