[freeside-commits] freeside/FS/FS Schema.pm, 1.137, 1.138 part_svc.pm, 1.32, 1.33 part_svc_column.pm, 1.5, 1.6 svc_acct.pm, 1.257, 1.258

Ivan,,, ivan at wavetail.420.am
Fri May 8 17:39:15 PDT 2009


Update of /home/cvs/cvsroot/freeside/FS/FS
In directory wavetail.420.am:/tmp/cvs-serv7914/FS/FS

Modified Files:
	Schema.pm part_svc.pm part_svc_column.pm svc_acct.pm 
Log Message:
add ability to configure service labels per-package (still need to actually use the labels), RT#4081

Index: part_svc.pm
===================================================================
RCS file: /home/cvs/cvsroot/freeside/FS/FS/part_svc.pm,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -d -r1.32 -r1.33
--- part_svc.pm	28 Jun 2008 23:03:09 -0000	1.32
+++ part_svc.pm	9 May 2009 00:39:13 -0000	1.33
@@ -133,7 +133,8 @@
 #        fields('part_svc');
   foreach my $field (
     grep { $_ ne 'svcnum'
-           && defined( $self->getfield($svcdb.'__'.$_.'_flag') )
+           && ( defined( $self->getfield($svcdb.'__'.$_.'_flag') )
+                || $self->getfield($svcdb.'__'.$_.'_label') !~ /^\s*$/ )
          } (fields($svcdb), @fields)
   ) {
     my $part_svc_column = $self->part_svc_column($field);
@@ -142,20 +143,28 @@
       'columnname' => $field,
     } );
 
-    my $flag = $self->getfield($svcdb.'__'.$field.'_flag');
-    #if ( uc($flag) =~ /^([DFMAX])$/ ) {
-    if ( uc($flag) =~ /^([A-Z])$/ ) { #part_svc_column will test it
-      my $parser = FS::part_svc->svc_table_fields($svcdb)->{$field}->{parse}
-                   || sub { shift };
-      $part_svc_column->setfield('columnflag', $1);
-      $part_svc_column->setfield('columnvalue',
-        &$parser($self->getfield($svcdb.'__'.$field))
-      );
+    my $flag  = $self->getfield($svcdb.'__'.$field.'_flag');
+    my $label = $self->getfield($svcdb.'__'.$field.'_label');
+    if ( uc($flag) =~ /^([A-Z])$/ || $label !~ /^\s*$/ ) {
+
+      if ( uc($flag) =~ /^([A-Z])$/ ) {
+        my $parser = FS::part_svc->svc_table_fields($svcdb)->{$field}->{parse}
+                     || sub { shift };
+        $part_svc_column->setfield('columnflag', $1);
+        $part_svc_column->setfield('columnvalue',
+          &$parser($self->getfield($svcdb.'__'.$field))
+        );
+      }
+
+      $part_svc_column->setfield('columnlabel', $label)
+        if $label !~ /^\s*$/;
+
       if ( $previous ) {
         $error = $part_svc_column->replace($previous);
       } else {
         $error = $part_svc_column->insert;
       }
+
     } else {
       $error = $previous ? $previous->delete : '';
     }
@@ -254,7 +263,8 @@
     my $svcdb = $new->svcdb;
     foreach my $field (
       grep { $_ ne 'svcnum'
-             && defined( $new->getfield($svcdb.'__'.$_.'_flag') )
+             && ( defined( $new->getfield($svcdb.'__'.$_.'_flag') )
+                  || $new->getfield($svcdb.'__'.$_.'_label') !~ /^\s*$/ )
            } (fields($svcdb), at fields)
     ) {
       my $part_svc_column = $new->part_svc_column($field);
@@ -263,15 +273,23 @@
         'columnname' => $field,
       } );
 
