Exemple #1
0
    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())
Exemple #2
0
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,
        })
Exemple #3
0
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,
    })
Exemple #4
0
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)
    })
Exemple #5
0
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'))
Exemple #6
0
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
    })
Exemple #7
0
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()))
Exemple #8
0
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
    })
Exemple #9
0
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),
        })
Exemple #10
0
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,
        })
Exemple #11
0
 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
Exemple #12
0
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]}))
Exemple #13
0
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,
        })
Exemple #14
0
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,
        })
Exemple #15
0
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)
Exemple #16
0
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
        })
Exemple #17
0
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,
        })
Exemple #18
0
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)
Exemple #19
0
                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):
Exemple #20
0
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)