LocalPerson gains "featured" attribute. Bowler gains FeaturedView.

Tests updated. Closes issue #41.
status-serialisers
Marnanel Thurman 2020-10-11 15:36:58 +01:00
rodzic 265f863746
commit d3c0663a96
6 zmienionych plików z 65 dodań i 1 usunięć

Wyświetl plik

@ -101,9 +101,27 @@ class Tests(TestCase):
'id': 'http://testserver/users/alice/featured',
'totalItems': 0,
'type': 'OrderedCollection',
}
},
result,
)
alice.featured = status
alice.save()
response = c.get('/users/alice/featured')
self.assertEqual(response.status_code, 200)
result = _response_to_dict(response)
self.assertDictContainsSubset(
{
'id': 'http://testserver/users/alice/featured',
'totalItems': 1,
'type': 'OrderedCollection',
},
result,
)
@skip("Tombstones are not supported in this version")
class TestTombstone(TestCase):

Wyświetl plik

@ -18,6 +18,7 @@ urlpatterns = [
path('users/<str:username>/outbox', bowler_pub_views.OutboxView.as_view()),
path('users/<str:username>/followers', bowler_pub_views.FollowersView.as_view()),
path('users/<str:username>/following', bowler_pub_views.FollowingView.as_view()),
path('users/<str:username>/featured', bowler_pub_views.FeaturedView.as_view()),
path('users/<str:username>/<int:status>', bowler_pub_views.StatusView.as_view()),
path('sharedInbox', bowler_pub_views.InboxView.as_view()),
]

Wyświetl plik

@ -1,5 +1,6 @@
from .activitypub import \
FollowersView, FollowingView, \
FeaturedView, \
PersonView, \
AllUsersView, \
InboxView, OutboxView, \
@ -9,6 +10,7 @@ from .status import \
__all__ = [
'FollowersView', 'FollowingView',
'FeaturedView',
'PersonView',
'AllUsersView',
'InboxView', 'OutboxView',

Wyświetl plik

@ -514,3 +514,13 @@ class InboxView(CollectionView):
status = 200,
reason = "Thank you!",
)
class FeaturedView(CollectionView):
listname = 'featured'
def _modify_list_item(self, item):
serializer = bowler_serializers.StatusSerializer(
item,
)
return serializer.data

Wyświetl plik

@ -0,0 +1,19 @@
# Generated by Django 3.0.9 on 2020-10-11 14:10
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('trilby_api', '0023_auto_20200928_2039'),
]
operations = [
migrations.AddField(
model_name='localperson',
name='featured',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.DO_NOTHING, to='trilby_api.Status'),
),
]

Wyświetl plik

@ -394,6 +394,13 @@ class LocalPerson(Person):
default = False,
)
featured = models.ForeignKey(
'Status',
on_delete = models.DO_NOTHING,
null = True,
blank = True,
)
@property
def status(self):
return 200 # necessarily
@ -516,6 +523,13 @@ class LocalPerson(Person):
return result
def get_featured_collection(self):
if self.featured is None:
return []
else:
return [self.featured]
@property
def inbox_url(self):
return uri_to_url(settings.KEPI['USER_INBOX_LINK'] % {