diff options
author | jeff <jeff> | 2008-06-28 19:25:24 +0000 |
---|---|---|
committer | jeff <jeff> | 2008-06-28 19:25:24 +0000 |
commit | a1871d3d13c1dafa93b956762c0d23728d261da7 (patch) | |
tree | ecd799ff28ca27d5e2ef07a615bcac49621dd391 /httemplate/edit/process | |
parent | 7588be4eb948426b972d0238dcdbb1537dc6a72a (diff) |
agent virtualize address blocks and routers
Diffstat (limited to 'httemplate/edit/process')
-rwxr-xr-x | httemplate/edit/process/addr_block/add.cgi | 36 | ||||
-rwxr-xr-x | httemplate/edit/process/addr_block/allocate.cgi | 4 | ||||
-rwxr-xr-x | httemplate/edit/process/addr_block/deallocate.cgi | 40 | ||||
-rwxr-xr-x | httemplate/edit/process/addr_block/split.cgi | 44 | ||||
-rw-r--r-- | httemplate/edit/process/elements/process.html | 17 | ||||
-rw-r--r-- | httemplate/edit/process/router.cgi | 80 | ||||
-rwxr-xr-x | httemplate/edit/process/svc_acct_pop.cgi | 5 | ||||
-rw-r--r-- | httemplate/edit/process/svc_broadband.cgi | 36 |
8 files changed, 84 insertions, 178 deletions
diff --git a/httemplate/edit/process/addr_block/add.cgi b/httemplate/edit/process/addr_block/add.cgi index e9f9b9736..4321f946a 100755 --- a/httemplate/edit/process/addr_block/add.cgi +++ b/httemplate/edit/process/addr_block/add.cgi @@ -1,28 +1,20 @@ -% -% -%my $error = ''; -%my $ip_gateway = $cgi->param('ip_gateway'); -%my $ip_netmask = $cgi->param('ip_netmask'); -% -%my $new = new FS::addr_block { -% ip_gateway => $ip_gateway, -% ip_netmask => $ip_netmask, -% routernum => 0 }; -% -%$error = $new->insert; -% -%if ( $error ) { -% $cgi->param('error', $error); -% print $cgi->redirect(popurl(4). "browse/addr_block.cgi?". $cgi->query_string ); -%} else { -% print $cgi->redirect(popurl(4). "browse/addr_block.cgi"); -%} -% +<% include( '../elements/process.html', + 'table' => 'addr_block', + 'redirect' => popurl(4). 'browse/addr_block.cgi?dummy=', + 'error_redirect' => popurl(4). 'browse/addr_block.cgi?', + 'agent_virt' => 1, + 'agent_null_right' => 'Engineering global configuration', + ) +%> <%init> -my $conf = new FS::Conf; +my $curuser = $FS::CurrentUser::CurrentUser; die "access denied" - unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); + unless $curuser->access_right('Engineering configuration') + || $curuser->access_right('Engineering global configuration'); + +$cgi->param('routernum', 0) # in FS::addr_block::check instead? + unless $cgi->param('routernum'); </%init> diff --git a/httemplate/edit/process/addr_block/allocate.cgi b/httemplate/edit/process/addr_block/allocate.cgi index d1bd73f1f..f377d8155 100755 --- a/httemplate/edit/process/addr_block/allocate.cgi +++ b/httemplate/edit/process/addr_block/allocate.cgi @@ -8,7 +8,9 @@ <%init> my $conf = new FS::Conf; +my $curuser = $FS::CurrentUser::CurrentUser; die "access denied" - unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); + unless $curuser->access_right('Engineering configuration') + || $curuser->access_right('Engineering global configuration'); </%init> diff --git a/httemplate/edit/process/addr_block/deallocate.cgi b/httemplate/edit/process/addr_block/deallocate.cgi index 95e1b7e4d..91184b33e 100755 --- a/httemplate/edit/process/addr_block/deallocate.cgi +++ b/httemplate/edit/process/addr_block/deallocate.cgi @@ -1,32 +1,20 @@ -% -%my $error = ''; -%my $blocknum = $cgi->param('blocknum'); -% -%my $addr_block = qsearchs('addr_block', { blocknum => $blocknum }); -% -%if($addr_block) { -% my $router = $addr_block->router; -% if ($router) { -% $error = $addr_block->deallocate($router); -% } else { -% $error = "Block is not allocated to a router"; -% } -%} else { -% $error = "Cannot find block with blocknum $blocknum"; -%} -% -%if ( $error ) { -% $cgi->param('error', $error); -% print $cgi->redirect(popurl(4). "browse/addr_block.cgi?" . $cgi->query_string); -%} else { -% print $cgi->redirect(popurl(4). "browse/addr_block.cgi"); -%} -% - +<% include( '../elements/process.html', + 'table' => 'addr_block', + 'copy_on_empty' => [ grep { $_ ne 'routernum' } + fields 'addr_block' ], + 'redirect' => popurl(4). 'browse/addr_block.cgi?', + 'error_redirect' => popurl(4). 'browse/addr_block.cgi?', + 'agent_virt' => 1, + 'agent_null_right' => 'Engineering global configuration', + ) +%> <%init> my $conf = new FS::Conf; +my $curuser = $FS::CurrentUser::CurrentUser; die "access denied" - unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); + unless $curuser->access_right('Engineering configuration') + || $curuser->access_right('Engineering global configuration'); +$cgi->param('routernum', 0); # just to be explicit about what we are doing </%init> diff --git a/httemplate/edit/process/addr_block/split.cgi b/httemplate/edit/process/addr_block/split.cgi index b3a33b18a..eb55d008e 100755 --- a/httemplate/edit/process/addr_block/split.cgi +++ b/httemplate/edit/process/addr_block/split.cgi @@ -1,27 +1,27 @@ -% -%my $error = ''; -%my $blocknum = $cgi->param('blocknum'); -%my $addr_block = qsearchs('addr_block', { blocknum => $blocknum }); -% -%if ( $addr_block) { -% $error = $addr_block->split_block; -%} else { -% $error = "Unknown blocknum: $blocknum"; -%} -% -% -%if ( $error ) { -% $cgi->param('error', $error); -% print $cgi->redirect(popurl(4). "browse/addr_block.cgi?". $cgi->query_string ); -%} else { -% print $cgi->redirect(popurl(4). "browse/addr_block.cgi"); -%} -% - +<% $cgi->redirect(popurl(4). "browse/addr_block.cgi?". $cgi->query_string ) %> <%init> -my $conf = new FS::Conf; +my $curuser = $FS::CurrentUser::CurrentUser; + die "access denied" - unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); + unless $curuser->access_right('Engineering configuration') + || $curuser->access_right('Engineering global configuration'); + +my $error = ''; +$cgi->param('blocknum') =~ /^(\d+)$/ or die "invalid blocknum"; +my $blocknum = $1; + +my $addr_block = qsearchs({ 'table' => 'addr_block', + 'hashref' => { blocknum => $blocknum }, + 'extra_sql' => ' AND '. $curuser->agentnums_sql( + 'null_right' => 'Engineering global configuration' + ), + }) + or $error = "Unknown blocknum: $blocknum"; + +$error ||= $addr_block->split_block; + +$cgi->param('error', $error) + if $error; </%init> diff --git a/httemplate/edit/process/elements/process.html b/httemplate/edit/process/elements/process.html index 6f271ee29..de0304a94 100644 --- a/httemplate/edit/process/elements/process.html +++ b/httemplate/edit/process/elements/process.html @@ -33,7 +33,8 @@ Example: 'clear_on_error' => [ 'form_field1', 'form_field2', ... ], - #pass an arrayref of hashrefs for multiple m2ms or m2names + #pass an arrayref of hashrefs for multiple m2ms or m2names + #be certain you incorporate m2m_Common if you see error: param 'process_m2m' => { 'link_table' => 'link_table_name', 'target_table' => 'target_table_name', @@ -176,6 +177,13 @@ my %hash = my $new = $class->new( \%hash ); +if ($old && exists($opt{'copy_on_empty'})) { + foreach my $field (@{$opt{'copy_on_empty'}}) { + $new->set($field, $old->get($field)) + unless scalar($cgi->param($field)); + } +} + if ( $opt{'agent_virt'} ) { die "illegal agentnum" unless $curuser->agentnums_href->{$new->agentnum} @@ -184,13 +192,6 @@ if ( $opt{'agent_virt'} ) { && $curuser->access_right($opt{'agent_null_right'}); } -if ($old && exists($opt{'copy_on_empty'})) { - foreach my $field (@{$opt{'copy_on_empty'}}) { - $new->set($field, $old->get($field)) - unless scalar($cgi->param($field)); - } -} - $error ||= $new->check; my @args = (); diff --git a/httemplate/edit/process/router.cgi b/httemplate/edit/process/router.cgi index 7e0baf782..6e717d19c 100644 --- a/httemplate/edit/process/router.cgi +++ b/httemplate/edit/process/router.cgi @@ -1,70 +1,20 @@ -%local $FS::UID::AutoCommit=0; -% -%sub check { -% my $error = shift; -% if($error) { -% $cgi->param('error', $error); -% print $cgi->redirect(popurl(3) . "edit/router.cgi?". $cgi->query_string); -% dbh->rollback; -% exit; -% } -%} -% -%my $error = ''; -%my $routernum = $cgi->param('routernum'); -%my $routername = $cgi->param('routername'); -%my $old = qsearchs('router', { routernum => $routernum }); -%my @old_psr; -% -%my $new = new FS::router { -% map { -% ($_, scalar($cgi->param($_))); -% } fields('router') -%}; -% -%if($old) { -% $error = $new->replace($old); -%} else { -% $error = $new->insert; -% $routernum = $new->routernum; -%} -% -%check($error); -% -%if ($old) { -% @old_psr = $old->part_svc_router; -% foreach my $psr (@old_psr) { -% if($cgi->param('svcpart_'.$psr->svcpart) eq 'ON') { -% # do nothing -% } else { -% $error = $psr->delete; -% } -% } -% check($error); -%} -% -%foreach($cgi->param) { -% if($cgi->param($_) eq 'ON' and /^svcpart_(\d+)$/) { -% my $svcpart = $1; -% if(grep {$_->svcpart == $svcpart} @old_psr) { -% # do nothing -% } else { -% my $new_psr = new FS::part_svc_router { svcpart => $svcpart, -% routernum => $routernum }; -% $error = $new_psr->insert; -% } -% check($error); -% } -%} -% -% -%# Yay, everything worked! -%dbh->commit or die dbh->errstr; -%print $cgi->redirect(popurl(3). "browse/router.cgi"); -% +<% include('elements/process.html', + 'table' => 'router', + 'viewall_dir' => 'browse', + 'viewall_ext' => 'cgi', + 'edit_ext' => 'cgi', + 'process_m2m' => { 'link_table' => 'part_svc_router', + 'target_table' => 'part_svc', + }, + 'agent_virt' => 1, + 'agent_null_right' => 'Engineering global configuration', + ) +%> <%init> +my $curuser = $FS::CurrentUser::CurrentUser; die "access denied" - unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); + unless $curuser->access_right('Engineering configuration') + || $curuser->access_right('Engineering global configuration'); </%init> diff --git a/httemplate/edit/process/svc_acct_pop.cgi b/httemplate/edit/process/svc_acct_pop.cgi index 75b89c88f..522e94948 100755 --- a/httemplate/edit/process/svc_acct_pop.cgi +++ b/httemplate/edit/process/svc_acct_pop.cgi @@ -6,8 +6,11 @@ %} <%init> +my $curuser = $FS::CurrentUser::CurrentUser; + die "access denied" - unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); + unless $curuser->access_right('Engineering configuration') + || $curuser->access_right('Engineering global configuration'); my $popnum = $cgi->param('popnum'); diff --git a/httemplate/edit/process/svc_broadband.cgi b/httemplate/edit/process/svc_broadband.cgi index 8600da349..d5c9820bb 100644 --- a/httemplate/edit/process/svc_broadband.cgi +++ b/httemplate/edit/process/svc_broadband.cgi @@ -1,38 +1,8 @@ -%if ( $error ) { -% $cgi->param('error', $error); -% $cgi->param('ip_addr', $new->ip_addr); -<% $cgi->redirect(popurl(2). "svc_broadband.cgi?". $cgi->query_string ) %> -%} else { -<% $cgi->redirect(popurl(3). "view/svc_broadband.cgi?" . $svcnum ) %> -%} +<% include('elements/svc_Common.html', 'table' => 'svc_broadband') %> <%init> +my $curuser = $FS::CurrentUser::CurrentUser; die "access denied" - unless $FS::CurrentUser::CurrentUser->access_right('Provision customer service'); #something else more specific? - -$cgi->param('svcnum') =~ /^(\d*)$/ or die "Illegal svcnum!"; -my $svcnum = $1; - -my $old; -if ( $svcnum ) { - $old = qsearchs('svc_broadband', { 'svcnum' => $svcnum } ) - or die "fatal: can't find broadband service (svcnum $svcnum)!"; -} else { - $old = ''; -} - -my $new = new FS::svc_broadband ( { - map { - ($_, scalar($cgi->param($_))); - } ( fields('svc_broadband'), qw( pkgnum svcpart ) ) -} ); - -my $error; -if ( $svcnum ) { - $error = $new->replace($old); -} else { - $error = $new->insert; - $svcnum = $new->svcnum; -} + unless $curuser->access_right('Provision customer service'); #something else more specific? </%init> |