stash
This commit is contained in:
parent
9685b4020e
commit
22931452e3
7 changed files with 28 additions and 21 deletions
|
|
@ -1,8 +1,15 @@
|
|||
from django.contrib import admin
|
||||
from django.contrib.auth.models import Group as DjangoPermissionGroup
|
||||
|
||||
from authentication.models import ToolshedUser, KnownIdentity, FriendRequestOutgoing, FriendRequestIncoming, \
|
||||
AccountPreference, Group, GroupInvite, GroupInviteIncoming, GroupMembership
|
||||
|
||||
# django.contrib.auth's own permission-groups model is unused (this app authenticates via
|
||||
# signature_auth, not Django's built-in permission system) and otherwise collides in the admin
|
||||
# sidebar with our own Group (the actor-type group), which is registered below under the same
|
||||
# "Groups" label.
|
||||
admin.site.unregister(DjangoPermissionGroup)
|
||||
|
||||
|
||||
class ToolshedUserAdmin(admin.ModelAdmin):
|
||||
list_display = ('username', 'email', 'first_name', 'last_name', 'is_staff', 'is_active', 'date_joined', 'domain')
|
||||
|
|
|
|||
|
|
@ -50,13 +50,13 @@ def resolve_tag_handle(handle):
|
|||
|
||||
|
||||
class FriendSerializer(serializers.ModelSerializer):
|
||||
username = serializers.SerializerMethodField()
|
||||
handle = serializers.SerializerMethodField()
|
||||
|
||||
class Meta:
|
||||
model = KnownIdentity
|
||||
fields = ['id', 'username', 'public_key']
|
||||
fields = ['id', 'handle', 'public_key']
|
||||
|
||||
def get_username(self, obj):
|
||||
def get_handle(self, obj):
|
||||
return obj.username + '@' + obj.domain
|
||||
|
||||
|
||||
|
|
@ -72,13 +72,13 @@ class FriendRequestSerializer(serializers.ModelSerializer):
|
|||
|
||||
|
||||
class GroupMemberSerializer(serializers.ModelSerializer):
|
||||
username = serializers.SerializerMethodField()
|
||||
handle = serializers.SerializerMethodField()
|
||||
|
||||
class Meta:
|
||||
model = KnownIdentity
|
||||
fields = ['id', 'username', 'public_key']
|
||||
fields = ['id', 'handle', 'public_key']
|
||||
|
||||
def get_username(self, obj):
|
||||
def get_handle(self, obj):
|
||||
return obj.username + '@' + obj.domain
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -63,20 +63,20 @@ class FriendApiTestCase(UserTestMixin, ToolshedTestCase):
|
|||
reply = client.get('/api/friends/', self.f['local_user1'])
|
||||
self.assertEqual(reply.status_code, 200)
|
||||
self.assertEqual(len(reply.json()), 2)
|
||||
self.assertEqual(reply.json()[0]['username'], str(self.f['local_user2']))
|
||||
self.assertEqual(reply.json()[1]['username'], str(self.f['ext_user1']))
|
||||
self.assertEqual(reply.json()[0]['handle'], str(self.f['local_user2']))
|
||||
self.assertEqual(reply.json()[1]['handle'], str(self.f['ext_user1']))
|
||||
|
||||
def test_friend_list_internal2(self):
|
||||
reply = client.get('/api/friends/', self.f['local_user2'])
|
||||
self.assertEqual(reply.status_code, 200)
|
||||
self.assertEqual(len(reply.json()), 1)
|
||||
self.assertEqual(reply.json()[0]['username'], str(self.f['local_user1']))
|
||||
self.assertEqual(reply.json()[0]['handle'], str(self.f['local_user1']))
|
||||
|
||||
def test_friend_list_external(self):
|
||||
reply = client.get('/api/friends/', self.f['ext_user1'])
|
||||
self.assertEqual(reply.status_code, 200)
|
||||
self.assertEqual(len(reply.json()), 1)
|
||||
self.assertEqual(reply.json()[0]['username'], str(self.f['local_user1']))
|
||||
self.assertEqual(reply.json()[0]['handle'], str(self.f['local_user1']))
|
||||
|
||||
def test_friend_delete(self):
|
||||
reply = client.delete('/api/friends/{}/'.format(self.f['local_user2'].public_identity.id),
|
||||
|
|
|
|||
|
|
@ -16,20 +16,20 @@ class IdMapTestCase(UserTestMixin, GroupTestMixin, ToolshedTestCase):
|
|||
reply = client.get('/api/idmap/', self.f['local_user1'])
|
||||
self.assertEqual(reply.status_code, 200)
|
||||
identities = reply.json()['identities']
|
||||
self.assertIn(str(self.f['local_user1']), [i['username'] for i in identities])
|
||||
self.assertIn(str(self.f['local_user1']), [i['handle'] for i in identities])
|
||||
|
||||
def test_idmap_includes_friends(self):
|
||||
self.f['local_user1'].friends.add(self.f['local_user2'].public_identity)
|
||||
reply = client.get('/api/idmap/', self.f['local_user1'])
|
||||
self.assertEqual(reply.status_code, 200)
|
||||
identities = reply.json()['identities']
|
||||
self.assertIn(str(self.f['local_user2']), [i['username'] for i in identities])
|
||||
self.assertIn(str(self.f['local_user2']), [i['handle'] for i in identities])
|
||||
|
||||
def test_idmap_excludes_non_friends(self):
|
||||
reply = client.get('/api/idmap/', self.f['local_user1'])
|
||||
self.assertEqual(reply.status_code, 200)
|
||||
identities = reply.json()['identities']
|
||||
self.assertNotIn(str(self.f['local_user2']), [i['username'] for i in identities])
|
||||
self.assertNotIn(str(self.f['local_user2']), [i['handle'] for i in identities])
|
||||
|
||||
def test_idmap_includes_member_groups(self):
|
||||
self.prepare_groups()
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ export default {
|
|||
computed: {
|
||||
...mapGetters(['allUserProfiles']),
|
||||
displayUsername() {
|
||||
return this.user.username || this.user.owner || '';
|
||||
return this.user.handle || this.user.owner || '';
|
||||
},
|
||||
profilePictureUrl() {
|
||||
// Check for explicitly set profile picture from allUserProfiles getter
|
||||
|
|
|
|||
|
|
@ -370,11 +370,11 @@ export default createStore({
|
|||
servers.add(home)
|
||||
for (const friend of friends) {
|
||||
try {
|
||||
const s = await dispatch('lookupServer', {username: friend.username})
|
||||
const s = await dispatch('lookupServer', {username: friend.handle})
|
||||
servers.add(new ServerSet(s, state.unreachable_neighbors))
|
||||
} catch (e) {
|
||||
// Skip an unresolvable/unreachable friend rather than aborting the whole lookup.
|
||||
console.error('could not resolve server for friend', friend.username, e)
|
||||
console.error('could not resolve server for friend', friend.handle, e)
|
||||
}
|
||||
}
|
||||
return servers
|
||||
|
|
@ -893,13 +893,13 @@ export default createStore({
|
|||
groupInventoryItems: (state) => (groupHandle) => state.item_map['/' + groupHandle] || [],
|
||||
groupStorageLocations: (state) => (groupHandle) => state.location_map['/' + groupHandle] || [],
|
||||
identityIdByHandle(state) {
|
||||
return Object.fromEntries(state.idmap.identities.map(i => [i.username, i.id]))
|
||||
return Object.fromEntries(state.idmap.identities.map(i => [i.handle, i.id]))
|
||||
},
|
||||
groupIdByHandle(state) {
|
||||
return Object.fromEntries(state.idmap.groups.map(g => [g.handle, g.id]))
|
||||
},
|
||||
identityHandleById(state) {
|
||||
return Object.fromEntries(state.idmap.identities.map(i => [i.id, i.username]))
|
||||
return Object.fromEntries(state.idmap.identities.map(i => [i.id, i.handle]))
|
||||
},
|
||||
groupHandleById(state) {
|
||||
return Object.fromEntries(state.idmap.groups.map(g => [g.id, g.handle]))
|
||||
|
|
|
|||
|
|
@ -142,8 +142,8 @@ export default {
|
|||
const friendsList = Array.isArray(friends) ? friends : Object.values(friends);
|
||||
friendsList.map((friend) => {
|
||||
this.lookupServer(friend).then((server) => {
|
||||
this.friends[friend.username] = {...friend, server: server}
|
||||
this.fetchFriendProfile({username: friend.username});
|
||||
this.friends[friend.handle] = {...friend, server: server}
|
||||
this.fetchFriendProfile({username: friend.handle});
|
||||
})
|
||||
})
|
||||
})
|
||||
|
|
@ -175,7 +175,7 @@ export default {
|
|||
tryDropFriend(friend) {
|
||||
this.dropFriend(friend).then((ok) => {
|
||||
if (ok) {
|
||||
delete this.friends[friend.username]
|
||||
delete this.friends[friend.handle]
|
||||
}
|
||||
}).catch(() => {
|
||||
})
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue