Kaynağa Gözat

bugfixes, more network graphs

tBKwtWS 8 yıl önce
ebeveyn
işleme
87f13cd16c

+ 1 - 1
irc/commands/admin.py

@@ -78,7 +78,7 @@ def do_command(self, connection, event):
                 log.info("Killed by: " + event.source.nick)
                 self.die(msg = "Killed by " + event.source.nick)
             else:
-                log.info("Killed by " + event.source.nick + " for " + trigger.split(maxsplit=1[1]))
+                log.info("Killed by " + event.source.nick + " for " + trigger.split(maxsplit=1)[1])
                 self.die(msg = "[" + event.source.nick + "] " + trigger.split(maxsplit=1)[1])
     
     elif command.split()[0] == "reconnect":

+ 1 - 1
irc/events/on_action.py

@@ -48,7 +48,7 @@ def process_event(self, connection, event):
         # Respond.
         if " with a " in event.arguments[0]:
             if event.arguments[0].split(" with a ", maxsplit=1)[1]:
-                if event.arguments[0].split(" ")[1].lower() == connection.get_nickname(): # Bot slapped
+                if event.arguments[0].split(" ")[1].lower() == connection.get_nickname().lower(): # Bot slapped
                     connection.action(event.target, "Takes the " + event.arguments[0].split(" with a ", maxsplit=1)[1] + " like a robot.")
                 else:
                     connection.action(event.target, "swiftly jumps in front of " + red + event.arguments[0].split(" ")[1] + reset + " to block the " + event.arguments[0].split(" with a ", maxsplit=1)[1])

+ 398 - 33
webgui/stats/templates/stats/network.html

@@ -1,9 +1,14 @@
 {% extends "base.html" %}
-{% block head %}<meta name="nonfiction" content="true">{% endblock %}
+{% load static %}
+{% block head %}
+    <meta name="nonfiction" content="true">
+    <script type="text/javascript" src="{% static "javascript/loader.js" %}"></script>
+{% endblock %}
 {% block title %}{{ network }}{% endblock %}
 {% block description %}Overview of {{ network }}{% endblock %}
 {% block keywords %}{{ network }},irc network{% endblock %}
 {% block keywords-not %}{% endblock %}
+
 {% block content %}
     <article class="ui container">
         <header class="ui six statistics">
@@ -49,6 +54,7 @@
             </a>
         </header>
         <section class="ui basic text segment container">
+            <div class="ui basic segment">
                 <div class="ui card">
                     <div class="content">
                         <div class="header">
@@ -63,47 +69,406 @@
                                 </div>
                             {% endif %}
                         </div>
-                        <div class="ui divider"></div>
-                        <div class="content">
-                            <div class="ui list">
-                                <div class="item" title="Home channel">
-                                    <i class="hashtag icon"></i>
-                                    <div class="content">
-                                        {{ network.home_channel }}
-                                    </div>
-                                </div>
-                                <div class="item" title="Username">
-                                    <i class="id card icon"></i>
-                                    <div class="content">
-                                        {{ network.username }}
-                                        {% if network.password %}
-                                            <div class="right floated content">
-                                                <i class="green privacy icon" title="NickServ password saved"></i>
-                                            </div>
-                                        {% endif %}
-                                    </div>
+                    </div>
+                    <div class="content">
+                        <div class="ui list">
+                            <div class="item" title="Home channel">
+                                <i class="hashtag icon"></i>
+                                <div class="content">
+                                    {{ network.home_channel }}
                                 </div>
                             </div>
