Archived
Backend: - New hermes app with ReadingGroup, GroupMeeting, GroupMembership models - NotificationPreference (per-user: enable/disable, frequency daily/weekly) - PaceNotification model for tracking sent/dismissed notifications - Pace calculation service comparing current progress vs meeting targets - API endpoints: pace status, notification preferences CRUD, reminders, dismiss - Ahead/behind/on_track/completed status determination Frontend: - PaceNotification component for in-app alerts (behind/ahead/on_track statuses) - ReadingPaceBanner — persistent banner in reader view - Notification settings in Settings page (enable/disable, frequency, reminders) - API client module (groupsApi) for all notification endpoints
38 lines
1.0 KiB
Python
38 lines
1.0 KiB
Python
from django.contrib import admin
|
|
|
|
from apps.groups.models import (
|
|
GroupMeeting,
|
|
GroupMembership,
|
|
NotificationPreference,
|
|
PaceNotification,
|
|
ReadingGroup,
|
|
)
|
|
|
|
|
|
@admin.register(ReadingGroup)
|
|
class ReadingGroupAdmin(admin.ModelAdmin):
|
|
list_display = ["name", "created_by", "created_at"]
|
|
search_fields = ["name"]
|
|
|
|
|
|
@admin.register(GroupMembership)
|
|
class GroupMembershipAdmin(admin.ModelAdmin):
|
|
list_display = ["user", "group", "role", "joined_at"]
|
|
list_filter = ["role"]
|
|
|
|
|
|
@admin.register(GroupMeeting)
|
|
class GroupMeetingAdmin(admin.ModelAdmin):
|
|
list_display = ["group", "title", "target_section_label", "scheduled_at"]
|
|
list_filter = ["group"]
|
|
|
|
|
|
@admin.register(NotificationPreference)
|
|
class NotificationPreferenceAdmin(admin.ModelAdmin):
|
|
list_display = ["user", "pace_notifications_enabled", "reminder_enabled", "frequency"]
|
|
|
|
|
|
@admin.register(PaceNotification)
|
|
class PaceNotificationAdmin(admin.ModelAdmin):
|
|
list_display = ["user", "meeting", "status", "created_at"]
|
|
list_filter = ["status"] |