admin.py 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. # -*- coding: utf-8 -*-
  2. from __future__ import unicode_literals
  3. import os
  4. from django.contrib import admin
  5. from .models import Panorama, PanoramaPhoto, 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(PanoramaPhoto)
  12. class PanoramaPhotoAdmin(admin.ModelAdmin):
  13. model = PanoramaPhoto
  14. class PanoramaPhotoInline(admin.StackedInline):
  15. model = PanoramaPhoto
  16. fk_name = "panorama"
  17. extra = 0
  18. @admin.register(Panorama)
  19. class PanoramaAdmin(admin.ModelAdmin):
  20. model = Panorama
  21. inlines = (PanoramaPhotoInline, ReferenceInline)
  22. list_display = ('name', 'has_tiles', 'latitude', 'longitude', 'altitude', 'loop')
  23. fields = ('name', ('image', 'image_width', 'image_height'),
  24. 'loop', ('latitude', 'longitude'), 'altitude')
  25. readonly_fields = ('image_width', 'image_height')
  26. actions = ('generate_panorama', 'regenerate_tiles')
  27. def generate_panorama(self, request, queryset):
  28. for pano in queryset:
  29. pano.generate_panorama()
  30. self.message_user(request, "Launched panorama generation, it will take a few minutes")
  31. def regenerate_tiles(self, request, queryset):
  32. for pano in queryset:
  33. pano.delete_tiles()
  34. pano.generate_tiles()
  35. self.message_user(request, "Launched tiles regeneration, it may take some time to complete")
  36. regenerate_tiles.short_description = "Regenerate tiles for the selected panoramas"
  37. @admin.register(ReferencePoint)
  38. class ReferencePointAdmin(admin.ModelAdmin):
  39. model = ReferencePoint
  40. list_display = ('name', 'latitude', 'longitude', 'altitude')
  41. fields = ('name', ('latitude', 'longitude'), 'altitude')