-                            <div class="ui bottom right attached basic label">
-                                <div class="ui divided horizontal list">
-                                    <div class="item" title="Command character">
-                                        <i class="terminal icon"></i>
-                                        {{ network.command_character }}
-                                    </div>
-                                    <div class="item" title="Heplp character">
-                                        <i class="help icon"></i>
-                                        {{ network.help_character }}
-                                    </div>
+                            <div class="item" title="Username">
+                                <i class="id card icon"></i>
+                                <div class="content">
+                                    {{ network.username }}
+                                    {% if network.password %}
+                                        <div class="right floated content">
+                                            <i class="green privacy icon" title="NickServ password saved"></i>
+                                        </div>
+                                    {% endif %}
                                 </div>
                             </div>
                         </div>
                     </div>
+                    <div class="ui bottom right attached basic label">
+                        <div class="ui divided horizontal list">
+                            <div class="item" title="Command character">
+                                <i class="terminal icon"></i>
+                                {{ network.command_character }}
+                            </div>
+                            <div class="item" title="Help character">
+                                <i class="help icon"></i>
+                                {{ network.help_character }}
+                            </div>
+                        </div>
+                    </div>
                 </div>
+            </div>
         </section>
     </article>
-    <article class="ui container segment">
-        
-    </article>
+    <div class="ui container">
+         <article class="ui stackable cards">
+            <script type="text/javascript">
+                google.charts.load("current", {packages:["corechart"]});
+                google.charts.setOnLoadCallback(drawChart0);
+                function drawChart0() {
+                    var data = google.visualization.arrayToDataTable([
+                        ['Channel', 'Messages'],
+                        {% for channel in channelslist.items %}
+                            ['{{ channel.0 }}',     {{ channel.1.messagecount }}],
+                        {% endfor %}
+                    ]);
+                    var options = {
+                        legend: 'none',
+                        pieSliceText: 'label',
+                        height: '275',
+                        pieHole: 0.1,
+                        'chartArea': {'width': '95%', 'height': '100%'},
+                        pieSliceText: 'label',
+                    };
+                    var chart = new google.visualization.PieChart(document.getElementById('channelmessageschart'));
+                    chart.draw(data, options);
+                }
+            </script>
+            <section class="ui card">
+                <div title="Messages per channel" class="content">
+                    <div class="header">
+                        <div>
+                            <i class="ui comments outline icon"></i>
+                            /
+                            <i class="ui hashtag icon"></i>
+                        </div>
+                    </div>
+                </div>
+                <div class="content">
+                    <div id="channelmessageschart"></div>
+                </div>
+            </section>
+            <script type="text/javascript">
+                google.charts.load("current", {packages:["corechart"]});
+                google.charts.setOnLoadCallback(drawChart);
+                function drawChart() {
+                    var data = google.visualization.arrayToDataTable([
+                        ['Channel', 'Joins'],
+                        {% for channel in channelslist.items %}
+                            ['{{ channel.0 }}',     {{ channel.1.joincount }}],
+                        {% endfor %}
+                    ]);
+                    var options = {
+                        legend: 'none',
+                        pieSliceText: 'label',
+                        height: '275',
+                        pieHole: 0.1,
+                        'chartArea': {'width': '95%', 'height': '100%'},
+                        pieSliceText: 'label',
+                    };
+                    var chart = new google.visualization.PieChart(document.getElementById('channeljoinschart'));
+                    chart.draw(data, options);
+                }
+            </script>
+            <section class="ui card">
+                <div title="Joins per channel" class="content">
+                    <div class="header">
+                        <div>
+                            <i class="ui add user icon"></i>
+                            /
+                            <i class="ui hashtag icon"></i>
+                        </div>
+                    </div>
+                </div>
+                <div class="content">
+                    <div id="channeljoinschart"></div>
+                </div>
+            </section>
+            <script type="text/javascript">
+                google.charts.load("current", {packages:["corechart"]});
+                google.charts.setOnLoadCallback(drawChart1);
+                function drawChart1() {
+                    var data = google.visualization.arrayToDataTable([
+                        ['Channel', 'Kicks'],
+                        {% for channel in channelslist.items %}
+                            ['{{ channel.0 }}',     {{ channel.1.kickcount }}],
+                        {% endfor %}
+                    ]);
+                    var options = {
+                        legend: 'none',
+                        pieSliceText: 'label',
+                        height: '275',
+                        pieHole: 0.1,
+                        'chartArea': {'width': '95%', 'height': '100%'},
+                        pieSliceText: 'label',
+                    };
+                    var chart = new google.visualization.PieChart(document.getElementById('channelkickschart'));
+                    chart.draw(data, options);
+                }
+            </script>
+            <section class="ui card">
+                <div title="Kicks per channel" class="content">
+                    <div class="header">
+                        <div>
+                            <i class="ui remove user icon"></i>
+                            /
+                            <i class="ui hashtag icon"></i>
+                        </div>
+                    </div>
+                </div>
+                <div class="content">
+                    <div id="channelkickschart"></div>
+                </div>
+            </section>
+            <script type="text/javascript">
+                google.charts.load("current", {packages:["corechart"]});
+                google.charts.setOnLoadCallback(drawChart2);
+                function drawChart2() {
+                    var data = google.visualization.arrayToDataTable([
+                        ['User', 'Messages'],
+                        {% for item in userslist.items %}
+                            ['{{ item.0 }}',     {{ item.1.messagecount }}],
+                        {% endfor %}
+                    ]);
+                    var options = {
+                        legend: 'none',
+                        pieSliceText: 'label',
+                        height: '275',
+                        pieHole: 0.1,
+                        'chartArea': {'width': '95%', 'height': '100%'},
+                        pieSliceText: 'label',
+                    };
+                    var chart = new google.visualization.PieChart(document.getElementById('usermessageschart'));
+                    chart.draw(data, options);
+                }
+            </script>
+            <section class="ui card">
+                <div title="Messages per user" class="content">
+                    <div class="header">
+                        <div>
+                            <i class="ui comments outline icon"></i>
+                            /
+                            <i class="ui user icon"></i>
+                        </div>
+                    </div>
+                </div>
+                <div class="content">
+                    <div id="usermessageschart"></div>
+                </div>
+            </section>
+            <script type="text/javascript">
+                google.charts.load("current", {packages:["corechart"]});
+                google.charts.setOnLoadCallback(drawChart3);
+                function drawChart3() {
+                    var data = google.visualization.arrayToDataTable([
+                        ['User', 'Joins'],
+                        {% for item in userslist.items %}
+                            ['{{ item.0 }}',     {{ item.1.joincount }}],
+                        {% endfor %}
+                    ]);
+                    var options = {
+                        legend: 'none',
+                        pieSliceText: 'label',
+                        height: '275',
+                        pieHole: 0.1,
+                        'chartArea': {'width': '95%', 'height': '100%'},
+                        pieSliceText: 'label',
+                    };
+                    var chart = new google.visualization.PieChart(document.getElementById('userjoinschart'));
+                    chart.draw(data, options);
+                }
+            </script>
+            <section class="ui card">
+                <div title="Joins per user" class="content">
+                    <div class="header">
+                        <div>
+                            <i class="ui add user icon"></i>
+                            /
+                            <i class="ui user icon"></i>
+                        </div>
+                    </div>
+                </div>
+                <div class="content">
+                    <div id="userjoinschart"></div>
+                </div>
+            </section>
+            <script type="text/javascript">
+                google.charts.load("current", {packages:["corechart"]});
+                google.charts.setOnLoadCallback(drawChart4);
+                function drawChart4() {
+                    var data = google.visualization.arrayToDataTable([
+                        ['User', 'Kicks given'],
+                        {% for item in userslist.items %}
+                            ['{{ item.0 }}',     {{ item.1.kgivencount }}],
+                        {% endfor %}
+                    ]);
+                    var options = {
+                        legend: 'none',
+                        pieSliceText: 'label',
+                        height: '275',
+                        pieHole: 0.1,
+                        'chartArea': {'width': '95%', 'height': '100%'},
+                        pieSliceText: 'label',
+                    };
+                    var chart = new google.visualization.PieChart(document.getElementById('userksgivenchart'));
+                    chart.draw(data, options);
+                }
+            </script>
+            <section class="ui card">
+                <div title="Kicks given per user" class="content">
+                    <div class="header">
+                        <div>
+                            <i class="ui sign language icon"></i>
+                            /
+                            <i class="ui user icon"></i>
+                        </div>
+                    </div>
+                </div>
+                <div class="content">
+                    <div id="userksgivenchart"></div>
+                </div>
+            </section>
+            <script type="text/javascript">
+                google.charts.load("current", {packages:["corechart"]});
+                google.charts.setOnLoadCallback(drawChart5);
+                function drawChart5() {
+                    var data = google.visualization.arrayToDataTable([
+                        ['User', 'Kicks received'],
+                        {% for item in userslist.items %}
+                            ['{{ item.0 }}',     {{ item.1.kreceivedcount }}],
+                        {% endfor %}
+                    ]);
+                    var options = {
+                        legend: 'none',
+                        pieSliceText: 'label',
+                        height: '275',
+                        pieHole: 0.1,
+                        'chartArea': {'width': '95%', 'height': '100%'},
+                        pieSliceText: 'label',
+                    };
+                    var chart = new google.visualization.PieChart(document.getElementById('userksreceivedchart'));
+                    chart.draw(data, options);
+                }
+            </script>
+            <section class="ui card">
+                <div title="Kicks received per user" class="content">
+                    <div class="header">
+                        <div>
+                            <i class="ui remove user icon"></i>
+                            /
+                            <i class="ui user icon"></i>
+                        </div>
+                    </div>
+                </div>
+                <div class="content">
+                    <div id="userksreceivedchart"></div>
+                </div>
+            </section>
+            <script type="text/javascript">
+                google.charts.load("current", {packages:["corechart"]});
+                google.charts.setOnLoadCallback(drawChart6);
+                function drawChart6() {
+                    var data = google.visualization.arrayToDataTable([
+                        ['User', 'XP spent'],
+                        {% for item in userslist.items %}
+                            ['{{ item.0 }}',     {{ item.1.xpspent }}],
+                        {% endfor %}
+                    ]);
+                    var options = {
+                        legend: 'none',
+                        pieSliceText: 'label',
+                        height: '275',
+                        pieHole: 0.1,
+                        'chartArea': {'width': '95%', 'height': '100%'},
+                        pieSliceText: 'label',
+                    };
+                    var chart = new google.visualization.PieChart(document.getElementById('userxpspentchart'));
+                    chart.draw(data, options);
+                }
+            </script>
+            <section class="ui card">
+                <div title="Kicks received per user" class="content">
+                    <div class="header">
+                        <div>
+                            <i class="ui dashboard icon"></i>
+                            /
+                            <i class="ui user icon"></i>
+                        </div>
+                    </div>
+                </div>
+                <div class="content">
+                    <div id="userxpspentchart"></div>
+                </div>
+            </section>
+            <script type="text/javascript">
+                google.charts.load("current", {packages:["corechart"]});
+                google.charts.setOnLoadCallback(drawChart7);
+                function drawChart7() {
+                    var data = google.visualization.arrayToDataTable([
+                        ['User', 'Coin'],
+                        {% for item in userslist.items %}
+                            ['{{ item.0 }}',     {{ item.1.coin }}],
+                        {% endfor %}
+                    ]);
+                    var options = {
+                        legend: 'none',
+                        pieSliceText: 'label',
+                        height: '275',
+                        pieHole: 0.1,
+                        'chartArea': {'width': '95%', 'height': '100%'},
+                        pieSliceText: 'label',
+                    };
+                    var chart = new google.visualization.PieChart(document.getElementById('usercoinschart'));
+                    chart.draw(data, options);
+                }
+            </script>
+            <section class="ui card">
+                <div title="Kicks received per user" class="content">
+                    <div class="header">
+                        <div>
+                            <i class="ui money icon"></i>
+                            /
+                            <i class="ui user icon"></i>
+                        </div>
+                    </div>
+                </div>
+                <div class="content">
+                    <div id="usercoinschart"></div>
+                </div>
+            </section>
+            <script type="text/javascript">
+                google.charts.load("current", {packages:["corechart"]});
+                google.charts.setOnLoadCallback(drawChart8);
+                function drawChart8() {
+                    var data = google.visualization.arrayToDataTable([
+                        ['Coin spent', 'Coin given'],
+                        ['{{ coinspent }}',     {{ coingiven }}],
+                    ]);
+                    var options = {
+                        legend: 'none',
+                        pieSliceText: 'label',
+                        height: '275',
+                        pieHole: 0.1,
+                        'chartArea': {'width': '95%', 'height': '100%'},
+                        pieSliceText: 'label',
+                    };
+                    var chart = new google.visualization.PieChart(document.getElementById('spenvsgivenchart'));
+                    chart.draw(data, options);
+                }
+            </script>
+            <section class="ui card">
+                <div title="Kicks received per user" class="content">
+                    <div class="header">
+                        <div>
+                            <i class="ui money icon"></i>
+                            /
+                            <i class="ui user icon"></i>
+                        </div>
+                    </div>
+                </div>
+                <div class="content">
+                    <div id="spentvssgivenchart"></div>
+                </div>
+            </section>
+        </article>
+    </div>
 {% endblock %}
 {% block breadcrumbs %}
     <i class="sitemap icon"></i>

