Skip to content

Commit 3a93700

Browse files
add swappable models for drf part
1 parent 370037c commit 3a93700

File tree

6 files changed

+25
-25
lines changed

6 files changed

+25
-25
lines changed

actstream/admin.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from django.contrib import admin
22

3-
from actstream import models
3+
from actstream.settings import get_action_model, get_follow_model
44

55
# Use django-generic-admin widgets if available
66
try:
@@ -25,5 +25,5 @@ class FollowAdmin(ModelAdmin):
2525
raw_id_fields = ('user', 'content_type')
2626

2727

28-
admin.site.register(models.Action, ActionAdmin)
29-
admin.site.register(models.Follow, FollowAdmin)
28+
admin.site.register(get_action_model(), ActionAdmin)
29+
admin.site.register(get_follow_model(), FollowAdmin)

actstream/drf/serializers.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from rest_framework import serializers
22
from generic_relations.relations import GenericRelatedField
33

4-
from actstream.models import Follow, Action
4+
from actstream import settings as actstream_settings
55
from actstream.registry import registry, label
66
from actstream.settings import DRF_SETTINGS, import_obj
77

@@ -72,7 +72,7 @@ class ActionSerializer(DEFAULT_SERIALIZER):
7272
action_object = get_grf()
7373

7474
class Meta:
75-
model = Action
75+
model = actstream_settings.get_action_model()
7676
fields = 'id verb public description timestamp actor target action_object'.split()
7777

7878

@@ -97,7 +97,7 @@ class FollowSerializer(DEFAULT_SERIALIZER):
9797
follow_object = get_grf()
9898

9999
class Meta:
100-
model = Follow
100+
model = actstream_settings.get_follow_model()
101101
fields = 'id flag user follow_object started actor_only'.split()
102102

103103

@@ -108,5 +108,5 @@ class FollowingSerializer(DEFAULT_SERIALIZER):
108108
follow_object = get_grf()
109109

110110
class Meta:
111-
model = Follow
111+
model = actstream_settings.get_follow_model()
112112
fields = ['follow_object']

actstream/drf/views.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
from actstream.drf import serializers
1414
from actstream import models
1515
from actstream.registry import label
16-
from actstream.settings import DRF_SETTINGS, import_obj
16+
from actstream.settings import DRF_SETTINGS, import_obj, get_action_model, get_follow_model
1717
from actstream.signals import action as action_signal
1818
from actstream.actions import follow as follow_action
1919

@@ -52,7 +52,7 @@ def get_permissions(self):
5252

5353

5454
class ActionViewSet(DefaultModelViewSet):
55-
queryset = models.Action.objects.public().order_by('-timestamp', '-id').prefetch_related()
55+
queryset = get_action_model().objects.public().order_by('-timestamp', '-id').prefetch_related()
5656
serializer_class = serializers.ActionSerializer
5757

5858
@action(detail=False, permission_classes=[permissions.IsAuthenticated], methods=['POST'], serializer_class=serializers.SendActionSerializer)
@@ -159,7 +159,7 @@ def any_stream(self, request, content_type_id, object_id):
159159

160160

161161
class FollowViewSet(DefaultModelViewSet):
162-
queryset = models.Follow.objects.order_by('-started', '-id').prefetch_related()
162+
queryset = get_follow_model().objects.order_by('-started', '-id').prefetch_related()
163163
serializer_class = serializers.FollowSerializer
164164
permission_classes = [permissions.IsAuthenticated]
165165

