Example #1
0
    def compose_url(self, **kwargs):
        if self.url and callable(self.url):
            return call_with_appropriate(self.url, kwargs)

        bound_column = kwargs.get("bound_column", None)
        record = kwargs["record"]

        if self.reverse_args.get("viewname", None) is not None:
            return self.call_reverse(record=record)

        if bound_column is None and self.accessor is None:
            accessor = Accessor("")
        else:
            accessor = Accessor(self.accessor if self.accessor is not None else bound_column.name)
        context = accessor.resolve(record)
        if not hasattr(context, "get_absolute_url"):
            if hasattr(record, "get_absolute_url"):
                context = record
            else:
                raise TypeError(
                    "for linkify=True, '{}' must have a method get_absolute_url".format(
                        str(context)
                    )
                )
        return context.get_absolute_url()
Example #2
0
def accessor():
    x = Accessor('0')
    Assert('B') == x.resolve('Brad')

    x = Accessor('1')
    Assert('r') == x.resolve('Brad')

    x = Accessor('2.upper')
    Assert('A') == x.resolve('Brad')

    x = Accessor('2.upper.__len__')
    Assert(1) == x.resolve('Brad')

    x = Accessor('')
    Assert('Brad') == x.resolve('Brad')
Example #3
0
def accessor():
    x = Accessor('0')
    assert 'B' == x.resolve('Brad')

    x = Accessor('1')
    assert 'r' == x.resolve('Brad')

    x = Accessor('2.upper')
    assert 'A' == x.resolve('Brad')

    x = Accessor('2.upper.__len__')
    assert 1 == x.resolve('Brad')

    x = Accessor('')
    assert 'Brad' == x.resolve('Brad')
Example #4
0
class VLANGroupTable(BaseTable):
    pk = ToggleColumn()
    name = tables.Column(linkify=True)
    site = tables.LinkColumn(viewname="dcim:site",
                             args=[Accessor("site__slug")])
    vlan_count = LinkedCountColumn(viewname="ipam:vlan_list",
                                   url_params={"group": "slug"},
                                   verbose_name="VLANs")
    actions = ButtonsColumn(model=VLANGroup,
                            prepend_template=VLANGROUP_ADD_VLAN)

    class Meta(BaseTable.Meta):
        model = VLANGroup
        fields = ("pk", "name", "site", "vlan_count", "slug", "description",
                  "actions")
        default_columns = ("pk", "name", "site", "vlan_count", "description",
                           "actions")
Example #5
0
class CircuitTable(BaseTable):
    pk = ToggleColumn()
    cid = tables.LinkColumn(verbose_name='ID')
    provider = tables.LinkColumn('circuits:provider',
                                 args=[Accessor('provider.slug')])
    status = tables.TemplateColumn(template_code=STATUS_LABEL,
                                   verbose_name='Status')
    tenant = tables.TemplateColumn(template_code=COL_TENANT)
    termination_a = CircuitTerminationColumn(orderable=False,
                                             verbose_name='A Side')
    termination_z = CircuitTerminationColumn(orderable=False,
                                             verbose_name='Z Side')

    class Meta(BaseTable.Meta):
        model = Circuit
        fields = ('pk', 'cid', 'status', 'type', 'provider', 'tenant',
                  'termination_a', 'termination_z', 'description')
Example #6
0
class VLANGroupTable(BaseTable):
    pk = ToggleColumn()
    name = tables.LinkColumn(verbose_name='Name')
    site = tables.LinkColumn('dcim:site',
                             args=[Accessor('site.slug')],
                             verbose_name='Site')
    vlan_count = tables.Column(verbose_name='VLANs')
    slug = tables.Column(verbose_name='Slug')
    actions = tables.TemplateColumn(template_code=VLANGROUP_ACTIONS,
                                    attrs={'td': {
                                        'class': 'text-right'
                                    }},
                                    verbose_name='')

    class Meta(BaseTable.Meta):
        model = VLANGroup
        fields = ('pk', 'name', 'site', 'vlan_count', 'slug', 'actions')
Example #7
0
class AggregateTable(BaseTable):
    pk = ToggleColumn()
    prefix = tables.LinkColumn('ipam:aggregate',
                               args=[Accessor('pk')],
                               verbose_name='Aggregate')
    rir = tables.Column(verbose_name='RIR')
    child_count = tables.Column(verbose_name='Prefixes')
    get_utilization = tables.TemplateColumn(UTILIZATION_GRAPH,
                                            orderable=False,
                                            verbose_name='Utilization')
    date_added = tables.DateColumn(format="Y-m-d", verbose_name='Added')
    description = tables.Column(orderable=False, verbose_name='Description')

    class Meta(BaseTable.Meta):
        model = Aggregate
        fields = ('pk', 'prefix', 'rir', 'child_count', 'get_utilization',
                  'date_added', 'description')
Example #8
0
class VirtualChassisTable(BaseTable):
    pk = ToggleColumn()
    name = tables.Column(
        accessor=Accessor('master__name'),
        linkify=True
    )
    member_count = tables.Column(
        verbose_name='Members'
    )
    tags = TagColumn(
        url_name='dcim:virtualchassis_list'
    )

    class Meta(BaseTable.Meta):
        model = VirtualChassis
        fields = ('pk', 'name', 'domain', 'member_count', 'tags')
        default_columns = ('pk', 'name', 'domain', 'member_count')
Example #9
0
class SiteTable(BaseTable):
    pk = ToggleColumn()
    name = tables.LinkColumn('dcim:site', args=[Accessor('slug')], verbose_name='Name')
    facility = tables.Column(verbose_name='Facility')
    tenant = tables.LinkColumn('tenancy:tenant', args=[Accessor('tenant.slug')], verbose_name='Tenant')
    asn = tables.Column(verbose_name='ASN')
    rack_count = tables.Column(accessor=Accessor('count_racks'), orderable=False, verbose_name='Racks')
    device_count = tables.Column(accessor=Accessor('count_devices'), orderable=False, verbose_name='Devices')
    prefix_count = tables.Column(accessor=Accessor('count_prefixes'), orderable=False, verbose_name='Prefixes')
    vlan_count = tables.Column(accessor=Accessor('count_vlans'), orderable=False, verbose_name='VLANs')
    circuit_count = tables.Column(accessor=Accessor('count_circuits'), orderable=False, verbose_name='Circuits')

    class Meta(BaseTable.Meta):
        model = Site
        fields = ('pk', 'name', 'facility', 'tenant', 'asn', 'rack_count', 'device_count', 'prefix_count',
                  'vlan_count', 'circuit_count')
Example #10
0
class DevicePowerPortTable(PowerPortTable):
    name = tables.TemplateColumn(
        template_code=
        '<i class="mdi mdi-power-plug-outline"></i> <a href="{{ record.get_absolute_url }}">'
        '{{ value }}</a>',
        order_by=Accessor('_name'),
        attrs={'td': {
            'class': 'text-nowrap'
        }})
    actions = ButtonsColumn(model=PowerPort,
                            buttons=('edit', 'delete'),
                            prepend_template=POWERPORT_BUTTONS)

    class Meta(DeviceComponentTable.Meta):
        model = PowerPort
        fields = (
            'pk',
            'id',
            'name',
            'label',
            'type',
            'maximum_draw',
            'allocated_draw',
            'description',
            'mark_connected',
            'cable',
            'cable_color',
            'link_peer',
            'connection',
            'tags',
            'actions',
        )
        default_columns = (
            'pk',
            'name',
            'label',
            'type',
            'maximum_draw',
            'allocated_draw',
            'description',
            'cable',
            'connection',
            'actions',
        )
        row_attrs = {'class': get_cabletermination_row_class}
Example #11
0
class ConsoleServerPortTable(DeviceComponentTable, PathEndpointTable):
    device = tables.Column(
        linkify={
            'viewname': 'dcim:device_consoleserverports',
            'args': [Accessor('device_id')],
        }
    )
    tags = TagColumn(
        url_name='dcim:consoleserverport_list'
    )

    class Meta(DeviceComponentTable.Meta):
        model = ConsoleServerPort
        fields = (
            'pk', 'name', 'device', 'label', 'type', 'speed', 'description', 'mark_connected', 'cable', 'cable_color',
            'cable_peer', 'connection', 'tags',
        )
        default_columns = ('pk', 'name', 'device', 'label', 'type', 'speed', 'description')
Example #12
0
class PowerPanelTable(BaseTable):
    pk = ToggleColumn()
    name = tables.LinkColumn()
    site = tables.LinkColumn(viewname="dcim:site",
                             args=[Accessor("site__slug")])
    powerfeed_count = LinkedCountColumn(
        viewname="dcim:powerfeed_list",
        url_params={"power_panel_id": "pk"},
        verbose_name="Feeds",
    )
    tags = TagColumn(url_name="dcim:powerpanel_list")

    class Meta(BaseTable.Meta):
        model = PowerPanel
        fields = ("pk", "name", "site", "rack_group", "powerfeed_count",
                  "tags")
        default_columns = ("pk", "name", "site", "rack_group",
                           "powerfeed_count")
Example #13
0
class DeviceTypeTable(BaseTable):
    pk = ToggleColumn()
    model = tables.LinkColumn('dcim:devicetype',
                              args=[Accessor('pk')],
                              verbose_name='Device Type')
    is_full_depth = tables.BooleanColumn(verbose_name='Full Depth')
    is_console_server = tables.BooleanColumn(verbose_name='CS')
    is_pdu = tables.BooleanColumn(verbose_name='PDU')
    is_network_device = tables.BooleanColumn(verbose_name='Net')
    subdevice_role = tables.TemplateColumn(SUBDEVICE_ROLE_TEMPLATE,
                                           verbose_name='Subdevice Role')
    instance_count = tables.Column(verbose_name='Instances')

    class Meta(BaseTable.Meta):
        model = DeviceType
        fields = ('pk', 'model', 'manufacturer', 'part_number', 'u_height',
                  'is_full_depth', 'is_console_server', 'is_pdu',
                  'is_network_device', 'subdevice_role', 'instance_count')
Example #14
0
class PowerPortTable(DeviceComponentTable, PathEndpointTable):
    device = tables.Column(
        linkify={
            'viewname': 'dcim:device_powerports',
            'args': [Accessor('device_id')],
        }
    )
    tags = TagColumn(
        url_name='dcim:powerport_list'
    )

    class Meta(DeviceComponentTable.Meta):
        model = PowerPort
        fields = (
            'pk', 'id', 'name', 'device', 'label', 'type', 'description', 'mark_connected', 'maximum_draw',
            'allocated_draw', 'cable', 'cable_color', 'link_peer', 'connection', 'tags', 'created', 'last_updated',
        )
        default_columns = ('pk', 'name', 'device', 'label', 'type', 'maximum_draw', 'allocated_draw', 'description')
Example #15
0
class VirtualMachineTable(BaseTable):
    pk = ToggleColumn()
    name = tables.LinkColumn()
    status = tables.TemplateColumn(
        template_code=VIRTUALMACHINE_STATUS
    )
    cluster = tables.LinkColumn(
        viewname='virtualization:cluster',
        args=[Accessor('cluster.pk')]
    )
    role = ColoredLabelColumn()
    tenant = tables.TemplateColumn(
        template_code=COL_TENANT
    )

    class Meta(BaseTable.Meta):
        model = VirtualMachine
        fields = ('pk', 'name', 'status', 'cluster', 'role', 'tenant', 'vcpus', 'memory', 'disk')
Example #16
0
class RackGroupTable(BaseTable):
    pk = ToggleColumn()
    name = tables.LinkColumn()
    site = tables.LinkColumn(viewname='dcim:site',
                             args=[Accessor('site.slug')],
                             verbose_name='Site')
    rack_count = tables.Column(verbose_name='Racks')
    slug = tables.Column()
    actions = tables.TemplateColumn(
        template_code=RACKGROUP_ACTIONS,
        attrs={'td': {
            'class': 'text-right noprint'
        }},
        verbose_name='')

    class Meta(BaseTable.Meta):
        model = RackGroup
        fields = ('pk', 'name', 'site', 'rack_count', 'slug', 'actions')
Example #17
0
    def verbose_name(self):
        '''
        Return the verbose name for this column.

        In order of preference, this will return:
          1) The column's explicitly defined `verbose_name`
          2) The titlised model's `verbose_name` (if applicable)
          3) Fallback to the titlised column name.

        Any `verbose_name` that was not passed explicitly in the column
        definition is returned titlised in keeping with the Django convention
        of `verbose_name` being defined in lowercase and uppercased/titlised
        as needed by the application.

        If the table is using queryset data, then use the corresponding model
        field's `~.db.Field.verbose_name`. If it's traversing a relationship,
        then get the last field in the accessor (i.e. stop when the
        relationship turns from ORM relationships to object attributes [e.g.
        person.upper should stop at person]).
        '''
        # Favor an explicit defined verbose_name
        if self.column.verbose_name is not None:
            return self.column.verbose_name

        # This is our reasonable fallback, should the next section not result
        # in anything useful.
        name = self.name.replace('_', ' ')

        # Try to use a model field's verbose_name
        if hasattr(self.table.data, 'queryset') and hasattr(
                self.table.data.queryset, 'model'):
            model = self.table.data.queryset.model
            field = Accessor(self.accessor).get_field(model)
            if field:
                if hasattr(field, 'field'):
                    name = field.field.verbose_name
                else:
                    name = getattr(field, 'verbose_name', field.name)

            # If verbose_name was mark_safe()'d, return intact to keep safety
            if isinstance(name, SafeData):
                return name

        return title(name)
Example #18
0
class SiteDetailTable(SiteTable):
    rack_count = tables.Column(accessor=Accessor('count_racks'), orderable=False, verbose_name='Racks')
    device_count = tables.Column(accessor=Accessor('count_devices'), orderable=False, verbose_name='Devices')
    prefix_count = tables.Column(accessor=Accessor('count_prefixes'), orderable=False, verbose_name='Prefixes')
    vlan_count = tables.Column(accessor=Accessor('count_vlans'), orderable=False, verbose_name='VLANs')
    circuit_count = tables.Column(accessor=Accessor('count_circuits'), orderable=False, verbose_name='Circuits')
    vm_count = tables.Column(accessor=Accessor('count_vms'), orderable=False, verbose_name='VMs')

    class Meta(SiteTable.Meta):
        fields = (
            'pk', 'name', 'facility', 'region', 'tenant', 'asn', 'rack_count', 'device_count', 'prefix_count',
            'vlan_count', 'circuit_count', 'vm_count',
        )
Example #19
0
class DeviceFrontPortTable(FrontPortTable):
    name = tables.TemplateColumn(
        template_code=
        '<i class="mdi mdi-square-rounded{% if not record.cable %}-outline{% endif %}"></i> '
        '<a href="{{ record.get_absolute_url }}">{{ value }}</a>',
        order_by=Accessor('_name'),
        attrs={'td': {
            'class': 'text-nowrap'
        }})
    actions = ButtonsColumn(model=FrontPort,
                            buttons=('edit', 'delete'),
                            prepend_template=FRONTPORT_BUTTONS)

    class Meta(DeviceComponentTable.Meta):
        model = FrontPort
        fields = (
            'pk',
            'id',
            'name',
            'label',
            'type',
            'rear_port',
            'rear_port_position',
            'description',
            'mark_connected',
            'cable',
            'cable_color',
            'link_peer',
            'tags',
            'actions',
        )
        default_columns = (
            'pk',
            'name',
            'label',
            'type',
            'rear_port',
            'rear_port_position',
            'description',
            'cable',
            'link_peer',
            'actions',
        )
        row_attrs = {'class': get_cabletermination_row_class}
Example #20
0
    def __init__(
        self,
        verbose_name=None,
        accessor=None,
        default=None,
        visible=True,
        orderable=None,
        attrs=None,
        order_by=None,
        empty_values=None,
        localize=None,
        footer=None,
        exclude_from_export=False,
    ):
        if not (accessor is None or isinstance(accessor, six.string_types)
                or callable(accessor)):
            raise TypeError("accessor must be a string or callable, not %s" %
                            type(accessor).__name__)
        if callable(accessor) and default is not None:
            raise TypeError(
                "accessor must be string when default is used, not callable")
        self.accessor = Accessor(accessor) if accessor else None
        self._default = default
        self.verbose_name = verbose_name
        self.visible = visible
        self.orderable = orderable
        self.attrs = attrs or getattr(self, "attrs", {})

        # massage order_by into an OrderByTuple or None
        order_by = (order_by, ) if isinstance(order_by,
                                              six.string_types) else order_by
        self.order_by = OrderByTuple(
            order_by) if order_by is not None else None
        if empty_values is not None:
            self.empty_values = empty_values

        self.localize = localize

        self.creation_counter = Column.creation_counter
        Column.creation_counter += 1

        self._footer = footer

        self.exclude_from_export = exclude_from_export
