admin.py 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. # -*- coding: utf-8 -*-
  2. from __future__ import unicode_literals
  3. import os
  4. from django.contrib import admin
  5. from django.utils.translation import ugettext_lazy as _
  6. from .models import Panorama, ReferencePoint, Reference
  7. from .utils import path_exists
  8. class ReferenceInline(admin.TabularInline):
  9. model = Reference
  10. fk_name = "panorama"
  11. extra = 1
  12. @admin.register(Panorama)
  13. class PanoramaAdmin(admin.ModelAdmin):
  14. model = Panorama
  15. inlines = (ReferenceInline, )
  16. list_display = ('name', 'has_tiles', 'latitude', 'longitude', 'altitude', 'loop')
  17. fields = ('name', ('image', 'image_width', 'image_height'),
  18. 'loop', ('latitude', 'longitude'), ('ground_altitude', 'height_above_ground'))
  19. readonly_fields = ('image_width', 'image_height')
  20. search_fields = ('name', )
  21. actions = ('regenerate_tiles', )
  22. def regenerate_tiles(self, request, queryset):
  23. for pano in queryset:
  24. pano.delete_tiles()
  25. pano.generate_tiles()
  26. self.message_user(request, _("Launched tiles regeneration, it may take some time to complete"))
  27. regenerate_tiles.short_description = _("Regenerate tiles for the selected panoramas")
  28. @admin.register(ReferencePoint)
  29. class ReferencePointAdmin(admin.ModelAdmin):
  30. model = ReferencePoint
  31. list_display = ('name', 'latitude', 'longitude', 'height_above_ground', 'altitude', 'kind')
  32. list_filter = ('kind', )
  33. fields = ('name', ('latitude', 'longitude'), ('ground_altitude', 'height_above_ground'), 'kind')
  34. search_fields = ('name', )