views.py 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. from django.shortcuts import render
  2. from django.http import HttpResponse
  3. from django.template import loader
  4. from django.shortcuts import redirect
  5. import pprint
  6. import vyos
  7. from .models import Instance
  8. from django.contrib.auth.models import User
  9. def index(request):
  10. #interfaces = vyos.get_interfaces()
  11. all_instances = vyos.instance_getall()
  12. hostname_default = vyos.get_hostname_prefered(request)
  13. template = loader.get_template('config/instance.html')
  14. context = {
  15. #'interfaces': interfaces,
  16. 'instances': all_instances,
  17. 'hostname_default': hostname_default,
  18. }
  19. return HttpResponse(template.render(context, request))
  20. def users_list(request):
  21. #interfaces = vyos.get_interfaces()
  22. all_instances = vyos.instance_getall()
  23. hostname_default = vyos.get_hostname_prefered(request)
  24. users = User.objects.all()
  25. template = loader.get_template('config/users_list.html')
  26. context = {
  27. #'interfaces': interfaces,
  28. 'instances': all_instances,
  29. 'hostname_default': hostname_default,
  30. 'users' : users
  31. }
  32. return HttpResponse(template.render(context, request))
  33. def instances(request):
  34. all_instances = vyos.instance_getall()
  35. hostname_default = vyos.get_hostname_prefered(request)
  36. print(all_instances)
  37. if hostname_default == None:
  38. if all_instances.count() > 0:
  39. for i in all_instances:
  40. pprint.pprint(i.hostname)
  41. instance_default(request, i.hostname)
  42. else:
  43. return redirect('config:instance-add')
  44. template = loader.get_template('config/instances.html')
  45. context = {
  46. 'instances': all_instances,
  47. 'hostname_default': hostname_default,
  48. }
  49. return HttpResponse(template.render(context, request))
  50. def instance_add(request):
  51. #interfaces = vyos.get_interfaces()
  52. all_instances = vyos.instance_getall()
  53. hostname_default = vyos.get_hostname_prefered(request)
  54. if len(request.POST) > 0:
  55. instance = Instance()
  56. instance.alias = request.POST['alias']
  57. instance.hostname = request.POST['hostname']
  58. instance.port = request.POST['port']
  59. instance.key = request.POST['key']
  60. if 'https' in request.POST:
  61. instance.https = request.POST['https']
  62. else:
  63. instance.https = False
  64. instance_id = instance.save()
  65. return redirect('config:instances')
  66. else:
  67. instance_id = 0
  68. template = loader.get_template('config/instance_add.html')
  69. context = {
  70. 'hostname_default': hostname_default,
  71. 'instance_id': instance_id,
  72. 'instances': all_instances,
  73. }
  74. return HttpResponse(template.render(context, request))
  75. def instance_conntry(request, hostname):
  76. all_instances = vyos.instance_getall()
  77. hostname_default = vyos.get_hostname_prefered(request)
  78. # permcheck
  79. instance = Instance.objects.get(hostname=hostname)
  80. connected = vyos.conntry(hostname)
  81. if connected == True:
  82. request.session['hostname'] = hostname
  83. template = loader.get_template('config/instance_conntry.html')
  84. context = {
  85. 'instance': instance,
  86. "connected": connected,
  87. 'instances': all_instances,
  88. 'hostname_default': hostname_default,
  89. }
  90. return HttpResponse(template.render(context, request))
  91. def instance_default(request, hostname):
  92. all_instances = vyos.instance_getall()
  93. # permcheck
  94. instance = Instance.objects.get(hostname=hostname)
  95. connected = vyos.conntry(hostname)
  96. # show some error when not connected
  97. if connected == True:
  98. request.session['hostname'] = hostname
  99. instance.main = True
  100. instance.save()
  101. return redirect('config:instances')
  102. def instance_remove(request, hostname):
  103. all_instances = vyos.instance_getall()
  104. # permcheck
  105. instance = Instance.objects.get(hostname=hostname)
  106. hostname_default = vyos.get_hostname_prefered(request)
  107. #if hostname_default != hostname:
  108. instance.delete()
  109. return redirect('config:instances')