views.py 3.5 KB

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