Example #21
0
class VLANGroupTable(BaseTable):
    pk = ToggleColumn()
    name = tables.Column(linkify=True)
    site = tables.LinkColumn(
        viewname='dcim:site',
        args=[Accessor('site__slug')]
    )
    vlan_count = tables.Column(
        verbose_name='VLANs'
    )
    actions = ButtonsColumn(
        model=VLANGroup,
        prepend_template=VLANGROUP_ADD_VLAN
    )

    class Meta(BaseTable.Meta):
        model = VLANGroup
        fields = ('pk', 'name', 'site', 'vlan_count', 'slug', 'description', 'actions')
        default_columns = ('pk', 'name', 'site', 'vlan_count', 'description', 'actions')
Example #22
0
class DeviceTypeTable(BaseTable):
    pk = ToggleColumn()
    model = tables.LinkColumn(
        viewname='dcim:devicetype',
        args=[Accessor('pk')],
        verbose_name='Device Type'
    )
    is_full_depth = BooleanColumn(verbose_name='Full Depth')
    instance_count = tables.TemplateColumn(
        template_code=DEVICETYPE_INSTANCES_TEMPLATE,
        verbose_name='Instances'
    )

    class Meta(BaseTable.Meta):
        model = DeviceType
        fields = (
            'pk', 'model', 'manufacturer', 'part_number', 'u_height', 'is_full_depth', 'subdevice_role',
            'instance_count',
        )
Example #23
0
class InterfaceConnectionTable(BaseTable):
    device_a = tables.LinkColumn('dcim:device',
                                 accessor=Accessor('interface_a.device'),
                                 args=[Accessor('interface_a.device.pk')],
                                 verbose_name='Device A')
    interface_a = tables.LinkColumn('dcim:interface',
                                    accessor=Accessor('interface_a'),
                                    args=[Accessor('interface_a.pk')],
                                    verbose_name='Interface A')
    device_b = tables.LinkColumn('dcim:device',
                                 accessor=Accessor('interface_b.device'),
                                 args=[Accessor('interface_b.device.pk')],
                                 verbose_name='Device B')
    interface_b = tables.LinkColumn('dcim:interface',
                                    accessor=Accessor('interface_b'),
                                    args=[Accessor('interface_b.pk')],
                                    verbose_name='Interface B')

    class Meta(BaseTable.Meta):
        model = InterfaceConnection
        fields = ('device_a', 'interface_a', 'device_b', 'interface_b')
Example #24
0
class BaseInterfaceTable(BaseTable):
    enabled = BooleanColumn()
    ip_addresses = tables.TemplateColumn(
        template_code=INTERFACE_IPADDRESSES,
        orderable=False,
        verbose_name='IP Addresses'
    )
    fhrp_groups = tables.TemplateColumn(
        accessor=Accessor('fhrp_group_assignments'),
        template_code=INTERFACE_FHRPGROUPS,
        orderable=False,
        verbose_name='FHRP Groups'
    )
    untagged_vlan = tables.Column(linkify=True)
    tagged_vlans = TemplateColumn(
        template_code=INTERFACE_TAGGED_VLANS,
        orderable=False,
        verbose_name='Tagged VLANs'
    )
Example #25
0
class RearPortTable(DeviceComponentTable, CableTerminationTable):
    device = tables.Column(
        linkify={
            'viewname': 'dcim:device_rearports',
            'args': [Accessor('device_id')],
        }
    )
    color = ColorColumn()
    tags = TagColumn(
        url_name='dcim:rearport_list'
    )

    class Meta(DeviceComponentTable.Meta):
        model = RearPort
        fields = (
            'pk', 'id', 'name', 'device', 'label', 'type', 'color', 'positions', 'description', 'mark_connected', 'cable',
            'cable_color', 'link_peer', 'tags', 'created', 'last_updated',
        )
        default_columns = ('pk', 'name', 'device', 'label', 'type', 'color', 'description')
Example #26
0
class DeviceRoleTable(tables.Table):
    device_count = tables.TemplateColumn(
        template_code=DEVICEROLE_DEVICE_COUNT,
        accessor=Accessor('devices.count'),
        orderable=False,
        verbose_name='Devices'
    )
    color = tables.TemplateColumn(COLOR_LABEL, verbose_name='Label')
    # slug = tables.Column(verbose_name='Slug')
    actions = tables.TemplateColumn(
        template_code=DEVICEROLE_ACTIONS,
        attrs={'td': {'class': 'text-right noprint'}},
        verbose_name=''
    )

    class Meta:
        model = DeviceRole
        fields = ('name', 'device_count', 'color', 'description', 'actions')
        attrs = {'class': 'table table-hover table-headings', }
