From b1e7c83d051b1ebd04f8dba8b78aef67b26defbc Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 2 Nov 2025 16:22:14 +0000 Subject: [PATCH 1/2] Initial plan From 7f18c4f2b275d6dd525d799a488a434585e7aed6 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 2 Nov 2025 16:29:28 +0000 Subject: [PATCH 2/2] Add all missing models to Django admin - Added 21 missing models to admin registration: ActivityLog, BaconEarning, BaconSubmission, BaconToken, Badge, Challenge, DailyStatusReport, Hackathon, HackathonPrize, HackathonSponsor, IpReport, Kudos, ManagementCommandLog, OsshArticle, OsshDiscussionChannel, ReminderSettings, StakingEntry, StakingPool, StakingTransaction, Thread, UserBadge - Created admin classes for all new models with appropriate list_display, list_filter, search_fields, and date_hierarchy configurations - All 82 models in the codebase are now registered in Django admin - Formatted code with ruff and isort Co-authored-by: DonnieBLT <128622481+DonnieBLT@users.noreply.github.com> --- website/admin.py | 195 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 195 insertions(+) diff --git a/website/admin.py b/website/admin.py index 081550a60b..82c0efbb98 100644 --- a/website/admin.py +++ b/website/admin.py @@ -14,15 +14,22 @@ from website.models import ( IP, Activity, + ActivityLog, + BaconEarning, + BaconSubmission, + BaconToken, + Badge, BannedApp, Bid, Blocked, + Challenge, ChatBotLog, Contribution, Contributor, ContributorStats, Course, DailyStats, + DailyStatusReport, Domain, Enrollment, ForumCategory, @@ -31,22 +38,30 @@ ForumVote, GitHubIssue, GitHubReview, + Hackathon, + HackathonPrize, + HackathonSponsor, Hunt, HuntPrize, Integration, InviteFriend, + IpReport, Issue, IssueScreenshot, JoinRequest, + Kudos, Labs, Lecture, LectureStatus, + ManagementCommandLog, Message, Monitor, Notification, Organization, OrganizationAdmin, + OsshArticle, OsshCommunity, + OsshDiscussionChannel, Payment, Points, Post, @@ -54,19 +69,25 @@ Project, Queue, Rating, + ReminderSettings, Repo, Room, Section, SlackBotActivity, SlackIntegration, + StakingEntry, + StakingPool, + StakingTransaction, Subscription, Tag, TaskContent, Tasks, + Thread, TimeLog, Trademark, TrademarkOwner, Transaction, + UserBadge, UserLabProgress, UserProfile, UserTaskProgress, @@ -851,6 +872,180 @@ def get_progress(self, obj): admin.site.register(Notification) +class ActivityLogAdmin(admin.ModelAdmin): + list_display = ("user", "window_title", "url", "recorded_at", "created") + list_filter = ("recorded_at", "created") + search_fields = ("user__username", "window_title", "url") + date_hierarchy = "recorded_at" + + +class BaconEarningAdmin(admin.ModelAdmin): + list_display = ("user", "tokens_earned", "timestamp") + list_filter = ("timestamp",) + search_fields = ("user__username",) + date_hierarchy = "timestamp" + + +class BaconSubmissionAdmin(admin.ModelAdmin): + list_display = ( + "user", + "github_url", + "contribution_type", + "status", + "transaction_status", + "bacon_amount", + "created_at", + ) + list_filter = ("status", "transaction_status", "contribution_type", "created_at") + search_fields = ("user__username", "github_url", "description") + date_hierarchy = "created_at" + + +class BaconTokenAdmin(admin.ModelAdmin): + list_display = ("user", "amount", "contribution", "token_id", "created") + list_filter = ("created",) + search_fields = ("user__username", "token_id") + date_hierarchy = "created" + + +class BadgeAdmin(admin.ModelAdmin): + list_display = ("title", "type", "created_at") + list_filter = ("type", "created_at") + search_fields = ("title", "description") + + +class ChallengeAdmin(admin.ModelAdmin): + list_display = ("title", "challenge_type", "points", "bacon_reward", "progress", "completed", "created_at") + list_filter = ("challenge_type", "completed", "created_at") + search_fields = ("title", "description") + + +class DailyStatusReportAdmin(admin.ModelAdmin): + list_display = ("user", "date", "goal_accomplished", "current_mood", "created") + list_filter = ("date", "goal_accomplished", "current_mood") + search_fields = ("user__username", "previous_work", "next_plan") + date_hierarchy = "date" + + +class HackathonAdmin(admin.ModelAdmin): + list_display = ("name", "organization", "start_time", "end_time", "is_active", "registration_open", "created") + list_filter = ("is_active", "registration_open", "start_time", "organization") + search_fields = ("name", "description", "organization__name") + date_hierarchy = "start_time" + filter_horizontal = ("repositories",) + + +class HackathonPrizeAdmin(admin.ModelAdmin): + list_display = ("hackathon", "position", "title", "value", "sponsor") + list_filter = ("position", "hackathon") + search_fields = ("title", "description", "hackathon__name") + + +class HackathonSponsorAdmin(admin.ModelAdmin): + list_display = ("hackathon", "organization", "sponsor_level", "created") + list_filter = ("sponsor_level", "hackathon", "created") + search_fields = ("hackathon__name", "organization__name") + + +class IpReportAdmin(admin.ModelAdmin): + list_display = ("ip_address", "ip_type", "activity_type", "activity_title", "user", "created") + list_filter = ("ip_type", "activity_type", "created") + search_fields = ("ip_address", "activity_title", "description", "user__username") + date_hierarchy = "created" + + +class KudosAdmin(admin.ModelAdmin): + list_display = ("sender", "receiver", "timestamp", "link") + list_filter = ("timestamp",) + search_fields = ("sender__username", "receiver__username", "comment") + date_hierarchy = "timestamp" + + +class ManagementCommandLogAdmin(admin.ModelAdmin): + list_display = ("command_name", "last_run", "success", "run_count") + list_filter = ("success", "last_run") + search_fields = ("command_name", "error_message") + date_hierarchy = "last_run" + + +class OsshArticleAdmin(admin.ModelAdmin): + list_display = ("title", "author", "source", "publication_date", "created_at") + list_filter = ("source", "publication_date", "created_at") + search_fields = ("title", "author", "description") + date_hierarchy = "publication_date" + filter_horizontal = ("tags",) + + +class OsshDiscussionChannelAdmin(admin.ModelAdmin): + list_display = ("name", "source", "member_count", "created_at") + list_filter = ("source", "created_at") + search_fields = ("name", "description", "external_id") + filter_horizontal = ("tags",) + + +class ReminderSettingsAdmin(admin.ModelAdmin): + list_display = ("user", "reminder_time", "timezone", "is_active", "last_reminder_sent") + list_filter = ("is_active", "timezone") + search_fields = ("user__username",) + + +class StakingEntryAdmin(admin.ModelAdmin): + list_display = ("user", "pool", "staked_amount", "actual_reward", "status", "challenge_completed", "created_at") + list_filter = ("status", "challenge_completed", "created_at") + search_fields = ("user__username", "pool__name") + date_hierarchy = "created_at" + + +class StakingPoolAdmin(admin.ModelAdmin): + list_display = ("name", "pool_type", "stake_amount", "status", "start_date", "end_date", "winner", "created_by") + list_filter = ("pool_type", "status", "start_date") + search_fields = ("name", "description", "created_by__username") + date_hierarchy = "start_date" + + +class StakingTransactionAdmin(admin.ModelAdmin): + list_display = ("user", "pool", "transaction_type", "amount", "created_at") + list_filter = ("transaction_type", "created_at") + search_fields = ("user__username", "pool__name", "description") + date_hierarchy = "created_at" + + +class ThreadAdmin(admin.ModelAdmin): + list_display = ("id", "updated_at") + list_filter = ("updated_at",) + filter_horizontal = ("participants",) + + +class UserBadgeAdmin(admin.ModelAdmin): + list_display = ("user", "badge", "awarded_by", "awarded_at") + list_filter = ("badge", "awarded_at") + search_fields = ("user__username", "badge__title", "reason") + date_hierarchy = "awarded_at" + + +admin.site.register(ActivityLog, ActivityLogAdmin) +admin.site.register(BaconEarning, BaconEarningAdmin) +admin.site.register(BaconSubmission, BaconSubmissionAdmin) +admin.site.register(BaconToken, BaconTokenAdmin) +admin.site.register(Badge, BadgeAdmin) +admin.site.register(Challenge, ChallengeAdmin) +admin.site.register(DailyStatusReport, DailyStatusReportAdmin) +admin.site.register(Hackathon, HackathonAdmin) +admin.site.register(HackathonPrize, HackathonPrizeAdmin) +admin.site.register(HackathonSponsor, HackathonSponsorAdmin) +admin.site.register(IpReport, IpReportAdmin) +admin.site.register(Kudos, KudosAdmin) +admin.site.register(ManagementCommandLog, ManagementCommandLogAdmin) +admin.site.register(OsshArticle, OsshArticleAdmin) +admin.site.register(OsshDiscussionChannel, OsshDiscussionChannelAdmin) +admin.site.register(ReminderSettings, ReminderSettingsAdmin) +admin.site.register(StakingEntry, StakingEntryAdmin) +admin.site.register(StakingPool, StakingPoolAdmin) +admin.site.register(StakingTransaction, StakingTransactionAdmin) +admin.site.register(Thread, ThreadAdmin) +admin.site.register(UserBadge, UserBadgeAdmin) + + @admin.register(BannedApp) class BannedAppAdmin(admin.ModelAdmin): list_display = ("app_name", "country_name", "country_code", "app_type", "ban_date", "is_active")