Thanks Andrew. I deleted the other post.

I'm do not quite follow. I don't have a "user" key anywhere. And do I need 
to do a for loop to get the results? An example would be great.

Cheers

On Wednesday, 26 April 2017 10:25:46 UTC+10, Andrew Godwin wrote:
>
> Hi - I'll only reply to this thread, as you seem to have posted it twice 
> with different subjects.
>
> If you're going with the groups approach, as it seems you are, you need to 
> add the user to multiple groups, one for each room, and then stick the room 
> name in the group sends so you can distinguish them.
>
> Andrew
>
> On Tue, Apr 25, 2017 at 4:25 PM, Yarnball <[email protected] <javascript:>
> > wrote:
>
>> Hi,
>>
>> I've currently setup Django channels to receive all the `messages` from a 
>> single `room`. However, I would like to set it up to receive `messages` 
>> from several rooms. In DRF, I'd use serializers to achieve this. However, 
>> in sockets, I am unsure how I would do it.
>>
>> What is the correct
>>
>> EG from chat rooms entitled `Foo` and `Bar` would look like this:
>>
>> [
>>     {
>>         "label": "Foo",
>>         "pk": 5,
>>         "message": [
>>             {
>>                 "handle": "Bruce",
>>                 "message": "Yo"
>>             },
>>             {
>>                 "handle": "Sol",
>>                 "message": "Hey"
>>             }
>>         ]
>>     },
>>     {
>>         "label": "Bar",
>>         "pk": 10,
>>         "message": [
>>             {
>>                 "handle": "Sol",
>>                 "message": "Hi"
>>             },
>>             {
>>                 "handle": "Alfred",
>>                 "message": "Yo"
>>             }
>>         ]
>>     }
>> ]
>>
>> # consumers.py
>>
>> @channel_session
>> def ws_connect(message):
>>     prefix, label = message['path'].strip('/').split('/')
>>     room = Room.objects.get(label=label)
>>     chathistory = room.messages.all().order_by('timestamp')
>>     Group('chat-' + label).add(message.reply_channel)
>>     message.channel_session['room'] = room.label
>>     message.reply_channel.send({'text': json.dumps([msg.as_dict() for 
>> msg in chathistory.all()])})
>>
>>
>> # models .py
>>
>> class Room(models.Model):
>>     name = models.TextField()
>>     label = models.SlugField(unique=True)
>>
>> class Message(models.Model):
>>     room = models.ForeignKey(Room, related_name='messages')
>>     handle = models.TextField()
>>     message = models.TextField()
>>     timestamp = models.DateTimeField(default=timezone.now, db_index=True)
>>     def __unicode__(self):
>>         return '[{timestamp}] {handle}: {message}'.format(**self.as_dict
>> ())
>>
>>
>>     @property
>>     def formatted_timestamp(self):
>>         return self.timestamp.strftime("%H:%M:%S")
>>     
>>     def as_dict(self):
>>         return {'pk':self.pk, 'handle': self.handle, 'message': self.
>> message, 'timestamp': self.formatted_timestamp}
>>
>>
>>
>>
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "Django users" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected] <javascript:>.
>> To post to this group, send email to [email protected] 
>> <javascript:>.
>> Visit this group at https://groups.google.com/group/django-users.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/django-users/153fb077-46b8-4e13-ab6d-d0a7d4f4dd65%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/django-users/153fb077-46b8-4e13-ab6d-d0a7d4f4dd65%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/f37c4f2b-88a3-4726-841a-1d5c29290d83%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to