Skip to content
This repository was archived by the owner on Jul 28, 2021. It is now read-only.

Commit 2fe778a

Browse files
author
Tomek
committed
User mangement.
1 parent 2645af5 commit 2fe778a

File tree

5 files changed

+36
-23
lines changed

5 files changed

+36
-23
lines changed

game/events.py

+17-11
Original file line numberDiff line numberDiff line change
@@ -12,26 +12,32 @@
1212
@Namespace('/users')
1313
class UserNamespace(BaseNamespace, BroadcastMixin):
1414
users = []
15+
logged_in = {}
1516

1617
def on_join(self, user):
18+
#import ipdb; ipdb.set_trace();
19+
print "OnJoin SessionId " + self.socket.sessid
1720
user['gamestate'] = GAME_STATES['AVAILABLE']
1821
if any(filter(lambda u: u['username'] == user['username'], self.users)):
1922
self.error("user_connected", "User is connected")
23+
self.logged_in[user['username']] = self.socket.sessid
2024
else:
25+
self.logged_in[user['username']] = self.socket.sessid
2126
self.users.append(user)
27+
print 'JOIN ' + user['username']
2228
self.broadcast_event_not_me('connected', user)
23-
29+
print self.users
2430
self.emit('join', self.users)
2531

2632

2733
def recv_disconnect(self):
28-
# Remove nickname from the list.
29-
# TODO
30-
# self.log('Disconnected')
31-
# nickname = self.socket.session['nickname']
32-
# self.nicknames.remove(nickname)
33-
# self.broadcast_event('announcement', '%s has disconnected' % nickname)
34-
# self.broadcast_event('nicknames', self.nicknames)
35-
# self.disconnect(silent=True)
36-
# return True
37-
pass
34+
user_list = filter(lambda (user, sessid):sessid==self.socket.sessid, self.logged_in.items())
35+
36+
if any(user_list):
37+
self.logged_in.pop(user_list[0][0])
38+
user = [user for user in self.users if user['username'] == user_list[0][0]][0]
39+
self.users.remove(user)
40+
self.broadcast_event_not_me('left', user)
41+
return True
42+
43+

game/static/js/custom.js

+14-9
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,21 @@ $(document).ready(function(){
55
usocket.on('join', function(users){
66
var tbl_body = "";
77
for (var i = 0; i < users.length; i++) {
8-
tbl_body += "<tr><td>" + users[i].username + "</td>" + "<td>" + users[i].gamestate + "</td>";
9-
if(users[i].gamestate == 2 ){
10-
tbl_body += "<td></td>";
11-
}
12-
else{
13-
tbl_body += "<td><button>Small button</button></td>";
8+
tbl_body += "<tr id='"+ users[i].username +"'><td>" + users[i].username + "</td>" + "<td>" + users[i].gamestate + "</td>";
9+
if( users[i].gamestate == 1 ){
10+
tbl_body += "<td><button type=\"button\" class=\"btn btn-success\">Free. Invite me to play.</button></td>";
11+
}else if(users[i].gamestate == 2){
12+
tbl_body += "<td><button type=\"button\" class=\"btn btn-danger\">I'm playing. Click to watch</button></td>";
13+
} else {
14+
tbl_body += "<td><button type=\"button\" class=\"btn btn-warning\">Waiting</button></td>";
1415
}
1516
}
1617
$('#playerTable').append(tbl_body);
1718
});
1819

1920
usocket.on('connected', function(user) {
2021
var tbl_body = "";
21-
tbl_body += "<tr><td>" + user.username + "</td>" + "<td>" + user.gamestate + "</td>";
22+
tbl_body += "<tr id='"+ user.username +"'><td>" + user.username + "</td>" + "<td>" + user.gamestate + "</td>";
2223
if(user.gamestate == 2 ){
2324
tbl_body += "<td></td>";
2425
} else {
@@ -27,7 +28,11 @@ $(document).ready(function(){
2728
tbl_body += "</tr>";
2829
$('#playerTable').append(tbl_body);
2930
});
30-
31+
32+
33+
usocket.on('left', function(user){
34+
$("#"+ user.username).remove();
35+
});
3136

3237
usocket.emit('join', {'username':username});
33-
});
38+
});

game/views.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
from django.shortcuts import render_to_response
33
from django.template import RequestContext
44
from django.views.generic import TemplateView
5+
from braces.views import LoginRequiredMixin
56

67

78
def home_view(request):
@@ -11,5 +12,5 @@ def home_view(request):
1112
class GameDemoView(TemplateView):
1213
template_name = "game_demo_ui.html"
1314

14-
class MainView(TemplateView):
15+
class MainView(LoginRequiredMixin, TemplateView):
1516
template_name = "main_view.html"

memo/templates/main_view.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ <h1>Memo GAME</h1>
99
<div class="row">
1010
<div class="col-md-6">
1111
<table id="playerTable" class="table table-hover">
12-
<thead><tr><td><b>Player</b></td><td><b>State</b></td><td>req</td></tr></thead>
12+
<thead><tr><td><b>Player</b></td><td><b>State</b></td><td><b>Invite</b></td></tr></thead>
1313
</table>
1414
</div>
1515
<div class="col-md-6">

requirements.txt

+2-1
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,5 @@ Pillow==1.7.8
55
dj_database_url==0.2.1
66
git+https://github.com/Solution4Future/django-socketio#egg=django-socketio
77
django-allauth==0.13.0
8-
django-crispy-forms==1.4.0
8+
django-crispy-forms==1.4.0
9+
django-braces==1.2.2

0 commit comments

Comments
 (0)