Moving Mastodon-API specific accessors on AcActor back into TrilbyUser, and fixing the serializer to use that.

trilby
Marnanel Thurman 2019-10-18 21:51:13 +01:00
rodzic fc26ddd039
commit b3e6825f5f
3 zmienionych plików z 45 dodań i 27 usunięć

Wyświetl plik

@ -1,6 +1,6 @@
from django.db import models
from django.conf import settings
from . import acobject
from . import acobject, following, collection
import chapeau.kepi.crypto as crypto
import logging
import re
@ -158,35 +158,20 @@ class AcActor(acobject.AcObject):
hostname = settings.KEPI['LOCAL_OBJECT_HOSTNAME'],
)
# Mastodon compatibility
elif name=='following_count':
return Following.objects.filter(
return following.Following.objects.filter(
follower=self.id,
pending=False).count()
elif name=='followers_count':
return Following.objects.filter(
return following.Following.objects.filter(
following=self.id,
pending=False).count()
elif name=='statuses_count':
return Collection.objects.get(
owner__id = '@'+username,
name = 'outbox').count()
elif name=='locked':
return False # TODO
elif name=='created_at':
return self.published
elif name=='note':
return self.f_summary
elif name=='acct':
return self.url
elif name=='display_name':
return self.f_name
elif name=='email':
raise AttributeError("AcActor doesn't know the "+\
"email address. That's TrilbyUser's problem.")
elif name=='moved_to':
return None # for now, anyway
return collection.Collection.get(
user = self,
collection = 'outbox',
create_if_missing = True,
).members.count()
if name=='publicKey':
if not self.f_publicKey:

Wyświetl plik

@ -15,4 +15,38 @@ class TrilbyUser(AbstractUser):
default=None,
)
@property
def acct(self):
return self.actor.url
@property
def created_at(self):
return self.actor.published
@property
def note(self):
return self.actor.f_summary
@property
def display_name(self):
return self.actor.f_name
@property
def locked(self):
return False # TODO
@property
def moved_to(self):
return None # TODO
@property
def linked_url(self):
return None # TODO
@property
def default_visibility(self):
return 'public' # FIXME
@property
def default_sensitive(self):
return False # FIXME

Wyświetl plik

@ -22,7 +22,6 @@ class _VisibilityField(serializers.CharField):
class UserSerializer(serializers.ModelSerializer):
avatar = serializers.CharField(
source = 'avatar',
read_only = True)
header = serializers.CharField(
read_only = True)
@ -43,13 +42,13 @@ class UserSerializer(serializers.ModelSerializer):
statuses_count = serializers.SerializerMethodField()
def get_following_count(self, obj):
return obj.following.count()
return obj.actor['following_count']
def get_followers_count(self, obj):
return obj.followers.count()
return obj.actor['followers_count']
def get_statuses_count(self, obj):
return obj.statuses().count()
return obj.actor['statuses_count']
class Meta:
model = TrilbyUser