diff options
Diffstat (limited to 'core/admin.py')
-rw-r--r-- | core/admin.py | 129 |
1 files changed, 129 insertions, 0 deletions
diff --git a/core/admin.py b/core/admin.py new file mode 100644 index 0000000..e304966 --- /dev/null +++ b/core/admin.py @@ -0,0 +1,129 @@ +from troggle.core.models import *
+from django.contrib import admin
+from feincms.admin import editor
+from django.forms import ModelForm
+import django.forms as forms
+from core.forms import LogbookEntryForm
+from django.http import HttpResponse
+from django.core import serializers
+from core.views_other import downloadLogbook
+#from troggle.reversion.admin import VersionAdmin #django-reversion version control
+
+#overriding admin save so we have the new since parsing field
+class TroggleModelAdmin(admin.ModelAdmin):
+ def save_model(self, request, obj, form, change):
+ obj.new_since_parsing=True
+ obj.save()
+
+class RoleInline(admin.TabularInline):
+ model = PersonRole
+ extra = 4
+
+class SurvexBlockAdmin(TroggleModelAdmin):
+ inlines = (RoleInline,)
+
+class ScannedImageInline(admin.TabularInline):
+ model = ScannedImage
+ extra = 4
+
+class SurveyAdmin(TroggleModelAdmin):
+ inlines = (ScannedImageInline,)
+ search_fields = ('expedition__year','wallet_number')
+
+class QMsFoundInline(admin.TabularInline):
+ model=QM
+ fk_name='found_by'
+
+class PhotoInline(admin.TabularInline):
+ model = Photo
+ exclude = ['is_mugshot' ]
+ extra = 1
+
+class PersonTripInline(admin.TabularInline):
+ model = PersonTrip
+ exclude = ['persontrip_next','Delete']
+ extra = 1
+
+#class LogbookEntryAdmin(VersionAdmin):
+class LogbookEntryAdmin(TroggleModelAdmin):
+ prepopulated_fields = {'slug':("title",)}
+ search_fields = ('title','expedition__year')
+ date_heirarchy = ('date')
+ inlines = (PersonTripInline, PhotoInline, QMsFoundInline)
+ form = LogbookEntryForm
+
+ actions=('export_logbook_entries_as_html','export_logbook_entries_as_txt')
+
+ def export_logbook_entries_as_html(modeladmin, request, queryset):
+ response=downloadLogbook(request=request, queryset=queryset, extension='html')
+ return response
+
+ def export_logbook_entries_as_txt(modeladmin, request, queryset):
+ response=downloadLogbook(request=request, queryset=queryset, extension='txt')
+ return response
+
+class PersonExpeditionInline(admin.TabularInline):
+ model = PersonExpedition
+ extra = 1
+
+class PersonAdmin(TroggleModelAdmin):
+ search_fields = ('first_name','last_name')
+ inlines = (PersonExpeditionInline,)
+
+class QMAdmin(TroggleModelAdmin):
+ search_fields = ('found_by__cave__kataster_number','number','found_by__date')
+ list_display = ('__unicode__','grade','found_by','ticked_off_by')
+ list_display_links = ('__unicode__',)
+ list_editable = ('found_by','ticked_off_by','grade')
+ list_per_page = 20
+
+class PersonExpeditionAdmin(TroggleModelAdmin):
+ search_fields = ('person__first_name','expedition__year')
+
+class CaveAdmin(TroggleModelAdmin):
+ search_fields = ('official_name','kataster_number','unofficial_number')
+ #inlines = (QMInline,)
+ extra = 4
+
+class SubcaveAdmin(editor.TreeEditorMixin,TroggleModelAdmin):
+ pass
+
+admin.site.register(Photo)
+admin.site.register(Subcave, SubcaveAdmin)
+admin.site.register(Cave, CaveAdmin)
+admin.site.register(Area)
+admin.site.register(OtherCaveName)
+admin.site.register(CaveAndEntrance)
+admin.site.register(SurveyStation)
+admin.site.register(Entrance)
+admin.site.register(SurvexBlock, SurvexBlockAdmin)
+admin.site.register(Expedition)
+admin.site.register(Person,PersonAdmin)
+admin.site.register(PersonRole)
+admin.site.register(PersonExpedition,PersonExpeditionAdmin)
+admin.site.register(Role)
+admin.site.register(LogbookEntry, LogbookEntryAdmin)
+#admin.site.register(PersonTrip)
+admin.site.register(QM, QMAdmin)
+admin.site.register(Survey, SurveyAdmin)
+admin.site.register(ScannedImage)
+
+def export_as_json(modeladmin, request, queryset):
+ response = HttpResponse(mimetype="text/json")
+ response['Content-Disposition'] = 'attachment; filename=troggle_output.json'
+ serializers.serialize("json", queryset, stream=response)
+ return response
+
+def export_as_xml(modeladmin, request, queryset):
+ response = HttpResponse(mimetype="text/xml")
+ response['Content-Disposition'] = 'attachment; filename=troggle_output.xml'
+ serializers.serialize("xml", queryset, stream=response)
+ return response
+
+admin.site.add_action(export_as_xml)
+admin.site.add_action(export_as_json)
+
+try:
+ mptt.register(Subcave, order_insertion_by=['name'])
+except mptt.AlreadyRegistered:
+ print "mptt already registered"
|