diff options
author | Mark Wells <mark@freeside.biz> | 2015-12-30 18:51:09 -0800 |
---|---|---|
committer | Mark Wells <mark@freeside.biz> | 2015-12-30 18:52:11 -0800 |
commit | c565f9d78ae95bf3a4dc051e3bfbd356d9f4ff38 (patch) | |
tree | 9358435232a6d61372f6c362198cbd8bc5c93794 | |
parent | 8d41520e7b5f1b54ae321d8c2de25249a2856833 (diff) |
add option for exports to avoid suspending services, #20739
-rw-r--r-- | FS/FS/Schema.pm | 2 | ||||
-rw-r--r-- | FS/FS/part_export.pm | 7 | ||||
-rw-r--r-- | FS/FS/svc_Common.pm | 3 | ||||
-rwxr-xr-x | httemplate/browse/part_export.cgi | 5 | ||||
-rw-r--r-- | httemplate/edit/part_export.cgi | 5 |
5 files changed, 22 insertions, 0 deletions
diff --git a/FS/FS/Schema.pm b/FS/FS/Schema.pm index a10b5c0..56bdfc3 100644 --- a/FS/FS/Schema.pm +++ b/FS/FS/Schema.pm @@ -4487,6 +4487,8 @@ sub tables_hashref { 'exporttype', 'varchar', '', $char_d, '', '', 'nodomain', 'char', 'NULL', 1, '', '', 'default_machine','int', 'NULL', '', '', '', + 'no_suspend', 'char', 'NULL', 1, '', '', + # could also have 'no_insert', 'no_replace', etc. ], 'primary_key' => 'exportnum', 'unique' => [], diff --git a/FS/FS/part_export.pm b/FS/FS/part_export.pm index f3d9774..d6357fd 100644 --- a/FS/FS/part_export.pm +++ b/FS/FS/part_export.pm @@ -58,6 +58,12 @@ fields are currently supported: =item nodomain - blank or "Y" : usernames are exported to this service with no domain +=item default_machine - For exports that require a machine to be selected for +each service (see L<FS::svc_export_machine>), the one to use as the default. + +=item no_suspend - Don't export service suspensions. In the future there may +be "no_*" options for the other service actions. + =back =head1 METHODS @@ -337,6 +343,7 @@ sub check { || $self->ut_textn('exportname') || $self->ut_domainn('machine') || $self->ut_alpha('exporttype') + || $self->ut_flag('no_suspend') ; if ( $self->machine eq '_SVC_MACHINE' ) { diff --git a/FS/FS/svc_Common.pm b/FS/FS/svc_Common.pm index 35415a2..73658f6 100644 --- a/FS/FS/svc_Common.pm +++ b/FS/FS/svc_Common.pm @@ -1154,7 +1154,9 @@ Runs the provided export hook (i.e. "suspend", "unsuspend") for this service. sub export { my( $self, $method ) = ( shift, shift ); + # $method must start with export_, $action must be the part after that $method = "export_$method" unless $method =~ /^export_/; + my ($action) = $method =~ /^export_(\w+)/; local $SIG{HUP} = 'IGNORE'; local $SIG{INT} = 'IGNORE'; @@ -1171,6 +1173,7 @@ sub export { unless ( $noexport_hack ) { foreach my $part_export ( $self->cust_svc->part_svc->part_export ) { next unless $part_export->can($method); + next if $part_export->get("no_$action"); # currently only 'no_suspend' my $error = $part_export->$method($self, @_); if ( $error ) { $dbh->rollback if $oldAutoCommit; diff --git a/httemplate/browse/part_export.cgi b/httemplate/browse/part_export.cgi index af988d3..bbb723d 100755 --- a/httemplate/browse/part_export.cgi +++ b/httemplate/browse/part_export.cgi @@ -38,6 +38,11 @@ function part_export_areyousure(href) { <TD CLASS="grid" BGCOLOR="<% $bgcolor %>"> <% $part_export->label_html %> (<A HREF="<% $p %>edit/part_export.cgi?<% $part_export->exportnum %>">edit</A> | <A HREF="javascript:part_export_areyousure('<% $p %>misc/delete-part_export.cgi?<% $part_export->exportnum %>')">delete</A>) +% if ( $part_export->no_suspend ) { + <P STYLE="position: absolute"> + This export will not suspend services. + </P> +% } % if ( my @actions = $part_export->actions ) { <P STYLE="position: absolute"> Management: diff --git a/httemplate/edit/part_export.cgi b/httemplate/edit/part_export.cgi index 3820931..5411feb 100644 --- a/httemplate/edit/part_export.cgi +++ b/httemplate/edit/part_export.cgi @@ -285,6 +285,11 @@ my $widget = new HTML::Widgets::SelectLayers( $html .= '</TD></TR>'; } + $html .= '<TR><TD ALIGN="right">Do not suspend services</TD>' . + '<TD><INPUT TYPE="checkbox" NAME="no_suspend" VALUE="Y"'; + $html .= ' CHECKED' if $part_export->no_suspend eq 'Y'; + $html .= '></TD></TR>'; + $html .= '</TABLE>'; # false laziness with config_element above |