@@ -185,7 +185,7 @@ def is_following(self, request, content_type_id, object_id):
185185
"""
186186
ctype = get_object_or_404(ContentType, id=content_type_id)
187187
instance = ctype.get_object_for_this_type(pk=object_id)
188-
following = models.Follow.objects.is_following(request.user, instance)
188+
following = get_follow_model().objects.is_following(request.user, instance)
189189
data = {'is_following': following}
190190
return Response(json.dumps(data))
191191

@@ -195,7 +195,7 @@ def following(self, request):
195195
"""
196196
Returns a JSON response whether the current user is following the object from content_type_id/object_id pair
197197
"""
198-
qs = models.Follow.objects.following_qs(request.user)
198+
qs = get_follow_model().objects.following_qs(request.user)
199199
return Response(serializers.FollowingSerializer(qs, many=True).data)
200200

201201
@action(detail=False, permission_classes=[permissions.IsAuthenticated],
@@ -208,7 +208,7 @@ def followers(self, request):
208208
if user_model not in serializers.registered_serializers:
209209
raise ModelNotRegistered(f'Auth user "{user_model.__name__}" not registered with actstream')
210210
serializer = serializers.registered_serializers[user_model]
211-
followers = models.Follow.objects.followers(request.user)
211+
followers = get_follow_model().objects.followers(request.user)
212212
return Response(serializer(followers, many=True).data)
213213

214214

actstream/follows.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from django.core.exceptions import ImproperlyConfigured
22

3-
from actstream.models import Follow
3+
from actstream.settings import get_follow_model
44

55

66
def delete_orphaned_follows(sender, instance=None, **kwargs):
@@ -11,6 +11,6 @@ def delete_orphaned_follows(sender, instance=None, **kwargs):
1111
return
1212

1313
try:
14-
Follow.objects.for_object(instance).delete()
14+
get_follow_model().objects.for_object(instance).delete()
1515
except ImproperlyConfigured: # raised by actstream for irrelevant models
1616
pass

actstream/tests/test_drf.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,7 @@
55
from django.urls import reverse
66

77
from actstream.tests.base import DataTestCase
8-
from actstream.settings import USE_DRF, DRF_SETTINGS
9-
from actstream.models import Action, Follow
8+
from actstream.settings import USE_DRF, DRF_SETTINGS, get_action_model, get_follow_model
109
from actstream import signals
1110

1211

@@ -125,7 +124,7 @@ def test_action_send(self):
125124
}
126125
post = self.auth_client.post(reverse('action-send'), body)
127126
assert post.status_code == 201
128-
action = Action.objects.first()
127+
action = get_action_model().objects.first()
129128
assert action.description == body['description']
130129
assert action.verb == body['verb']
131130
assert action.actor == self.user1
@@ -141,7 +140,7 @@ def test_follow(self):
141140
}
142141
post = self.auth_client.post(reverse('follow-follow'), body)
143142
assert post.status_code == 201
144-
follow = Follow.objects.order_by('-id').first()
143+
follow = get_follow_model().objects.order_by('-id').first()
145144
assert follow.follow_object == self.comment
146145
assert follow.user == self.user1
147146
assert follow.user == self.user1

actstream/tests/test_views.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
from django.urls import reverse
44

5+
from actstream.settings import get_action_model, get_follow_model
56
from actstream import models
67
from actstream.tests.base import DataTestCase
78

@@ -34,13 +35,13 @@ def test_follow_unfollow(self):
3435
action = {'actor_content_type': self.user_ct, 'actor_object_id': self.user1.pk,
3536
'target_content_type': self.user_ct, 'target_object_id': self.user3.pk,
3637
'verb': 'started following'}
37-
models.Follow.objects.get(**follow)
38-
models.Action.objects.get(**action)
38+
get_follow_model().objects.get(**follow)
39+
get_action_model().objects.get(**action)
3940

4041
response = self.get('actstream_unfollow', self.user_ct.pk, self.user3.pk)
4142
self.assertEqual(response.status_code, 204)
4243
self.assertEqual(len(response.templates), 0)
43-
self.assertRaises(models.Follow.DoesNotExist, models.Follow.objects.get, **follow)
44+
self.assertRaises(get_follow_model().DoesNotExist, get_follow_model().objects.get, **follow)
4445

4546
response = self.get('actstream_unfollow', self.user_ct.pk, self.user3.pk, next='/redirect/')
4647
self.assertEqual(response.status_code, 302)
@@ -55,13 +56,13 @@ def test_follow_unfollow_with_flag(self):
5556
action = {'actor_content_type': self.user_ct, 'actor_object_id': self.user1.pk,
5657
'target_content_type': self.user_ct, 'target_object_id': self.user3.pk,
5758
'verb': 'started watching'}
58-
models.Follow.objects.get(**follow)
59-
models.Action.objects.get(**action)
59+
get_follow_model().objects.get(**follow)
60+
get_action_model().objects.get(**action)
6061

6162
response = self.get('actstream_unfollow', self.user_ct.pk, self.user3.pk, 'watching')
6263
self.assertEqual(response.status_code, 204)
6364
self.assertEqual(len(response.templates), 0)
64-
self.assertRaises(models.Follow.DoesNotExist, models.Follow.objects.get, **follow)
65+
self.assertRaises(get_follow_model().DoesNotExist, get_follow_model().objects.get, **follow)
6566

6667
response = self.get('actstream_unfollow', self.user_ct.pk, self.user3.pk, 'watching', next='/redirect/')
6768
self.assertEqual(response.status_code, 302)

0 commit comments

Comments
 (0)