admin.py 1.4 KB

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