Skip to content

Commit bff1e9d

Browse files
committed
Merge branch 'master' of github.com:coleifer/django-relationships
2 parents 48aa000 + 4c7e419 commit bff1e9d

File tree

3 files changed

+23
-8
lines changed

3 files changed

+23
-8
lines changed

relationships/models.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,16 @@ def get_symmetrical(self, status):
117117
from_users__to_user=self.instance,
118118
from_users__site__pk=settings.SITE_ID)
119119

120+
def only_to(self, status):
121+
from_relationships = self.get_relationships(status)
122+
to_relationships = self.get_related_to(status)
123+
return to_relationships.exclude(pk__in=from_relationships.values_list('pk'))
124+
125+
def only_from(self, status):
126+
from_relationships = self.get_relationships(status)
127+
to_relationships = self.get_related_to(status)
128+
return from_relationships.exclude(pk__in=to_relationships.values_list('pk'))
129+
120130
def exists(self, user, status=None):
121131
query = {'to_users__from_user': self.instance,
122132
'to_users__to_user': user,

relationships/tests/tests.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,13 @@ def test_custom_methods(self):
192192
self.assertTrue(self.yoko.relationships.symmetrical_exists(self.john, 1))
193193
self.assertFalse(self.yoko.relationships.symmetrical_exists(self.paul, 1))
194194
self.assertFalse(self.yoko.relationships.symmetrical_exists(self.walrus, 1))
195+
196+
def test_oneway_methods(self):
197+
self.assertQuerysetEqual(self.john.relationships.only_from(self.following), [self.paul])
198+
self.assertQuerysetEqual(self.john.relationships.only_to(self.following), [])
199+
200+
self.assertQuerysetEqual(self.john.relationships.only_from(self.blocking), [])
201+
self.assertQuerysetEqual(self.john.relationships.only_to(self.blocking), [self.paul])
195202

196203
def test_site_behavior(self):
197204
# relationships are site-dependent

relationships/views.py

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,24 +17,22 @@
1717
def relationship_redirect(request):
1818
return HttpResponseRedirect(reverse('relationship_list', args=[request.user.username]))
1919

20-
def _relationship_list(request, queryset, *args, **kwargs):
20+
def _relationship_list(request, queryset, template_name=None, *args, **kwargs):
2121
return object_list(
2222
request=request,
2323
queryset=queryset,
2424
paginate_by=20,
2525
page=int(request.GET.get('page', 0)),
2626
template_object_name='relationship',
27-
template_name='relationships/relationship_list.html',
27+
template_name=template_name,
2828
*args,
2929
**kwargs)
3030

3131
@require_user
32-
def relationship_list(request, user, status_slug=None):
32+
def relationship_list(request, user, status_slug=None,
33+
template_name='relationships/relationship_list.html'):
3334
if not status_slug:
34-
return _relationship_list(
35-
request,
36-
user.relationships.following(),
37-
extra_context={'from_user': user})
35+
status_slug = RelationshipStatus.objects.following().from_slug
3836

3937
# get the relationship status object we're talking about
4038
try:
@@ -57,7 +55,7 @@ def relationship_list(request, user, status_slug=None):
5755
qs = user.relationships.get_related_to(status=status)
5856
else:
5957
qs = user.relationships.get_symmetrical(status=status)
60-
return _relationship_list(request, qs, extra_context={
58+
return _relationship_list(request, qs, template_name, extra_context={
6159
'from_user': user, 'status': status, 'status_slug': status_slug})
6260

6361
@login_required

0 commit comments

Comments
 (0)