+ 44 - 22
webgui/stats/templates/stats/networks.html

@@ -13,7 +13,7 @@
         <header class="ui five statistics">
             <div class="statistic">
                 <div class="value">
-                    <i class="sitemap icon"></i> {{ networks|length }}
+                    <i class="sitemap icon"></i> {{ totalnetworks }}
                 </div>
                 <div class="label">
                     Networks
@@ -21,7 +21,7 @@
             </div>
             <a class="statistic" href="/">
                 <div class="value">
-                    <i class="hashtag icon"></i> {{ channels|length }}
+                    <i class="hashtag icon"></i> {{ totalchannels }}
                 </div>
                 <div class="label">
                     Channels
@@ -29,7 +29,7 @@
             </a>
             <a class="statistic" href="/">
                 <div class="value">
-                    <i class="users icon"></i> {{ users|length }}
+                    <i class="users icon"></i> {{ totalusers }}
                 </div>
                 <div class="label">
                     Users
@@ -45,14 +45,36 @@
             </a>
         </header>
         <section class="ui basic text segment container">
-            <div class="ui basic  segment">
+            <div class="ui basic segment">
                 <div class="ui celled selection link list">
                     {% for network in networks %}
                         <a class="item" href="{% url 'stats:network' network.name %}">
                             <div class="right floated content">
