[chronojump-server] Added group table for player in players page
- From: Max Ros i Morejon <maxros src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [chronojump-server] Added group table for player in players page
- Date: Mon, 8 Jul 2019 09:04:50 +0000 (UTC)
commit 58c2c79306bcb392a5ffa458a7c45f903db90371
Author: Max Ros i Morejon <mros33 gmail com>
Date: Mon Jul 8 11:04:39 2019 +0200
Added group table for player in players page
.../organizations/api/serializers.py | 21 ++++---
.../chronojump_networks/organizations/api/urls.py | 5 ++
.../chronojump_networks/organizations/api/views.py | 16 ++++++
.../organizations/groups/group_players_list.html | 5 +-
.../organizations/players/players_list.html | 66 +++++++++++++++++++++-
5 files changed, 101 insertions(+), 12 deletions(-)
---
diff --git a/chronojumpserver-django/chronojump_networks/organizations/api/serializers.py
b/chronojumpserver-django/chronojump_networks/organizations/api/serializers.py
index f2711bc..81d57b5 100644
--- a/chronojumpserver-django/chronojump_networks/organizations/api/serializers.py
+++ b/chronojumpserver-django/chronojump_networks/organizations/api/serializers.py
@@ -1,6 +1,6 @@
from rest_framework import serializers
-from ..models import Player, Station, Exercise, Gym, Group, User
+from ..models import Player, Station, Exercise, Gym, Group, User, GroupPlayer
from chronojump_networks.tasks.api.serializers import PlayerTaskSerializer
@@ -8,12 +8,6 @@ class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = [ 'id', 'name']
-
-class PlayerSerializer(serializers.ModelSerializer):
- player_tasks = PlayerTaskSerializer(many=True)
- class Meta:
- model = Player
- fields = [ 'id', 'name', 'number', 'height', 'weight', 'imageName', 'player_tasks', 'rfid']
class GymTableSerializer(serializers.ModelSerializer):
responsible = UserSerializer(many=False)
@@ -33,6 +27,19 @@ class GroupTableSerializer(serializers.ModelSerializer):
model = Group
fields = [ 'id', 'name', 'gym', 'responsible' ]
+class GroupPlayerSerializer(serializers.ModelSerializer):
+ group = GroupTableSerializer(many=False)
+ class Meta:
+ model = GroupPlayer
+ fields = [ 'id', 'player', 'group' ]
+
+class PlayerSerializer(serializers.ModelSerializer):
+ player_tasks = PlayerTaskSerializer(many=True)
+ groups = GroupPlayerSerializer(many=True)
+ class Meta:
+ model = Player
+ fields = [ 'id', 'name', 'number', 'height', 'weight', 'imageName', 'player_tasks', 'rfid', 'groups']
+
class StationSerializer(serializers.ModelSerializer):
class Meta:
model = Station
diff --git a/chronojumpserver-django/chronojump_networks/organizations/api/urls.py
b/chronojumpserver-django/chronojump_networks/organizations/api/urls.py
index 72087bc..4555e7e 100644
--- a/chronojumpserver-django/chronojump_networks/organizations/api/urls.py
+++ b/chronojumpserver-django/chronojump_networks/organizations/api/urls.py
@@ -61,6 +61,11 @@ urlpatterns = [
view=views.GymStationsListView.as_view(),
name='gym_stations'
),
+ url(
+ regex=r'^(?P<organization_id>\d+)/(?P<player_id>\d+)/groups/$',
+ view=views.PlayerGroupsListView.as_view(),
+ name='player_groups'
+ ),
url(
regex=r'^register_rfid/$',
view=views.register_rfid,
diff --git a/chronojumpserver-django/chronojump_networks/organizations/api/views.py
b/chronojumpserver-django/chronojump_networks/organizations/api/views.py
index 5da3ffc..a5bc704 100644
--- a/chronojumpserver-django/chronojump_networks/organizations/api/views.py
+++ b/chronojumpserver-django/chronojump_networks/organizations/api/views.py
@@ -285,6 +285,22 @@ class GymListView(ListCreateAPIView):
setattr(gym, 'responsible_name', resp_n[0])
return gyms
+class PlayerGroupsListView(ListCreateAPIView):
+ """Groups of the player"""
+ permission_classes = (IsAuthenticated, )
+ serializer_class = GroupTableSerializer
+
+ def get_queryset(self):
+ organization_id = int(self.kwargs['organization_id'])
+ player_id = int(self.kwargs['player_id'])
+ player = Player.objects.filter(id=player_id)
+ groups_id = [g.id for g in player.groups.all()]
+ groups = Group.objects.filter(id__in = groups_id)
+ for group in groups:
+ resp = User.objects.filter(id__exact = group.responsible.id)
+ resp_n = [r.name for r in resp]
+ setattr(group, 'responsible_name', resp_n[0])
+ return groups
def register_rfid(request):
"""Call an external program to read rfid and return the value read."""
diff --git
a/chronojumpserver-django/chronojump_networks/templates/organizations/groups/group_players_list.html
b/chronojumpserver-django/chronojump_networks/templates/organizations/groups/group_players_list.html
index 28d35de..5457e41 100644
--- a/chronojumpserver-django/chronojump_networks/templates/organizations/groups/group_players_list.html
+++ b/chronojumpserver-django/chronojump_networks/templates/organizations/groups/group_players_list.html
@@ -303,6 +303,7 @@
'</tr>'+
'</table>';*/
}
+
// Add event listener for opening and closing details
$('#players tbody').on('click', 'td.details-control', function () {
var tr = $(this).closest('tr');
@@ -414,8 +415,8 @@
title: "{% trans 'Number' %}"
},
{
- data: "name",
- title: "{% trans 'Player name' %}",
+ "data": "name",
+ title: "{% trans 'Player name' %}",
}
],
"order": [
diff --git a/chronojumpserver-django/chronojump_networks/templates/organizations/players/players_list.html
b/chronojumpserver-django/chronojump_networks/templates/organizations/players/players_list.html
index f9e353b..c67599f 100644
--- a/chronojumpserver-django/chronojump_networks/templates/organizations/players/players_list.html
+++ b/chronojumpserver-django/chronojump_networks/templates/organizations/players/players_list.html
@@ -109,6 +109,13 @@
"data": "weight",
title: "{% trans 'Weight' %}"
},
+ { /* Column to show the groups */
+ "className": 'details-control',
+ "orderable": false,
+ "data": null,
+ "defaultContent": '',
+ title: "Player groups",
+ },
{% if user.groups_resp %}
{
"type": "html",
@@ -124,7 +131,7 @@
html += '<i class="material-icons" style="margin-top:3px;font-size:16px;">edit</i></button>';
return html;
}
- }
+ },
{% endif %}
],
"dom": "<'row'<'col-sm-6'B><'col-sm-6'f>>rtip",
@@ -180,6 +187,60 @@
}
});
+
+ /* Task child rows */
+ function format ( d ) {
+ var player_id = d.id
+ console.log(player_id);
+ console.log(d);
+// $.ajax({
+// 'url': " url 'api_organizations:player_groups' organization_id=user.organization.id
player_id=player_id ",
+// 'method': 'GET',
+// success:function(data) {
+// if(data) {
+ if(d.groups.length > 0) {
+ var html = '<table cellpadding="5" cellspacing="10" style="margin-left:50px;">';
+ html += "<thead><th></th><th>{% trans 'Group name' %}<th>{% trans 'Responsible' %}</th><th></th>"
+ $.each(d.groups, function(index, group) {
+ //data.group
+ console.log(group);
+ html += '<tbody align="center"><tr>';
+ html += '<td>' + (index + 1) + '</td>';
+ html += '<td>' + group.group.name + '</td>';
+ html += '<td>' + group.group.responsible.name + '</td>';
+ html += '<td>';
+ html += ' ';
+ html += '</td></tr>';
+ });
+ html += "</tbody></table>";
+ return html;
+ } else {
+ return '<h6 class="text-center font-weight-bold font-italic">' + "{% trans 'Player has not
groups' %}" +'</h6>';
+ }
+// },
+// error: function(request, status, error) {
+// alert(request.responseText);
+// }
+// });
+ }
+
+ // Add event listener for opening and closing details
+ $('#players tbody').on('click', 'td.details-control', function () {
+ var tr = $(this).closest('tr');
+ var row = table_players.row( tr );
+
+ if ( row.child.isShown() ) {
+ // This row is already open - close it
+ row.child.hide();
+ tr.removeClass('shown');
+ }
+ else {
+ // Open this row
+ row.child( format(row.data()) ).show();
+ tr.addClass('shown');
+ }
+ } );
+
/* Buttons operation */
function removePlayersFromGroup(player_ids) {
console.log("gonna remova player");
@@ -207,11 +268,10 @@
// Enanble checkboxes
$('.removePlayerBtn').removeClass('disabled').addClass('disabled');
enableCheckboxSelection('selectPlayerCheckbox', 'removePlayerBtn');
-
+
$('.editPlayerBtn').on('click', function(){
image_changed = "False";
var player = table_players.row($(this).parents('tr')).data();
-
// Set the title for new player task
var title = "{% trans 'Edit player '%}" + player.name;
$('#playerModalTitle').text(title);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]