|
1 | 1 |
|
2 | 2 | from django.contrib.auth.decorators import user_passes_test
|
3 | 3 | from django.shortcuts import get_object_or_404, render, redirect
|
4 |
| -from django.utils.html import strip_tags |
5 |
| -from django_socketio import events, broadcast, broadcast_channel, NoSocket |
| 4 | +from django_socketio import broadcast, broadcast_channel |
6 | 5 |
|
7 |
| -from chat.models import ChatRoom, ChatUser |
| 6 | +from chat.models import ChatRoom |
8 | 7 |
|
9 | 8 |
|
10 |
| -@events.on_subscribe |
11 |
| -def message(request, socket, context, channel): |
12 |
| - print "subscribed to " + channel |
13 |
| - |
14 |
| -@events.on_message(channel="^room-") |
15 |
| -def message(request, socket, context, message): |
16 |
| - """ |
17 |
| - Event handler for a room receiving a message. First validates a |
18 |
| - joining user's name and sends them the list of users. |
19 |
| - """ |
20 |
| - room = get_object_or_404(ChatRoom, id=message["room"]) |
21 |
| - if message["action"] == "start": |
22 |
| - user, created = room.users.get_or_create(name=strip_tags(message["name"])) |
23 |
| - if not created: |
24 |
| - socket.send({"action": "in-use"}) |
25 |
| - else: |
26 |
| - context["user"] = user |
27 |
| - users = [u.name for u in room.users.exclude(id=user.id)] |
28 |
| - socket.send({"action": "started", "users": users}) |
29 |
| - user.session = socket.session.session_id |
30 |
| - user.save() |
31 |
| - joined = {"action": "join", "name": user.name, "id": user.id} |
32 |
| - socket.send_and_broadcast_channel(joined) |
33 |
| - else: |
34 |
| - try: |
35 |
| - user = context["user"] |
36 |
| - except KeyError: |
37 |
| - return |
38 |
| - if message["action"] == "message": |
39 |
| - message["message"] = strip_tags(message["message"]) |
40 |
| - message["name"] = user.name |
41 |
| - socket.send_and_broadcast_channel(message) |
42 |
| - |
43 |
| -@events.on_finish(channel="^room-") |
44 |
| -def finish(request, socket, context): |
45 |
| - """ |
46 |
| - Event handler for a socket session ending in a room. Broadcast |
47 |
| - the user leaving and delete them from the DB. |
48 |
| - """ |
49 |
| - try: |
50 |
| - user = context["user"] |
51 |
| - except KeyError: |
52 |
| - return |
53 |
| - socket.broadcast_channel({"action": "leave", "name": user.name, "id": user.id}) |
54 |
| - user.delete() |
55 |
| - |
56 | 9 | def rooms(request, template="rooms.html"):
|
57 | 10 | """
|
58 | 11 | Homepage - lists all rooms.
|
|
0 commit comments