-                                {% if network.password %}<i class="green privacy icon" title="NickServ password saved"></i>{% endif %}
-                                {% if network.use_ssl %}<i class="green lock icon" title="Encrypted connection"></i>{% endif %}
+                                <div class="ui horizontal list">
+                                    {% if network.password %}
+                                        <div class="item">
+                                            <i class="green privacy icon" title="NickServ password saved"></i>
+                                        </div>
+                                    {% endif %}
+                                    {% if network.use_ssl %}
+                                        <div class="item">
+                                            <i class="green lock icon" title="Encrypted connection"></i>
+                                        </div>
+                                    {% endif %}
+                                    <div class="item">
+                                        <i class="hashtag icon"></i>
+                                            {{ totalchannels }}
+                                    </div>
+                                    <div class="item">
+                                        <i class="users icon"></i>
+                                            {{ totalusers }}
+                                    </div>
+                                    <div class="item">
+                                        <i class="comments outline icon"></i>
+                                            {{ totalmessages }}
+                                    </div>
                                 </div>
+                            </div>
                             <i class="middle aligned server icon"></i>
                             <div class="content">
                                 <div class="header">
@@ -68,16 +90,16 @@
             </div>
         </section>
     </article>
-    <section class="ui container">
-        <div class="ui stackable cards">
+    <div class="ui container">
+        <article class="ui stackable cards">
             <script type="text/javascript">
                 google.charts.load("current", {packages:["corechart"]});
                 google.charts.setOnLoadCallback(drawChart0);
                 function drawChart0() {
                     var data = google.visualization.arrayToDataTable([
                         ['Network', 'Messages'],
-                        {% for network in networklist.items %}
-                            ['{{ network.0 }}',     {{ network.1.messages }}],
+                        {% for network in networkslist.items %}
+                            ['{{ network.0 }}',     {{ network.1.messagecount }}],
                         {% endfor %}
                     ]);
                     var options = {
@@ -92,7 +114,7 @@
                     chart.draw(data, options);
                 }
             </script>
-            <div class="ui card">
+            <section class="ui card">
                 <div title="Messages seen per network" class="content">
                     <div class="header">
                         <div>
@@ -105,15 +127,15 @@
                 <div class="content">
                     <div id="messageschart"></div>
                 </div>
-            </div>
+            </section>
             <script type="text/javascript">
                 google.charts.load("current", {packages:["corechart"]});
                 google.charts.setOnLoadCallback(drawChart);
                 function drawChart() {
                     var data = google.visualization.arrayToDataTable([
                         ['Network', 'Users'],
-                            {% for network in networklist.items %}
-                                ['{{ network.0 }}',     {{ network.1.users }}],
+                            {% for network in networkslist.items %}
+                                ['{{ network.0 }}',     {{ network.1.usercount }}],
                             {% endfor %}
                         ]);
                     var options = {
@@ -127,7 +149,7 @@
                     chart.draw(data, options);
                 }
             </script>
-            <div class="ui card">
+            <section class="ui card">
                 <div class="content" title="Users seen per network">
                     <div class="header">
                         <div>
@@ -140,15 +162,15 @@
                 <div class="content">
                     <div id="userschart"></div>
                 </div>
-            </div>
+            </section>
             <script type="text/javascript">
                 google.charts.load("current", {packages:["corechart"]});
                 google.charts.setOnLoadCallback(drawChart1);
                 function drawChart1() {
                     var data = google.visualization.arrayToDataTable([
                         ['Network', 'Channels'],
-                            {% for network in networklist.items %}
-                                ['{{ network.0 }}',     {{ network.1.channels }}],
+                            {% for network in networkslist.items %}
+                                ['{{ network.0 }}',     {{ network.1.channelcount }}],
                             {% endfor %}
                         ]);
                     var options = {
@@ -162,7 +184,7 @@
                     chart.draw(data, options);
                 }
             </script>
-            <div class="ui card">
+            <section class="ui card">
                 <div class="content" title="Channels joined per network">
                     <div class="header">
                         <div>
@@ -175,9 +197,9 @@
                 <div class="content">
                     <div id="networkschart"></div>
                 </div>
-            </div>
-        </div>
-    </section>
+            </section>
+        </article>
+    </div>
 {% endblock content %}
 {% block breadcrumbs %}
     <i class="sitemap icon"></i>

+ 47 - 13
webgui/stats/views.py

@@ -10,17 +10,20 @@ def networks(request):
     users = Users.objects.all()
     messages = db.all("SELECT channel_network, messages, actions, notices FROM messages")
     
-    networklist = {}
+    totalnetworks = convert_units.shorten_number(len(networks))
+    totalchannels = convert_units.shorten_number(len(channels))
+    totalusers = convert_units.shorten_number(len(users))
+    networkslist = {}
     for network in networks:
-        networklist[network.name] = {'channels': 0, 'users': 0, 'messages': 0}
+        networkslist[network.name] = {'channelcount': 0, 'usercount': 0, 'messagecount': 0}
     for user in users:
-        networklist[user.network.name]['users'] += 1
+        networkslist[user.network.name]['usercount'] += 1
     for channel in channels:
-        networklist[channel.network.name]['channels'] += 1
+        networkslist[channel.network.name]['channelcount'] += 1
     totalmessages = 0
-    for idx, record in enumerate(messages):
+    for record in messages:
         totalmessages += record[1] + record[2] + record[3]
-        networklist[record[0]]['messages'] += record[1] + record[2] + record[3]
+        networkslist[record[0]]['messagecount'] += record[1] + record[2] + record[3]
     totalmessages = convert_units.shorten_number(totalmessages)
     
     context = {
@@ -28,8 +31,11 @@ def networks(request):
         'channels': channels,
         'users': users,
         'messages': messages,
+        'totalnetworks': totalnetworks, 
+        'totalchannels': totalchannels, 
+        'totalusers': totalusers,
         'totalmessages': totalmessages,
-        'networklist': networklist,
+        'networkslist': networkslist,
     }
     return render(request, 'stats/networks.html', context)
 
@@ -37,15 +43,39 @@ def network(request, network_name):
     network = get_object_or_404(Networks, name=network_name)
     channels = Channels.objects.filter(network=network_name)
     users = Users.objects.filter(network=network_name)
-    records = db.all("SELECT messages, actions, notices FROM messages WHERE channel_network='" + network_name + "'")
-    print(records)
+    messages = db.all("SELECT channel, \"user\", messages, actions, notices FROM messages WHERE channel_network='" + network_name + "'")
+    joins = db.all("SELECT channel, \"user\", joins FROM joins WHERE channel_network='" + network_name + "'")
+    kicks = db.all("SELECT channel, \"user\", given, received FROM kicks WHERE channel_network='" + network_name + "'")
+    
     totalmessages = 0
     totalactions = 0
     totalnotices = 0
-    for record in records:
-        totalmessages += record[0]
-        totalactions += record[1]
-        totalnotices += record[2]
+    for message in messages:
+        totalmessages += message[2]
+        totalactions += message[3]
+        totalnotices += message[4]
+    channelslist = {}
+    for channel in channels:
+        channelslist[channel.name] = {'joincount': 0, 'messagecount': 0, 'kickcount': 0}
+    userslist = {}
+    coinspent = 0
+    coingiven = 0
+    for user in users:
+        userslist[user.name] = {'joincount': 0, 'messagecount': 0, 'kgivencount': 0, 'kreceivedcount': 0, 'xpspent': user.xp_spent, 'coin': user.coin}
+        coinspent = user.coin_spent - user.coin_given
+        coingiven = user.coin_given
+    for record in joins:
+        channelslist[record[0]]['joincount'] += 1
+        userslist[record[1]]['joincount'] += 1
+        print(messages)
+    for record in  messages:
+        print(record)
+        channelslist[record[0]]['messagecount'] += record[2] + record[3] + record[4]
+        userslist[record[1]]['messagecount'] += record[2] + record[3] + record[4]
+    for record in  kicks:
+        channelslist[record[0]]['kickcount'] += record[2]
+        userslist[record[1]]['kgivencount'] += record[2]
+        userslist[record[1]]['kreceivedcount'] += record[3]
     
     context = {
         'network': network,
@@ -54,5 +84,9 @@ def network(request, network_name):
         'totalmessages': totalmessages,
         'totalactions': totalactions,
         'totalnotices': totalnotices,
+        'channelslist': channelslist,
+        'userslist': userslist,
+        'coinspent': coinspent, 
+        'coingiven': coingiven, 
     }
     return render(request, 'stats/network.html', context)