stash
This commit is contained in:
parent
582853ab27
commit
9ce700c388
7 changed files with 185 additions and 8 deletions
|
|
@ -1,7 +1,7 @@
|
|||
from django.contrib import admin
|
||||
|
||||
from authentication.models import ToolshedUser, KnownIdentity, FriendRequestOutgoing, FriendRequestIncoming, \
|
||||
AccountPreference, Group, GroupInvite, GroupInviteIncoming
|
||||
AccountPreference, Group, GroupInvite, GroupInviteIncoming, GroupMembership
|
||||
|
||||
|
||||
class ToolshedUserAdmin(admin.ModelAdmin):
|
||||
|
|
@ -48,6 +48,11 @@ class GroupInviteIncomingAdmin(admin.ModelAdmin):
|
|||
search_fields = ('secret', 'group_name', 'group_domain', 'inviter_username', 'inviter_domain', 'invitee_user')
|
||||
|
||||
|
||||
class GroupMembershipAdmin(admin.ModelAdmin):
|
||||
list_display = ('user', 'group_name', 'group_domain', 'created_at')
|
||||
search_fields = ('user__username', 'group_name', 'group_domain')
|
||||
|
||||
|
||||
admin.site.register(ToolshedUser, ToolshedUserAdmin)
|
||||
admin.site.register(KnownIdentity, KnownIdentityAdmin)
|
||||
admin.site.register(FriendRequestOutgoing, FriendRequestOutgoingAdmin)
|
||||
|
|
@ -56,3 +61,4 @@ admin.site.register(AccountPreference, AccountPreferenceAdmin)
|
|||
admin.site.register(Group, GroupAdmin)
|
||||
admin.site.register(GroupInvite, GroupInviteAdmin)
|
||||
admin.site.register(GroupInviteIncoming, GroupInviteIncomingAdmin)
|
||||
admin.site.register(GroupMembership, GroupMembershipAdmin)
|
||||
|
|
|
|||
28
backend/authentication/migrations/0006_groupmembership.py
Normal file
28
backend/authentication/migrations/0006_groupmembership.py
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
# Generated by Django 4.2.2 on 2026-08-26 16:25
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('authentication', '0005_group_groupinviteincoming_groupinvite_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='GroupMembership',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('group_name', models.CharField(max_length=255)),
|
||||
('group_domain', models.CharField(max_length=255)),
|
||||
('created_at', models.DateTimeField(auto_now_add=True)),
|
||||
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='group_memberships', to=settings.AUTH_USER_MODEL)),
|
||||
],
|
||||
options={
|
||||
'unique_together': {('user', 'group_name', 'group_domain')},
|
||||
},
|
||||
),
|
||||
]
|
||||
|
|
@ -180,3 +180,23 @@ class GroupInviteIncoming(models.Model):
|
|||
inviter_domain = models.CharField(max_length=255)
|
||||
invitee_user = models.ForeignKey(ToolshedUser, on_delete=models.CASCADE, related_name='group_invites_incoming')
|
||||
created_at = models.DateTimeField(auto_now_add=True)
|
||||
|
||||
|
||||
class GroupMembership(models.Model):
|
||||
"""A pointer kept on a member's own home backend, recording that the local user is a member
|
||||
of a group that may be hosted here or on a remote domain (mirrors FriendRequestIncoming's
|
||||
role: independently recorded on the member's own side, not just the group's authoritative
|
||||
backend). Written once the invitee's accept request against the group's home backend has
|
||||
succeeded (see GroupInvitesIncomingAccept), analogous to how a friendship is independently
|
||||
recorded on both sides via KnownIdentity.friends rather than only on one. See
|
||||
docs/design-in-progress/groups-mvp.md's 'Known limitation'."""
|
||||
user = models.ForeignKey(ToolshedUser, on_delete=models.CASCADE, related_name='group_memberships')
|
||||
group_name = models.CharField(max_length=255)
|
||||
group_domain = models.CharField(max_length=255)
|
||||
created_at = models.DateTimeField(auto_now_add=True)
|
||||
|
||||
class Meta:
|
||||
unique_together = ('user', 'group_name', 'group_domain')
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.user} MEMBER_OF #{self.group_name}@{self.group_domain}"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue