Archived
Backend: - Add groups Django app with models: Group, GroupMember, GroupInvite, JoinRequest - Create serializers with business rule validation - Implement GroupViewSet with full CRUD + custom actions (members, invites, roles, leave, join requests) - Add JoinGroupViewSet for invite-based joining flow - Register app in Django config and URL routing Frontend: - Add shared types for groups to @cloud-reader/shared - Create groups API client (groupsApi) - Build GroupsListPage, GroupDetailPage (member mgmt, invites, role transfer) - Build CreateGroupPage and JoinGroupPage - Add lazy-loaded routes to App.tsx with ProtectedRoute - Add navigation links to Library header Ref: #28
31 lines
964 B
Python
31 lines
964 B
Python
from django.contrib import admin
|
|
|
|
from apps.groups.models import Group, GroupInvite, GroupMember, JoinRequest
|
|
|
|
|
|
@admin.register(Group)
|
|
class GroupAdmin(admin.ModelAdmin):
|
|
list_display = ["id", "name", "created_by", "created_at"]
|
|
search_fields = ["name", "created_by__email"]
|
|
|
|
|
|
@admin.register(GroupMember)
|
|
class GroupMemberAdmin(admin.ModelAdmin):
|
|
list_display = ["id", "group", "user", "role", "joined_at"]
|
|
list_filter = ["role"]
|
|
search_fields = ["group__name", "user__email"]
|
|
|
|
|
|
@admin.register(GroupInvite)
|
|
class GroupInviteAdmin(admin.ModelAdmin):
|
|
list_display = ["id", "group", "code", "created_by", "use_count", "is_active", "created_at"]
|
|
list_filter = ["is_active"]
|
|
search_fields = ["code", "group__name"]
|
|
|
|
|
|
@admin.register(JoinRequest)
|
|
class JoinRequestAdmin(admin.ModelAdmin):
|
|
list_display = ["id", "group", "user", "status", "created_at"]
|
|
list_filter = ["status"]
|
|
search_fields = ["group__name", "user__email"]
|