Archived
feat: implement group creation and management (US #28)
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
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
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"]
|
||||
Reference in New Issue
Block a user