This commit is contained in:
pacnpal
2024-10-29 01:09:14 -04:00
parent d19e5a5c07
commit 2d31847974
195 changed files with 5000 additions and 1213 deletions

View File

@@ -32,12 +32,12 @@ class RollerCoasterStatsInline(admin.StackedInline):
@admin.register(Ride)
class RideAdmin(SimpleHistoryAdmin):
list_display = ('name', 'park', 'category', 'get_status', 'manufacturer', 'opening_date', 'get_avg_rating')
list_display = ('id', 'name', 'park', 'category', 'get_status', 'manufacturer', 'opening_date', 'get_avg_rating')
list_filter = ('status', 'category', 'manufacturer', 'park')
search_fields = ('name', 'park__name', 'manufacturer__name', 'description')
prepopulated_fields = {'slug': ('name',)}
inlines = [RollerCoasterStatsInline]
readonly_fields = ('created_at', 'updated_at')
readonly_fields = ('id', 'created_at', 'updated_at')
history_list_display = ['status', 'manufacturer']
actions = ['mark_as_operating', 'mark_as_closed', 'mark_as_under_maintenance', 'mark_as_removed']
@@ -80,18 +80,19 @@ class RideAdmin(SimpleHistoryAdmin):
)
}),
('Metadata', {
'fields': ('created_at', 'updated_at'),
'fields': ('id', 'created_at', 'updated_at'),
'classes': ('collapse',)
}),
)
def get_status(self, obj):
status_colors = {
'operating': 'green',
'closed': 'red',
'under_maintenance': 'orange',
'under_construction': 'blue',
'removed': 'grey'
'OPERATING': 'green',
'CLOSED_TEMP': 'orange',
'CLOSED_PERM': 'red',
'UNDER_CONSTRUCTION': 'blue',
'DEMOLISHED': 'grey',
'RELOCATED': 'purple'
}
return format_html(
'<span style="color: {};">{}</span>',
@@ -101,43 +102,44 @@ class RideAdmin(SimpleHistoryAdmin):
get_status.short_description = 'Status'
def get_avg_rating(self, obj):
avg = obj.reviews.filter(status='approved').aggregate(avg_rating=Avg('rating'))['avg_rating']
avg = obj.reviews.filter(is_published=True).aggregate(avg_rating=Avg('rating'))['avg_rating']
if avg:
rating_str = '{:.1f}'.format(float(avg))
return format_html(
'<span style="color: {};">★ {:.1f}</span>',
'gold',
avg
'<span style="color: gold;">★ {}</span>',
rating_str
)
return '-'
get_avg_rating.short_description = 'Rating'
def mark_as_operating(self, request, queryset):
queryset.update(status='operating')
queryset.update(status='OPERATING')
mark_as_operating.short_description = "Mark selected rides as operating"
def mark_as_closed(self, request, queryset):
queryset.update(status='closed')
mark_as_closed.short_description = "Mark selected rides as closed"
queryset.update(status='CLOSED_TEMP')
mark_as_closed.short_description = "Mark selected rides as temporarily closed"
def mark_as_under_maintenance(self, request, queryset):
queryset.update(status='under_maintenance')
queryset.update(status='CLOSED_TEMP')
mark_as_under_maintenance.short_description = "Mark selected rides as under maintenance"
def mark_as_removed(self, request, queryset):
queryset.update(status='removed')
mark_as_removed.short_description = "Mark selected rides as removed"
queryset.update(status='DEMOLISHED')
mark_as_removed.short_description = "Mark selected rides as demolished"
@admin.register(RollerCoasterStats)
class RollerCoasterStatsAdmin(SimpleHistoryAdmin):
list_display = ('ride', 'height_ft', 'length_ft', 'speed_mph', 'inversions', 'get_capacity')
list_filter = ('launch_type', 'track_type', 'train_style')
search_fields = ('ride__name', 'track_type')
readonly_fields = ('ride',)
readonly_fields = ('id', 'ride')
history_list_display = ['height_ft', 'length_ft', 'speed_mph', 'inversions']
fieldsets = (
('Basic Stats', {
'fields': (
'id',
'ride',
('height_ft', 'length_ft'),
('speed_mph', 'inversions'),
@@ -163,7 +165,7 @@ class RollerCoasterStatsAdmin(SimpleHistoryAdmin):
capacity = obj.trains_count * obj.cars_per_train * obj.seats_per_car
return format_html(
'{} seats total',
capacity
str(capacity)
)
return '-'
get_capacity.short_description = 'Total Capacity'