views.py 3.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  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}
  17. for user in users:
  18. networkslist[user.network.name]['usercount'] += 1
  19. for channel in channels:
  20. networkslist[channel.network.name]['channelcount'] += 1
  21. totalmessages = 0
  22. for record in messages:
  23. totalmessages += record[1] + record[2] + record[3]
  24. networkslist[record[0]]['messagecount'] += record[1] + record[2] + record[3]
  25. totalmessages = convert_units.shorten_number(totalmessages)
  26. context = {
  27. 'networks': networks,
  28. 'channels': channels,
  29. 'users': users,
  30. 'messages': messages,
  31. 'totalnetworks': totalnetworks,
  32. 'totalchannels': totalchannels,
  33. 'totalusers': totalusers,
  34. 'totalmessages': totalmessages,
  35. 'networkslist': networkslist,
  36. }
  37. return render(request, 'stats/networks.html', context)
  38. def network(request, network_name):
  39. network = get_object_or_404(Networks, name=network_name)
  40. channels = Channels.objects.filter(network=network_name)
  41. users = Users.objects.filter(network=network_name)
  42. messages = db.all("SELECT channel, \"user\", messages, actions, notices FROM messages WHERE channel_network='" + network_name + "'")
  43. joins = db.all("SELECT channel, \"user\", joins FROM joins WHERE channel_network='" + network_name + "'")
  44. kicks = db.all("SELECT channel, \"user\", given, received FROM kicks WHERE channel_network='" + network_name + "'")
  45. totalmessages = 0
  46. totalactions = 0
  47. totalnotices = 0
  48. for message in messages:
  49. totalmessages += message[2]
  50. totalactions += message[3]
  51. totalnotices += message[4]
  52. channelslist = {}
  53. for channel in channels:
  54. channelslist[channel.name] = {'joincount': 0, 'messagecount': 0, 'kickcount': 0}
  55. userslist = {}
  56. coinspent = 0
  57. coingiven = 0
  58. for user in users:
  59. userslist[user.name] = {'joincount': 0, 'messagecount': 0, 'kgivencount': 0, 'kreceivedcount': 0, 'xpspent': user.xp_spent, 'coin': user.coin}
  60. coinspent = user.coin_spent - user.coin_given
  61. coingiven = user.coin_given
  62. for record in joins:
  63. channelslist[record[0]]['joincount'] += 1
  64. userslist[record[1]]['joincount'] += 1
  65. for record in messages:
  66. channelslist[record[0]]['messagecount'] += record[2] + record[3] + record[4]
  67. userslist[record[1]]['messagecount'] += record[2] + record[3] + record[4]
  68. for record in kicks:
  69. channelslist[record[0]]['kickcount'] += record[2]
  70. userslist[record[1]]['kgivencount'] += record[2]
  71. userslist[record[1]]['kreceivedcount'] += record[3]
  72. print(channelslist)
  73. context = {
  74. 'network': network,
  75. 'channels': channels,
  76. 'users': users,
  77. 'totalmessages': totalmessages,
  78. 'totalactions': totalactions,
  79. 'totalnotices': totalnotices,
  80. 'channelslist': channelslist,
  81. 'userslist': userslist,
  82. 'coinspent': coinspent,
  83. 'coingiven': coingiven,
  84. }
  85. return render(request, 'stats/network.html', context)