simple friends template help

45 views
Skip to first unread message

justin jools

unread,
Mar 27, 2011, 8:32:52 PM3/27/11
to Django users
need some help setting up templates for friends list:

how do I iterate a list of invited friends and are friends? I have
tried:


{% for friends in Friendship.objects.are_friends %}

<li>target_user: {{ friends.target_user}}</li>
<li>current_user:{{ friends.current_user}}</li>
<li>are_friends: {{ friends.are_friends}}</li>
<li>is_invited: {{ friends.is_invited}}</li>

{% endfor %}

gives me nothing but:

<li>{{ is_invited }}</li>
<li>{{ are_friends }}</li>
<li>{{ target_user }}</li>
<li>{{ current_user }}</li>


output:

false
false
name
name

I have been trying to figure this out for months. Please help.

mike171562

unread,
Mar 28, 2011, 12:14:51 PM3/28/11
to Django users
Maybe you could use the ifequal tag in your template, not sure what
your trying to do , but in your view you could do a friend =
Friends.objects.all() and in your template,

{% ifequal friend.isfriend True %}
do something here
{%endifequal%}

{% ifequal friend.is_invited %}
something else
{%endifequal%}

Joel Goldstick

unread,
Mar 28, 2011, 1:57:09 PM3/28/11
to django...@googlegroups.com
--
You received this message because you are subscribed to the Google Groups "Django users" group.
To post to this group, send email to django...@googlegroups.com.
To unsubscribe from this group, send email to django-users...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/django-users?hl=en.


Can you show us the code that produces these values?

--
Joel Goldstick

justin jools

unread,
Mar 28, 2011, 2:04:51 PM3/28/11
to Django users
I now have a different overriding problem with this simple-friends
app:

url patterns are simple:

urlpatterns = patterns('friends.views',
url(r'^$',
'friend_list',
name='friends_home'),
url(r'^list/(?P<username>\w+)/$',
'friend_list',
name='friend_list'),
url(r'^add/(?P<username>\w+)/$',
'friendship_request',
name='friendship_request'),
url(r'^accept/(?P<username>\w+)/$',
'friendship_accept',
name='friendship_accept'),
url(r'^decline/(?P<username>\w+)/$',
'friendship_decline',
name='friendship_decline'),
url(r'^cancel/(?P<username>\w+)/$',
'friendship_cancel',
name='friendship_cancel'),
url(r'^delete/(?P<username>\w+)/$',
'friendship_delete',
name='friendship_delete'),
url(r'^block/(?P<username>\w+)/$',
'block_user',
name='block_user'),
url(r'^unblock/(?P<username>\w+)/$',
'unblock_user',
name='unblock_user'),
)

but when I try /friends/add/jo

I get:

DoesNotExist at /friends/add/jo/

Friendship matching query does not exist.

Request Method: GET
Request URL: http://127.0.0.1:8000/friends/add/jo/
Django Version: 1.3 pre-alpha
Exception Type: DoesNotExist
Exception Value:

Friendship matching query does not exist.

Any ideas?

justin jools

unread,
Mar 28, 2011, 3:38:26 PM3/28/11
to Django users
I think I've resolved some of my problems:

I was wondering how to list friend request but now I think I have to
use Django-Notifications to pick up the signals, would this be right?


complete models:

class FriendshipRequest(models.Model):
from_user = models.ForeignKey(User,
related_name="invitations_from")
to_user = models.ForeignKey(User, related_name="invitations_to")
message = models.CharField(max_length=200, blank=True)
created = models.DateTimeField(default=datetime.datetime.now,
editable=False)
accepted = models.BooleanField(default=False)

class Meta:
verbose_name = _(u'friendship request')
verbose_name_plural = _(u'friendship requests')
unique_together = (('to_user', 'from_user'),)

def __unicode__(self):
return _(u'%(from_user)s wants to be friends with %
(to_user)s') % \
{'from_user': unicode(self.from_user),
'to_user': unicode(self.to_user)}

def accept(self):
Friendship.objects.befriend(self.from_user, self.to_user)
self.accepted = True
self.save()
signals.friendship_accepted.send(sender=self)

def decline(self):
signals.friendship_declined.send(sender=self, cancelled=False)
self.delete()

def cancel(self):
signals.friendship_declined.send(sender=self, cancelled=True)
self.delete()


class FriendshipManager(models.Manager):
def friends_of(self, user, shuffle=False):
qs = User.objects.filter(friendship__friends__user=user)
if shuffle:
qs = qs.order_by('?')
return qs

def are_friends(self, user1, user2):
return bool(Friendship.objects.get(user=user1).friends.filter(

user=user2).count())

def befriend(self, user1, user2):
Friendship.objects.get(user=user1).friends.add(

Friendship.objects.get(user=user2))

def unfriend(self, user1, user2):
Friendship.objects.get(user=user1).friends.remove(

Friendship.objects.get(user=user2))


class Friendship(models.Model):
user = models.OneToOneField(User, related_name='friendship')
friends = models.ManyToManyField('self', symmetrical=True)

objects = FriendshipManager()

class Meta:
verbose_name = _(u'friendship')
verbose_name_plural = _(u'friendships')

def __unicode__(self):
return _(u'%(user)s\'s friends') % {'user':
unicode(self.user)}

def friend_count(self):
return self.friends.count()
friend_count.short_description = _(u'Friends count')

def friend_summary(self, count=7):
friend_list = self.friends.all().select_related(depth=1)
[:count]
return u'[%s%s]' % (u', '.join(unicode(f.user) for f in
friend_list),
u', ...' if self.friend_count() > count
else u'')
friend_summary.short_description = _(u'Summary of friends')


class UserBlocks(models.Model):
user = models.OneToOneField(User, related_name='user_blocks')
blocks = models.ManyToManyField(User,
related_name='blocked_by_set')

class Meta:
verbose_name = verbose_name_plural = _(u'user blocks')

def __unicode__(self):
return _(u'Users blocked by %(user)s') % {'user':
unicode(self.user)}

def block_count(self):
return self.blocks.count()
block_count.short_description = _(u'Blocks count')

def block_summary(self, count=7):
block_list = self.blocks.all()[:count]
return u'[%s%s]' % (u', '.join(unicode(user) for user in
block_list),
u', ...' if self.block_count() > count
else u'')
block_summary.short_description = _(u'Summary of blocks')


def create_friendship_instance(sender, instance, created, raw,
**kwargs):
if created and not raw:
Friendship.objects.create(user=instance)
models.signals.post_save.connect(create_friendship_instance,
sender=User,
dispatch_uid='friends.models.create_'
\
'friendship_instance')


def create_userblocks_instance(sender, instance, created, raw,
**kwargs):
if created and not raw:
UserBlocks.objects.create(user=instance)
models.signals.post_save.connect(create_userblocks_instance,
sender=User,
dispatch_uid='friends.models.create_'
\
'userblocks_instance')


On Mar 28, 6:57 pm, Joel Goldstick <joel.goldst...@gmail.com> wrote:

Pawan Kumar

unread,
Feb 2, 2015, 4:04:48 PM2/2/15
to django...@googlegroups.com
Hi Justin,

I'm relatively new to django and while using the django simple friend app i have bumped into the same issue as you.
I do not know how to tie back the views to templates so the results are visually appreciated.

would you be able to help me out?

I want to see a template or page saying "you have sent a friend request to X" when i use http://127.0.0.8800/add/X...@gmail.com url

Please let me know what you think.

Thanks,
Pawan
Reply all
Reply to author
Forward
0 new messages