Example #27
0
    def verbose_name(self):
        """
        Return the verbose name for this column.

        In order of preference, this will return:
          1) The column's explicitly defined `verbose_name`
          2) The model's `verbose_name` with the first letter capitalized (if applicable)
          3) Fall back to the column name, with first letter capitalized.

        Any `verbose_name` that was not passed explicitly in the column
        definition is returned with the first character capitalized in keeping
        with the Django convention of `verbose_name` being defined in lowercase and
        uppercased as needed by the application.

        If the table is using `QuerySet` data, then use the corresponding model
        field's `~.db.Field.verbose_name`. If it is traversing a relationship,
        then get the last field in the accessor (i.e. stop when the
        relationship turns from ORM relationships to object attributes [e.g.
        person.upper should stop at person]).
        """
        # Favor an explicit defined verbose_name
        if self.column.verbose_name is not None:
            return self.column.verbose_name

        # This is our reasonable fall back, should the next section not result
        # in anything useful.
        name = self.name.replace("_", " ")

        # Try to use a model field's verbose_name
        model = self._table.data.model
        if model:
            field = Accessor(self.accessor).get_field(model)
            if field:
                if hasattr(field, "field"):
                    name = field.field.verbose_name
                else:
                    name = getattr(field, "verbose_name", field.name)

            # If verbose_name was mark_safe()'d, return intact to keep safety
            if isinstance(name, SafeData):
                return name

        return ucfirst(name)
Example #28
0
class IPAddressDetailTable(IPAddressTable):
    nat_inside = tables.LinkColumn('ipam:ipaddress',
                                   args=[Accessor('nat_inside.pk')],
                                   orderable=False,
                                   verbose_name='NAT (Inside)')

    class Meta(IPAddressTable.Meta):
        fields = (
            'pk',
            'address',
            'vrf',
            'status',
            'role',
            'tenant',
            'nat_inside',
            'parent',
            'interface',
            'description',
        )
Example #29
0
class VLANGroupTable(BaseTable):
    pk = ToggleColumn()
    name = tables.Column(linkify=True)
    site = tables.LinkColumn(viewname='dcim:site',
                             args=[Accessor('site.slug')])
    vlan_count = tables.Column(verbose_name='VLANs')
    actions = tables.TemplateColumn(
        template_code=VLANGROUP_ACTIONS,
        attrs={'td': {
            'class': 'text-right noprint'
        }},
        verbose_name='')

    class Meta(BaseTable.Meta):
        model = VLANGroup
        fields = ('pk', 'name', 'site', 'vlan_count', 'slug', 'description',
                  'actions')
        default_columns = ('pk', 'name', 'site', 'vlan_count', 'description',
                           'actions')
Example #30
0
class PrefixTable(BaseTable):
    pk = ToggleColumn()
    status = tables.TemplateColumn(STATUS_LABEL, verbose_name='Status')
    prefix = tables.TemplateColumn(PREFIX_LINK, verbose_name='Prefix')
    vrf = tables.TemplateColumn(VRF_LINK, verbose_name='VRF')
    tenant = tables.TemplateColumn(TENANT_LINK, verbose_name='Tenant')
    site = tables.LinkColumn('dcim:site',
                             args=[Accessor('site.slug')],
                             verbose_name='Site')
    role = tables.Column(verbose_name='Role')
    description = tables.Column(orderable=False, verbose_name='Description')

    class Meta(BaseTable.Meta):
        model = Prefix
        fields = ('pk', 'prefix', 'status', 'vrf', 'tenant', 'site', 'role',
                  'description')
        row_attrs = {
            'class': lambda record: 'success' if not record.pk else '',
        }
Example #31
0
class CircuitSearchTable(SearchTable):
    cid = tables.LinkColumn(verbose_name='ID')
    provider = tables.LinkColumn('circuits:provider', args=[Accessor('provider.slug')])
    tenant = tables.LinkColumn('tenancy:tenant', args=[Accessor('tenant.slug')])
    a_side = tables.LinkColumn(
        'dcim:site', accessor=Accessor('termination_a.site'), args=[Accessor('termination_a.site.slug')]
    )
    z_side = tables.LinkColumn(
        'dcim:site', accessor=Accessor('termination_z.site'), args=[Accessor('termination_z.site.slug')]
    )

    class Meta(SearchTable.Meta):
        model = Circuit
        fields = ('cid', 'type', 'provider', 'tenant', 'a_side', 'z_side', 'description')
