views.py 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. from django.shortcuts import render, get_list_or_404, get_object_or_404
  2. from django.conf import settings
  3. from .models import Networks, Channels, Users
  4. from webgui.common import convert_units
  5. db = settings.BOT_DB
  6. def networks(request):
  7. networks = get_list_or_404(Networks.objects.all())
  8. channels = Channels.objects.all()
  9. users = Users.objects.all()
  10. messages = db.all("SELECT channel_network, messages, actions, notices FROM messages")
  11. totalnetworks = convert_units.shorten_number(len(networks))
  12. totalchannels = convert_units.shorten_number(len(channels))
  13. totalusers = convert_units.shorten_number(len(users))
  14. networkslist = {}
  15. for network in networks:
  16. networkslist[network.name] = {'channelcount': 0, 'usercount': 0, 'messagecount': 0, 'xpspentcount': 0, 'coinspentcount': 0, 'coingivencount': 0}
  17. networkslist[network.name]['host'] = network.host
  18. networkslist[network.name]['port'] = network.port
  19. networkslist[network.name]['usessl'] = network.use_ssl
  20. if network.password:
  21. networkslist[network.name]['password'] = True
  22. isxpspent = False
  23. iscoinspent = False
  24. for user in users:
  25. networkslist[user.network.name]['usercount'] += 1
  26. if user.xp_spent > 1:
  27. isxpspent = True
  28. if user.coin_spent > 1:
  29. iscoinspent = True
  30. networkslist[user.network.name]['xpspentcount'] += user.xp_spent
  31. networkslist[user.network.name]['coinspentcount'] += user.coin_spent
  32. networkslist[user.network.name]['coingivencount'] += user.coin_given
  33. for channel in channels:
  34. networkslist[channel.network.name]['channelcount'] += 1
  35. totalmessages = 0
  36. for record in messages:
  37. totalmessages += record[1] + record[2] + record[3]
  38. networkslist[record[0]]['messagecount'] += record[1] + record[2] + record[3]
  39. totalmessages = convert_units.shorten_number(totalmessages)
  40. context = {
  41. 'networks': networks,
  42. 'channels': channels,
  43. 'users': users,
  44. 'messages': messages,
  45. 'totalnetworks': totalnetworks,
  46. 'totalchannels': totalchannels,
  47. 'totalusers': totalusers,
  48. 'totalmessages': totalmessages,
  49. 'networkslist': networkslist,
  50. 'isxpspent': isxpspent,
  51. 'iscoinspent': iscoinspent,
  52. }
  53. return render(request, 'stats/networks.html', context)
  54. def network(request, network_name):
  55. network = get_object_or_404(Networks, name=network_name)
  56. channels = Channels.objects.filter(network=network_name)
  57. users = Users.objects.filter(network=network_name)
  58. messages = db.all("SELECT channel, \"user\", messages, actions, notices FROM messages WHERE channel_network='" + network_name + "'")
  59. joins = db.all("SELECT channel, \"user\", joins FROM joins WHERE channel_network='" + network_name + "'")
  60. kicks = db.all("SELECT channel, \"user\", given, received FROM kicks WHERE channel_network='" + network_name + "'")
  61. totalchannelstats = convert_units.shorten_number(len(channels))
  62. totaluserstats = convert_units.shorten_number(len(users))
  63. totalmessagestats = 0
  64. totalactionstats = 0
  65. totalnoticestats = 0
  66. for message in messages:
  67. totalmessagestats += message[2]
  68. totalactionstats += message[3]
  69. totalnoticestats += message[4]
  70. totalmessagestats = convert_units.shorten_number(totalmessagestats)
  71. totalactionstats = convert_units.shorten_number(totalactionstats)
  72. totalnoticestats = convert_units.shorten_number(totalnoticestats)
  73. channelslist = {}
  74. for channel in channels:
  75. channelslist[channel.name] = {'joincount': 0, 'messagecount': 0, 'kickcount': 0}
  76. userslist = {}
  77. totalcoinspent = 0
  78. totalcoingiven = 0
  79. totalxpstats = 0
  80. totalcoinstats = 0
  81. isxpspent = False
  82. for user in users:
  83. userslist[user.name] = {'joincount': 0, 'messagecount': 0, 'kgivencount': 0, 'kreceivedcount': 0, 'xpspent': user.xp_spent, 'coin': user.coin}
  84. print(user.level)
  85. if not user.level == 0:
  86. totalcoinspent += user.coin_spent - user.coin_given
  87. totalcoingiven += user.coin_given
  88. if not user.xp_spent == 0:
  89. isxpspent = True
  90. totalxpstats += user.xp_spent
  91. totalcoinstats += user.coin
  92. totalcoinstats = convert_units.shorten_number(totalcoinstats)
  93. totalxpstats = convert_units.shorten_number(totalxpstats)
  94. for record in joins:
  95. channelslist[record[0]]['joincount'] += 1
  96. userslist[record[1]]['joincount'] += 1
  97. for record in messages:
  98. channelslist[record[0]]['messagecount'] += record[2] + record[3] + record[4]
  99. userslist[record[1]]['messagecount'] += record[2] + record[3] + record[4]
  100. for record in kicks:
  101. channelslist[record[0]]['kickcount'] += record[2]
  102. userslist[record[1]]['kgivencount'] += record[2]
  103. userslist[record[1]]['kreceivedcount'] += record[3]
  104. context = {
  105. 'network': network,
  106. 'channels': channels,
  107. 'users': users,
  108. 'totalchannelstats': totalchannelstats,
  109. 'totaluserstats': totaluserstats,
  110. 'totalmessagestats': totalmessagestats,
  111. 'totalactionstats': totalactionstats,
  112. 'totalnoticestats': totalnoticestats,
  113. 'channelslist': channelslist,
  114. 'userslist': userslist,
  115. 'totalcoinspent': totalcoinspent,
  116. 'totalcoingiven': totalcoingiven,
  117. 'kicks': kicks,
  118. 'isxpspent': isxpspent,
  119. 'totalxpstats': totalxpstats,
  120. 'totalcoinstats': totalcoinstats,
  121. }
  122. return render(request, 'stats/network.html', context)