Allow device port searching with preference for port/name/vlan
This commit is contained in:
@@ -146,6 +146,7 @@ hook 'before_template' => sub {
|
||||
my $self_uri = uri_for(request->path, scalar params);
|
||||
$self_uri->query_param_delete('q');
|
||||
$self_uri->query_param_delete('f');
|
||||
$self_uri->query_param_delete('prefer');
|
||||
$tokens->{self_options} = $self_uri->query_form_hash;
|
||||
};
|
||||
|
||||
|
||||
@@ -12,6 +12,9 @@ register_device_tab({ tag => 'ports', label => 'Ports', provides_csv => 1 });
|
||||
# device ports with a description (er, name) matching
|
||||
get '/ajax/content/device/ports' => require_login sub {
|
||||
my $q = param('q');
|
||||
my $prefer = param('prefer');
|
||||
$prefer = ''
|
||||
unless defined $prefer and $prefer =~ m/^(?:port|name|vlan)$/;
|
||||
|
||||
my $device = schema('netdisco')->resultset('Device')
|
||||
->search_for_device($q) or send_error('Bad device', 400);
|
||||
@@ -20,7 +23,7 @@ get '/ajax/content/device/ports' => require_login sub {
|
||||
# refine by ports if requested
|
||||
my $f = param('f');
|
||||
if ($f) {
|
||||
if ($f =~ m/^\d+$/) {
|
||||
if (($prefer eq 'vlan') or not $prefer and $f =~ m/^\d+$/) {
|
||||
if (param('invert')) {
|
||||
$set = $set->search({
|
||||
'me.vlan' => { '!=' => $f },
|
||||
@@ -57,7 +60,9 @@ get '/ajax/content/device/ports' => require_login sub {
|
||||
$f = { '!=' => $f };
|
||||
}
|
||||
|
||||
if ($set->search({'me.port' => $f})->count) {
|
||||
if (($prefer eq 'port') or not $prefer and
|
||||
$set->search({'me.port' => $f})->count) {
|
||||
|
||||
$set = $set->search({'me.port' => $f});
|
||||
}
|
||||
else {
|
||||
|
||||
Reference in New Issue
Block a user