kopia lustrzana https://gitlab.com/marnanel/chapeau
Moving Mastodon-API specific accessors on AcActor back into TrilbyUser, and fixing the serializer to use that.
rodzic
fc26ddd039
commit
b3e6825f5f
|
@ -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:
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Ładowanie…
Reference in New Issue