def override_file(request, dhcp_scope): if request.method == 'POST': form = forms.DHCPScopeOverrideForm(request.POST) if form.is_valid(): do = models.DHCPOverride.objects.get(dhcp_scope=dhcp_scope) do.override_text = form.cleaned_data['override_text'] do.save() #s = form.save() #return redirect('/dhcp/show/') else: try: do = models.DHCPOverride.objects.get(dhcp_scope=dhcp_scope) except: do = models.DHCPOverride(dhcp_scope=dhcp_scope) do.save() form = forms.DHCPScopeOverrideForm(initial={ 'dhcp_scope': dhcp_scope, 'override_text': do.override_text }) return jinja_render_to_response('dhcp/override.html', { "form": form, 'dhcp_scope': dhcp_scope }, RequestContext(request))
def new(request): error_message = '' if request.method == 'POST': form = forms.AddDHCPScopeForm(request.POST) if form.is_valid(): truth_exists = False try: tmp = Truth.objects.get(name=form.cleaned_data['scope_name']) truth_exists = True except: pass if truth_exists is False: t = Truth(name=form.cleaned_data['scope_name'], description=form.cleaned_data['scope_description']) t.save() k = TruthKeyValue(truth=t, key='is_dhcp_scope', value='True') k.save() return redirect('/dhcp/edit/%s' % t.name) else: error_message = 'DHCP Scope Exists' else: form = forms.AddDHCPScopeForm() return jinja_render_to_response('dhcp/new.html', { "form": form, "error_message": error_message })
def index(request): return jinja_render_to_response( 'truth/index.html', { 'systems': models.Truth.objects.all(), 'read_only': getattr(request, 'read_only', False), })
def new(request): error_message = '' if request.method == 'POST': form = forms.AddDHCPScopeForm(request.POST) if form.is_valid(): truth_exists = False try: tmp = Truth.objects.get(name=form.cleaned_data['scope_name']) truth_exists = True except: pass if truth_exists is False: t = Truth(name=form.cleaned_data['scope_name'], description=form.cleaned_data['scope_description']) t.save() k = TruthKeyValue(truth=t,key='is_dhcp_scope',value='True') k.save() return redirect('/dhcp/edit/%s' % t.name) else: error_message = 'DHCP Scope Exists' else: form = forms.AddDHCPScopeForm() return jinja_render_to_response('dhcp/new.html', { "form": form , "error_message":error_message })
def delete_key_value(request, id, kv_id): kv = models.KeyValue.objects.get(id=id) kv.delete() truth = models.Truth.objects.get(id=kv_id) key_value_store = models.KeyValue.objects.filter(truth=truth) return jinja_render_to_response('truth/key_value_store.html', { 'key_value_store': key_value_store, })
def create_key_value(request, id): truth = models.Truth.objects.get(id=id) kv = models.KeyValue(truth=truth) kv.save(); key_value_store = models.KeyValue.objects.filter(truth=truth) return jinja_render_to_response('truth/key_value_store.html', { 'key_value_store': key_value_store, })
def create(request): if request.POST: f = forms.TruthForm(request.POST) if f.is_valid(): f.save() return HttpResponseRedirect('/truth/') else: f = forms.TruthForm() return jinja_render_to_response('truth/key_value_store_create.html', {'form': f})
def edit(request, id): truth = models.Truth.objects.get(id=id) if request.POST: f = forms.TruthForm(request.POST, instance=truth) if f.is_valid(): f.save() else: f = forms.TruthForm(instance=truth) return jinja_render_to_response('truth/edit.html', { 'kv': truth, 'form': f })
def create(request): if request.POST: f = forms.TruthForm(request.POST) if f.is_valid(): f.save() return HttpResponseRedirect('/truth/') else: f = forms.TruthForm() return jinja_render_to_response('truth/key_value_store_create.html', { 'form': f })
def showall(request): dhcp_scopes = models.DHCP.objects.all() h = KeyValueHandler() request = factory.get('/en-US/api/keyvalue/?key=is_dhcp_scope', follow=True) obj = h.read(request) dhcp_scopes = [] for key in obj.iterkeys(): dhcp_scopes.append(key.split(":")[1]) return jinja_render_to_response('dhcp/index.html', { 'dhcp_scopes': dhcp_scopes, })
def override_file(request, dhcp_scope): if request.method == 'POST': form = forms.DHCPScopeOverrideForm(request.POST) if form.is_valid(): do = models.DHCPOverride.objects.get(dhcp_scope=dhcp_scope) do.override_text = form.cleaned_data['override_text'] do.save() #s = form.save() #return redirect('/dhcp/show/') else: try: do = models.DHCPOverride.objects.get(dhcp_scope=dhcp_scope) except: do = models.DHCPOverride(dhcp_scope=dhcp_scope) do.save() form = forms.DHCPScopeOverrideForm(initial={'dhcp_scope':dhcp_scope, 'override_text':do.override_text}) return jinja_render_to_response('dhcp/override.html', { "form": form, 'dhcp_scope':dhcp_scope }, RequestContext(request))
def report_home(request): data = {} systems = None initial = {"system_type": ["SYSTEM"], "location": ["-1"], "system_status": ["-1"]} if request.method == "POST": form = ReportForm(request.POST) if form.is_valid(): search_q = Q() allocation = request.POST.get("allocation", "") server_models = request.POST.get("server_models", "") operating_system = request.POST.get("operating_system", "") system_status = request.POST.getlist("system_status") location = request.POST.get("location") systems = System.objects.all() if "SYSTEM" in request.POST.getlist("system_type"): if location: if "-1" not in request.POST.getlist("location"): for location in request.POST.getlist("location"): search_q |= Q(system_rack__location__id=location) total_count = System.with_related.filter(search_q).count() systems = systems.filter(search_q) if allocation != "": systems = systems.filter(Q(allocation=allocation)) if server_models != "": systems = systems.filter( Q(server_model__model__icontains=server_models) | Q(server_model__vendor__icontains=server_models) ) if operating_system != "": systems = systems.filter( Q(operating_system__name__icontains=operating_system) | Q(operating_system__version__icontains=operating_system) ) if "-1" not in system_status: the_query = Q() for ss in system_status: the_query |= Q(system_status__id=ss) systems = systems.filter(the_query) total_count = systems.count() if "UNMANAGED" in request.POST.getlist("system_type"): pass data["content"] = str(total_count) if "CSV" == request.POST["output"]: response = HttpResponse(mimetype="text/csv") response["Content-Disposition"] = "attachment; filename=inventory_report.csv" writer = csv.writer(response) columns = [ "Hostname", "Asset Tag", "Purchase Date", "Server Model", "Serial", "Status", "Purchase Price", "Operating System", "Location", ] writer.writerow(columns) for system in systems: writer.writerow( [ system.hostname, system.asset_tag, system.purchase_date, system.server_model, system.serial, system.system_status, system.purchase_price, system.operating_system if system.operating_system else "", system.system_rack.location if system.system_rack else "", ] ) return response if "SCREEN" == request.POST["output"]: template = "reports/index.html" else: form = ReportForm(request.POST) data["form"] = form template = "reports/index.html" else: form = ReportForm(initial=initial) data["form"] = form template = "reports/index.html" return jinja_render_to_response(template, {"systems": systems, "form": form})
def edit(request, dhcp_scope): h = KeyValueHandler() trequest = factory.get('/api/keyvalue/?keystore=%s' % dhcp_scope, follow=True) instance = h.read(trequest) initial = {} initial['scope_name'] = dhcp_scope ##A bunch of try/catch blocks to create key/value pairs if one does not exist try: initial['scope_start'] = instance['dhcp.scope.start'] except: trequest = factory.post('/en-US/api/keyvalue/%s/' % dhcp_scope, {'key':'dhcp.scope.start', 'value':'', 'truth_name':dhcp_scope}, follow=True) h.create(trequest) initial['scope_start'] = '' try: initial['scope_end'] = instance['dhcp.scope.end'] except: treqeust = factory.post('/en-US/api/keyvalue/%s/' % dhcp_scope, {'key':'dhcp.scope.end', 'value':'', 'truth_name':dhcp_scope}, follow=True) h.create(trequest) initial['scope_end'] = '' try: initial['scope_netmask'] = instance['dhcp.scope.netmask'] except: treqeust = factory.post('/en-US/api/keyvalue/%s/' % dhcp_scope, {'key':'dhcp.scope.netmask', 'value':'', 'truth_name':dhcp_scope}, follow=True) h.create(trequest) initial['scope_netmask'] = '' try: initial['pool_start'] = instance['dhcp.pool.start'] except: treqeust = factory.post('/en-US/api/keyvalue/%s/' % dhcp_scope, {'key':'dhcp.pool.start', 'value':'', 'truth_name':dhcp_scope}, follow=True) h.create(trequest) initial['pool_start'] = '' try: initial['pool_end'] = instance['dhcp.pool.end'] except: treqeust = factory.post('/en-US/api/keyvalue/%s/' % dhcp_scope, {'key':'dhcp.pool.end', 'value':'', 'truth_name':dhcp_scope}, follow=True) h.create(trequest) initial['pool_end'] = '' try: initial['ntp_server1'] = instance['dhcp.option.ntp_server.0'] except: treqeust = factory.post('/en-US/api/keyvalue/%s/' % dhcp_scope, {'key':'dhcp.option.ntp_server.0', 'value':'', 'truth_name':dhcp_scope}, follow=True) h.create(trequest) initial['ntp_server1'] = '' try: initial['ntp_server2'] = instance['dhcp.option.ntp_server.1'] except: treqeust = factory.post('/en-US/api/keyvalue/%s/' % dhcp_scope, {'key':'dhcp.option.ntp_server.1', 'value':'', 'truth_name':dhcp_scope}, follow=True) h.create(trequest) initial['ntp_server2'] = '' try: initial['router'] = instance['dhcp.option.router.0'] except: treqeust = factory.post('/en-US/api/keyvalue/%s/' % dhcp_scope, {'key':'dhcp.option.router.0', 'value':'', 'truth_name':dhcp_scope}, follow=True) h.create(trequest) initial['router'] = '' try: initial['domain_name'] = instance['dhcp.option.domain_name.0'] except: treqeust = factory.post('/en-US/api/keyvalue/%s/' % dhcp_scope, {'key':'dhcp.option.domain_name.0', 'value':'', 'truth_name':dhcp_scope}, follow=True) h.create(trequest) initial['domain_name'] = '' try: initial['dns_server1'] = instance['dhcp.dns_server.0'] except: treqeust = factory.post('/en-US/api/keyvalue/%s/' % dhcp_scope, {'key':'dhcp.dns_server.0', 'value':'', 'truth_name':dhcp_scope}, follow=True) h.create(trequest) initial['dns_server1'] = '' try: initial['dns_server2'] = instance['dhcp.dns_server.1'] except: treqeust = factory.post('/en-US/api/keyvalue/%s/' % dhcp_scope, {'key':'dhcp.dns_server.1', 'value':'', 'truth_name':dhcp_scope}, follow=True) h.create(trequest) initial['dns_server2'] = '' try: initial['allow_booting'] = instance['dhcp.pool.allow_booting.0'] except: treqeust = factory.post('/en-US/api/keyvalue/%s/' % dhcp_scope, {'key':'dhcp.pool.allow_booting.0', 'value':'', 'truth_name':dhcp_scope}, follow=True) h.create(trequest) initial['allow_booting'] = '' try: initial['allow_bootp'] = instance['dhcp.pool.allow_bootp.0'] except: treqeust = factory.post('/en-US/api/keyvalue/%s/' % dhcp_scope, {'key':'dhcp.pool.allow_bootp.0', 'value':'', 'truth_name':dhcp_scope}, follow=True) h.create(trequest) initial['allow_bootp'] = '' if request.method == 'POST': form = forms.EditDHCPScopeForm(request.POST) if form.is_valid(): trequest = factory.post('/en-US/api/v2/keyvalue/%s/' % dhcp_scope, {'truth_id': dhcp_scope, 'key':'dhcp.scope.start', 'value':form.cleaned_data['scope_start']}, follow=True) h.update(trequest, dhcp_scope) trequest = factory.post('/en-US/api/v2/keyvalue/%s/' % dhcp_scope, {'truth_id': dhcp_scope, 'key':'dhcp.scope.end', 'value':form.cleaned_data['scope_end']}, follow=True) h.update(trequest, dhcp_scope) trequest = factory.post('/en-US/api/v2/keyvalue/%s/' % dhcp_scope, {'truth_id': dhcp_scope, 'key':'dhcp.scope.netmask', 'value':form.cleaned_data['scope_netmask']}, follow=True) h.update(trequest, dhcp_scope) trequest = factory.post('/en-US/api/v2/keyvalue/%s/' % dhcp_scope, {'truth_id': dhcp_scope, 'key':'dhcp.pool.start', 'value':form.cleaned_data['pool_start']}, follow=True) h.update(trequest, dhcp_scope) trequest = factory.post('/en-US/api/v2/keyvalue/%s/' % dhcp_scope, {'truth_id': dhcp_scope, 'key':'dhcp.pool.end', 'value':form.cleaned_data['pool_end']}, follow=True) h.update(trequest, dhcp_scope) trequest = factory.post('/en-US/api/v2/keyvalue/%s/' % dhcp_scope, {'truth_id': dhcp_scope, 'key':'dhcp.option.ntp_server.0', 'value':form.cleaned_data['ntp_server1']}, follow=True) h.update(trequest, dhcp_scope) trequest = factory.post('/en-US/api/v2/keyvalue/%s/' % dhcp_scope, {'truth_id': dhcp_scope, 'key':'dhcp.option.ntp_server.1', 'value':form.cleaned_data['ntp_server2']}, follow=True) h.update(trequest, dhcp_scope) trequest = factory.post('/en-US/api/v2/keyvalue/%s/' % dhcp_scope, {'truth_id': dhcp_scope, 'key':'dhcp.dns_server.0', 'value':form.cleaned_data['dns_server1']}, follow=True) h.update(trequest, dhcp_scope) trequest = factory.post('/en-US/api/v2/keyvalue/%s/' % dhcp_scope, {'truth_id': dhcp_scope, 'key':'dhcp.dns_server.1', 'value':form.cleaned_data['dns_server2']}, follow=True) h.update(trequest, dhcp_scope) trequest = factory.post('/en-US/api/v2/keyvalue/%s/' % dhcp_scope, {'truth_id': dhcp_scope, 'key':'dhcp.option.domain_name.0', 'value':form.cleaned_data['domain_name']}, follow=True) h.update(trequest, dhcp_scope) trequest = factory.post('/en-US/api/v2/keyvalue/%s/' % dhcp_scope, {'truth_id': dhcp_scope, 'key':'dhcp.option.router.0', 'value':form.cleaned_data['router']}, follow=True) h.update(trequest, dhcp_scope) trequest = factory.post('/en-US/api/v2/keyvalue/%s/' % dhcp_scope, {'truth_id': dhcp_scope, 'key':'dhcp.pool.allow_booting.0', 'value':form.cleaned_data['allow_booting']}, follow=True) h.update(trequest, dhcp_scope) trequest = factory.post('/en-US/api/v2/keyvalue/%s/' % dhcp_scope, {'truth_id': dhcp_scope, 'key':'dhcp.pool.allow_bootp.0', 'value':form.cleaned_data['allow_bootp']}, follow=True) h.update(trequest, dhcp_scope) else: form = forms.EditDHCPScopeForm(initial=initial) return jinja_render_to_response('dhcp/edit.html', { "form": form, 'dhcp_scope': dhcp_scope })
def edit(request, dhcp_scope): h = KeyValueHandler() trequest = factory.get('/api/keyvalue/?keystore=%s' % dhcp_scope, follow=True) instance = h.read(trequest) initial = {} initial['scope_name'] = dhcp_scope ##A bunch of try/catch blocks to create key/value pairs if one does not exist try: initial['scope_start'] = instance['dhcp.scope.start'] except: trequest = factory.post('/en-US/api/keyvalue/%s/' % dhcp_scope, { 'key': 'dhcp.scope.start', 'value': '', 'truth_name': dhcp_scope }, follow=True) h.create(trequest) initial['scope_start'] = '' try: initial['scope_end'] = instance['dhcp.scope.end'] except: treqeust = factory.post('/en-US/api/keyvalue/%s/' % dhcp_scope, { 'key': 'dhcp.scope.end', 'value': '', 'truth_name': dhcp_scope }, follow=True) h.create(trequest) initial['scope_end'] = '' try: initial['scope_netmask'] = instance['dhcp.scope.netmask'] except: treqeust = factory.post('/en-US/api/keyvalue/%s/' % dhcp_scope, { 'key': 'dhcp.scope.netmask', 'value': '', 'truth_name': dhcp_scope }, follow=True) h.create(trequest) initial['scope_netmask'] = '' try: initial['pool_start'] = instance['dhcp.pool.start'] except: treqeust = factory.post('/en-US/api/keyvalue/%s/' % dhcp_scope, { 'key': 'dhcp.pool.start', 'value': '', 'truth_name': dhcp_scope }, follow=True) h.create(trequest) initial['pool_start'] = '' try: initial['pool_end'] = instance['dhcp.pool.end'] except: treqeust = factory.post('/en-US/api/keyvalue/%s/' % dhcp_scope, { 'key': 'dhcp.pool.end', 'value': '', 'truth_name': dhcp_scope }, follow=True) h.create(trequest) initial['pool_end'] = '' try: initial['ntp_server1'] = instance['dhcp.option.ntp_server.0'] except: treqeust = factory.post('/en-US/api/keyvalue/%s/' % dhcp_scope, { 'key': 'dhcp.option.ntp_server.0', 'value': '', 'truth_name': dhcp_scope }, follow=True) h.create(trequest) initial['ntp_server1'] = '' try: initial['ntp_server2'] = instance['dhcp.option.ntp_server.1'] except: treqeust = factory.post('/en-US/api/keyvalue/%s/' % dhcp_scope, { 'key': 'dhcp.option.ntp_server.1', 'value': '', 'truth_name': dhcp_scope }, follow=True) h.create(trequest) initial['ntp_server2'] = '' try: initial['router'] = instance['dhcp.option.router.0'] except: treqeust = factory.post('/en-US/api/keyvalue/%s/' % dhcp_scope, { 'key': 'dhcp.option.router.0', 'value': '', 'truth_name': dhcp_scope }, follow=True) h.create(trequest) initial['router'] = '' try: initial['domain_name'] = instance['dhcp.option.domain_name.0'] except: treqeust = factory.post('/en-US/api/keyvalue/%s/' % dhcp_scope, { 'key': 'dhcp.option.domain_name.0', 'value': '', 'truth_name': dhcp_scope }, follow=True) h.create(trequest) initial['domain_name'] = '' try: initial['dns_server1'] = instance['dhcp.dns_server.0'] except: treqeust = factory.post('/en-US/api/keyvalue/%s/' % dhcp_scope, { 'key': 'dhcp.dns_server.0', 'value': '', 'truth_name': dhcp_scope }, follow=True) h.create(trequest) initial['dns_server1'] = '' try: initial['dns_server2'] = instance['dhcp.dns_server.1'] except: treqeust = factory.post('/en-US/api/keyvalue/%s/' % dhcp_scope, { 'key': 'dhcp.dns_server.1', 'value': '', 'truth_name': dhcp_scope }, follow=True) h.create(trequest) initial['dns_server2'] = '' try: initial['allow_booting'] = instance['dhcp.pool.allow_booting.0'] except: treqeust = factory.post('/en-US/api/keyvalue/%s/' % dhcp_scope, { 'key': 'dhcp.pool.allow_booting.0', 'value': '', 'truth_name': dhcp_scope }, follow=True) h.create(trequest) initial['allow_booting'] = '' try: initial['allow_bootp'] = instance['dhcp.pool.allow_bootp.0'] except: treqeust = factory.post('/en-US/api/keyvalue/%s/' % dhcp_scope, { 'key': 'dhcp.pool.allow_bootp.0', 'value': '', 'truth_name': dhcp_scope }, follow=True) h.create(trequest) initial['allow_bootp'] = '' if request.method == 'POST': form = forms.EditDHCPScopeForm(request.POST) if form.is_valid(): trequest = factory.post( '/en-US/api/v2/keyvalue/%s/' % dhcp_scope, { 'truth_id': dhcp_scope, 'key': 'dhcp.scope.start', 'value': form.cleaned_data['scope_start'] }, follow=True) h.update(trequest, dhcp_scope) trequest = factory.post('/en-US/api/v2/keyvalue/%s/' % dhcp_scope, { 'truth_id': dhcp_scope, 'key': 'dhcp.scope.end', 'value': form.cleaned_data['scope_end'] }, follow=True) h.update(trequest, dhcp_scope) trequest = factory.post( '/en-US/api/v2/keyvalue/%s/' % dhcp_scope, { 'truth_id': dhcp_scope, 'key': 'dhcp.scope.netmask', 'value': form.cleaned_data['scope_netmask'] }, follow=True) h.update(trequest, dhcp_scope) trequest = factory.post( '/en-US/api/v2/keyvalue/%s/' % dhcp_scope, { 'truth_id': dhcp_scope, 'key': 'dhcp.pool.start', 'value': form.cleaned_data['pool_start'] }, follow=True) h.update(trequest, dhcp_scope) trequest = factory.post('/en-US/api/v2/keyvalue/%s/' % dhcp_scope, { 'truth_id': dhcp_scope, 'key': 'dhcp.pool.end', 'value': form.cleaned_data['pool_end'] }, follow=True) h.update(trequest, dhcp_scope) trequest = factory.post( '/en-US/api/v2/keyvalue/%s/' % dhcp_scope, { 'truth_id': dhcp_scope, 'key': 'dhcp.option.ntp_server.0', 'value': form.cleaned_data['ntp_server1'] }, follow=True) h.update(trequest, dhcp_scope) trequest = factory.post( '/en-US/api/v2/keyvalue/%s/' % dhcp_scope, { 'truth_id': dhcp_scope, 'key': 'dhcp.option.ntp_server.1', 'value': form.cleaned_data['ntp_server2'] }, follow=True) h.update(trequest, dhcp_scope) trequest = factory.post( '/en-US/api/v2/keyvalue/%s/' % dhcp_scope, { 'truth_id': dhcp_scope, 'key': 'dhcp.dns_server.0', 'value': form.cleaned_data['dns_server1'] }, follow=True) h.update(trequest, dhcp_scope) trequest = factory.post( '/en-US/api/v2/keyvalue/%s/' % dhcp_scope, { 'truth_id': dhcp_scope, 'key': 'dhcp.dns_server.1', 'value': form.cleaned_data['dns_server2'] }, follow=True) h.update(trequest, dhcp_scope) trequest = factory.post( '/en-US/api/v2/keyvalue/%s/' % dhcp_scope, { 'truth_id': dhcp_scope, 'key': 'dhcp.option.domain_name.0', 'value': form.cleaned_data['domain_name'] }, follow=True) h.update(trequest, dhcp_scope) trequest = factory.post('/en-US/api/v2/keyvalue/%s/' % dhcp_scope, { 'truth_id': dhcp_scope, 'key': 'dhcp.option.router.0', 'value': form.cleaned_data['router'] }, follow=True) h.update(trequest, dhcp_scope) trequest = factory.post( '/en-US/api/v2/keyvalue/%s/' % dhcp_scope, { 'truth_id': dhcp_scope, 'key': 'dhcp.pool.allow_booting.0', 'value': form.cleaned_data['allow_booting'] }, follow=True) h.update(trequest, dhcp_scope) trequest = factory.post( '/en-US/api/v2/keyvalue/%s/' % dhcp_scope, { 'truth_id': dhcp_scope, 'key': 'dhcp.pool.allow_bootp.0', 'value': form.cleaned_data['allow_bootp'] }, follow=True) h.update(trequest, dhcp_scope) else: form = forms.EditDHCPScopeForm(initial=initial) return jinja_render_to_response('dhcp/edit.html', { "form": form, 'dhcp_scope': dhcp_scope })
def index(request): return jinja_render_to_response('truth/index.html', { 'systems': models.Truth.objects.all(), 'read_only': getattr(request, 'read_only', False), })
def get_key_value_store(request, id): truth = models.Truth.objects.get(id=id) key_value_store = models.KeyValue.objects.filter(truth=truth) return jinja_render_to_response('truth/key_value_store.html', { 'key_value_store': key_value_store, })
def report_home(request): data = {} systems = None initial = { 'system_type': ['SYSTEM'], 'site': ['-1'], 'system_status': ['-1'], } if request.method == 'POST': form = ReportForm(request.POST) if form.is_valid(): search_q = Q() allocation = request.POST.get('allocation', '') server_models = request.POST.get('server_models', '') operating_system = request.POST.get('operating_system', '') system_status = request.POST.getlist('system_status') site = request.POST.get('site') systems = System.objects.all() if 'SYSTEM' in request.POST.getlist('system_type'): if site: if '-1' not in request.POST.getlist('site'): for site in request.POST.getlist('site'): search_q |= Q(system_rack__site__id=site) total_count = System.with_related.filter(search_q).count() systems = systems.filter(search_q) if allocation != '': systems = systems.filter(Q(allocation=allocation)) if server_models != '': systems = systems.filter(Q(server_model__model__icontains=server_models)|Q(server_model__vendor__icontains=server_models)) if operating_system != '': systems = systems.filter(Q(operating_system__name__icontains=operating_system)|Q(operating_system__version__icontains=operating_system)) if '-1' not in system_status: the_query = Q() for ss in system_status: the_query |= Q(system_status__id=ss) systems = systems.filter(the_query) total_count = systems.count() if 'UNMANAGED' in request.POST.getlist('system_type'): pass data['content'] = str(total_count) if 'CSV' == request.POST['output']: response = HttpResponse(mimetype='text/csv') response['Content-Disposition'] = 'attachment; filename=inventory_report.csv' writer = csv.writer(response) columns = [ 'Hostname', 'Asset Tag', 'Purchase Date', 'Server Model', 'Serial', 'Status', 'Purchase Price', 'Operating System', 'Site', ] writer.writerow(columns) for system in systems: writer.writerow([ system.hostname, system.asset_tag, system.purchase_date, system.server_model, system.serial, system.system_status, system.purchase_price, system.operating_system if system.operating_system else '', system.system_rack.site if system.system_rack else '', ]) return response if 'SCREEN' == request.POST['output']: template = 'reports/index.html' else: form = ReportForm(request.POST) data['form'] = form template = 'reports/index.html' else: form = ReportForm(initial=initial) data['form'] = form template = 'reports/index.html' return jinja_render_to_response(template, { 'systems': systems, 'form': form })
def report_home(request): data = {} systems = None initial = { 'system_type': ['SYSTEM'], 'site': ['-1'], 'system_status': ['-1'], } if request.method == 'POST': form = ReportForm(request.POST) if form.is_valid(): search_q = Q() allocation = request.POST.get('allocation', '') server_models = request.POST.get('server_models', '') operating_system = request.POST.get('operating_system', '') system_status = request.POST.getlist('system_status') site = request.POST.get('site') systems = System.objects.all() if 'SYSTEM' in request.POST.getlist('system_type'): if site: if '-1' not in request.POST.getlist('site'): for site in request.POST.getlist('site'): search_q |= Q(system_rack__site__id=site) total_count = System.with_related.filter( search_q).count() systems = systems.filter(search_q) if allocation != '': systems = systems.filter(Q(allocation=allocation)) if server_models != '': systems = systems.filter( Q(server_model__model__icontains=server_models) | Q(server_model__vendor__icontains=server_models)) if operating_system != '': systems = systems.filter( Q(operating_system__name__icontains=operating_system) | Q(operating_system__version__icontains=operating_system )) if '-1' not in system_status: the_query = Q() for ss in system_status: the_query |= Q(system_status__id=ss) systems = systems.filter(the_query) total_count = systems.count() if 'UNMANAGED' in request.POST.getlist('system_type'): pass data['content'] = str(total_count) if 'CSV' == request.POST['output']: response = HttpResponse(mimetype='text/csv') response[ 'Content-Disposition'] = 'attachment; filename=inventory_report.csv' writer = csv.writer(response) columns = [ 'Hostname', 'Asset Tag', 'Purchase Date', 'Server Model', 'Serial', 'Status', 'Purchase Price', 'Operating System', 'Site', ] writer.writerow(columns) for system in systems: writer.writerow([ system.hostname, system.asset_tag, system.purchase_date, system.server_model, system.serial, system.system_status, system.purchase_price, system.operating_system if system.operating_system else '', system.system_rack.site if system.system_rack else '', ]) return response if 'SCREEN' == request.POST['output']: template = 'reports/index.html' else: form = ReportForm(request.POST) data['form'] = form template = 'reports/index.html' else: form = ReportForm(initial=initial) data['form'] = form template = 'reports/index.html' return jinja_render_to_response(template, { 'systems': systems, 'form': form })