Keine Beschreibung

admin.py 2.8KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. from django.contrib import admin
  2. from django.contrib.gis.admin import OSMGeoAdmin
  3. from .models import Hospital, Patient, Bed, PatientLog, Driver, Ambulance, AmbulanceTicket, Place, Points, ImportFile
  4. from django_google_maps import widgets as map_widgets
  5. from django_google_maps import fields as map_fields
  6. from django_json_widget.widgets import JSONEditorWidget
  7. from django.db import models
  8. from django.utils.html import format_html
  9. from django.conf import settings
  10. #@admin.register(Bed)
  11. @admin.register(ImportFile)
  12. class ImportFileAdmin(admin.ModelAdmin):
  13. pass
  14. @admin.register(AmbulanceTicket)
  15. class AmbulanceTicketAdmin(admin.ModelAdmin):
  16. list_display = ('driver', 'ambulance', 'checkin_at', 'checkout_at', 'status')
  17. @admin.register(Points)
  18. class PointAdmin(admin.ModelAdmin):
  19. readonly_fields = ('distance', 'duration', 'get_map')
  20. formfield_overrides = {
  21. map_fields.AddressField: {'widget': map_widgets.GoogleMapsAddressWidget},
  22. models.JSONField: {'widget': JSONEditorWidget},
  23. }
  24. def get_map(self, obj):
  25. return format_html( f'''
  26. <br>
  27. <div>
  28. <iframe
  29. width="100%"
  30. height="450"
  31. style="border:0"
  32. loading="lazy"
  33. allowfullscreen
  34. src="https://www.google.com/maps/embed/v1/directions?key={settings.GOOGLE_MAPS_API_KEY}&origin={obj.geolocation.lat},{obj.geolocation.lon}&destination={obj.dest.geolocation.lat},{obj.dest.geolocation.lon}"></iframe></div>''')
  35. fields = ('dest', 'address', 'geolocation', 'distance', 'duration', 'directions','get_map' )
  36. #pass
  37. @admin.register(Place)
  38. class PlaceAdmin(admin.ModelAdmin):
  39. formfield_overrides = {
  40. map_fields.AddressField: {'widget': map_widgets.GoogleMapsAddressWidget},
  41. models.JSONField: {'widget': JSONEditorWidget},
  42. }
  43. #pass
  44. #list_display = ('driver', 'ambulance', 'checkin_at', 'checkout_at', 'status')
  45. @admin.register(Ambulance)
  46. class AmbulanceAdmin(admin.ModelAdmin):
  47. list_display = ('code', 'license_plate', 'brand', 'status')
  48. @admin.register(Driver)
  49. class DriverAdmin(admin.ModelAdmin):
  50. pass
  51. class BedAdmin(admin.TabularInline):
  52. model = Bed
  53. class PatientLogAdmin(admin.StackedInline):
  54. model = PatientLog
  55. #fields = ('hospital', 'notes', 'condition_level', 'status')
  56. @admin.register(Hospital)
  57. class HospitalAdmin(OSMGeoAdmin):
  58. list_display = ('title', 'address', 'geolocation')
  59. inlines = [BedAdmin,]
  60. fields = ('title', 'address_text', 'address', 'geolocation',)
  61. formfield_overrides = {
  62. map_fields.AddressField: {'widget': map_widgets.GoogleMapsAddressWidget},
  63. }
  64. @admin.register(Patient)
  65. class PatientAdmin(admin.ModelAdmin):
  66. readonly_fields = ('nearby_places', )
  67. formfield_overrides = {
  68. map_fields.AddressField: {'widget': map_widgets.GoogleMapsAddressWidget},
  69. }
  70. inlines = [PatientLogAdmin,]
  71. def nearby_places(self, obj):
  72. r = obj.nearby()
  73. return format_html(r)