-      my $flag = $new->getfield($svcdb.'__'.$field.'_flag');
-      #if ( uc($flag) =~ /^([DFMAX])$/ ) {
-      if ( uc($flag) =~ /^([A-Z])$/ ) { #part_svc_column will test it
-        my $parser = FS::part_svc->svc_table_fields($svcdb)->{$field}->{parse}
+      my $flag  = $new->getfield($svcdb.'__'.$field.'_flag');
+      my $label = $new->getfield($svcdb.'__'.$field.'_label');
+ 
+      if ( uc($flag) =~ /^([A-Z])$/ || $label !~ /^\s*$/ ) {
+
+        if ( uc($flag) =~ /^([A-Z])$/ ) {
+          my $parser = FS::part_svc->svc_table_fields($svcdb)->{$field}->{parse}
                      || sub { shift };
-        $part_svc_column->setfield('columnflag', $1);
-        $part_svc_column->setfield('columnvalue',
-          &$parser($new->getfield($svcdb.'__'.$field))
-        );
+          $part_svc_column->setfield('columnflag', $1);
+          $part_svc_column->setfield('columnvalue',
+            &$parser($new->getfield($svcdb.'__'.$field))
+          );
+        }
+
+        $part_svc_column->setfield('columnlabel', $label)
+          if $label !~ /^\s*$/;
+
         if ( $previous ) {
           $error = $part_svc_column->replace($previous);
         } else {
@@ -713,17 +731,16 @@
               push @fields, 'usergroup' if $svcdb eq 'svc_acct'; #kludge
 
               map {
-                    if ( $param->{ $svcdb.'__'.$_.'_flag' } =~ /^[MA]$/ ) {
-                      $param->{ $svcdb.'__'.$_ } =
-                        delete( $param->{ $svcdb.'__'.$_.'_classnum' } );
+                    my $f = $svcdb.'__'.$_;
+                    if ( $param->{ $f.'_flag' } =~ /^[MA]$/ ) {
+                      $param->{ $f } = delete( $param->{ $f.'_classnum' } );
                     }
-		    if ( $param->{ $svcdb.'__'.$_.'_flag' } =~ /^S$/ ) {
-                      $param->{ $svcdb.'__'.$_} =
-                        ref($param->{ $svcdb.'__'.$_})
-                          ? join(',', @{$param->{ $svcdb.'__'.$_ }} )
-                          : $param->{ $svcdb.'__'.$_ };
+		    if ( $param->{ $f.'_flag' } =~ /^S$/ ) {
+                      $param->{ $f } = ref($param->{ $f })
+                                         ? join(',', @{$param->{ $f }} )
+                                         : $param->{ $f };
 		    }
-                    ( $svcdb.'__'.$_, $svcdb.'__'.$_.'_flag' );
+                    ( $f, $f.'_flag', $f.'_label' );
                   }
                   @fields;
 
@@ -738,7 +755,7 @@
   my $error;
   if ( $param->{'svcpart'} ) {
     $error = $new->replace( $old,
-                            '1.3-COMPAT',
+                            '1.3-COMPAT',    #totally bunk, as jeff noted
                             [ 'usergroup' ],
                             \%exportnums,
                             $job

Index: Schema.pm
===================================================================
RCS file: /home/cvs/cvsroot/freeside/FS/FS/Schema.pm,v
retrieving revision 1.137
retrieving revision 1.138
diff -u -d -r1.137 -r1.138
--- Schema.pm	26 Apr 2009 23:43:34 -0000	1.137
+++ Schema.pm	9 May 2009 00:39:13 -0000	1.138
@@ -1268,6 +1268,7 @@
         'columnnum',   'serial',         '', '', '', '', 
         'svcpart',     'int',         '', '', '', '', 
         'columnname',  'varchar',     '', 64, '', '', 
+        'columnlabel', 'varchar', 'NULL', $char_d, '', '',
         'columnvalue', 'varchar', 'NULL', $char_d, '', '', 
         'columnflag',  'char',    'NULL', 1, '', '', 
       ],

Index: svc_acct.pm
===================================================================
RCS file: /home/cvs/cvsroot/freeside/FS/FS/svc_acct.pm,v
retrieving revision 1.257
retrieving revision 1.258
diff -u -d -r1.257 -r1.258
--- svc_acct.pm	4 May 2009 01:17:24 -0000	1.257
+++ svc_acct.pm	9 May 2009 00:39:13 -0000	1.258
@@ -215,9 +215,9 @@
     'fields' => {
         'dir'       => 'Home directory',
         'uid'       => {
-                         label     => 'UID',
-		         def_label => 'UID (set to fixed and blank for no UIDs)',
-		         type      => 'text',
+                         label    => 'UID',
+		         def_info => 'set to fixed and blank for no UIDs',
+		         type     => 'text',
 		       },
         'slipip'    => 'IP address',
     #    'popnum'    => qq!<A HREF="$p/browse/svc_acct_pop.cgi/">POP number</A>!,
@@ -244,15 +244,14 @@
                        },
         '_password' => 'Password',
         'gid'       => {
-                         label     => 'GID',
-		         def_label => 'GID (when blank, defaults to UID)',
-		         type      => 'text',
+                         label    => 'GID',
+		         def_info => 'when blank, defaults to UID',
+		         type     => 'text',
 		       },
         'shell'     => {
-                         #desc =>'Shell (all service definitions should have a default or fixed shell that is present in the <b>shells</b> configuration file, set to blank for no shell tracking)',
 		         label    => 'Shell',
-                         def_label=> 'Shell (set to blank for no shell tracking)',
-                         type     =>'select',
+                         def_info => 'set to blank for no shell tracking',
+                         type     => 'select',
                          #select_list => [ $conf->config('shells') ],
                          select_list => [ $conf ? $conf->config('shells') : () ],
                          disable_inventory => 1,
@@ -261,7 +260,6 @@
         'finger'    => 'Real name', # (GECOS)',
         'domsvc'    => {
                          label     => 'Domain',
-                         #def_label => 'svcnum from svc_domain',
                          type      => 'select',
                          select_table => 'svc_domain',
                          select_key   => 'svcnum',

Index: part_svc_column.pm
===================================================================
RCS file: /home/cvs/cvsroot/freeside/FS/FS/part_svc_column.pm,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- part_svc_column.pm	25 Oct 2006 02:22:33 -0000	1.5
+++ part_svc_column.pm	9 May 2009 00:39:13 -0000	1.6
@@ -39,6 +39,8 @@
 
 =item columnname - column name in part_svc.svcdb table
 
+=item columnlabel - label for the column
+
 =item columnvalue - default or fixed value for the column
 
 =item columnflag - null or empty (no default), `D' for default, `F' for fixed (unchangeable), `S' for selectable choice, `M' for manual selection from inventory, or `A' for automatic selection from inventory.  For virtual fields, can also be 'X' for excluded.
@@ -87,11 +89,12 @@
     $self->ut_numbern('columnnum')
     || $self->ut_number('svcpart')
     || $self->ut_alpha('columnname')
+    || $self->ut_textn('columnlabel')
     || $self->ut_anything('columnvalue')
   ;
   return $error if $error;
 
-  $self->columnflag =~ /^([DFSMAX])$/
+  $self->columnflag =~ /^([DFSMAX]?)$/
     or return "illegal columnflag ". $self->columnflag;
   $self->columnflag(uc($1));
 



More information about the freeside-commits mailing list