def get_context_data(self, **kwargs): context = super(CoreDetailView, self).get_context_data(**kwargs) ctnr = kwargs.get('object', False) if not ctnr: return context # Add user levels of ctnr to user table. users = ctnr.users.all() extra_cols = [{ 'header': 'Level to %s' % ctnr.name, 'sort_field': 'user' }] extra_cols[0]['data'] = [{ 'value': LEVELS[CtnrUser.objects.get(user=user, ctnr=ctnr).level] if not user.is_superuser else 'Superuser', 'url': '' } for user in users] user_table = tablefy(users, extra_cols=extra_cols, users=True) domains = ctnr.domains.filter(is_reverse=False) domain_table = tablefy(domains) rdomains = ctnr.domains.filter(is_reverse=True) rdomain_table = tablefy(rdomains) add_user_form = CtnrUserForm(initial={'ctnr': ctnr}) return dict({ 'obj_type': 'ctnr', 'user_table': user_table, 'domain_table': domain_table, 'rdomain_table': rdomain_table, 'add_user_form': add_user_form }.items() + context.items())
def cy_view(request, template, pk=None, obj_type=None): """List, create, update view in one for a flatter heirarchy. """ # Infer obj_type from URL, saves trouble of having to specify # kwargs everywhere in the dispatchers. obj_type = obj_type or request.path.split('/')[2] Klass, FormKlass = get_klasses(obj_type) obj = get_object_or_404(Klass, pk=pk) if pk else None form = None if request.method == 'POST': object_table = None page_obj = None form = FormKlass(request.POST, instance=obj) if form.is_valid(): try: if perm(request, ACTION_CREATE, obj=obj, obj_class=Klass): obj = form.save() if Klass.__name__ == 'Ctnr': request = ctnr_update_session(request, obj) if (hasattr(obj, 'ctnr_set') and not obj.ctnr_set.exists()): obj.ctnr_set.add(request.session['ctnr']) object_table = tablefy([obj], request=request) return HttpResponse(json.dumps({'row': object_table})) except (ValidationError, ValueError) as e: if form.errors is None: form.errors = ErrorDict() form.errors.update(e.message_dict) return HttpResponse(json.dumps({'errors': form.errors})) except DatabaseError as e: # DatabaseError(number, description) if form.errors is None: form.errors = ErrorDict() form.errors.setdefault('__all__', []).append(e.args[1]) return HttpResponse(json.dumps({'errors': form.errors})) else: return HttpResponse(json.dumps({'errors': form.errors})) elif request.method == 'GET': object_list = _filter(request, Klass) form = FormKlass(instance=obj) page_obj = make_paginator(request, do_sort(request, object_list), 50) object_table = tablefy(page_obj, request=request) if isinstance(form, UsabilityFormMixin): form.make_usable(request) return cy_render( request, template, { 'form': form, 'obj': obj, 'page_obj': page_obj, 'object_table': object_table, 'obj_type': obj_type, 'pretty_obj_type': Klass.pretty_type, 'pk': pk, })
def system_detail(request, pk): try: system = System.objects.get(id=pk) except: return redirect(reverse('system')) attrs = system.systemav_set.all() dynamic = DynamicInterface.objects.filter(system=system) related_systems = set() system_table = tablefy([system], request=request, detail_view=True) static = StaticInterface.objects.filter(system=system) static_intr = [] dynamic_intr = [] for intr in static: if intr.mac: related_systems.update(intr.get_related_systems()) static_intr.append((tablefy((intr,), request=request),)) for intr in dynamic: if intr.mac: related_systems.update(intr.get_related_systems()) dynamic_intr.append((tablefy((intr,), request=request),)) related_systems.discard(system) return cy_render(request, 'system/system_detail.html', { 'attrs_table': tablefy(attrs, request=request), 'static_intr_tables': static_intr, 'dynamic_intr_tables': dynamic_intr, 'related_systems_table': tablefy(list(related_systems), request=request), 'obj_type': 'system', 'obj': system, 'obj_table': system_table, 'pretty_obj_type': system.pretty_type, })
def range_detail(request, pk): mrange = get_object_or_404(Range, pk=pk) allow = None if mrange.allow == ALLOW_OPTION_VRF: try: allow = [Vrf.objects.get(network=mrange.network)] except ObjectDoesNotExist: allow = [] elif mrange.allow == ALLOW_OPTION_KNOWN: allow = [ALLOW_OPTION_KNOWN] elif mrange.allow == ALLOW_OPTION_LEGACY: allow = [ctnr for ctnr in Ctnr.objects.filter(ranges=mrange)] start_upper = mrange.start_upper start_lower = mrange.start_lower end_upper = mrange.end_upper end_lower = mrange.end_lower range_data, ip_usage_percent = range_usage( two_to_one(start_upper, start_lower), two_to_one(end_upper, end_lower), mrange.ip_type) return render(request, 'range/range_detail.html', { 'obj': mrange, 'obj_type': 'range', 'ranges_table': tablefy((mrange,)), 'range_data': make_paginator(request, range_data, 50), 'attrs_table': tablefy(mrange.rangekeyvalue_set.all()), 'allow_list': allow, 'range_used': "{0}%".format(ip_usage_percent) })
def admin_page(request): if request.POST: if 'user' in request.POST: if 'edit_action' not in request.POST: return HttpResponse( json.dumps({'errors': { '__all__': 'Select an option' }})) else: return edit_user(request, request.POST['user'], request.POST['edit_action']) else: if User.objects.get( id=request.session['_auth_user_id']).is_superuser == 1: lost_users = [] perma_delete_data = [] superusers = [] nonlost_users = CtnrUser.objects.values_list('user') for user in User.objects.all().order_by('username'): if (user.pk, ) not in nonlost_users: lost_users.append(user) if user.is_superuser: superusers.append(user) extra_cols = [{'header': 'Actions', 'sort_field': 'user'}] for user in lost_users: perma_delete_data.append({ 'value': ['Delete'], 'url': [reverse('user-delete', kwargs={'user_id': user.id})], 'img': ['/media/img/delete.png'] }) extra_cols[0]['data'] = perma_delete_data user_table = tablefy(lost_users, extra_cols=extra_cols, users=True, request=request, update=False) superuser_table = tablefy(superusers, users=True, request=request, update=False) user_form = EditUserForm() return cy_render( request, 'base/admin_page.html', { 'user_table': user_table, 'superuser_table': superuser_table, 'users': lost_users, 'user_form': user_form }) else: return redirect(reverse('core-index'))
def user_detail(request, pk): user = User.objects.get(id=pk) user_table = tablefy([user], users=True) ctnr_table = tablefy(CtnrUser.objects.filter(id=pk)) return render(request, 'cyuser/user_detail.html', { 'user': user, 'user_table': user_table, 'ctnr_table': ctnr_table })
def cy_detail(request, Klass, template, obj_sets, pk=None, obj=None, **kwargs): """Show bunches of related tables. obj_sets -- string of foreign key attribute of the obj OR queryset relating to the obj Pass in either pk or already retrieved obj. """ # Get object if needed. obj_type = request.path.split('/')[2] if not obj and pk: obj = get_object_or_404(Klass, pk=pk) elif not obj and pk: raise Exception("pk or obj required.") # Build related tables and paginators. tables = [] for name, obj_set in obj_sets.items(): if isinstance(obj_set, str): obj_set = getattr(obj, obj_set).all() page_obj = make_paginator(request, obj_set, obj_type=name.lower().replace(' ', '')) if obj_type == 'user': table = tablefy(page_obj, request=request, update=False, related_object=obj) else: table = tablefy(page_obj, request=request, related_object=obj) tables.append({'name': name, 'page_obj': page_obj, 'table': table}) if obj_type == 'user': table = tablefy((obj, ), request=request, update=False, detail_view=True) else: table = tablefy((obj, ), request=request, detail_view=True) return cy_render( request, template, dict({ 'obj': obj, 'obj_table': table, 'obj_type': obj_type, 'pretty_obj_type': (django_pretty_type(obj_type) or get_klasses(obj_type)[0].pretty_type), 'tables': tables }.items() + kwargs.items()))
def range_detail(request, pk): mrange = get_object_or_404(Range, pk=pk) if mrange.allow == ALLOW_ANY: allow = ['Any client'] elif mrange.allow == ALLOW_KNOWN: allow = ['Known clients'] else: allow = [] if mrange.allow == ALLOW_VRF: allow += map(str, Vrf.objects.filter(network=mrange.network)) if mrange.allow == ALLOW_LEGACY: allow += map(str, Ctnr.objects.filter(ranges=mrange)) allow.sort(key=lambda x: x.lower()) range_type = mrange.range_type range_data = [] ip_usage_percent = None dynamic_interfaces = [] dynamic_interfaces_page_obj = None if range_type == 'st': start_upper = mrange.start_upper start_lower = mrange.start_lower end_upper = mrange.end_upper end_lower = mrange.end_lower range_data, ip_usage_percent = range_usage( two_to_one(start_upper, start_lower), two_to_one(end_upper, end_lower), mrange.ip_type) else: ip_usage_percent = mrange.range_usage DynamicInterface = get_model('cyder', 'dynamicinterface') dynamic_interfaces = DynamicInterface.objects.filter(range=mrange) dynamic_interfaces_page_obj = make_paginator( request, do_sort(request, dynamic_interfaces), 10) if ip_usage_percent: ip_usage_percent = "{0}%".format(ip_usage_percent) return render(request, 'range/range_detail.html', { 'obj': mrange, 'obj_type': 'range', 'pretty_obj_type': mrange.pretty_type, 'ranges_table': tablefy((mrange,), info=False, request=request), 'range_data': make_paginator(request, range_data, 50), 'range_type': range_type, 'attrs_table': tablefy(mrange.rangeav_set.all(), request=request), 'allow_list': allow, 'range_used': ip_usage_percent, 'dynamic_intr_table': tablefy(dynamic_interfaces_page_obj, info=True, request=request), 'page_obj': dynamic_interfaces_page_obj })
def workgroup_detail(request, workgroup_pk): workgroup = get_object_or_404(Workgroup, pk=workgroup_pk) attrs = workgroup.workgroupkeyvalue_set.all() static_hosts_paginator = make_paginator( request, workgroup.staticinterface_set.all(), record_type='static') dynamic_hosts_paginator = make_paginator( request, workgroup.dynamicinterface_set.all(), record_type='dynamic') return render( request, 'workgroup/workgroup_detail.html', { 'object': workgroup, 'workgroup_table': tablefy((workgroup, )), 'dynamic_hosts_page_obj': dynamic_hosts_paginator, 'dynamic_hosts_table': tablefy(dynamic_hosts_paginator), 'static_hosts_page_obj': static_hosts_paginator, 'static_hosts_table': tablefy(static_hosts_paginator), 'attrs_table': tablefy(attrs), })
def cydns_view(request, pk=None): """List, create, update view in one for a flatter heirarchy. """ # Infer obj_type from URL, saves trouble of having to specify # kwargs everywhere in the dispatchers. obj_type = request.path.split('/')[2] # Get the record form. Klass, FormKlass, FQDNFormKlass = get_klasses(obj_type) # Get the object if updating. record = get_object_or_404(Klass, pk=pk) if pk else None form = FQDNFormKlass(instance=record) if request.method == 'POST': qd, domain, errors = _fqdn_to_domain(request.POST.copy()) # Validate form. if errors: print errors fqdn_form = FQDNFormKlass(request.POST) fqdn_form._errors = ErrorDict() fqdn_form._errors['__all__'] = ErrorList(errors) return render(request, 'cydns/cydns_view.html', { 'form': fqdn_form, 'obj_type': obj_type, 'pk': pk, 'obj': record }) else: form = FormKlass(qd, instance=record) try: if perm(request, cy.ACTION_CREATE, obj=record, obj_class=Klass): record = form.save() # If domain, add to current ctnr. if obj_type == 'domain': request.session['ctnr'].domains.add(record) return redirect(record.get_list_url()) except (ValidationError, ValueError): form = _revert(domain, request.POST, form, FQDNFormKlass) object_list = _filter(request, Klass) page_obj = make_paginator(request, do_sort(request, object_list), 50) return render( request, 'cydns/cydns_view.html', { 'form': form, 'obj': record, 'page_obj': page_obj, 'object_table': tablefy(page_obj, views=True), 'obj_type': obj_type, 'pk': pk, })
def get_context_data(self, **kwargs): context = super(ListView, self).get_context_data(**kwargs) context['Model'] = self.model context['model_name'] = self.model._meta.db_table context['object_table'] = tablefy(context['page_obj']) context['form_title'] = "{0} Details".format( self.form_class.Meta.model.__name__) # Extra_context takes precedence over original values in context. try: context = dict(context.items() + self.extra_context.items()) except AttributeError: pass return context
def add_user(request, pk): """Add user to container.""" form = CtnrUserForm(qd_to_py_dict(request.POST)) if form.is_valid(): # Create table so client can inside new row into user table. extra_cols = [{'header': ''}] extra_cols[0]['data'] = [{ 'value': LEVELS[int(request.POST['level'])], 'url': '' }] user_table = tablefy(User.objects.filter(id=request.POST['user']), users=True, extra_cols=extra_cols) form.save() return HttpResponse(json.dumps({'user': user_table})) else: return HttpResponse( json.dumps({'error': [form.errors[err] for err in form.errors]}))
def cy_view(request, get_klasses_fn, template, pk=None, obj_type=None): """List, create, update view in one for a flatter heirarchy. """ # Infer obj_type from URL, saves trouble of having to specify obj_type = obj_type or request.path.split('/')[2] Klass, FormKlass, FQDNFormKlass = get_klasses_fn(obj_type) obj = get_object_or_404(Klass, pk=pk) if pk else None form = FormKlass(instance=obj) if request.method == 'POST': form = FormKlass(request.POST, instance=obj) if form.is_valid(): try: if perm(request, cy.ACTION_CREATE, obj=obj, obj_class=Klass): obj = form.save() return redirect( request.META.get('HTTP_REFERER', obj.get_list_url())) except (ValidationError, ValueError) as e: if form._errors is None: form._errors = ErrorDict() form._errors["__all__"] = ErrorList(e.messages) return render(request, template, { 'form': form, 'obj': obj, 'obj_type': obj_type, 'pk': pk, }) elif request.method == 'GET': form = FormKlass(initial=qd_to_py_dict(request.GET)) object_list = _filter(request, Klass) page_obj = make_paginator(request, do_sort(request, object_list), 50) return render( request, template, { 'form': form, 'obj': obj, 'page_obj': page_obj, 'object_table': tablefy(page_obj), 'obj_type': obj_type, 'pk': pk, })
def system_detail(request, pk): system = get_object_or_404(System, pk=pk) attrs = system.systemkeyvalue_set.all() dynamic = DynamicInterface.objects.filter(system=system) static = StaticInterface.objects.filter(system=system) static_intr = [] dynamic_intr = [] for intr in static: static_intr.append((tablefy( (intr, )), tablefy(intr.staticintrkeyvalue_set.all()))) for intr in dynamic: dynamic_intr.append((tablefy( (intr, )), tablefy(intr.dynamicintrkeyvalue_set.all()))) return render( request, 'system/system_detail.html', { 'system': system, 'system_table': tablefy([system]), 'attrs_table': tablefy(attrs), 'static_intr_tables': static_intr, 'dynamic_intr_tables': dynamic_intr, 'obj_type': 'system', 'obj': system, })
def _search(request): search = request_to_search(request).split(' ') search = ' '.join([strip_if_mac_with_colons(word) for word in search]) objs, error_resp = compile_to_django(search) if not objs: return ([], []) (addrs, cnames, domains, static, dynamic, mxs, nss, ptrs, soas, srvs, sshfps, sys, txts, misc) = ( objs['A'], objs['CNAME'], objs['DOMAIN'], objs['STATIC'], objs['DYNAMIC'], objs['MX'], objs['NS'], objs['PTR'], objs['SOA'], objs['SRV'], objs['SSHFP'], objs['SYSTEM'], objs['TXT'], []) meta = [ (soas.count() if soas else 0, 'soa', 'SOA Records'), (addrs.count() if addrs else 0, 'address', 'Address Records'), (cnames.count() if cnames else 0, 'cname', 'CNAMEs'), (domains.count() if domains else 0, 'domain', 'Domains'), (static.count() if static else 0, 'static', 'Static Interfaces'), (dynamic.count() if dynamic else 0, 'dynamic', 'Dynamic Interfaces'), (mxs.count() if mxs else 0, 'mx', 'MXs'), (nss.count() if nss else 0, 'nameserver', 'Nameservers'), (ptrs.count() if ptrs else 0, 'ptr', 'PTRs'), (srvs.count() if srvs else 0, 'srv', 'SRVs'), (sys.count() if srvs else 0, 'sys', 'Systems'), (txts.count() if txts else 0, 'txt', 'TXTs'), ] tables = [ (tablefy(soas, request=request), 'soa', 'SOA Records'), (tablefy(addrs, request=request), 'address', 'Address Records'), (tablefy(cnames, request=request), 'cname', 'CNAMEs'), (tablefy(domains, request=request), 'domain', 'Domains'), (tablefy(static, request=request), 'static', 'Static Interfaces'), (tablefy(dynamic, request=request), 'dynamic', 'Dynamic Interfaces'), (tablefy(mxs, request=request), 'mx', 'MXs'), (tablefy(nss, request=request), 'nameserver', 'Nameservers'), (tablefy(ptrs, request=request), 'ptr', 'PTRs'), (tablefy(srvs, request=request), 'srv', 'SRVs'), (tablefy(sys, request=request), 'sys', 'Systems'), (tablefy(txts, request=request), 'txt', 'TXTs'), ] return (meta, tables)
def ctnr_detail(request, pk): ctnr = Ctnr.objects.get(id=pk) ctnrUsers = ctnr.ctnruser_set.select_related('user', 'user__profile') ctnrDomains = ctnr.domains.select_related().filter(is_reverse=False) ctnrRdomains = ctnr.domains.select_related().filter(is_reverse=True) ctnrRanges = ctnr.ranges.select_related() ctnrWorkgroups = ctnr.workgroups.select_related() if request.user.get_profile().has_perm(request, ACTION_UPDATE, obj_class='CtnrObject', ctnr=ctnr): extra_cols, domains = create_obj_extra_cols(ctnr, ctnrDomains, 'domain') domain_table = tablefy(domains, extra_cols=extra_cols, request=request) extra_cols, rdomains = create_obj_extra_cols(ctnr, ctnrRdomains, 'domain') rdomain_table = tablefy(rdomains, extra_cols=extra_cols, request=request) extra_cols, ranges = create_obj_extra_cols(ctnr, ctnrRanges, 'range') range_table = tablefy(ranges, extra_cols=extra_cols, request=request) extra_cols, workgroups = create_obj_extra_cols(ctnr, ctnrWorkgroups, 'workgroup') workgroup_table = tablefy(workgroups, extra_cols=extra_cols, request=request) object_form = CtnrObjectForm(obj_perm=True) else: domain_table = tablefy(ctnrDomains, request=request) rdomain_table = tablefy(ctnrRdomains, request=request) range_table = tablefy(ctnrRanges, request=request) workgroup_table = tablefy(ctnrWorkgroups, request=request) object_form = CtnrObjectForm() object_form.fields['obj_type'] = ChoiceField(widget=HiddenInput, initial='user') if request.user.get_profile().has_perm(request, ACTION_UPDATE, obj_class='CtnrUser', ctnr=ctnr): extra_cols, users = create_user_extra_cols(ctnr, ctnrUsers, actions=True) user_table = tablefy(users, extra_cols=extra_cols, users=True, request=request, update=False) else: extra_cols, users = create_user_extra_cols(ctnr, ctnrUsers) user_table = tablefy(users, extra_cols=extra_cols, users=True, request=request, update=False) add_user_form = CtnrUserForm(initial={'ctnr': ctnr}) return render( request, 'ctnr/ctnr_detail.html', { 'obj': ctnr, 'pretty_obj_type': ctnr.pretty_type, 'obj_type': 'ctnr', 'user_table': user_table, 'domain_table': domain_table, 'rdomain_table': rdomain_table, 'range_table': range_table, 'workgroup_table': workgroup_table, 'add_user_form': add_user_form, 'object_select_form': object_form })
def ctnr_detail(request, pk): ctnr = Ctnr.objects.get(id=pk) ctnrUsers = ctnr.ctnruser_set.select_related('user', 'user__profile') ctnrDomains = ctnr.domains.select_related().filter(is_reverse=False) ctnrRdomains = ctnr.domains.select_related().filter(is_reverse=True) ctnrRanges = ctnr.ranges.select_related() ctnrWorkgroups = ctnr.workgroups.select_related() ctnr_table = tablefy([ctnr], request=request, detail_view=True) if request.user.get_profile().has_perm(request, ACTION_UPDATE, obj_class='CtnrObject', ctnr=ctnr): extra_cols, domains = create_obj_extra_cols(ctnr, ctnrDomains, 'domain') domain_table = tablefy(domains, extra_cols=extra_cols, request=request, update=False) extra_cols, rdomains = create_obj_extra_cols(ctnr, ctnrRdomains, 'domain') rdomain_table = tablefy(rdomains, extra_cols=extra_cols, request=request, update=False) extra_cols, ranges = create_obj_extra_cols(ctnr, ctnrRanges, 'range') range_table = tablefy(ranges, extra_cols=extra_cols, request=request, update=False) extra_cols, workgroups = create_obj_extra_cols(ctnr, ctnrWorkgroups, 'workgroup') workgroup_table = tablefy(workgroups, extra_cols=extra_cols, request=request, update=False) else: domain_table = tablefy(ctnrDomains, request=request) rdomain_table = tablefy(ctnrRdomains, request=request) range_table = tablefy(ctnrRanges, request=request) workgroup_table = tablefy(ctnrWorkgroups, request=request) if request.user.get_profile().has_perm(request, ACTION_UPDATE, obj_class='CtnrUser', ctnr=ctnr): extra_cols, users = create_user_extra_cols(ctnr, ctnrUsers, actions=True) user_table = tablefy(users, extra_cols=extra_cols, users=True, request=request, update=False) else: extra_cols, users = create_user_extra_cols(ctnr, ctnrUsers) user_table = tablefy(users, extra_cols=extra_cols, users=True, request=request, update=False) return cy_render( request, 'ctnr/ctnr_detail.html', { 'obj': ctnr, 'obj_table': ctnr_table, 'pretty_obj_type': ctnr.pretty_type, 'obj_type': 'ctnr', 'user_table': user_table, 'domain_table': domain_table, 'rdomain_table': rdomain_table, 'range_table': range_table, 'workgroup_table': workgroup_table, })
def _search(request): search = request_to_search(request) objs, error_resp = compile_to_django(search) if not objs: return ([], []) (addrs, cnames, domains, intrs, mxs, nss, ptrs, soas, srvs, sshfps, sys, txts, misc) = (objs['A'], objs['CNAME'], objs['DOMAIN'], objs['INTR'], objs['MX'], objs['NS'], objs['PTR'], objs['SOA'], objs['SRV'], objs['SSHFP'], objs['SYSTEM'], objs['TXT'], []) meta = [ (soas.count() if soas else 0, 'soa', 'SOA Records'), (addrs.count() if addrs else 0, 'address', 'Address Records'), (cnames.count() if cnames else 0, 'cname', 'CNAMEs'), (domains.count() if domains else 0, 'domain', 'Domains'), (intrs.count() if intrs else 0, 'interface', 'Interfaces'), (mxs.count() if mxs else 0, 'mx', 'MXs'), (nss.count() if nss else 0, 'nameserver', 'Nameservers'), (ptrs.count() if ptrs else 0, 'ptr', 'PTRs'), (srvs.count() if srvs else 0, 'srv', 'SRVs'), (sys.count() if srvs else 0, 'sys', 'Systems'), (txts.count() if txts else 0, 'txt', 'TXTs'), ] tables = [ (tablefy(soas), 'soa', 'SOA Records'), (tablefy(addrs), 'address', 'Address Records'), (tablefy(cnames), 'cname', 'CNAMEs'), (tablefy(domains), 'domain', 'Domains'), (tablefy(intrs), 'interface', 'Interfaces'), (tablefy(mxs), 'mx', 'MXs'), (tablefy(nss), 'nameserver', 'Nameservers'), (tablefy(ptrs), 'ptr', 'PTRs'), (tablefy(srvs), 'srv', 'SRVs'), (tablefy(sys), 'sys', 'Systems'), (tablefy(txts), 'txt', 'TXTs'), ] return (meta, tables)
return HttpResponse(json.dumps({'errors': form.errors})) elif request.method == 'GET': form = FormKlass(instance=obj) object_list = _filter(request, Klass) page_obj = make_paginator(request, do_sort(request, object_list), 50) if issubclass(type(form), UsabilityFormMixin): form.make_usable(request) return cy_render( request, 'cydns/cydns_view.html', { 'form': form, 'obj': obj, 'obj_type': obj_type, 'object_table': tablefy(page_obj, request=request), 'page_obj': page_obj, 'pretty_obj_type': Klass.pretty_type, 'pk': pk, }) def cydns_table_update(request, pk, object_type=None): return table_update(request, pk, object_type) def cydns_search_obj(request): return search_obj(request) def cydns_index(request):
def _search(request): search = request_to_search(request) objs, error_resp = compile_to_django(search) if not objs: return ([], []) (addrs, cnames, domains, static, dynamic, mxs, networks, nss, ptrs, ranges, soas, srvs, sshfps, sys, txts, wgs, misc) = ( objs['A'], objs['CNAME'], objs['DOMAIN'], objs['STATIC'], objs['DYNAMIC'], objs['MX'], objs['NETWORK'], objs['NS'], objs['PTR'], objs['RANGE'], objs['SOA'], objs['SRV'], objs['SSHFP'], objs['SYSTEM'], objs['TXT'], objs['WORKGROUP'], []) meta = [ (soas.count() if soas else 0, 'soa', 'SOA Records'), (addrs.count() if addrs else 0, 'address', 'Address Records'), (cnames.count() if cnames else 0, 'cname', 'CNAMEs'), (domains.count() if domains else 0, 'domain', 'Domains'), (static.count() if static else 0, 'static', 'Static Interfaces'), (dynamic.count() if dynamic else 0, 'dynamic', 'Dynamic Interfaces'), (mxs.count() if mxs else 0, 'mx', 'MXs'), (networks.count() if networks else 0, 'network', 'Networks'), (nss.count() if nss else 0, 'nameserver', 'Nameservers'), (ptrs.count() if ptrs else 0, 'ptr', 'PTRs'), (ranges.count() if ranges else 0, 'range', 'Ranges'), (srvs.count() if srvs else 0, 'srv', 'SRVs'), (sys.count() if srvs else 0, 'sys', 'Systems'), (txts.count() if txts else 0, 'txt', 'TXTs'), (wgs.count() if wgs else 0, 'workgroup', 'Workgroups'), ] tables = [ (tablefy(soas, request=request), 'soa', 'SOA Records'), (tablefy(addrs, request=request), 'address', 'Address Records'), (tablefy(cnames, request=request), 'cname', 'CNAMEs'), (tablefy(domains, request=request), 'domain', 'Domains'), (tablefy(static, request=request), 'static', 'Static Interfaces'), (tablefy(dynamic, request=request), 'dynamic', 'Dynamic Interfaces'), (tablefy(mxs, request=request), 'mx', 'MXs'), (tablefy(networks, request=request), 'network', 'Networks'), (tablefy(nss, request=request), 'nameserver', 'Nameservers'), (tablefy(ptrs, request=request), 'ptr', 'PTRs'), (tablefy(ranges, request=request), 'range', 'Ranges'), (tablefy(srvs, request=request), 'srv', 'SRVs'), (tablefy(sys, request=request), 'sys', 'Systems'), (tablefy(txts, request=request), 'txt', 'TXTs'), (tablefy(wgs, request=request), 'workgroup', 'Workgroups'), ] return (meta, tables)