Example #32
0
class DeviceInterfaceTable(InterfaceTable):
    name = tables.TemplateColumn(
        template_code='<i class="mdi mdi-{% if record.mgmt_only %}wrench{% elif record.is_lag %}reorder-horizontal'
                      '{% elif record.is_virtual %}circle{% elif record.is_wireless %}wifi{% else %}ethernet'
                      '{% endif %}"></i> <a href="{{ record.get_absolute_url }}">{{ value }}</a>',
        order_by=Accessor('_name'),
        attrs={'td': {'class': 'text-nowrap'}}
    )
    parent = tables.Column(
        linkify=True
    )
    bridge = tables.Column(
        linkify=True
    )
    lag = tables.Column(
        linkify=True,
        verbose_name='LAG'
    )
    actions = ButtonsColumn(
        model=Interface,
        buttons=('edit', 'delete'),
        prepend_template=INTERFACE_BUTTONS
    )

    class Meta(DeviceComponentTable.Meta):
        model = Interface
        fields = (
            'pk', 'id', 'name', 'label', 'enabled', 'type', 'parent', 'bridge', 'lag', 'mgmt_only', 'mtu', 'mode',
            'mac_address', 'wwn', 'rf_role', 'rf_channel', 'rf_channel_frequency', 'rf_channel_width', 'tx_power',
            'description', 'mark_connected', 'cable', 'cable_color', 'wireless_link', 'wireless_lans', 'link_peer',
            'connection', 'tags', 'ip_addresses', 'fhrp_groups', 'untagged_vlan', 'tagged_vlans', 'actions',
        )
        order_by = ('name',)
        default_columns = (
            'pk', 'name', 'label', 'enabled', 'type', 'parent', 'lag', 'mtu', 'mode', 'description', 'ip_addresses',
            'cable', 'connection', 'actions',
        )
        row_attrs = {
            'class': get_interface_row_class,
            'data-name': lambda record: record.name,
            'data-enabled': get_interface_state_attribute,
        }
Example #33
0
class NoSessionTable(BaseTable):
    class Meta(BaseTable.Meta):
        model = Child
        order_by = (
            'name_last_text',
            'name_first_text',
        )
        #fields = ('id', 'name_last_text', 'name_first_text', 'gender_type', 'dob_early', 'disability', 'age_dec', 'eng_heard')
        fields = ('id', 'name_last_text', 'name_first_text', 'gender_type',
                  'dob_early', 'disability', 'age_in_months', 'eng_heard',
                  'last_time_contacted')

    id = OpenColumn('child_detail',
                    icon='child',
                    kwargs={'pk': Accessor('id')},
                    attrs={'a': {
                        'class': 'btn btn-primary btn-sm'
                    }},
                    verbose_name='Action',
                    orderable=False)
    disability = tables.columns.TemplateColumn(
        attrs={'th': {
            'class': 'text-search'
        }},
        verbose_name='Disability',
        template_name='study/column_multi_disability.html',
        orderable=False)
    dob_early = tables.columns.Column(attrs={'th': {'class': 'filter'}})
    gender_type = tables.columns.Column(attrs={'th': {'class': 'filter'}})
    last_time_contacted = tables.columns.Column(empty_values=())

    def __init__(self, *args, **kwargs):
        if 'current_study' in kwargs:
            self.study = kwargs.pop('current_study')
        super(NoSessionTable, self).__init__(*args, **kwargs)

    def render_last_time_contacted(self, record):
        contact_time = record.get_last_time_contacted(self.study)
        if contact_time is None:
            return ''
        else:
            return contact_time
Example #34
0
    def test_calling_methods(self):
        x = Accessor('2.upper')
        assert 'A' == x.resolve('Brad')

        x = Accessor('2.upper.__len__')
        assert 1 == x.resolve('Brad')
Example #35
0
    def test_index_lookup(self):
        x = Accessor('0')
        assert 'B' == x.resolve('Brad')

        x = Accessor('1')
        assert 'r' == x.resolve('Brad')