views.py 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. # -*- encoding: utf-8 -*-
  2. from django.core.urlresolvers import reverse
  3. from django.db import connection
  4. from django.http import HttpResponse, HttpResponseRedirect
  5. from django.shortcuts import render
  6. from mymontools.paginate import paginate
  7. from .models import *
  8. from .forms import *
  9. from .tools import nagtrap_get_filtered_traps_for_querydict
  10. from pprint import pprint
  11. # Paginator
  12. ##############################################################################
  13. def nagtrap_index(Request):
  14. env = {}
  15. page = Request.GET.get('page')
  16. pprint( Request.GET )
  17. traps = nagtrap_get_filtered_traps_for_querydict(Request.GET)
  18. env['traps'] = paginate(traps, page, 50)
  19. env['trapcount'] = traps.count()
  20. nsf = NagtrapSimpleFilter(Request.GET)
  21. nsf.fields['hostname'].choices = [ (x, x) for x in Snmptt.objects.exclude(hostname='').values_list('hostname', flat=True).order_by('hostname').distinct() ]
  22. nsf.fields['eventid'].choices = [ (eventid, trapoid) for eventid, trapoid in Snmptt.objects.exclude(trapoid='').values_list('eventid', 'trapoid').order_by('trapoid').distinct() ]
  23. nsf.fields['severity'].choices = [ (x, x) for x in Snmptt.objects.exclude(severity='').values_list('severity', flat=True).order_by('severity').distinct() ]
  24. nsf.fields['category'].choices = [ (x, x) for x in Snmptt.objects.exclude(category='').values_list('category', flat=True).order_by('category').distinct() ]
  25. nsf.fields['trapread'].choices = [ ('False', 'Unread'), ('True', 'Read') ]
  26. env['nagtrapfilter'] = nsf
  27. nse = NagtrapSimpleExclude(Request.GET)
  28. env['nagtrapexclude'] = nse
  29. for field in nsf.fields.keys():
  30. nse.fields[u'exclude_%s' % field].choices = nsf.fields[field].choices
  31. return render(Request, 'nagtrap/nagtrap_index.html', env)
  32. def nagtrap_modify(Request):
  33. action = Request.POST.get('action') or Request.GET.get('action')
  34. trapID = Request.GET.get('trapID')
  35. trapIDs= Request.POST.getlist('trapIDs')
  36. # FIXME:#45 'archive']:
  37. if not action in ['read', 'delete', ]:
  38. return HttpResponse(u'Action "%s" not implemented' % action )
  39. if trapID:
  40. trapIDs.append(trapID)
  41. if action == 'read':
  42. Snmptt.objects.filter(id__in=trapIDs).update(trapread=True)
  43. elif action == 'delete':
  44. Snmptt.objects.filter(id__in=trapIDs).delete()
  45. params = Request.GET.copy()
  46. if 'action' in params:
  47. params.pop('action')
  48. if trapID in params:
  49. params.pop('trapID')
  50. return HttpResponseRedirect( reverse('nagtrap_index') + '?%s' % params.urlencode() )
  51. def nagtrap_search(Request, searchtype=None):
  52. f = {}
  53. f[searchtype+'__contains'] = Request.POST.get('q') or Request.GET.get('q')
  54. results = [ value[searchtype] for value in Snmptt.objects.filter(**f).order_by(searchtype).values(searchtype).distinct() ]
  55. return render(Request, 'search.html', {'results': results,})