from django.contrib import admin

from home import models
from shared.admin import ExportCsvMixin

# Titre de la vue (tag <h1>)
admin.site.site_header = "Administration site interludes"
# Tag html <title>
admin.site.site_title = "Admin Interludes"


@admin.register(models.ActivityModel)
class ActivityModelAdmin(ExportCsvMixin, admin.ModelAdmin):
	"""option d'affichage des activités dans la vue django admin"""
	filename = "export_activites.csv"
	list_display = ("title", "host_name", "display", "must_subscribe",)
	list_filter = ("display", "must_subscribe", "status",)
	ordering = ("title", "host_name",)
	list_editable = ("display",)
	fields = (
		"title", "display",
		("host_name", "host_email"), "show_email",
		"host_info",
		"act_type", "game_type",
		"description", "desc_as_html",
		("min_participants", "max_participants"),
		"must_subscribe",
		"communicate_participants",
		("duration", "desired_slot_nb"),
		(
			"available_friday_evening",
			"available_friday_night",
			"available_saturday_morning",
			"available_saturday_afternoon",
			"available_saturday_evening",
			"available_saturday_night",
			"available_sunday_morning",
			"available_sunday_afternoon"
		),
		"constraints",
		"status", "needs",
		"comments",
	)
	list_per_page = 100
	csv_export_fields = [
		# The key is "host_id" but listed as "host" in auto-found field names
		# which leads to an error...
		'id', 'display', 'title', 'act_type', 'game_type', 'description',
		'desc_as_html', 'host_id', 'host_name', 'host_email', 'show_email', 'host_info',
		'must_subscribe', 'communicate_participants', 'max_participants',
		'min_participants', 'duration', 'desired_slot_nb',
		'available_friday_evening', 'available_friday_night',
		'available_saturday_morning', 'available_saturday_afternoon',
		'available_saturday_evening', 'available_saturday_night',
		'available_sunday_morning', 'available_sunday_afternoon',
		'constraints', 'status', 'needs', 'comments'
	]


@admin.register(models.SlotModel)
class SlotModelAdmin(ExportCsvMixin, admin.ModelAdmin):
	"""option d'affichage des créneaux dans la vue d'admin"""
	filename = "export_slots.csv"
	csv_export_fields = (
		"activity_id", "title",
		"start", "duration", "room",
		"on_planning", "on_activity", "color",
	)
	list_display = ("__str__", "start", "room", "subscribing_open", "on_planning", "on_activity",)
	list_filter = ("subscribing_open", "on_planning", "on_activity", "activity__display",)
	list_editable = ("subscribing_open", "on_planning", "on_activity",)
	ordering = ("activity", "title", "start",)


@admin.register(models.ParticipantModel)
class ParticipantModelAdmin(ExportCsvMixin, admin.ModelAdmin):
	"""option d'affichage des participant dans la vue django admin"""
	filename = "export_participants.csv"
	list_display = ("user", "school", "is_registered")
	list_filter = (
		"school", "is_registered", "sleeps",
		"meal_friday_evening", "meal_saturday_morning", "meal_saturday_midday",
		"meal_saturday_evening", "meal_sunday_morning", "meal_sunday_midday",
	)
	ordering = ("user",)
	list_per_page = 200


@admin.register(models.ActivityChoicesModel)
class ActivityListAdmin(ExportCsvMixin, admin.ModelAdmin):
	"""option d'affichage des choix d'activités dans la vue django admin"""
	filename = "export_choix_activite.csv"
	list_display = ("slot", "participant", "priority", "accepted")
	list_filter = (
		"slot__activity", "participant__is_registered", "slot__activity__display",
		"accepted", "slot__subscribing_open",
	)
	list_editable = ("accepted",)
	ordering = ("slot", "priority", "participant",)
	list_per_page = 400