views.py 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  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. networklist = {}
  12. for network in networks:
  13. networklist[network.name] = {'channels': 0, 'users': 0, 'messages': 0}
  14. for user in users:
  15. networklist[user.network.name]['users'] += 1
  16. for channel in channels:
  17. networklist[channel.network.name]['channels'] += 1
  18. totalmessages = 0
  19. for idx, record in enumerate(messages):
  20. totalmessages += record[1] + record[2] + record[3]
  21. networklist[record[0]]['messages'] += record[1] + record[2] + record[3]
  22. totalmessages = convert_units.shorten_number(totalmessages)
  23. context = {
  24. 'networks': networks,
  25. 'channels': channels,
  26. 'users': users,
  27. 'messages': messages,
  28. 'totalmessages': totalmessages,
  29. 'networklist': networklist,
  30. }
  31. return render(request, 'stats/networks.html', context)
  32. def network(request, network_name):
  33. network = get_object_or_404(Networks, name=network_name)
  34. channels = Channels.objects.filter(network=network_name)
  35. users = Users.objects.filter(network=network_name)
  36. records = db.all("SELECT messages, actions, notices FROM messages WHERE channel_network='" + network_name + "'")
  37. print(records)
  38. totalmessages = 0
  39. totalactions = 0
  40. totalnotices = 0
  41. for record in records:
  42. totalmessages += record[0]
  43. totalactions += record[1]
  44. totalnotices += record[2]
  45. context = {
  46. 'network': network,
  47. 'channels': channels,
  48. 'users': users,
  49. 'totalmessages': totalmessages,
  50. 'totalactions': totalactions,
  51. 'totalnotices': totalnotices,
  52. }
  53. return render(request, 'stats/network.html', context)