views.py 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. # -*- encoding: utf-8 -*-
  2. from django.core.urlresolvers import reverse
  3. from django.db import connection
  4. from django.db.models import Q
  5. from django.http import HttpResponse, HttpResponseRedirect
  6. from django.shortcuts import render
  7. from mymontools.paginate import paginate
  8. from states.models import *
  9. from states.forms import *
  10. from .tools import *
  11. from pprint import pprint
  12. # paginate
  13. # get_filtered_states_for_querydict
  14. # get_filtered_cfgstates_for_querydict
  15. ##############################################################################
  16. def state_index(Request):
  17. env = {}
  18. page = Request.GET.get('page')
  19. states = get_filtered_states_for_querydict(Request.GET)
  20. print states
  21. env['states'] = paginate(states, page, 30)
  22. ssf = StateSimpleFilter(Request.GET)
  23. ssf.fields['hostname'].choices = [ (x, x) for x in State.objects.exclude(hostname='').values_list('hostname', flat=True).order_by('hostname').distinct() ]
  24. ssf.fields['state'].choices = [ (sid, sname) for sid, sname in State.objects.values_list('state', 'state__name').order_by('state__name').distinct() ]
  25. ssf.fields['start_time'].choices = [ ('_NULL_', '<EMPTY>'), ]
  26. ssf.fields['stop_time'].choices = [ ('_NULL_', '<EMPTY>'), ]
  27. ssf.fields['read'].choices = [ ('False', 'Unread'), ('True', 'Read') ]
  28. env['statefilter'] = ssf
  29. env['stats_states_active'] = State.objects.filter(stop_time__isnull=True).count()
  30. env['stats_states_finished'] = State.objects.filter(start_time__isnull=False, stop_time__isnull=False).count()
  31. env['stats_states_weired'] = State.objects.filter( Q(start_time__isnull=True, stop_time__isnull=False) | Q(start_time__isnull=True, stop_time__isnull=True)).count()
  32. return render(Request, 'states/state_index.html', env)
  33. def state_config_index(Request):
  34. env = {}
  35. page = Request.GET.get('page')
  36. # FIXME: Filterbar machen?
  37. #cfgstates = get_filtered_cfgtraps_for_querydict(Request.GET)
  38. cfgstates = CfgState.objects.all()
  39. env['cfgstates'] = paginate(cfgstates, page, 50)
  40. env['cfgstatecount'] = cfgstates.count()
  41. return render(Request, 'states/state_config_index.html', env)
  42. def state_config_state(Request, stateid):
  43. env = {}
  44. try:
  45. # FIXME:#56 Mehrere, aktiv/inaktiv
  46. cfgtrap = CfgTrap.objects.get(trapoid=trapoid)
  47. except CfgTrap.DoesNotExist:
  48. cfgtrap = CfgTrap(trapoid=trapoid)
  49. env['snmptranslate_trapoid'] = external_snmptranslate(trapoid)
  50. if Request.method == 'POST':
  51. form = CfgTrapForm(Request.POST, instance=cfgtrap)
  52. if form.is_valid():
  53. form.save()
  54. return HttpResponseRedirect( reverse('trap_config_index') )
  55. else:
  56. form = CfgTrapForm(instance=cfgtrap)
  57. form.fields['trapname'].label = 'Trap name (in DB)'
  58. env['form'] = form
  59. return render(Request, 'states/config_state.html', env)
  60. def state_modify(Request):
  61. action = Request.POST.get('action') or Request.GET.get('action')
  62. stateID = Request.GET.get('stateID')
  63. stateIDs= Request.POST.getlist('stateIDs')
  64. # FIXME:#46 'archive']:
  65. if not action in ['read', 'delete', ]:
  66. return HttpResponse(u'Action "%s" not implemented' % action )
  67. if stateID:
  68. stateIDs.append(stateID)
  69. if action == 'read':
  70. State.objects.filter(id__in=stateIDs).update(read=True)
  71. elif action == 'delete':
  72. State.objects.filter(id__in=stateIDs).delete()
  73. params = Request.GET.copy()
  74. if 'action' in params:
  75. params.pop('action')
  76. if stateID in params:
  77. params.pop('stateID')
  78. return HttpResponseRedirect( reverse('state_index') + '?%s' % params.urlencode() )